Postado Maio 16, 2017 8 anos Então galera!! Seguinte o erro aqui é quando você derrota o pokemon do cara que esta duelando com você ele não conta Tipo você derrota o pokemon mas não aparece a mensagem POKEDOWN! como se eu não tivesse derrotado o poke isso vale se ele derrotar também o seu ja tentei mudar muitas coisas aqui e não consegui a solução!!! --lose, deslogar, render e perder por tempo duelTable = { targetName = 55000, pokeballsCount = 55001, giveUP = 55002, infoBalls = 55003, wins = 55004, loses = 55005, isInDuel = 55006, timeToPuch = 60, acceptedDuel = 55007 } function alertToPuchPokeball(p1, lose) if not isCreature(p1) then return true end if not lose then doSendMsg(p1, "Você tem 1 minuto para puxar um pokemon ou perderar o duelo.") addEvent(alertToPuchPokeball, duelTable.timeToPuch * 1000, p1, true) else if #getCreatureSummons(p1) <= 0 then local p2 = getPlayerByName(getPlayerAdvers(p1)) doWin(p2) doLoser(p1) doSendMsg(p2, "O jogador " .. getCreatureName(p1) .. ", expirou o tempo de espera do duelo e você ganhou.") end end end function checkGiveUp(cid) if getPlayerStorageValue(cid, duelTable.giveUP) >= 1 and getCreatureSkullType(cid) == SKULL_WHITE then --- player 1 desistiu/puxou poke/ poke morreu antes comecar o duel local p2 = getPlayerByName(getPlayerAdvers(cid)) doWin(p2) doGiveUP(cid) end end function isInDuel(p1) if not isCreature(p1) then return true end if getPlayerStorageValue(p1, duelTable.isInDuel) >= 1 then return true end return false end function CanAttackerInDuel(p1, p2) if not isCreature(p1) or not isCreature(p2) then return true end if getPlayerStorageValue(p1, duelTable.isInDuel) >= 1 and getPlayerAdvers(p1) == getCreatureName(p2) and getPlayerAdvers(p2) == getCreatureName(p1) then return true end return false end function CanAttackerInFree(p1, p2) if not isCreature(p1) or not isCreature(p2) then return true end if getPlayerStorageValue(p1, 321321) >= 1 and getPlayerStorageValue(p2, 321321) >= 1 then return true end return false end function doRemoveCountPokemon(p1) if not isCreature(p1) then return true end setPlayerStorageValue(p1, duelTable.pokeballsCount, getPlayerStorageValue(p1, duelTable.pokeballsCount) -1) doSendAnimatedText(getThingPos(p1), "POKEDOWN!", 215) -- corzinha if getPokemonsCount(p1) == 0 then local p2 = getPlayerByName(getPlayerAdvers(p1)) doWin(p2) doLoser(p1) doLoogoutInDuel(p1) else alertToPuchPokeball(p1, false) end end function doLoogoutInDuel(p1) if not isCreature(p1) then return true end local p2 = getPlayerByName(getPlayerAdvers(p1)) doEreaseDuel(p1) if not p2 then return true elseif not isInDuel(p1) and isCreature(p2) then doEreaseDuel(p2) end if getCreatureSkullType(p1) == SKULL_WHITE then doWin(p2) doGiveUP(p1) end end function doWin(p1) if not isCreature(p1) then return true end doSendAnimatedText(getThingPos(p1), "WIN!", 215) setPlayerStorageValue(p2, duelTable.wins, getPlayerStorageValue(p1, duelTable.wins) +1) doSendMsg(p1, "Voce ganhou o duelo.") doEreaseDuel(p1) end function doGiveUP(p1) if not isCreature(p1) then return true end doSendAnimatedText(getThingPos(p1), "GIVE UP!", COLOR_WATER) setPlayerStorageValue(p1, duelTable.loses, getPlayerStorageValue(p1, duelTable.loses) +1) doSendMsg(p1, "Voce desistiu o duelo.") doEreaseDuel(p1) end function doLoser(p1) if not isCreature(p1) then return true end doSendAnimatedText(getThingPos(p1), "LOSER!", 180) setPlayerStorageValue(p1, duelTable.loses, getPlayerStorageValue(p1, duelTable.loses) +1) doSendMsg(p1, "Voce perdeu o duelo.") doEreaseDuel(p1) end function getPokemonsCount(p1) return getPlayerStorageValue(p1, duelTable.pokeballsCount) end function getPlayerAdvers(cid) return getPlayerStorageValue(cid, duelTable.targetName) end function doIniteDuel(p1, p2, pokeballsCount) -- checar as pokebolas if not isCreature(p1) or not isCreature(p2) then return true end if #getLivePokeballs(p1, getPlayerSlotItem(p1, 3).uid, true) < pokeballsCount then doSendMsg(p1, "Você não tem a quantidade de pokemon exigida para este duelo.") return true end if #getCreatureSummons(p1) <= 0 then doSendMsg(p1, "Puxe um pokemon para invitar o jogador (" .. getCreatureName(p2) .. ").") return true end if getCreatureSkullType(p1) == SKULL_WHITE then doSendMsg(p1, "Você já está em um duel.") return true elseif getCreatureSkullType(p1) == 1 then doSendMsg(p1, "Você já convidou um player. Aguarde a reposta dele.") return true elseif getCreatureSkullType(p1) == 2 then doSendMsg(p1, "Você já foi convidou para um duel.") return true end if getCreatureSkullType(p2) == SKULL_WHITE then doSendMsg(p1, "Este player já está em um duel.") return true elseif getCreatureSkullType(p2) == 1 then doSendMsg(p1, "Este player está convidando um player para duel.") return true elseif getCreatureSkullType(p2) == 2 then doSendMsg(p1, "Este player já foi convidando para um duel.") return true end if getTileInfo(getThingPos(getCreatureSummons(p1)[1])).protection then doSendMsg(p1, "Retire seu pokemon da pz para convidar alguem para o duel.") return true end if getTileInfo(getThingPos(p1)).protection then doSendMsg(p1, "Saia da pz para convidar alguem para o duel.") return true end if getDistanceBetween(getThingPos(p2), getThingPos(p1)) > 3 then doSendMsg(p1, "Chegue mais perto de seu adversário.") return true end setPlayerStorageValue(p1, duelTable.targetName, getPlayerName(p2)) setPlayerStorageValue(p1, duelTable.infoBalls, pokeballsCount) setPlayerStorageValue(p2, duelTable.targetName, getPlayerName(p1)) local balls = pokeballsCount .. " pokeball" .. (pokeballsCount > 1 and "s" or "") doCreatureSetSkullType(p1, 1) doCreatureSetSkullType(p2, 2) doSendMsg(p1, "O jogador (" .. getCreatureName(p2) .. ") foi convidado para o duelo de ".. balls ..". Aguarde a resposta.") doSendMsg(p2, "O jogador (" .. getCreatureName(p1) .. ") lhe convidou para um duelo de ".. balls ..".") doSendMsg(p2, "Você tem 15 segundos para aceitar o duelo.") end function isInvitedDuel(p1, p2) if not isCreature(p1) or not isCreature(p2) then return true end if getPlayerAdvers(p1) == getCreatureName(p2) then return true end return false end function acceptDuel(p1, p2, pokeballsCount) if not isCreature(p1) or not isCreature(p2) then return true end if #getLivePokeballs(p1, getPlayerSlotItem(p1, 3).uid, true) < pokeballsCount then doSendMsg(p1, "Você não tem a quantidade de pokemon exigida para este duelo.") doNotAcceotedDuel(p1, p2) return true elseif #getLivePokeballs(p2, getPlayerSlotItem(p2, 3).uid, true) < pokeballsCount then doSendMsg(p2, "Você não tem a quantidade de pokemon exigida para este duelo.") doNotAcceotedDuel(p2, p1) return true end if #getCreatureSummons(p1) <= 0 then doNotAcceotedDuel(p1, p2) return true elseif #getCreatureSummons(p2) <= 0 then doNotAcceotedDuel(p2, p1) return true end setPlayerStorageValue(p1, duelTable.pokeballsCount, pokeballsCount) -- quantidade de pokeballs setPlayerStorageValue(p2, duelTable.pokeballsCount, pokeballsCount) -- quantidade de pokeballs setPlayerStorageValue(p1, duelTable.isInDuel, 1) -- quantidade de pokeballs setPlayerStorageValue(p2, duelTable.isInDuel, 1) -- quantidade de pokeballs doSendAnimatedText(getThingPos(p1), "START!", 215) doSendAnimatedText(getThingPos(p2), "START!", 215) setPlayerStorageValue(p1, duelTable.giveUP, 0) setPlayerStorageValue(p2, duelTable.giveUP, 0) end function doPantinNoDuel(p1, p2, pokeballsCount, count) if not isCreature(p1) or not isCreature(p2) then return true end if not isInvitedDuel(p1, p2) then return true end if #getLivePokeballs(p1, getPlayerSlotItem(p1, 3).uid, true) < pokeballsCount then doSendMsg(p1, "Você não tem a quantidade de pokemon exigida para este duelo.") return true end if getCreatureSkullType(p1) ~= SKULL_WHITE and #getCreatureSummons(p1) <= 0 then doSendMsg(p1, "Puxe um pokemon para aceitar o jogador (" .. getCreatureName(p2) .. ").") return true end if getTileInfo(getThingPos(p1)).protection then doSendMsg(p1, "Saia da pz para convidar alguem para o duel.") return true end if getTileInfo(getThingPos(getCreatureSummons(p1)[1])).protection then doSendMsg(p1, "Retire seu pokemon da pz para aceitar este duel.") return true end if getDistanceBetween(getThingPos(p2), getThingPos(p1)) > 3 then doSendMsg(p1, "Chege mais perto de seu adversário.") return true end if count == 0 then acceptDuel(p1, p2, pokeballsCount) return true end setPlayerStorageValue(p1, duelTable.acceptedDuel, 1) setPlayerStorageValue(p2, duelTable.acceptedDuel, 1) doSendAnimatedText(getThingPos(p1), count.."!", 215) doSendAnimatedText(getThingPos(p2), count.."!", 215) setPlayerStorageValue(p1, duelTable.giveUP, 1) setPlayerStorageValue(p2, duelTable.giveUP, 1) addEvent(doPantinNoDuel, 1000, p1, p2, pokeballsCount, count-1) doCreatureSetSkullType(p1, SKULL_WHITE) doCreatureSetSkullType(p2, SKULL_WHITE) end function doNotAcceotedDuel(p1, p2) if not isCreature(p1) or not isCreature(p2) then return true end --if getPlayerStorageValue(p1, duelTable.acceptedDuel) == 0 or getPlayerStorageValue(p2, duelTable.acceptedDuel) == 0 then return true end -- caso o duelo acabe antes dacontagem de tempo de por poke pra fora if getPlayerStorageValue(p1, duelTable.acceptedDuel) >= 1 and getPlayerStorageValue(p2, duelTable.acceptedDuel) >= 1 then return true end if getCreatureSkullType(p1) ~= 1 then return true end doEreaseDuel(p1) doEreaseDuel(p2) doSendMsg(p1, "O player (" .. getCreatureName(p2) .. ") não aceitou o duelo.") doSendMsg(p2, "Duelo cancelado.") doCreatureSetSkullType(p1, 0) doCreatureSetSkullType(p2, 0) end function doEreaseDuel(p1) setPlayerStorageValue(p1, duelTable.acceptedDuel, 0) setPlayerStorageValue(p1, duelTable.pokeballsCount, 0) -- quantidade de pokeballs setPlayerStorageValue(p1, duelTable.targetName, 0) -- quantidade de pokeballs setPlayerStorageValue(p1, duelTable.giveUP, 0) setPlayerStorageValue(p1, duelTable.isInDuel, 0) doCreatureSetSkullType(p1, SKULL_NONE) doCreatureSetSkullType(p1, SKULL_NONE) end
Postado Maio 16, 2017 8 anos Que tipo de script é esse que você postou? Action, creaturescript, movements? Está completo? Provavelmente falta um creaturescript (onKill?) para controlar se o poke do inimigo foi derrotado. Editado Maio 16, 2017 8 anos por Wolven (veja o histórico de edições) Open Tibia Servers List (otservlist.com.br) https://otarchive.com
Postado Maio 18, 2017 8 anos Autor Em 16/05/2017 ás 14:20, Wolven disse: Que tipo de script é esse que você postou? Action, creaturescript, movements? Está completo? Provavelmente falta um creaturescript (onKill?) para controlar se o poke do inimigo foi derrotado. Então essa ai ta na pasta LIB do server o arquivo chama DUEL SYSTEM.... como eu configuro no creaturescript? o evento onkill?
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.