Ir para conteúdo

Duel System


FlamesAdmin

Posts Recomendados

Qeria saber como poe para quando o player invitar o outro para duel, qnd iniciar o duel, os players nao poderem se mover.

 

order.lua:

local skills = specialabilities
local surfborders = {4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663}
local storages = {17000, 63215, 17001, 13008, 5700} --alterado v1.9 \/
local unfix = {x = 1, y = 1, z = 1}

local txt = {
["rock smash"] = {"Quebre isso"},
["cut"] = {"Corte isso!"},
["move"] = {"Mova!", "Mova ali!", "Vá para lá!", "Ande até ali!"},
["light"] = {"Luz!"},
["dig"] = {"Abra isso!", "Cave aqui!"},
["blink"] = {"Teleporte-se!"},
["ride"] = {"Vamos andar!", "Deixe-me subir em você!"},
["fly"] = {"Vamos voar!", "Deixe-me subir em você!"} ,
["untransform"] = {"Volte ao normal!", "Pare a transformação!"},
["headbutt"] = {"Quebre essa árvore", "Derrube essa árvore"},
["levitate_fly"] = {"Vamos levitar!", "Deixe-me subir em você!"}, --alterado v1.8
}

function onUse(cid, item, frompos, item2, topos)
local checkpos = topos
checkpos.stackpos = 0

if getPlayerStorageValue(cid, 75846) >= 1 then return true end --alterado v1.9

if getTileThingByPos(checkpos).uid <= 0 then return true end

--------END FLY/RIDE --------
if getCreatureCondition(cid, CONDITION_OUTFIT) and (item2.uid == cid or getRecorderPlayer(topos) == cid) and (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then

if isInArray({460, 11675, 11676, 11677}, getTileInfo(getThingPos(cid)).itemid) then
doPlayerSendCancel(cid, "You can\'t stop flying at this height!")
return true
end

local item = getPlayerSlotItem(cid, 8)
local pokemon = getItemAttribute(item.uid, "poke")
local x = pokes[pokemon]

if getTileInfo(getThingPos(cid)).itemid >= 4820 and getTileInfo(getThingPos(cid)).itemid <= 4825 then
doPlayerSendCancel(cid, "You can\'t stop flying above the water!")
return true
end

doSummonMonster(cid, pokemon)

local pk = getCreatureSummons(cid)[1]

if not isCreature(pk) then
pk = doCreateMonster(pokemon, backupPos)
if not isCreature(pk) then
doPlayerSendCancel(cid, "You can't stop flying/riding here.")
return true
end
doConvinceCreature(cid, pk)
end

doTeleportThing(pk, getThingPos(cid), false)
doCreatureSetLookDir(pk, getCreatureLookDir(cid))

adjustStatus(pk, item.uid, true, false, true)

doPlayerSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", Deixe-me descer de você!", 1)

doRegainSpeed(cid)

doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 17000, -1)
setPlayerStorageValue(cid, 17001, -1)

if useOTClient then
doUpdateMoves(cid)
doPlayerSendCancel(cid, '12//,show') --alterado v1.9
end

return true
end
-----------------------------
local player = getRecorderPlayer(topos) --alterado v1.8 \/
-------- DUEL SYSTEM ------------------------
if isPlayer(player) and player ~= cid and getPlayerStorageValue(player, 6598754) <= -1 and getPlayerStorageValue(player, 52480) <= -1 then
if getPlayerStorageValue(cid, 52480) <= -1 or (getPlayerStorageValue(cid, 52481) >= 1 and getPlayerStorageValue(cid, 52482) ~= -1) then
---
for s = 1, #storages do
if getPlayerStorageValue(cid, storages) >= 1 then
return doPlayerSendTextMessage(cid, 20, "You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!")
end
end
if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then
return doPlayerSendTextMessage(cid, 20, "You can't do that while in PVP zone!")
end
if #getCreatureSummons(cid) < 1 then
return doPlayerSendTextMessage(cid, 20, "You need a pokemon to invite someone to duel!")
end
---
if getPlayerStorageValue(cid, 52480) <= -1 then
doPlayerSetVocation(cid, 7)
openChannelDialog(cid)
setPlayerStorageValue(cid, 52480, 1)
setPlayerStorageValue(cid, 6598754, 5)
setPlayerStorageValue(cid, 52482, getCreatureName(cid)..",")
setPlayerStorageValue(cid, 52483, getCreatureName(player)..",")
doCreatureSetSkullType(cid, 2)
doSendAnimatedText(getThingPosWithDebug(cid), "FIRST TEAM", 215)
return true
elseif getPlayerStorageValue(cid, 52481) >= 1 and getPlayerStorageValue(cid, 52482) ~= -1 then
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")

if (#t1 >= getPlayerStorageValue(cid, 52480) and #t2 >= getPlayerStorageValue(cid, 52480)) or (isInArray(t1, getCreatureName(player)) or isInArray(t2, getCreatureName(player))) then
return true
end

local sto2, sto3, name = getPlayerStorageValue(cid, 52482), getPlayerStorageValue(cid, 52483), getCreatureName(player)
if getPlayerStorageValue(cid, 52480) == 2 then
setPlayerStorageValue(cid, 52483, sto3.. name..",") --time adversario
doSendAnimatedText(getThingPosWithDebug(player), "SECOND TEAM", 215)
elseif getPlayerStorageValue(cid, 52480) == 3 and #t1 < 3 then
setPlayerStorageValue(cid, 52482, sto2.. name..",") --time aliado
doSendAnimatedText(getThingPosWithDebug(player), "FIRST TEAM", 215)
elseif getPlayerStorageValue(cid, 52480) == 3 and #t1 >= 3 then
setPlayerStorageValue(cid, 52483, sto3.. name..",") --time adversario
doSendAnimatedText(getThingPosWithDebug(player), "SECOND TEAM", 215)
end

setPlayerStorageValue(player, 52481, getPlayerStorageValue(cid, 52481))
setPlayerStorageValue(player, 52485, getCreatureName(cid))

local players, pokes = getPlayerStorageValue(cid, 52480), getPlayerStorageValue(cid, 52481)

local str = {}
table.insert(str, getCreatureName(cid).." está lhe envitando para um Duel! Use o Poke Order para aceitar")
table.insert(str, "Info Battle: Duel "..players.."x"..players.." - "..pokes.." pokes.") --alterado v1.9

doPlayerSendTextMessage(player, 20, table.concat(str))
return true
end
end
---
elseif isPlayer(player) and player ~= cid and getPlayerStorageValue(player, 6598754) == 5 and getPlayerStorageValue(player, 52481) >= 1 then

local t1 = string.explode(getPlayerStorageValue(player, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(player, 52483), ",")
---
if not isInArray(t1, getCreatureName(cid)) and not isInArray(t2, getCreatureName(cid)) then
return true
end
---
for s = 1, #storages do
if getPlayerStorageValue(cid, storages) >= 1 then
return doPlayerSendTextMessage(cid, 20, "You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!")
end
end
if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then
return doPlayerSendTextMessage(cid, 20, "You can't do that while in PVP zone!")
end
local pokes = getLivePokeballs(cid, getPlayerSlotItem(cid, 3).uid, true)
if #pokes < getPlayerStorageValue(player, 52481) then
return doPlayerSendTextMessage(cid, 20, "You need atleast ".. getPlayerStorageValue(player, 52481).." pokemons to duel with this person!")
end
if getPlayerStorageValue(cid, 52482) ~= -1 then
return doPlayerSendTextMessage(cid, 20, "You already invit someone to duel!")
end
if #getCreatureSummons(cid) < 1 then
return doPlayerSendTextMessage(cid, 20, "Você precisa de um Pokémon para aceitar o Duel!")
end
---
setPlayerStorageValue(cid, 52480, getPlayerStorageValue(player, 52480))
setPlayerStorageValue(player, 52484, getPlayerStorageValue(player, 52484)-1)
if getPlayerStorageValue(player, 52484) == 0 then
for a = 1, #t1 do
local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a])
if not isCreature(pid) or getPlayerStorageValue(pid, 52480) <= -1 then
removeFromTableDuel(player, t1[a])
else
doCreatureSetSkullType(pid, 1)
end
if not isCreature(sid) or getPlayerStorageValue(sid, 52480) <= -1 then
removeFromTableDuel(player, t2[a])
else
doCreatureSetSkullType(sid, 1)
end
end
beginDuel(player, 6)
else
doCreatureSetSkullType(cid, 2)
end
doSendAnimatedText(getThingPos(cid), "BATTLE", COLOR_ELECTRIC)
return true

elseif isPlayer(player) and player == cid and getPlayerStorageValue(player, 52480) >= 1 then
doEndDuel(cid, true)
return true
end
------------------------------------------------------------------------------------

if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "Você precisa soltar seu Pokémon para ordená-lo!") end
if getCreatureNoMove(getCreatureSummons(cid)[1]) then return true end
markLP(getCreatureSummons(cid)[1], -1)

local marked = getMarkedPos(getCreatureSummons(cid)[1]) --alterado v1.8 \/

if type(marked) == "table" and marked.x == topos.x and marked.y == topos.y then
return true
end

local thisball = getPlayerSlotItem(cid, 8)
local mysum = getCreatureSummons(cid)[1]
local sid = mysum or cid
local maxMoveDist = getDistanceBetween(getThingPos(sid), topos) * 2 + 1

markPos(mysum, topos)
markOwnerPos(mysum, getThingPos(cid))

-------- ROCK SMASH ---------
if item2.itemid == 1285 and isInArray(skills["rock smash"], getPokemonName(mysum)) then

doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["rock smash"][math.random(1, #txt["rock smash"])].."", 1)
addEvent(goThere, 500, mysum, topos, "rock smash", isCreature(getCreatureTarget(cid)))

return true
end
-----------------------------

-------- HEADBUTT -----------
if item2.itemid == 12591 and getPokemonLevel(mysum) >= 15 then --alterado v1.6
--id do item arvore normal
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["headbutt"][math.random(1, #txt["headbutt"])].."", 1)
addEvent(goThere, 500, mysum, topos, "headbutt", isCreature(getCreatureTarget(cid)))

return true
end
-----------------------------

-------- CUT ----------------
if item2.itemid == 2767 and isInArray(skills["cut"], getPokemonName(mysum)) then

doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["cut"][math.random(1, #txt["cut"])].."", 1)
addEvent(goThere, 500, mysum, topos, "cut", isCreature(getCreatureTarget(cid)))

return true
end
-----------------------------

-------- TRANSFORM ---------- --alterado v1.7
if (getCreatureName(mysum) == "Ditto" or getCreatureName(mysum) == "Shiny Ditto") and isMonster(item2.uid) and pokes[getCreatureName(item2.uid)] then
if item2.uid == mysum then --edited
if isTransformed(mysum) then
deTransform(mysum, getItemAttribute(thisball.uid, "transTurn"))
markPos(mysum, unfix)
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["untransform"][math.random(1, #txt["untransform"])].."", 1)
if useKpdoDlls then
doUpdateMoves(cid) --alterado v1.9
end
return true
end
doPlayerSendCancel(cid, "Seu Ditto não transformou.")
markPos(mysum, unfix)
return true
end

if getCreatureName(item2.uid) == "Ditto" or getCreatureName(item2.uid) == "Shiny Ditto" then --edited transform for shiny ditto
doPlayerSendCancel(cid, "Seu Ditto não pode transformar em outro Ditto.")
markPos(mysum, unfix)
return true
end

local poke_transform = {"Articuno", "Zapdos", "Moltres", "Raikou", "Entei", "Suicune"} --Só ir colocando nessa tabela os pokémons que o Ditto não poderá se transformar.

if isInArray(poke_transform, getCreatureName(item2.uid)) then
return doPlayerSendCancel(cid, "Você não pode transformar seu Ditto neste pokémon.")
end

--if getCreatureName(item2.uid) == getPlayerStorageValue(mysum, 1010) then
--doPlayerSendCancel(cid, "Seu Ditto já esta transformado nesse Pokémon.")
--markPos(mysum, unfix)
--return true
--end

local cd = getCD(thisball.uid, "trans", 40)

--if cd > 0 then
--doPlayerSendCancel(cid, "Tempo para usar Transform novamente: ("..getStringmytempo(cd)..")")
--return true
--end

if getHappiness(mysum) <= 50 then
doSendMagicEffect(getThingPos(mysum), happinessRate[1].effect)
markPos(mysum, unfix)
return true
end

local turn = getItemAttribute(thisball.uid, "transTurn")

if not turn or turn > 10 then
doItemSetAttribute(thisball.uid, "transTurn", 0)
else
doItemSetAttribute(thisball.uid, "transTurn", turn + 1)
end

local time = 1000 + 2 * getPokemonLevel(mysum)

turn = getItemAttribute(thisball.uid, "transTurn")

markPos(mysum, unfix)
setPlayerStorageValue(mysum, 1010, getCreatureName(item2.uid))
doSetCreatureOutfit(mysum, {lookType = getPokemonXMLOutfit(getCreatureName(item2.uid))}, -1) --alterado v1.8
addEvent(deTransform, time * 1000, mysum, turn)
doSendMagicEffect(getThingPos(mysum), 184)
doCreatureSay(mysum, "TRANSFORM!", TALKTYPE_MONSTER)
local name = getCreatureName(item2.uid)
setCD(thisball.uid, "trans", 40)
doItemSetAttribute(thisball.uid, "transBegin", os.clock())
doSetItemAttribute(thisball.uid, "transLeft", time)
doSetItemAttribute(thisball.uid, "transOutfit", getPokemonXMLOutfit(getCreatureName(item2.uid))) --alterado v1.8
doSetItemAttribute(thisball.uid, "transName", getCreatureName(item2.uid))
doFaceCreature(mysum, getThingPos(item2.uid))
doPlayerSay(cid, ""..getPokeName(mysum)..", transforme em "..name.."!", 1)

if useKpdoDlls then
doUpdateMoves(cid) --alterado v1.6
end

if dittoCopiesStatusToo then
setPlayerStorageValue(mysum, 1001, dittoBonus*getOffense(item2.uid))
setPlayerStorageValue(mysum, 1002, dittoBonus*getDefense(item2.uid))
setPlayerStorageValue(mysum, 1003, getSpeed(item2.uid))
setPlayerStorageValue(mysum, 1004, dittoBonus*getVitality(item2.uid))
setPlayerStorageValue(mysum, 1005, dittoBonus*getSpecialAttack(item2.uid))
------------------
local pct = getCreatureHealth(mysum) / getCreatureMaxHealth(mysum)
local vit = (getVitality(mysum) * getMasterLevel(mysum)) / 100
setCreatureMaxHealth(mysum, ( vit * HPperVITsummon )) --alterado v1.6
doCreatureAddHealth(mysum, pct * vit * HPperVITsummon)
end

return true
end
-----------------------------

-------- LIGHT --------------
if isMonster(item2.uid) and getCreatureMaster(item2.uid) == cid then

markPos(mysum, unfix)

if not isInArray(skills["light"], getPokemonName(item2.uid)) then
doPlayerSendCancel(cid, "Seu Pokémon não possui a habilidade Light.")
return true
end

local cd = getCD(thisball.uid, "light", 30)

if cd > 0 then
doPlayerSendCancel(cid, "Tempo para usar Light novamente: ("..getStringmytempo(cd)..")")
return true
end

doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["light"][math.random(1, #txt["light"])].."", 1)
doCreatureSay(mysum, "LIGHT!", TALKTYPE_MONSTER)
doSendMagicEffect(getThingPos(mysum), 28)

local size = 5
size = size + math.floor(getSpecialAttack(mysum) / 60)
size = size + math.ceil(getPokemonLevel(mysum) / 60)

if size > 11 then
size = 11
end

doSetCreatureLight(mysum, size, 215, 600*1000)

local delay = math.floor(30 - getPokemonLevel(mysum) / 4)
if delay > 0 then
setCD(thisball.uid, "light", delay)
end

return true
end
-----------------------------


-------- DIG ----------------
if isInArray(skills["digholes"], item2.itemid) and isInArray(skills["dig"], getPokemonName(mysum)) then

doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["dig"][math.random(1, #txt["dig"])].."", 1)
addEvent(goThere, 500, mysum, topos, "dig", isCreature(getCreatureTarget(cid)))

return true
end
-----------------------------


-------- BLINK / MOVE -------
if not isCreature(item2.uid) and isInArray(skills["blink"], getPokemonName(mysum)) then

local cd = getCD(thisball.uid, "blink", 30)

if getPlayerStorageValue(mysum, 2365487) == 1 then
return true --alterado v1.4
end

if not isSightClear(getThingPos(mysum), getThingPos(item2.uid), false) then
return doPlayerSendCancel(cid, "Você não pode teleportar seu pokémon aí!")
end

if cd > 0 or not canWalkOnPos(topos, false, false, true, true, true) then

doPlayerSendCancel(cid, "Tempo para usar Blink: ("..getStringmytempo(cd)..")")
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", 1)
addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist)

return true
end

local CD = isShinyName(getCreatureName(mysum)) and 20 or 30 --edited blink

markPos(mysum, topos)
markOwnerPos(mysum, getThingPos(cid))
setCD(thisball.uid, "blink", CD)
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["blink"][math.random(1, #txt["blink"])].."", 1)
doSendDistanceShoot(getThingPos(mysum), topos, 39)
doSendMagicEffect(getThingPos(mysum), 211)
doTeleportThing(mysum, topos, false)
doSendMagicEffect(topos, 134)
doCreatureSay(mysum, "BLINK!", TALKTYPE_MONSTER)
goThere(mysum, topos, "blink", isCreature(getCreatureTarget(cid))) --edited blink

return true
end
-----------------------------


----START FLY or RIDE or LEVITATE ---------
if (item2.uid == cid or getRecorderPlayer(topos) == cid) and (isInArray(skills["fly"], getPokemonName(mysum)) or isInArray(skills["ride"], getPokemonName(mysum)) or isInArray(skills["levitate_fly"], getPokemonName(mysum))) then
--alterado v1.8 >>
if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then
return doPlayerSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7
end

if #getCreatureSummons(cid) > 1 then --alterado v1.9
return doPlayerSendCancel(cid, "You can't do it right now!")
end

if getPlayerStorageValue(cid, 91831) >= 1 then
return doPlayerSendCancel(cid, "Não é permitido usar Fly/Ride aqui.")
end

if getPlayerStorageValue(cid, 52480) >= 1 then
return doPlayerSendCancel(cid, "You can't do it while a duel!") --alterado v1.6
end

if getPlayerStorageValue(cid, 5700) >= 1 then --alterado v1.9
doPlayerSendCancel(cid, "You can't do that while is mount in a bike!")
return true
end

if getPlayerStorageValue(cid, 22545) >= 1 and (isInArray(skills["fly"], getPokemonName(mysum)) or isInArray(skills["levitate_fly"], getPokemonName(mysum))) then
return doPlayerSendCancel(cid, "You can't do that while in the Golden Arena!") --alterado v1.8
end

local pct = getCreatureHealth(mysum) / getCreatureMaxHealth(mysum)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", 1 - pct)

if isInArray(skills["fly"], getPokemonName(mysum)) then
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["fly"][math.random(1, #txt["fly"])].."", 1)
addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid)))
elseif isInArray(skills["levitate_fly"], getPokemonName(mysum)) then
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["levitate_fly"][math.random(1, #txt["levitate_fly"])].."", 1) --alterado v1.8
addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid)))
else
doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["ride"][math.random(1, #txt["ride"])].."", 1)
addEvent(goThere, 500, mysum, topos, "ride", isCreature(getCreatureTarget(cid)))
end

return true
end
-----------------------------
----------------------------------Control Mind-------------------------------------------- alterado v1.5
if isCreature(item2.uid) and ehMonstro(item2.uid) and isInArray(skills["control mind"], getCreatureName(mysum)) and item2.uid ~= mysum then
if not isCreature(item2.uid) then
return true
end

if isSleeping(mysum) then
return doPlayerSendCancel(cid, "Seu Pokémon esta dormindo...zZzZ")
end

if getTileInfo(getThingPos(cid)).protection or getTileInfo(getThingPos(getCreatureSummons(cid)[1])).protection then
return doPlayerSendCancel(cid, "Você ou seu Pokémon esta em uma Protection Zone!")
end

if #getCreatureSummons(cid) == 2 then
return doPlayerSendCancel(cid, "Você só pode controlar um Pokémon!")
end

local cd = getCD(thisball.uid, "control", 120)

if cd > 0 then
doPlayerSendCancel(cid, "Você deve esperar "..cd.." segundos para usar Control Mind novamente!")
return true
end

if getPokemonLevel(item2.uid) >= getPokemonLevel(mysum) then
return doPlayerSendCancel(cid, "Seu Pokémon não possui a habilidade Control Mind!")
end

if getPlayerStorageValue(cid, 22545) >= 1 then --alterado v1.7
return doPlayerSendCancel(cid, "Você não pode fazer isso na Golden Arena!")
end

local cmed = item2.uid
setCD(thisball.uid, "control", 120)
local gender = getPokemonGender(cmed)
doSendDistanceShoot(getThingPos(mysum), getThingPos(cmed), 39)
--------------
setPlayerStorageValue(cid, 212124, 1)
doConvinceCreature(cid, cmed)
setPlayerStorageValue(cmed, 212123, 1)
doCreatureSay(cid, ""..getCreatureName(mysum)..", control "..string.lower(getCreatureName(cmed)).."'s mind!", 1)

local cmname = getCreatureName(mysum)
local cmpos = getThingPos(mysum)
local pokelife = (getCreatureHealth(mysum) / getCreatureMaxHealth(mysum))
doItemSetAttribute(thisball.uid, "hp", pokelife)
doRemoveCreature(mysum)
local cmzao = doSummonCreature(""..cmname.." cm", cmpos)
doConvinceCreature(cid, cmzao)
setPlayerStorageValue(cid, 888, 1)
if useKpdoDlls then
doUpdateMoves(cid)
end

local function check(cid, controled, rod)
if isCreature(cid) then
ball2 = getPlayerSlotItem(cid, 8)
if getPlayerStorageValue(cid, 888) <= 0 then
return true
end
if not isCreature(controled) then
setPlayerStorageValue(cid, 212124, 0)
local sum = isCreature(getCreatureSummons(cid)[1]) and getCreatureSummons(cid)[1] or getCreatureSummons(cid)[2]
local pkcmpos = getThingPos(sum)
doRemoveCreature(sum)
local item = getPlayerSlotItem(cid, 8)
local pk = doSummonCreature(getItemAttribute(item.uid, "poke"), pkcmpos)
doConvinceCreature(cid, pk)
doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)
addEvent(doAdjustWithDelay, 100, cid, pk, true, true, false)
setPlayerStorageValue(cid, 888, -1) --alterado v1.7
cleanCMcds(item.uid)
registerCreatureEvent(pk, "SummonDeath") --alterado v1.6
if useKpdoDlls then
doUpdateMoves(cid)
end
return true
end

if rod <= 0 then
--Pokemon controlado
local cmed2 = getCreatureSummons(cid)[1]
local poscmed = getThingPos(cmed2)
local cmeddir = getCreatureLookDir(cmed2)
local namecmed = getCreatureName(cmed2)
local gender = getPokemonGender(cmed2)
local hp, maxHp = getCreatureHealth(getCreatureSummons(cid)[1]), getCreatureMaxHealth(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
local back = doCreateMonster(namecmed, poscmed)
addEvent(doCreatureSetSkullType, 150, back, gender)
doWildAttackPlayer(back, cid)
doCreatureSetLookDir(back, cmeddir)
addEvent(doCreatureAddHealth, 100, back, hp-maxHp)

-- pokemon controlador
local mynewpos = getThingPos(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
local pk2 = doSummonCreature(getItemAttribute(ball2.uid, "poke"), mynewpos)
doConvinceCreature(cid, pk2)
addEvent(doAdjustWithDelay, 100, cid, pk2, true, true, false)
setPlayerStorageValue(cid, 888, -1) --alterado v1.7
doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)
setPlayerStorageValue(cid, 212124, 0)
cleanCMcds(ball2.uid)
registerCreatureEvent(pk2, "SummonDeath") --alterado v1.6
if useKpdoDlls then
doUpdateMoves(cid)
end
else
if isInArray({"Haunter", "Gengar", "Shiny Gengar"}, cmname) then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 214)
else
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 220)
end
end
end
addEvent(check, 500, cid, controled, rod-1)
end

check(cid, cmed, 40)
return true
end
---------------------------------------------------------------------
-------- MOVE / END ---------

local onlyWater = false

if isWater(getTileThingByPos(checkpos).itemid) then
onlyWater = true
for checkwater = 0, 7 do
if not isWater(getTileThingByPos(getPosByDir(checkpos, checkwater)).itemid) then
onlyWater = false
end
end
end

if onlyWater then
doPlayerSendCancel(cid, "Desculpe, isso não é possivel.")
return true
end

doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", 1)

if isCreature(getCreatureTarget(cid)) then
goThere(mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist)
else
addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist)
end
-----------------------------

return true
end

 

Repe mais.

Link para o comentário
Compartilhar em outros sites

doCreatureSetNoMove(cid, cannotMove)

getCreatureNoMove(cid)

mayNotMove = doCreatureSetNoMove
doPlayerSetNoMove = doCreatureSetNoMove
getPlayerNoMove = getCreatureNoMove
how to use ( como usar )
doCreatureSetNoMove(cid, true)
addEvent(doCreatureSetNoMove, 4000, cid, false)
Link para o comentário
Compartilhar em outros sites

 

doCreatureSetNoMove(cid, cannotMove)

getCreatureNoMove(cid)

mayNotMove = doCreatureSetNoMove
doPlayerSetNoMove = doCreatureSetNoMove
getPlayerNoMove = getCreatureNoMove
how to use ( como usar )
doCreatureSetNoMove(cid, true)

addEvent(doCreatureSetNoMove, 4000, cid, false)

 

Onde eu ponho isso ? Pode me dizer ?

Link para o comentário
Compartilhar em outros sites

Duel System.lua:

storagesDuel = {52480, 52481, 52482, 52482, 52483, 52484, 52485, 6598754}
--[[ Lista das storages Duel!
52480 = sto de duelo e do modo de duel;
52481 = sto de pokes no duel;
52482 = sto do seu time;
52483 = sto do time adversario;
52484 = sto de aceitaçao de duel e do começo do duel;
52485 = sto do nome do 'invitador';
6598754 = sto do canAttackOther;
]]

function beginDuel(cid, n)
if getPlayerStorageValue(cid, 52482) == -1 or getPlayerStorageValue(cid, 52483) == -1 then
return true
end
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
local sto2, sto3 = getPlayerStorageValue(cid, 52482), getPlayerStorageValue(cid, 52483)

if n == 0 then
for i = 1, #t1 do
local pid, sid = getPlayerByName(t1), getPlayerByName(t2)
if isCreature(pid) and getPlayerStorageValue(pid, 52480) >= 1 then
setPlayerStorageValue(pid, 6598754, 5)
setPlayerStorageValue(pid, 52482, sto2)
setPlayerStorageValue(pid, 52483, sto3)
setPlayerStorageValue(pid, 52484, 10)
end
---
if isCreature(sid) and getPlayerStorageValue(sid, 52480) >= 1 then
setPlayerStorageValue(sid, 6598754, 10)
setPlayerStorageValue(sid, 52482, sto2)
setPlayerStorageValue(sid, 52483, sto3)
setPlayerStorageValue(sid, 52484, 10)
end
---
doSendAnimatedText(getThingPosWithDebug(pid), "START", 215)
doSendAnimatedText(getThingPosWithDebug(sid), "START", 215)
end
return true
else
for i = 1, #t1 do
local pid, sid = getPlayerByName(t1), getPlayerByName(t2)
if isCreature(pid) and getPlayerStorageValue(pid, 52480) >= 1 then
doSendAnimatedText(getThingPosWithDebug(pid), (n == 6 and "" or ""..n.."!"), 215)
end
if isCreature(sid) and getPlayerStorageValue(sid, 52480) >= 1 then
doSendAnimatedText(getThingPosWithDebug(sid), (n == 6 and "" or ""..n.."!"), 215)
end
end
n = n-1
end
addEvent(beginDuel, 1000, cid, n)
end


function removeFromTableDuel(cid, value)
if not isCreature(cid) then return true end
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")

table.remove(t1, table.find(t1, value) or -1)
table.remove(t2, table.find(t2, value) or -1)
---
local str1, str2 = "", ""
for i = 1, 3 do
if t1 then str1 = str1..(t1 or "").."," end
if t2 then str2 = str2..(t2 or "").."," end
end
setPlayerStorageValue(cid, 52482, str1)
setPlayerStorageValue(cid, 52483, str2)
return true
end

function isDuelingAgainst(cid, pid)
if not isCreature(cid) or not isCreature(pid) then return false end
-----
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
-----
local name1, name2 = getCreatureName(cid), getCreatureName(pid)
-----
if table.find(t1, name1) ~= nil and table.find(t2, name2) ~= nil then
return true
elseif table.find(t2, name1) ~= nil and table.find(t1, name2) ~= nil then
return true
end
return false
end

function doEndDuel(cid, desisto)
if isCreature(cid) then
if getPlayerStorageValue(cid, 52482) ~= -1 then
t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
end

local invit = getPlayerByName(getPlayerStorageValue(cid, 52485))
if isCreature(invit) then
table1 = string.explode(getPlayerStorageValue(invit, 52482), ",")
table2 = string.explode(getPlayerStorageValue(invit, 52483), ",")
end

if getPlayerStorageValue(cid, 52484) ~= 10 then
if getPlayerStorageValue(cid, 52482) ~= -1 then
for a = 1, 3 do
local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a])
if isCreature(pid) then doCreatureSetSkullType(pid, 0) doRemoveCondition(pid, CONDITION_INFIGHT) end
if isCreature(sid) then doCreatureSetSkullType(sid, 0) doRemoveCondition(sid, CONDITION_INFIGHT) end
for i = 1, #storagesDuel do
if isCreature(pid) then setPlayerStorageValue(pid, storagesDuel, -1) end
if isCreature(sid) then setPlayerStorageValue(sid, storagesDuel, -1) end
end
end
else
for i = 1, #storagesDuel do
setPlayerStorageValue(cid, storagesDuel, -1)
end
doCreatureSetSkullType(cid, 0)
doRemoveCondition(cid, CONDITION_INFIGHT)
---------------------------------
if table2 then
local numero = 0
for i = 1, #table2 do
local ppid = getPlayerByName(table2)
if not isCreature(ppid) or getPlayerStorageValue(ppid, 52480) ~= -1 then
numero = numero+1
end
end
if numero == 0 then doEndDuel(invit) sendMsgToPlayer(invit, 20, "Seu oponente desistiu! Duelo foi cancelado!") end
end
--------------------------------
end
if desisto then doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE) end
return true
end

for a = 1, #t1 do
local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a])
removeFromTableDuel(pid, getCreatureName(cid))
removeFromTableDuel(sid, getCreatureName(cid))
end

local t3 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t4 = string.explode(getPlayerStorageValue(cid, 52483), ",")
if (#t3 == 0 and #t4 >= 1) or (#t4 == 0 and #t3 >= 1) then

for j = 1, (#t3 > 0 and #t3 or #t4) do
local winner = #t3 > 0 and getPlayerByName(t3[j]) or getPlayerByName(t4[j])
if isCreature(winner) then
addEvent(doSendAnimatedText, 500, getThingPosWithDebug(winner), "WIN", COLOR_ELECTRIC)
for i = 1, #storagesDuel do
setPlayerStorageValue(winner, storagesDuel, -1)
end
doCreatureSetSkullType(winner, 0)
doRemoveCondition(winner, CONDITION_INFIGHT)
end
end
addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN)
for i = 1, #storagesDuel do
setPlayerStorageValue(cid, storagesDuel, -1)
end
doCreatureSetSkullType(cid, 0)
doRemoveCondition(cid, CONDITION_INFIGHT)

else
for i = 1, #storagesDuel do
setPlayerStorageValue(cid, storagesDuel, -1)
end
doCreatureSetSkullType(cid, 0)
doRemoveCondition(cid, CONDITION_INFIGHT)
if desisto then
doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE)
else
addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN)
end
end
end
end

function checkDuel(cid)
if getPlayerStorageValue(cid, 52484) ~= 10 then return true end
if getPlayerStorageValue(cid, 52481) >= 1 then
setPlayerStorageValue(cid, 52481, getPlayerStorageValue(cid, 52481)-1)
doSendAnimatedText(getThingPosWithDebug(cid), "POKE DOWN", 65)
end
if getPlayerStorageValue(cid, 52481) == 0 then
doEndDuel(cid)
end
end
--/////////////////////////////////////////////////////////////////////////////////////////////--

Link para o comentário
Compartilhar em outros sites

Tenta:

 

 

storagesDuel = {52480, 52481, 52482, 52482, 52483, 52484, 52485, 6598754}
--[[ Lista das storages Duel!
52480 = sto de duelo e do modo de duel;
52481 = sto de pokes no duel;
52482 = sto do seu time;
52483 = sto do time adversario;
52484 = sto de aceitaçao de duel e do começo do duel;
52485 = sto do nome do 'invitador';
6598754 = sto do canAttackOther;
]]
 
function beginDuel(cid, n)
if getPlayerStorageValue(cid, 52482) == -1 or getPlayerStorageValue(cid, 52483) == -1 then
return true
end
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
local sto2, sto3 = getPlayerStorageValue(cid, 52482), getPlayerStorageValue(cid, 52483)
 
if n == 0 then
   for i = 1, #t1 do
       local pid, sid = getPlayerByName(t1[i]), getPlayerByName(t2[i])
       if isCreature(pid) and getPlayerStorageValue(pid, 52480) >= 1 then
          setPlayerStorageValue(pid, 6598754, 5)
          setPlayerStorageValue(pid, 52482, sto2)
          setPlayerStorageValue(pid, 52483, sto3)
          setPlayerStorageValue(pid, 52484, 10)
       end
       ---
       if isCreature(sid) and getPlayerStorageValue(sid, 52480) >= 1 then
          setPlayerStorageValue(sid, 6598754, 10)
          setPlayerStorageValue(sid, 52482, sto2)
          setPlayerStorageValue(sid, 52483, sto3)
          setPlayerStorageValue(sid, 52484, 10)
       end
       ---
       doSendAnimatedText(getThingPosWithDebug(pid), "START", 215)
       doSendAnimatedText(getThingPosWithDebug(sid), "START", 215)
       doPlayerSetNoMove(pid, true)
       doPlayerSetNoMove(sid, true)
   end  
   return true                                                    
else  
   for i = 1, #t1 do
       local pid, sid = getPlayerByName(t1[i]), getPlayerByName(t2[i])
       if isCreature(pid) and getPlayerStorageValue(pid, 52480) >= 1 then
          doSendAnimatedText(getThingPosWithDebug(pid), (n == 6 and "" or ""..n.."!"), 215)
       end
       if isCreature(sid) and getPlayerStorageValue(sid, 52480) >= 1 then
          doSendAnimatedText(getThingPosWithDebug(sid), (n == 6 and "" or ""..n.."!"), 215)
       end
   end
   n = n-1
end
addEvent(beginDuel, 1000, cid, n)
end
 
 
function removeFromTableDuel(cid, value)
if not isCreature(cid) then return true end
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
 
table.remove(t1, table.find(t1, value) or -1)
table.remove(t2, table.find(t2, value) or -1)
---
local str1, str2 = "", ""
for i = 1, 3 do
    if t1[i] then  str1 = str1..(t1[i] or "").."," end
    if t2[i] then  str2 = str2..(t2[i] or "").."," end
end
setPlayerStorageValue(cid, 52482, str1)
setPlayerStorageValue(cid, 52483, str2)
return true
end
 
function isDuelingAgainst(cid, pid)
if not isCreature(cid) or not isCreature(pid) then return false end
-----
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
-----
local name1, name2 = getCreatureName(cid), getCreatureName(pid)
-----
if table.find(t1, name1) ~= nil and table.find(t2, name2) ~= nil then
   return true
elseif table.find(t2, name1) ~= nil and table.find(t1, name2) ~= nil then
   return true
end
return false
end
 
function doEndDuel(cid, desisto)
if isCreature(cid) then
if getPlayerStorageValue(cid, 52482) ~= -1 then
   t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
   t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
end
 
local invit = getPlayerByName(getPlayerStorageValue(cid, 52485))
if isCreature(invit) then
   table1 = string.explode(getPlayerStorageValue(invit, 52482), ",")
   table2 = string.explode(getPlayerStorageValue(invit, 52483), ",")
end
 
if getPlayerStorageValue(cid, 52484) ~= 10 then
    if getPlayerStorageValue(cid, 52482) ~= -1 then
        for a = 1, 3 do
            local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a])
            if isCreature(pid) then doCreatureSetSkullType(pid, 0) doRemoveCondition(pid, CONDITION_INFIGHT) end
            if isCreature(sid) then doCreatureSetSkullType(sid, 0) doRemoveCondition(sid, CONDITION_INFIGHT) end
            for i = 1, #storagesDuel do
                if isCreature(pid) then setPlayerStorageValue(pid, storagesDuel[i], -1) end
                if isCreature(sid) then setPlayerStorageValue(sid, storagesDuel[i], -1) end
            end
        end
    else
        for i = 1, #storagesDuel do
            setPlayerStorageValue(cid, storagesDuel[i], -1)
        end
        doCreatureSetSkullType(cid, 0)
        doRemoveCondition(cid, CONDITION_INFIGHT)
        ---------------------------------   
        if table2 then
            local numero = 0
            for i = 1, #table2 do
                local ppid = getPlayerByName(table2[i])              
                if not isCreature(ppid) or getPlayerStorageValue(ppid, 52480) ~= -1 then
                    numero = numero+1
                end
            end
        if numero == 0 then 
            doEndDuel(invit) 
            sendMsgToPlayer(invit, 20, "Seu oponente desistiu! Duelo foi cancelado!") 
            doPlayerSetNoMove(invit, false)
        end
    end
       --------------------------------
end
    if desisto then 
        doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE) 
        doPlayerSetNoMove(cid, false)
    end       
   return true
end
 
   for a = 1, #t1 do
       local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a])
       removeFromTableDuel(pid, getCreatureName(cid))
       removeFromTableDuel(sid, getCreatureName(cid))
   end
   
   local t3 = string.explode(getPlayerStorageValue(cid, 52482), ",")
   local t4 = string.explode(getPlayerStorageValue(cid, 52483), ",")
    if (#t3 == 0 and #t4 >= 1) or (#t4 == 0 and #t3 >= 1) then  
      
        for j = 1, (#t3 > 0 and #t3 or #t4) do
            local winner = #t3 > 0 and getPlayerByName(t3[j]) or getPlayerByName(t4[j])
            if isCreature(winner) then
                addEvent(doSendAnimatedText, 500, getThingPosWithDebug(winner), "WIN", COLOR_ELECTRIC)
                for i = 1, #storagesDuel do
                    setPlayerStorageValue(winner, storagesDuel[i], -1)
                end
                doCreatureSetSkullType(winner, 0)
                doPlayerSetNoMove(winner, false)
                doRemoveCondition(winner, CONDITION_INFIGHT)
            end
        end
        addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN)
        for i = 1, #storagesDuel do
            setPlayerStorageValue(cid, storagesDuel[i], -1)
        end
        doCreatureSetSkullType(cid, 0)
        doPlayerSetNoMove(cid, false)
        doRemoveCondition(cid, CONDITION_INFIGHT)
      
    else
        for i = 1, #storagesDuel do
            setPlayerStorageValue(cid, storagesDuel[i], -1)
        end
        doCreatureSetSkullType(cid, 0)
        doRemoveCondition(cid, CONDITION_INFIGHT)
        doPlayerSetNoMove(cid, false)
        if desisto then
            doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE)
        else
            addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN)
        end
    end
end
end
 
function checkDuel(cid)
if getPlayerStorageValue(cid, 52484) ~= 10 then return true end
if getPlayerStorageValue(cid, 52481) >= 1 then
   setPlayerStorageValue(cid, 52481, getPlayerStorageValue(cid, 52481)-1)
   doSendAnimatedText(getThingPosWithDebug(cid), "POKE DOWN", 65)
end
if getPlayerStorageValue(cid, 52481) == 0 then           
   doEndDuel(cid)
end         
end
--/////////////////////////////////////////////////////////////////////////////////////////////--

Link para o comentário
Compartilhar em outros sites

 

Tenta:

 

 

storagesDuel = {52480, 52481, 52482, 52482, 52483, 52484, 52485, 6598754}
--[[ Lista das storages Duel!
52480 = sto de duelo e do modo de duel;
52481 = sto de pokes no duel;
52482 = sto do seu time;
52483 = sto do time adversario;
52484 = sto de aceitaçao de duel e do começo do duel;
52485 = sto do nome do 'invitador';
6598754 = sto do canAttackOther;
]]
 
function beginDuel(cid, n)
if getPlayerStorageValue(cid, 52482) == -1 or getPlayerStorageValue(cid, 52483) == -1 then
return true
end
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
local sto2, sto3 = getPlayerStorageValue(cid, 52482), getPlayerStorageValue(cid, 52483)
 
if n == 0 then
   for i = 1, #t1 do
       local pid, sid = getPlayerByName(t1[i]), getPlayerByName(t2[i])
       if isCreature(pid) and getPlayerStorageValue(pid, 52480) >= 1 then
          setPlayerStorageValue(pid, 6598754, 5)
          setPlayerStorageValue(pid, 52482, sto2)
          setPlayerStorageValue(pid, 52483, sto3)
          setPlayerStorageValue(pid, 52484, 10)
       end
       ---
       if isCreature(sid) and getPlayerStorageValue(sid, 52480) >= 1 then
          setPlayerStorageValue(sid, 6598754, 10)
          setPlayerStorageValue(sid, 52482, sto2)
          setPlayerStorageValue(sid, 52483, sto3)
          setPlayerStorageValue(sid, 52484, 10)
       end
       ---
       doSendAnimatedText(getThingPosWithDebug(pid), "START", 215)
       doSendAnimatedText(getThingPosWithDebug(sid), "START", 215)
       doPlayerSetNoMove(pid, true)
       doPlayerSetNoMove(sid, true)
   end  
   return true                                                    
else  
   for i = 1, #t1 do
       local pid, sid = getPlayerByName(t1[i]), getPlayerByName(t2[i])
       if isCreature(pid) and getPlayerStorageValue(pid, 52480) >= 1 then
          doSendAnimatedText(getThingPosWithDebug(pid), (n == 6 and "" or ""..n.."!"), 215)
       end
       if isCreature(sid) and getPlayerStorageValue(sid, 52480) >= 1 then
          doSendAnimatedText(getThingPosWithDebug(sid), (n == 6 and "" or ""..n.."!"), 215)
       end
   end
   n = n-1
end
addEvent(beginDuel, 1000, cid, n)
end
 
 
function removeFromTableDuel(cid, value)
if not isCreature(cid) then return true end
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
 
table.remove(t1, table.find(t1, value) or -1)
table.remove(t2, table.find(t2, value) or -1)
---
local str1, str2 = "", ""
for i = 1, 3 do
    if t1[i] then  str1 = str1..(t1[i] or "").."," end
    if t2[i] then  str2 = str2..(t2[i] or "").."," end
end
setPlayerStorageValue(cid, 52482, str1)
setPlayerStorageValue(cid, 52483, str2)
return true
end
 
function isDuelingAgainst(cid, pid)
if not isCreature(cid) or not isCreature(pid) then return false end
-----
local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
-----
local name1, name2 = getCreatureName(cid), getCreatureName(pid)
-----
if table.find(t1, name1) ~= nil and table.find(t2, name2) ~= nil then
   return true
elseif table.find(t2, name1) ~= nil and table.find(t1, name2) ~= nil then
   return true
end
return false
end
 
function doEndDuel(cid, desisto)
if isCreature(cid) then
if getPlayerStorageValue(cid, 52482) ~= -1 then
   t1 = string.explode(getPlayerStorageValue(cid, 52482), ",")
   t2 = string.explode(getPlayerStorageValue(cid, 52483), ",")
end
 
local invit = getPlayerByName(getPlayerStorageValue(cid, 52485))
if isCreature(invit) then
   table1 = string.explode(getPlayerStorageValue(invit, 52482), ",")
   table2 = string.explode(getPlayerStorageValue(invit, 52483), ",")
end
 
if getPlayerStorageValue(cid, 52484) ~= 10 then
    if getPlayerStorageValue(cid, 52482) ~= -1 then
        for a = 1, 3 do
            local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a])
            if isCreature(pid) then doCreatureSetSkullType(pid, 0) doRemoveCondition(pid, CONDITION_INFIGHT) end
            if isCreature(sid) then doCreatureSetSkullType(sid, 0) doRemoveCondition(sid, CONDITION_INFIGHT) end
            for i = 1, #storagesDuel do
                if isCreature(pid) then setPlayerStorageValue(pid, storagesDuel[i], -1) end
                if isCreature(sid) then setPlayerStorageValue(sid, storagesDuel[i], -1) end
            end
        end
    else
        for i = 1, #storagesDuel do
            setPlayerStorageValue(cid, storagesDuel[i], -1)
        end
        doCreatureSetSkullType(cid, 0)
        doRemoveCondition(cid, CONDITION_INFIGHT)
        ---------------------------------   
        if table2 then
            local numero = 0
            for i = 1, #table2 do
                local ppid = getPlayerByName(table2[i])              
                if not isCreature(ppid) or getPlayerStorageValue(ppid, 52480) ~= -1 then
                    numero = numero+1
                end
            end
        if numero == 0 then 
            doEndDuel(invit) 
            sendMsgToPlayer(invit, 20, "Seu oponente desistiu! Duelo foi cancelado!") 
            doPlayerSetNoMove(invit, false)
        end
    end
       --------------------------------
end
    if desisto then 
        doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE) 
        doPlayerSetNoMove(cid, false)
    end       
   return true
end
 
   for a = 1, #t1 do
       local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a])
       removeFromTableDuel(pid, getCreatureName(cid))
       removeFromTableDuel(sid, getCreatureName(cid))
   end
   
   local t3 = string.explode(getPlayerStorageValue(cid, 52482), ",")
   local t4 = string.explode(getPlayerStorageValue(cid, 52483), ",")
    if (#t3 == 0 and #t4 >= 1) or (#t4 == 0 and #t3 >= 1) then  
      
        for j = 1, (#t3 > 0 and #t3 or #t4) do
            local winner = #t3 > 0 and getPlayerByName(t3[j]) or getPlayerByName(t4[j])
            if isCreature(winner) then
                addEvent(doSendAnimatedText, 500, getThingPosWithDebug(winner), "WIN", COLOR_ELECTRIC)
                for i = 1, #storagesDuel do
                    setPlayerStorageValue(winner, storagesDuel[i], -1)
                end
                doCreatureSetSkullType(winner, 0)
                doPlayerSetNoMove(winner, false)
                doRemoveCondition(winner, CONDITION_INFIGHT)
            end
        end
        addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN)
        for i = 1, #storagesDuel do
            setPlayerStorageValue(cid, storagesDuel[i], -1)
        end
        doCreatureSetSkullType(cid, 0)
        doPlayerSetNoMove(cid, false)
        doRemoveCondition(cid, CONDITION_INFIGHT)
      
    else
        for i = 1, #storagesDuel do
            setPlayerStorageValue(cid, storagesDuel[i], -1)
        end
        doCreatureSetSkullType(cid, 0)
        doRemoveCondition(cid, CONDITION_INFIGHT)
        doPlayerSetNoMove(cid, false)
        if desisto then
            doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE)
        else
            addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN)
        end
    end
end
end
 
function checkDuel(cid)
if getPlayerStorageValue(cid, 52484) ~= 10 then return true end
if getPlayerStorageValue(cid, 52481) >= 1 then
   setPlayerStorageValue(cid, 52481, getPlayerStorageValue(cid, 52481)-1)
   doSendAnimatedText(getThingPosWithDebug(cid), "POKE DOWN", 65)
end
if getPlayerStorageValue(cid, 52481) == 0 then           
   doEndDuel(cid)
end         
end
--/////////////////////////////////////////////////////////////////////////////////////////////--

 

Jaja eu testo aqui, to terminando de adicionar os corpses dos pokes da out aki no server.

---EDIT--

Deu certo aki, vlw. rep+

Editado por FlamesAdmin
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...