Ir para conteúdo
  • 0

Erros PDA


Josegvb

Pergunta

Bom minha net caiu e nao postou --'

irei escreber denovo porem + resumido

gente, tenho 1 PDA on a 9 meses... fiz tantas mudanças q é impossivel lembrar de tudo

mas nada daba error nao... ultimamente o servidor msm estando en host fica dando MUIIIIITO erro no log e por isto o jogo fica muito lag...

tanto lag assim q nem eu to querendo logar no jogo...

enfim quem tiver como me ajudar eu agradesceria muito irei postar alguns dos MUITOS erros aki

 

 

 

[10/02/2016 17:44:31] [Error - Action Interface]
[10/02/2016 17:44:31] In a timer event called from:
[10/02/2016 17:44:31] data/actions/scripts/goback.lua:onUse
[10/02/2016 17:44:31] Description:
[10/02/2016 17:44:31] data/lib/some functions.lua:1712: attempt to compare two boolean values
[10/02/2016 17:44:31] stack traceback:
[10/02/2016 17:44:31] data/lib/some functions.lua:1712: in function <data/lib/some functions.lua:1696>
[10/02/2016 17:44:17] [Error - Spell Interface]
[10/02/2016 17:44:17] In a timer event called from:
[10/02/2016 17:44:17] data/spells/scripts/ps/Confuse Ray.lua:onCastSpell
[10/02/2016 17:44:17] Description:
[10/02/2016 17:44:17] (luaGetCreatureStorage) Creature not found
[10/02/2016 17:44:31] [Error - Action Interface]
[10/02/2016 17:44:31] In a timer event called from:
[10/02/2016 17:44:31] data/actions/scripts/goback.lua:onUse
[10/02/2016 17:44:31] Description:
[10/02/2016 17:44:31] (luaGetCreatureHealth) Creature not found
[10/02/2016 17:44:31] [Error - Action Interface]
[10/02/2016 17:44:31] In a timer event called from:
[10/02/2016 17:44:31] data/actions/scripts/goback.lua:onUse
[10/02/2016 17:44:31] Description:
[10/02/2016 17:44:31] (luaGetCreatureMaxHealth) Creature not found
Esse erro aki da sempre que alguem ta entrando no servidor...
[10/02/2016 17:41:39] [Error - CreatureScript Interface]
[10/02/2016 17:41:39] data/creaturescripts/scripts/login.lua:onLogin
[10/02/2016 17:41:39] Description:
[10/02/2016 17:41:39] (luaGetItemAttribute) Item not found
[10/02/2016 17:26:00] [Error - Action Interface]
[10/02/2016 17:26:00] In a timer event called from:
[10/02/2016 17:26:00] data/actions/scripts/goback.lua:onUse
[10/02/2016 17:26:00] Description:
[10/02/2016 17:26:00] (luaDoCreatureSetSkullType) Creature not found
[10/02/2016 17:46:10] [Error - Action Interface]
[10/02/2016 17:46:10] In a timer event called from:
[10/02/2016 17:46:10] data/actions/scripts/catch.lua:onUse
[10/02/2016 17:46:10] Description:
[10/02/2016 17:46:10] data/lib/catch system.lua:89: attempt to index a nil value
[10/02/2016 17:46:10] stack traceback:
[10/02/2016 17:46:10] data/lib/catch system.lua:89: in function <data/lib/catch system.lua:71>
[10/02/2016 17:35:20] [Error - Action Interface]
[10/02/2016 17:35:20] In a timer event called from:
[10/02/2016 17:35:20] data/actions/scripts/goback.lua:onUse
[10/02/2016 17:35:20] Description:
[10/02/2016 17:35:20] (luaDoCreatureAddHealth) Creature not found
[10/02/2016 17:35:20] [Error - Action Interface]
[10/02/2016 17:35:20] In a timer event called from:
[10/02/2016 17:35:20] data/actions/scripts/goback.lua:onUse
[10/02/2016 17:35:20] Description:
[10/02/2016 17:35:20] (luaGetThingPosition) Thing not found
[10/02/2016 17:35:21] [Error - Action Interface]
[10/02/2016 17:35:21] data/actions/scripts/goback.lua:onUse
[10/02/2016 17:35:21] Description:
[10/02/2016 17:35:21] data/actions/scripts/goback.lua:26: attempt to index field '?' (a nil value)
[10/02/2016 17:35:21] stack traceback:
[10/02/2016 17:35:21] data/actions/scripts/goback.lua:26: in function <data/actions/scripts/goback.lua:15>
tem muitos bugs como é o caso do super sonic e outros que simplemente começaram a dar bug sem mexer nada...
[10/02/2016 17:32:54] [Error - Spell Interface]
[10/02/2016 17:32:54] In a timer event called from:
[10/02/2016 17:32:54] data/spells/scripts/ps/Echoed Voice.lua:onCastSpell
[10/02/2016 17:32:54] Description:
[10/02/2016 17:32:54] (luaDoCombatAreaHealth) Creature not found
[10/02/2016 17:38:05] [Error - Spell Interface]
[10/02/2016 17:38:05] In a timer event called from:
[10/02/2016 17:38:05] data/spells/scripts/ps/Hypnosis.lua:onCastSpell
[10/02/2016 17:38:05] Description:
[10/02/2016 17:38:05] (luaDoAddCondition) Creature not found
[10/02/2016 17:34:15] [Error - Action Interface]
[10/02/2016 17:34:15] In a timer event called from:
[10/02/2016 17:34:15] data/actions/scripts/catch.lua:onUse
[10/02/2016 17:34:15] Description:
[10/02/2016 17:34:15] (luaDoItemSetAttribute) Invalid data type

enfim esses sao alguns dos bugs...
irei postar os meus scripts agr
login.lua

local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}
function onLogin(cid)
if getPlayerStorageValue(cid, 32001) == 1 then
setPlayerStorageValue(cid, 32001, 0)
doRemoveCondition(cid, CONDITION_OUTFIT)
doRegainSpeed(cid)
end
local accountManager = getPlayerAccountManager(cid)
if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 80 then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 90)
doCreatureSetDropLoot(cid, false)
end
if getPlayerLevel(cid) >= 81 and getPlayerLevel(cid) <= 149 then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 70)
doCreatureSetDropLoot(cid, false)
end
if getPlayerLevel(cid) >= 150 then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 45)
doCreatureSetDropLoot(cid, false)
end
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end
if getCreatureName(cid) == "Account Manager" then
local outfit = {}
if accountManagerRandomPokemonOutfit then
outfit = {lookType = getPokemonXMLOutfit(oldpokedex[math.random(151)][1])}
else
outfit = accountManagerOutfit
end
doSetCreatureOutfit(cid, outfit, -1)
return true
end
if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end
local outfit = {}
if getPlayerVocation(cid) == 0 then
doPlayerSetMaxCapacity(cid, 0)
doPlayerSetVocation(cid, 1)
setCreatureMaxMana(cid, 6)
doPlayerAddSoul(cid, -getPlayerSoul(cid))
setPlayerStorageValue(cid, 19898, 0)
if getCreatureOutfit(cid).lookType == 128 then
outfit = {lookType = 510, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)}
elseif getCreatureOutfit(cid).lookType == 136 then
outfit = {lookType = 511, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)}
end
doCreatureChangeOutfit(cid, outfit)
end
registerCreatureEvent(cid, "dropStone")
registerCreatureEvent(cid, "ShowPokedex") --alterado v1.6
registerCreatureEvent(cid, "ClosePokedex") --alterado v1.6
registerCreatureEvent(cid, "WatchTv")
registerCreatureEvent(cid, "StopWatchingTv")
registerCreatureEvent(cid, "WalkTv")
registerCreatureEvent(cid, "RecordTv")
registerCreatureEvent(cid, "PlayerLogout")
registerCreatureEvent(cid, "WildAttack")
registerCreatureEvent(cid, "Idle")
registerCreatureEvent(cid, "PokemonIdle")
registerCreatureEvent(cid, "EffectOnAdvance")
registerCreatureEvent(cid, "GeneralConfiguration")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "LookSystem")
registerCreatureEvent(cid, "T1")
registerCreatureEvent(cid, "T2")
registerCreatureEvent(cid, "task_count")
registerCreatureEvent(cid, "pokemons")
registerCreatureEvent(cid, "aloot_kill")
registerCreatureEvent(cid, "aloot_reg")
addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "Bem Vindo!!", COLOR_BURN)
if getPlayerStorageValue(cid, 99284) == 1 then
setPlayerStorageValue(cid, 99284, -1)
end
if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then
setPlayerStorageValue(cid, 6598754, -1)
setPlayerStorageValue(cid, 6598755, -1)
doRemoveCondition(cid, CONDITION_OUTFIT) --alterado v1.9 \/
doTeleportThing(cid, posBackPVP, false)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
end
doChangeSpeed(cid, -(getCreatureSpeed(cid)))
--///////////////////////////////////////////////////////////////////////////--
local storages = {17000, 63215, 17001, 13008, 5700}
for s = 1, #storages do
if not tonumber(getPlayerStorageValue(cid, storages)) then
if s == 3 then
setPlayerStorageValue(cid, storages, 1)
elseif s == 4 then
setPlayerStorageValue(cid, storages, -1)
else
if isBeingUsed(getPlayerSlotItem(cid, 8).itemid) then
setPlayerStorageValue(cid, storages, 1)
else
setPlayerStorageValue(cid, storages, -1)
end
end
doPlayerSendTextMessage(cid, 27, "Sorry, but a problem occurred on the server, but now it's alright")
end
end
--/////////////////////////////////////////////////////////////////////////--
if getPlayerStorageValue(cid, 17000) >= 1 then -- fly
local item = getPlayerSlotItem(cid, 8)
local poke = getItemAttribute(item.uid, "poke")
doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
doRemoveCondition(cid, CONDITION_OUTFIT)
doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1)
local apos = getFlyingMarkedPos(cid)
apos.stackpos = 0
if getTileThingByPos(apos).itemid <= 2 then
doCombatAreaHealth(cid, FIREDAMAGE, getFlyingMarkedPos(cid), 0, 0, 0, CONST_ME_NONE)
doCreateItem(460, 1, getFlyingMarkedPos(cid))
end
doTeleportThing(cid, apos, false)
if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then
sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8
end
local posicao = getTownTemplePosition(getPlayerTown(cid))
markFlyingPos(cid, posicao)
elseif getPlayerStorageValue(cid, 17001) >= 1 then -- ride
local item = getPlayerSlotItem(cid, 8)
local poke = getItemAttribute(item.uid, "poke")
if rides[poke] then
doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
doRemoveCondition(cid, CONDITION_OUTFIT)
doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1)
if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then
sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8
end
else
setPlayerStorageValue(cid, 17001, -1)
doRegainSpeed(cid)
end
local posicao2 = getTownTemplePosition(getPlayerTown(cid))
markFlyingPos(cid, posicao2)
elseif getPlayerStorageValue(cid, 13008) >= 1 then -- dive
if not isInArray({5405, 5406, 5407, 5408, 5409, 5410}, getTileInfo(getThingPos(cid)).itemid) then
setPlayerStorageValue(cid, 13008, 0)
doRegainSpeed(cid)
doRemoveCondition(cid, CONDITION_OUTFIT)
return true
end
if getPlayerSex(cid) == 1 then
doSetCreatureOutfit(cid, {lookType = 1034, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1)
else
doSetCreatureOutfit(cid, {lookType = 1035, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1)
end
doChangeSpeed(cid, 800)
elseif getPlayerStorageValue(cid, 5700) > 0 then --bike
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, getPlayerStorageValue(cid, 5700)) --alterado v1.8
if getPlayerSex(cid) == 1 then
doSetCreatureOutfit(cid, {lookType = 1394}, -1)
else
doSetCreatureOutfit(cid, {lookType = 1393}, -1)
end
elseif getPlayerStorageValue(cid, 75846) >= 1 then --alterado v1.9 \/
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
setPlayerStorageValue(cid, 75846, -1)
sendMsgToPlayer(cid, 20, "You have been moved to your town!")
else
doRegainSpeed(cid)
end
if getPlayerStorageValue(cid, 22545) >= 1 then
setPlayerStorageValue(cid, 22545, -1)
doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false)
setPlayerRecordWaves(cid)
end
if useKpdoDlls then
doUpdateMoves(cid)
doUpdatePokemonsBar(cid)
onPokeHealthChange(cid)
end
doPlayerChangeModeIcon(cid)
return true
end

action/goback

local EFFECTS = {
--[OutfitID] = {Effect}
["Magmar"] = 35,
["Shiny Magmar"] = 35,
["Shiny Magmortar"] = 35,
["Shiny Electivire"] = 48,
["Magmortar"] = 35,
["Electivire"] = 48,
["Jynx"] = 17, --alterado v1.5
["Shiny Jynx"] = 17,
["Piloswine"] = 205, --alterado v1.8
["Swinub"] = 205,
}
function onUse(cid, item, frompos, item2, topos)
if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1 then --alterado v1.9 <<
return true
end
local ballName = getItemAttribute(item.uid, "poke")
local btype = getPokeballType(item.itemid)
local usando = pokeballs[btype].use
local effect = pokeballs[btype].effect
if not effect then
effect = 21
end
unLock(item.uid) --alterado v1.8
if item.itemid == usando then
if getPlayerStorageValue(cid, 990) == 1 then -- GYM
doPlayerSendCancel(cid, "No puedes regresar e pokemon en batallas de gimnasio.")
return true
end
---------------------------------------------------------------------------------------
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then
BackTeam(cid)
end
end
---------------------------------------------------------------------------------------
if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
doPlayerSendCancel(cid, "No puedes ejecutar esto usando Control Mind")
return true --alterado v1.5
end
---------------------------------------------------------------------------------------
if #getCreatureSummons(cid) <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "Tu pokemon esta muerto.")
return true
end
end
local cd = getCD(item.uid, "blink", 30)
if cd > 0 then
setCD(item.uid, "blink", 0)
end
local z = getCreatureSummons(cid)[1]
if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
return true
end
doReturnPokemon(cid, z, item, effect)
elseif item.itemid == pokeballs[btype].on then
if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
return TRUE
end
local thishp = getItemAttribute(item.uid, "hp")
if thishp <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "Tu pokemon esta muerto.")
return true
end
end
local pokemon = getItemAttribute(item.uid, "poke")
if not pokes[pokemon] then
return true
end
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
local low = {}
local lw = 1
for e, f in pairs(pokeballs) do
for times = 1, 3 do
local items = getItemsInContainerById(bp.uid, pokeballs[e].all[times])
if #items >= 1 then --alterado v1.6
for _, uid in pairs(items) do
local nome1 = getItemAttribute(uid, "poke")
if not isInArray(lowPokes, pokemon) and nome1 == pokemon then
return doPlayerSendTextMessage(cid, 27, "Lo sentimos, No puedes usar 2 Pokemones iguales!")
elseif isInArray(lowPokes, pokemon) then
if nome1 == pokemon then
table.insert(low, lw, nome1)
lw = lw +1
end
end
end
end
end
end
if #low >= 3 then
return doPlayerSendTextMessage(cid, 27, "Lo sentimos, no puedes usar mas de 3 pokemones iguales de level bajo!")
end
end
---------------------------------------------------------------------------------------------------------------------------------------------------
local x = pokes[pokemon]
local boost = getItemAttribute(item.uid, "boost") or 0
if getPlayerLevel(cid) < (x.level+boost) then
doPlayerSendCancel(cid, "Necesitas ser level "..(x.level+boost).." para usar este pokemon.")
return true
end
---------------------------- Sistema pokes de clan --------------------------------------
local shinysClan = {
["Shiny Fearow"] = {4, "Wingeon"},
["Shiny Flareon"] = {1, "Volcanic"},
["Shiny Vaporeon"] = {2, "Seavel"},
["Shiny Jolteon"] = {9, "Raibolt"},
["Shiny Hypno"] = {7, "Psycraft"},
["Shiny Golem"] = {3, "Orebound"},
["Shiny Vileplume"] = {8, "Naturia"},
["Shiny Nidoking"] = {5, "Malefic"},
["Shiny Hitmontop"] = {6, "Gardestrike"}, --alterado v1.4
}
if shinysClan[pokemon] and (getPlayerGroupId(cid) < 3 or getPlayerGroupId(cid) > 6) then
if getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] then
doPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")
return true
elseif getPlayerStorageValue(cid, 862281) ~= 5 then
doPlayerSendCancel(cid, "Necesitas ser entrenador Rango 5 de tu clan para poder usar este pokemon!")
return true
end
end
--------------------------------------------------------------------------------------
doSummonMonster(cid, pokemon)
local pk = getCreatureSummons(cid)[1]
if not isCreature(pk) then return true end
------------------------passiva hitmonchan------------------------------
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
if not getItemAttribute(item.uid, "hands") then
doSetItemAttribute(item.uid, "hands", 0)
end
local hands = getItemAttribute(item.uid, "hands")
doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
end
end
-------------------------------------------------------------------------
local pk = getCreatureSummons(cid)[1]
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Ditto" or pokemon == "Ditto" then
doItemSetAttribute(item.uid, "nick", "Ditto")
end
end
local pk = getCreatureSummons(cid)[1]
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Ditto" then
doItemSetAttribute(item.uid, "Held", 1)
end
end
-------------------------------------------------------------------------
---------movement magmar, jynx-------------
if EFFECTS[getCreatureName(pk)] then
markPosEff(pk, getThingPos(pk))
sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk))
end
--------------------------------------------------------------------------
---if getCreatureName(pk) == "Ditto" or getCreatureName(pk) == "Shiny Ditto" then --edited
-- local left = getItemAttribute(item.uid, "transLeft")
-- local name = getItemAttribute(item.uid, "transName")
-- if left and left > 0 then
-- setPlayerStorageValue(pk, 1010, name)
-- doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
-- addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
-- doItemSetAttribute(item.uid, "transBegin", os.clock())
-- else
-- setPlayerStorageValue(pk, 1010, getCreatureName(pk) == "Ditto" and "Ditto" or "Shiny Ditto") --edited
-- end
-- end
if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end
doCreatureSetLookDir(pk, 2)
adjustStatus(pk, item.uid, true, true, true)
doRegenerateWithY(getCreatureMaster(pk), pk)
doCureWithY(getCreatureMaster(pk), pk)
doTransformItem(item.uid, item.itemid+1)
local pokename = getPokeName(pk) --alterado v1.7
local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
doCreatureSay(cid, mgo, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pk), effect)
if useOTClient then
doPlayerSendCancel(cid, '12//,show') --alterado v1.7
end
else
doPlayerSendCancel(cid, "This pokemon is fainted.")
end
if useKpdoDlls then
doUpdateMoves(cid)
end
return true
end

some functions.lua

function getStringOfTaskArray(array)
if type(array) ~= 'table' or not next(array) then return "" end
local result = {}
for _, value in ipairs(array) do
local thing, num = (type(value[1]) == 'string' and value[1] or getItemNameById(value[1])), value[2]
table.insert(result, (_ == 1 and "" or ", ")..num.." "..thing..(num == 1 and "" or "s"))
end
result[#result] = " and"..(result[#result]:sub(2,#result[#result]))
return table.concat(result)
end
function getVitalityByMaster(cid)
if not isCreature(cid) then return 0 end
local ball = getPlayerSlotItem(cid, 8).uid
if not ball or ball <= 1 or not pokes[getItemAttribute(ball, 'poke')] then return true end
return pokes[getItemAttribute(ball, 'poke')].vitality * (getPlayerLevel(cid) + (getItemAttribute(ball, 'boost') or 0))
end
function onPokeHealthChange(cid, zerar)
if not isCreature(cid) then return true end
if zerar then doPlayerSendCancel(cid, '#ph#,0,0') end
local ball = getPlayerSlotItem(cid, 8).uid
if not ball or ball <= 1 or not pokes[getItemAttribute(ball, 'poke')] then return true end
if #getCreatureSummons(cid) >= 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
local pokemon = getCreatureSummons(cid)[1]
local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
doItemSetAttribute(ball, "hp", pokelife)
end
local rd = 1 - (tonumber(getItemAttribute(ball, "hp")))
local maxHp = HPperVITsummon * getVitalityByMaster(cid)
local hp = maxHp -(maxHp * rd)
doPlayerSendCancel(cid, '#ph#,'.. math.floor(hp) ..','.. math.floor(maxHp))
end
function addPokeToPlayer(cid, pokemon, boost, gender, ball) --alterado v1.9 \/ peguem ele todo...
local genders = {
["male"] = 4,
["female"] = 3,
[1] = 4,
[0] = 3,
[4] = 4,
[3] = 3,
}
if not isCreature(cid) then return false end
local pokemon = doCorrectString(pokemon)
if not pokes[pokemon] then return false end
local GENDER = (gender and genders[gender]) and genders[gender] or getRandomGenderByName(pokemon)
local btype = (ball and pokeballs[ball]) and ball or isShinyName(pokemon) and "shinynormal" or "normal"
local happy = 250
if icons[pokemon] then
id = icons[pokemon].on
else
id = pokeballs[btype].on
end
if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
item = doCreateItemEx(id)
else
item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, id, 1)
end
if not item then return false end
doItemSetAttribute(item, "poke", pokemon)
doItemSetAttribute(item, "hp", 1)
doItemSetAttribute(item, "happy", happy)
--doItemSetAttribute(item, "-1", GENDER)
doSetItemAttribute(item, "hands", 0)
doItemSetAttribute(item, "description", "Contains a "..pokemon..".")
doItemSetAttribute(item, "fakedesc", "Contains a "..pokemon..".")
doItemSetAttribute(item, "defeated", "no")
doItemSetAttribute(item, "ball", btype)
if boost and tonumber(boost) and tonumber(boost) > 0 and tonumber(boost) <= 50 then
doItemSetAttribute(item, "boost", boost)
end
if unique then
doItemSetAttribute(item, "unique", getCreatureName(cid))
end
if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
doPlayerSendMailByName(getCreatureName(cid), item, 1)
sendMsgToPlayer(cid, 27, "You are already holding six pokemons, so your new pokemon was sent to your depot.")
end
doTransformItem(item, id)
return true
end
---------------------------
function unLock(ball)
if not ball or ball <= 0 then return false end
if getItemAttribute(ball, "lock") and getItemAttribute(ball, "lock") > 0 then
local vipTime = getItemAttribute(ball, "lock")
local timeNow = os.time()
local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))
if days <= 0 then
doItemEraseAttribute(ball, "lock")
doItemEraseAttribute(ball, "unique")
return true
end
end
return false
end
function getGuildMembersOnline(GuildId)
local players = {}
for _, pid in pairs(getPlayersOnline()) do
if getPlayerGuildId(pid) == tonumber(GuildId) then
table.insert(players, pid)
end
end --by Vodkart
return #players > 0 and players or false
end
function getGuildMembers(GuildId)
local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");")
if (query:getID() ~= -1) then
repeat
table.insert(players,query:getDataString("name"))
until not query:next() --by Vodkart
query:free()
end
return #players > 0 and players or false
end
--/////////////////////////////////////////////////////////////////////////////////---
function sendMsgToPlayer(cid, tpw, msg) --alterado v1.7 \/\/\/
if not isCreature(cid) or not tpw or not msg then return true end
return doPlayerSendTextMessage(cid, tpw, msg)
end
function getPlayerDesc(cid, thing, TV)
if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" end
local pos = getThingPos(thing)
local ocup = youAre[getPlayerGroupId(thing)]
local rank = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)]
local rank2 = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans2[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)]
local name = thing == cid and "yourself" or getCreatureName(thing) --alterado v1.8
local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")
local str = "You see "..name..". "..art.." "
if youAre[getPlayerGroupId(thing)] then
str = str..""..(ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing)).."."
else
if getPlayerSex(thing) == 1 then
str = str..""..(rank).." from ".. getTownName(getPlayerTown(thing)).."."
elseif getPlayerSex(thing) == 0 then
str = str..""..(rank2).." from ".. getTownName(getPlayerTown(thing)).."."
end
end
if getPlayerGuildId(thing) > 0 then
str = str.." "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing).."."
end
if TV then
str = str.." "..art.." watching TV."
end
str = str..""..((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or "") --alterado v1.8
return str
end
------------------------------------------------------------------------------------------------- /\/\
function getLivePokeballs(cid, container, duel)
if not isCreature(cid) then return {} end
if not isContainer(container) then return {} end
local items = {}
---
local ballSlot = getPlayerSlotItem(cid, 8)
if ballSlot.uid ~= 0 then
for a, b in pairs (pokeballs) do
if ballSlot.itemid == b.on or ballSlot.itemid == b.use then
if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(ballSlot.uid, "poke")].level + getPokeballBoost(ballSlot)) then
table.insert(items, ballSlot.uid) --alterado v1.8
elseif not duel then
table.insert(items, ballSlot.uid)
end
end
end
end
---
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getPokeballsInContainer(item.uid)
for i=0, #itemsbag do
if not isInArray(items, itemsbag) then
table.insert(items, itemsbag)
end
end
elseif isPokeball(item.itemid) then
for a, b in pairs (pokeballs) do
if item.itemid == b.on then
if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(item.uid, "poke")].level + getPokeballBoost(item)) then
table.insert(items, item.uid) --alterado v1.8
elseif not duel then
table.insert(items, item.uid)
end
end
end
end
end
end
return items
end
function addItemInFreeBag(container, item, num)
if not isContainer(container) or not item then return false end
if not num or num <= 0 then num = 1 end --alterado v1.6.1
if getContainerSize(container) < getContainerCap(container) then
return doAddContainerItem(container, item, num)
else
for slot = 0, (getContainerSize(container)-1) do
local container2 = getContainerItem(container, slot)
if isContainer(container2.uid) and getContainerSize(container2.uid) < getContainerCap(container2.uid) then
return doAddContainerItem(container2.uid, item, num)
end
end
end
return false
end
------------------------------------------------------------------------------------------------------
function pokeHaveReflect(cid)
if not isCreature(cid) then return false end
local table = getTableMove(cid, "Reflect")
if table and table.name then --alterado v1.6
return true
end
return false
end
------------------------------------------------------------------------------------------------------
function nextHorario(cid)
horarioAtual = os.date("%X")
horario = string.explode(horarioAtual, ":")
for i = 1, #horas do
horarioComparacao = horas
horarioComp = string.explode(horarioComparacao, ":")
---------------
if tonumber(horarioComp[1]) > tonumber(horario[1]) then
return horarioComparacao
elseif tonumber(horarioComp[1]) == tonumber(horario[1]) and tonumber(horario[2]) < tonumber(horarioComp[2]) then
return horarioComparacao
end
end
return horas[1]
end
function getTimeDiff(timeDiff)
local dateFormat = {
{'hour', timeDiff / 60 / 60}, --6%
{'min', timeDiff / 60 % 60},
}
local out = {}
for k, t in ipairs(dateFormat) do
local v = math.floor(t[2])
if(v > -1) then
table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
end
end
if tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then
return "seconds"
end
return table.concat(out)
end
function getTimeDiff2(timeDiff)
local dateFormat = {
{'hour', timeDiff / 60 / 60}, --6%
{'min', timeDiff / 60 % 60},
{'sec', timeDiff % 60},
}
local out = {}
for k, t in ipairs(dateFormat) do
local v = math.floor(t[2])
if(v > 0) then
table.insert(out, (k < #dateFormat and ' ' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
end
end
return table.concat(out)
end
function showTimeDiff(timeComp)
local b = string.explode(os.date("%X"), ":")
local c = string.explode(timeComp, ":")
---
local d, m, y = os.date("%d"), os.date("%m"), os.date("%Y")
local hAtual, mAtual = tonumber(b[1]), tonumber(b[2])
local hComp, mComp = tonumber(c[1]), tonumber(c[2])
---
local t = os.time{year= y, month= m, day= d, hour= hAtual, min= mAtual}
local t1 = os.time{year= y, month= m, day= d, hour= hComp, min= mComp}
---
comparacao = t1-t
if hComp < hAtual then
v = os.time{year= y, month= m, day= d, hour= 24, min= 0}
v2 = os.time{year= y, month= m, day= d, hour= 0, min= 0}
comparacao = (v-t)+(t1-v2)
end
return getTimeDiff(comparacao)
end
-------------------------------------------------------------------------
function cleanCMcds(item)
if item ~= 0 then
for c = 1, 15 do --alterado v1.5
local str = "cm_move"..c
setCD(item, str, 0)
end
end
end
function ehNPC(cid) --alterado v1.9
return isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid)
end
function ehMonstro(cid)
local eh = false
if not isSummon(cid) and not ehNPC(cid) and not isPlayer(cid) then
eh = true
end
return eh
end --alterado v1.9.1 /\
function doAppear(cid) --Faz um poke q tava invisivel voltar a ser visivel...
if not isCreature(cid) then return true end
doRemoveCondition(cid, CONDITION_INVISIBLE)
doRemoveCondition(cid, CONDITION_OUTFIT)
doCreatureSetHideHealth(cid, false)
end
function doDisapear(cid) --Faz um pokemon ficar invisivel
if not isCreature(cid) then return true end
doCreatureAddCondition(cid, permanentinvisible)
doCreatureSetHideHealth(cid, true)
doSetCreatureOutfit(cid, {lookType = 2}, -1)
end
function hasTile(pos) --Verifica se tem TILE na pos
pos.stackpos = 0
if getTileThingByPos(pos).itemid >= 1 then
return true
end
return false
end
function getThingFromPosWithProtect(pos) --Pega uma creatura numa posiçao com proteçoes
if hasTile(pos) then
if isCreature(getRecorderCreature(pos)) then
return getRecorderCreature(pos)
else
pos.stackpos = 253
pid = getThingfromPos(pos).uid
end
else
pid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uid
end
return pid
end
function getTileThingWithProtect(pos) --Pega um TILE com proteçoes
if hasTile(pos) then
pos.stackpos = 0
pid = getTileThingByPos(pos)
else
pid = getTileThingByPos({x=1,y=1,z=10,stackpos=0})
end
return pid
end
function canAttackOther(cid, pid) --Function q verifica se um poke/player pode atacar outro poke/player
if not isCreature(cid) or not isCreature(pid) then return "Cant" end
local master1 = isSummon(cid) and getCreatureMaster(cid) or cid
local master2 = isSummon(pid) and getCreatureMaster(pid) or pid
----
if getPlayerStorageValue(master1, 6598754) >= 5 and getPlayerStorageValue(master2, 6598754) >= 5 then
if getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) then
if isDuelingAgainst(master1, master2) then --alterado v1.8
if isSummon(cid) and isPlayer(pid) then
return "Cant"
else
return "Can"
end
end
end
end
---- pvp system
if getPlayerStorageValue(master1, 6598754) >= 1 and getPlayerStorageValue(master2, 6598755) >= 1 then
return "Can"
end
if getPlayerStorageValue(master1, 6598755) >= 1 and getPlayerStorageValue(master2, 6598754) >= 1 then ---estar em times diferentes
return "Can"
end
----
if ehMonstro(cid) and ehMonstro(pid) then
return "Can"
end
return "Cant"
end
function stopNow(cid, time)
if not isCreature(cid) or not tonumber(time) or isSleeping(cid) then return true end
--alterado v1.9.1 \/
local function podeMover(cid)
if isPlayer(cid) then
mayNotMove(cid, false)
elseif isCreature(cid) then
doRegainSpeed(cid)
end
end
if isPlayer(cid) then mayNotMove(cid, true) else doChangeSpeed(cid, -getCreatureSpeed(cid)) end
addEvent(podeMover, time, cid)
end
function doReduceStatus(cid, off, def, agi) --reduz os status
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A - off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B - def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C - agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end --alterado v1.5 functions arrumadas...
end
end
function doRaiseStatus(cid, off, def, agi, time)
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A * off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B * def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C + agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end
end
local D = getOffense(cid)
local E = getDefense(cid)
local F = getSpeed(cid)
---------------------------
local G = D - A
local H = E - B
local I = F - C
addEvent(doReduceStatus, time*1000, cid, G, H, I)
end
function BackTeam(cid)
if isCreature(cid) then
local summon = getCreatureSummons(cid) --alterado v1.6
for i = 2, #summon do
doSendMagicEffect(getThingPos(summon), 211)
doRemoveCreature(summon)
end
setPlayerStorageValue(cid, 637501, -1)
end
end
function choose(...) -- by mock
local arg = {...}
return arg[math.random(1,#arg)]
end
function AddPremium(cid, days)
local function removerPlayer(cid)
if isCreature(cid) then
doRemoveCreature(cid)
end
end
db.executeQuery("UPDATE `accounts` SET `premdays` = '"..days.."' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos.")
addEvent(removerPlayer, 5*1000, cid)
return TRUE
end
function isShiny(cid)
return isCreature(cid) and string.find(getCreatureName(cid), "Shiny") --alterado v1.9
end
function isShinyName(name)
return tostring(name) and string.find(doCorrectString(name), "Shiny") --alterado v1.9
end
function doConvertTypeToStone(type, string)
local t = {
["fly"] = {heart, "heart"},
["flying"] = {heart, "heart"},
["normal"] = {heart, "heart"},
["fire"] = {fire, "fire"},
["grass"] = {leaf, "leaf"},
["leaf"] = {leaf, "leaf"},
["water"] = {water, "water"},
["poison"] = {venom, "venom"},
["venom"] = {venom, "venom"},
["electric"] = {thunder, "thunder"},
["thunder"] = {thunder, "thunder"},
["rock"] = {rock, "rock"},
["fight"] = {punch, "punch"},
["fighting"] = {punch, "punch"},
["bug"] = {coccon, "coccon"},
["dragon"] = {crystal, "crystal"},
["dark"] = {dark, "dark"},
["ghost"] = {dark, "dark"},
["ground"] = {earth, "earth"},
["earth"] = {earth, "earth"},
["psychic"] = {enigma, "enigma"},
["steel"] = {metal, "metal"},
["ancient"] = {ancient, "ancient"},
["metal"] = {metal, "metal"},
["ice"] = {ice, "ice"},
["boost"] = {boostStone, "boost"}, --alterado v1.9
}
if string then
return t[type][2]
else
return t[type][1]
end
end
function doConvertStoneIdToString(stoneID)
local t = {
[11453] = "Heart Stone",
[11441] = "Leaf Stone",
[11442] = "Water Stone",
[11443] = "Venom Stone",
[11444] = "Thunder Stone",
[11445] = "Rock Stone",
[11446] = "Punch Stone",
[11447] = "Fire Stone", --alterado v1.6
[11448] = "Cocoon Stone",
[11449] = "Crystal Stone",
[11450] = "Darkess Stone",
[11451] = "Earth Stone",
[11452] = "Enigma Stone",
[11454] = "Ice Stone",
[12244] = "Ancient Stone",
[12232] = "Metal Stone",
[12401] = "Shiny Fire Stone",
[12402] = "Shiny Water Stone",
[12403] = "Shiny Leaf Stone",
[12404] = "Shiny Heart Stone",
[12405] = "Shiny Enigma Stone",
[12406] = "Shiny Rock Stone",
[12407] = "Shiny Venom Stone",
[12408] = "Shiny Ice Stone",
[12409] = "Shiny Thunder Stone",
[12410] = "Shiny Crystal Stone",
[12411] = "Shiny Cocoon Stone",
[12412] = "Shiny Darkness Stone",
[12413] = "Shiny Punch Stone",
[12414] = "Shiny Earth Stone",
[boostStone] = "Boost Stone", --alterado v1.9
}
if t[stoneID] then
return t[stoneID]
else
return ""
end
end
function isStone(id)
if id >= leaf and id <= ice then
return true
end
if id == boostStone then --alterado v1.9
return true
end
if id == 12232 or id == 12244 or id == 12244 or id == 12245 then
return true
end
if (id >= sfire and id <= searth) or id == 12417 or id == 12419 then
return true
end
return false
end
function isWater(id)
return tonumber(id) and id >= 4820 and id <= 4825 --alterado v1.9
end
function getTopCorpse(position)
local pos = position
for n = 1, 255 do
pos.stackpos = n
local item = getTileThingByPos(pos)
if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then
return getTileThingByPos(pos)
end
end
return null
end
bpslot = CONST_SLOT_BACKPACK
function hasPokemon(cid)
if not isCreature(cid) then return false end
if getCreatureMana(cid) <= 0 then return false end
if #getCreatureSummons(cid) >= 1 then return true end
local item = getPlayerSlotItem(cid, CONST_SLOT_FEET)
local bp = getPlayerSlotItem(cid, bpslot)
for a, b in pairs (pokeballs) do
if item.itemid == b.on or item.itemid == b.use then
return true --alterado v1.4
end
if #getItemsInContainerById(bp.uid, b.on) >= 1 then
return true
end
end
return false
end
function isNpcSummon(cid)
return isNpc(getCreatureMaster(cid))
end
function getPokemonHappinessDescription(cid)
if not isCreature(cid) then return true end
local str = {}
if getPokemonGender(cid) == SEX_MALE then
table.insert(str, "He")
elseif getPokemonGender(cid) == SEX_FEMALE then
table.insert(str, "She")
else
table.insert(str, "It")
end
local h = getPlayerStorageValue(cid, 1008)
if h >= tonumber(getConfigValue('PokemonStageVeryHappy')) then
table.insert(str, " is very happy with you!")
elseif h >= tonumber(getConfigValue('PokemonStageHappy')) then
table.insert(str, " is happy.")
elseif h >= tonumber(getConfigValue('PokemonStageOK')) then
table.insert(str, " is unhappy.")
elseif h >= tonumber(getConfigValue('PokemonStageSad')) then
table.insert(str, " is sad.")
elseif h >= tonumber(getConfigValue('PokemonStageMad')) then
table.insert(str, " is mad.")
else
table.insert(str, " is very mad at you!")
end
return table.concat(str)
end
function doSetItemAttribute(item, key, value)
doItemSetAttribute(item, key, value)
end
function deTransform(cid, check)
if not isCreature(cid) then return true end
local m = getCreatureMaster(cid)
local p = getPlayerSlotItem(m, 8)
if getItemAttribute(p.uid, "transTurn") ~= check then return true end
setPlayerStorageValue(cid, 1010, getCreatureName(cid) == "Ditto" and "Ditto" or "Shiny Ditto") --edited
doRemoveCondition(cid, CONDITION_OUTFIT)
doSendMagicEffect(getThingPos(cid), 184)
doCreatureSay(cid, "DITTO!", TALKTYPE_MONSTER)
doItemSetAttribute(p.uid, "transBegin", 0)
doItemSetAttribute(p.uid, "transLeft", 0)
doItemEraseAttribute(p.uid, "transName")
adjustStatus(cid, p.uid, true, true, true)
end
function isTransformed(cid)
return isCreature(cid) and not isInArray({-1, "Ditto", "Shiny Ditto"}, getPlayerStorageValue(cid, 1010)) --alterado v1.9
end
function doSendFlareEffect(pos)
local random = {28, 29, 79}
doSendMagicEffect(pos, random[math.random(1, 3)])
end
function isDay()
local a = getWorldTime()
if a >= 360 and a < 1080 then
return true
end
return false
end
function doPlayerSendTextWindow(cid, p1, p2)
if not isCreature(cid) then return true end
local item = 460
local text = ""
if type(p1) == "string" then
doShowTextDialog(cid, item, p1)
else
doShowTextDialog(cid, p1, p2)
end
end
function getClockString(tw)
local a = getWorldTime()
local b = a / 60
local hours = math.floor(b)
local minut = a - (60 * hours)
if not tw then
if hours < 10 then
hours = "0"..hours..""
end
if minut < 10 then
minut = "0"..minut..""
end
return hours..":"..minut
else
local sm = "a.m"
if hours >= 12 then
hours = hours - 12
sm = "p.m"
end
if hours < 10 then
hours = "0"..hours..""
end
if minut < 10 then
minut = "0"..minut..""
end
return hours..":"..minut.." "..sm
end
end
function doCorrectPokemonName(poke)
return doCorrectString(poke)
end
function doCorrectString(str)
local name = str:explode(" ") --alterado v1.9
local final = {}
for _, s in ipairs(name) do
table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower())
end
return table.concat(final, (name[2] and " " or ""))
end
function getHappinessRate(cid)
if not isCreature(cid) then return 1 end
local a = getPlayerStorageValue(cid, 1008)
if a == -1 then return 1 end
if a >= getConfigValue('PokemonStageVeryHappy') then
return happinessRate[5].rate
elseif a >= getConfigValue('PokemonStageHappy') then
return happinessRate[4].rate
elseif a >= getConfigValue('PokemonStageOK') then
return happinessRate[3].rate
elseif a >= getConfigValue('PokemonStageSad') then
return happinessRate[2].rate
else
return happinessRate[1].rate
end
return 1
end
function doBodyPush(cid, target, go, pos)
if not isCreature(cid) or not isCreature(target) then
doRegainSpeed(cid)
doRegainSpeed(target)
return true
end
if go then
local a = getThingPos(cid)
doChangeSpeed(cid, -getCreatureSpeed(cid))
if not isPlayer(target) then
doChangeSpeed(target, -getCreatureSpeed(target))
end
doChangeSpeed(cid, 800)
doTeleportThing(cid, getThingPos(target))
doChangeSpeed(cid, -800)
addEvent(doBodyPush, 350, cid, target, false, a)
else
doChangeSpeed(cid, 800)
doTeleportThing(cid, pos)
doRegainSpeed(cid)
doRegainSpeed(target)
end
end
function doReturnPokemon(cid, pokemon, pokeball, effect, hideeffects, blockevo)
--////////////////////////////////////////////////////////////////////////////////////////--
checkDuel(cid) --alterado v1.6 duel system
--////////////////////////////////////////////////////////////////////////////////////////--
if getPlayerStorageValue(cid, 52480) >= 1 and getPlayerStorageValue(cid, 52484) ~= 10 then
return sendMsgToPlayer(cid, 27, "You can't do that while the duel don't begins!") --alterado v1.8
end
--////////////////////////////////////////////////////////////////////////////////////////--
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then
BackTeam(cid)
end
end
-----------------
local edit = true
if not pokeball then
pokeball = getPlayerSlotItem(cid, 8)
end
if blockevo then
edit = false
doPlayerSendCancel(cid, "Your pokemon couldn't evolve due to server mistakes, please wait until we fix the problem.")
end
local happy = getPlayerStorageValue(pokemon, 1008)
local hunger = getPlayerStorageValue(pokemon, 1009)
local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
if edit then
doItemSetAttribute(pokeball.uid, "happy", happy)
doItemSetAttribute(pokeball.uid, "hunger", hunger)
doItemSetAttribute(pokeball.uid, "hp", pokelife)
end
-- if getCreatureName(pokemon) == "Ditto" then
-- if isTransformed(pokemon) then
-- local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin"))
-- doItemSetAttribute(pokeball.uid, "transLeft", left)
-- end
-- end
if hideeffects then
doRemoveCreature(pokemon)
return true
end
local pokename = getPokeName(pokemon)
local mbk = gobackmsgs[math.random(1, #gobackmsgs)].back:gsub("doka", pokename)
if getCreatureCondition(cid, CONDITION_INFIGHT) then
if isCreature(getCreatureTarget(cid)) then
doItemSetAttribute(pokeball.uid, "happy", happy - 5)
else
doItemSetAttribute(pokeball.uid, "happy", happy - 2)
end
end
doTransformItem(pokeball.uid, pokeball.itemid-1)
doCreatureSay(cid, mbk, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pokemon), effect)
doRemoveCreature(pokemon)
unLock(pokeball.uid) --alterado v1.8
if useOTClient then
doPlayerSendCancel(cid, '12//,hide') --alterado v1.7
end
if useKpdoDlls then
doUpdateMoves(cid)
end
end
local EFFECTS = {
--[OutfitID] = {Effect}
["Magmar"] = 35, --alterado v1.5
["Shiny Magmar"] = 35,
["Magby"] = 35,
["Jynx"] = 17,
["Smoochum"] = 17,
["Shiny Jynx"] = 17,
["Piloswine"] = 205, --alterado v1.8
["Swinub"] = 205,
["Stantler"] = 205,
["Shiny Stantler"] = 205,
}
function doGoPokemon(cid, item)
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
return true
end
---------------------------------------------------------------
local ballName = getItemAttribute(item.uid, "poke")
btype = getPokeballType(item.itemid)
local effect = pokeballs[btype].effect
if not effect then
effect = 21
end
-----------------------------------------------------------------
if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
return TRUE
end
local thishp = getItemAttribute(item.uid, "hp")
if thishp <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "This pokemon is fainted.")
return true
end
end
local pokemon = getItemAttribute(item.uid, "poke")
if not pokes[pokemon] then
return true
end
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then
local balls = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) --alterado v1.9 \/
local low = {}
local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
if #balls >= 1 then
for _, uid in ipairs(balls) do
local nome = getItemAttribute(uid, "poke")
if not isInArray(lowPokes, pokemon) and nome == pokemon then
return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry two pokemons equals!")
else
if nome == pokemon then
table.insert(low, nome)
end
end
end
end
if #low >= 3 then
return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
end
end
---------------------------------------------------------------------------------------------------------------------------------------------------
local x = pokes[pokemon]
local boosts = getItemAttribute(item.uid, "boost") or 0
if getPlayerLevel(cid) < (x.level + boosts) then --alterado v1.8 \/
doPlayerSendCancel(cid, "You need level "..(x.level + boosts).." to use this pokemon.")
return true
end
--------------------------------------------------------------------------------------
shinysClan = {
["Shiny Fearow"] = {4, "Wingeon"},
["Shiny Flareon"] = {1, "Volcanic"},
["Shiny Vaporeon"] = {2, "Seavel"},
["Shiny Jolteon"] = {9, "Raibolt"},
["Shiny Hypno"] = {7, "Psycraft"},
["Shiny Golem"] = {3, "Orebound"},
["Shiny Vileplume"] = {8, "Naturia"},
["Shiny Nidoking"] = {5, "Malefic"},
["Shiny Hitmontop"] = {6, "Gardestrike"},
}
if shinysClan[pokemon] and (getPlayerGroupId(cid) < 4 or getPlayerGroupId(cid) > 6) then --alterado v1.9
if getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] then
doPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")
return true
elseif getPlayerStorageValue(cid, 862281) ~= 5 then
doPlayerSendCancel(cid, "You need be atleast rank 5 to use this pokemon!")
return true
end
end
--------------------------------------------------------------------------------------
doSummonMonster(cid, pokemon)
local pk = getCreatureSummons(cid)[1]
if not isCreature(pk) then return true end
------------------------passiva hitmonchan------------------------------
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
if not getItemAttribute(item.uid, "hands") then
doSetItemAttribute(item.uid, "hands", 0)
end
local hands = getItemAttribute(item.uid, "hands")
doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
end
end
-------------------------------------------------------------------------
---------movement magmar, jynx-------------
if EFFECTS[getCreatureName(pk)] then
markPosEff(pk, getThingPos(pk))
sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk))
end
--------------------------------------------------------------------------
if getCreatureName(pk) == "Ditto" then
local left = getItemAttribute(item.uid, "transLeft")
local name = getItemAttribute(item.uid, "transName")
if left and left > 0 then
setPlayerStorageValue(pk, 1010, name)
doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
doItemSetAttribute(item.uid, "transBegin", os.clock())
else
setPlayerStorageValue(pk, 1010, "Ditto")
end
end
if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end
doCreatureSetLookDir(pk, 2)
adjustStatus(pk, item.uid, true, true, true)
doAddPokemonInOwnList(cid, pokemon)
doTransformItem(item.uid, item.itemid+1)
local pokename = getPokeName(pk) --alterado v1.7
local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
doCreatureSay(cid, mgo, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pk), effect)
unLock(item.uid) --alterado v1.8
if useKpdoDlls then
doUpdateMoves(cid)
end
end
function doRegainSpeed(cid) --alterado v1.9 \/
if not isCreature(cid) then return true end
local speed = PlayerSpeed
if isMonster(cid) then
speed = getSpeed(cid)
elseif isPlayer(cid) and isInArray({4, 5, 6}, getPlayerGroupId(cid)) then
speed = 200*getPlayerGroupId(cid)
end
doChangeSpeed(cid, -getCreatureSpeed(cid))
if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
doRemoveCondition(cid, CONDITION_PARALYZE)
addEvent(doAddCondition, 10, cid, paralizeArea2)
end
doChangeSpeed(cid, speed)
return speed
end
function isPosEqualPos(pos1, pos2, checkstackpos)
if pos1.x ~= pos2.x or pos1.y ~= pos2.y and pos1.z ~= pos2.z then
return false
end
if checkstackpos and pos1.stackpos and pos2.stackpos and pos1.stackpos ~= pos2.stackpos then
return false
end
return true
end
function getRandomGenderByName(name)
local rate = newpokedex[name]
if not rate then return 0 end
rate = rate.gender
if rate == 0 then
gender = 3
elseif rate == 1000 then
gender = 4
elseif rate == -1 then
gender = 0
elseif math.random(1, 1000) <= rate then
gender = 4
else
gender = 3
end
return gender
end
function getRecorderPlayer(pos, cid)
local ret = 0
if cid and isPosEqual(getThingPos(cid), pos) then --alterado v1.9
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function getRecorderCreature(pos, cid)
local ret = 0
if cid and isPosEqual(getThingPos(cid), pos) then --alterado v1.9
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isCreature(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function doCreatureSetOutfit(cid, outfit, time)
doSetCreatureOutfit(cid, outfit, time)
end
function doMagicalFlower(cid, away)
if not isCreature(cid) then return true end
for x = -3, 3 do
for y = -3, 3 do
local a = getThingPos(cid)
a.x = a.x + x
a.y = a.y + y
if away then
doSendDistanceShoot(a, getThingPos(cid), 21)
else
doSendDistanceShoot(getThingPos(cid), a, 21)
end
end
end
end
function isItemPokeball(item) --alterado v1.9 \/
if not item then return false end
for a, b in pairs (pokeballs) do
if isInArray(b.all, item) then return true end
if item >= 12861 and item <= 13781 then
return true
end
if item >= 13797 and item <= 13823 then
return true
end
if item >= 10975 and item <= 10977 then
return true
end
if item >= 13836 and item <= 13850 then
return true
end
if item >= 13851 and item <= 13856 then
return true
end
if item >= 13859 and item <= 13861 then
return true
end
if item >= 13902 and item <= 13904 then
return true
end
if item >= 13919 and item <= 13930 then
return true
end
end
return false
end
function isPokeball(item)
if not item then return false end
for a, b in pairs (pokeballs) do
if isInArray(b.all, item) then return true end
if item >= 12861 and item <= 13781 then
return true
end
if item >= 13797 and item <= 13823 then
return true
end
if item >= 10975 and item <= 10977 then
return true
end
if item >= 13836 and item <= 13856 then
return true
end
end
return false
end
function getPokeballType(id)
for a, b in pairs (pokeballs) do
if isInArray(b.all, id) then
return a
end
end
return "none"
end
randomdiagonaldir = {
[NORTHEAST] = {NORTH, EAST},
[sOUTHEAST] = {SOUTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHWEST] = {SOUTH, WEST}}
function doFaceOpposite(cid)
local a = getCreatureLookDir(cid)
local d = {
[NORTH] = SOUTH,
[sOUTH] = NORTH,
[EAST] = WEST,
[WEST] = EAST,
[NORTHEAST] = SOUTHWEST,
[NORTHWEST] = SOUTHEAST,
[sOUTHEAST] = NORTHWEST,
[sOUTHWEST] = NORTHEAST}
doCreatureSetLookDir(cid, d[a])
end
function doFaceRandom(cid)
local a = getCreatureLookDir(cid)
local d = {
[NORTH] = {SOUTH, WEST, EAST},
[sOUTH] = {NORTH, WEST, EAST},
[WEST] = {SOUTH, NORTH, EAST},
[EAST] = {SOUTH, WEST, NORTH}}
doChangeSpeed(cid, 1)
doCreatureSetLookDir(cid, d[a][math.random(1, 3)])
doChangeSpeed(cid, -1)
end
function getFaceOpposite(dir)
local d = {
[NORTH] = SOUTH,
[sOUTH] = NORTH,
[EAST] = WEST,
[WEST] = EAST,
[NORTHEAST] = SOUTHWEST,
[NORTHWEST] = SOUTHEAST,
[sOUTHEAST] = NORTHWEST,
[sOUTHWEST] = NORTHEAST}
return d[dir]
end
function getResistance(cid, combat)
if isPlayer(cid) then return false end
local poketype1 = pokes[getCreatureName(cid)].type
local poketype2 = pokes[getCreatureName(cid)].type2
local multiplier = 1
if effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype1) then
multiplier = multiplier * 2
end
if poketype2 and effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype2) then
multiplier = multiplier * 2
end
if effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype1) then
multiplier = multiplier * 0.5
end
if poketype2 and effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype2) then
multiplier = multiplier * 0.5
end
if effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype1) then
multiplier = multiplier * 0
end
if poketype2 and effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype2) then
multiplier = multiplier * 0
end
if multiplier == 0.25 then
multiplier = 0.5
elseif multiplier == 4 then
multiplier = 2
end
return multiplier
end
function getCreatureDirectionToTarget(cid, target, ranged)
if not isCreature(cid) then return true end
if not isCreature(target) then return getCreatureLookDir(cid) end
local dirs = {
[NORTHEAST] = {NORTH, EAST},
[sOUTHEAST] = {SOUTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHWEST] = {SOUTH, WEST}}
local x = getDirectionTo(getThingPos(cid), getThingPos(target), false)
if x <= 3 then return x
else
local xdistance = math.abs(getThingPos(cid).x - getThingPos(target).x)
local ydistance = math.abs(getThingPos(cid).y - getThingPos(target).y)
if xdistance > ydistance then
return dirs[x][2]
elseif ydistance > xdistance then
return dirs[x][1]
elseif isInArray(dirs[x], getCreatureLookDir(cid)) then
return getCreatureLookDir(cid)
else
return dirs[x][math.random(1, 2)]
end
end
end
function getSomeoneDescription(cid)
if isPlayer(cid) then return getPlayerNameDescription(cid) end
return getMonsterInfo(getCreatureName(cid)).description
end
function isGhostPokemon(cid)
if not isCreature(cid) then return false end
local ghosts = {"Gastly", "Haunter", "Gengar", "Shiny Gengar", "Misdreavus", "Shiny Abra"}
return isInArray(ghosts, getCreatureName(cid))
end
function updateGhostWalk(cid)
if not isCreature(cid) then return false end
local pos = getThingPos(cid)
pos.x = pos.x + 1
pos.y = pos.y + 1
local ret = getThingPos(cid)
doTeleportThing(cid, pos, false)
doTeleportThing(cid, ret, false)
return true
end
function doRemoveElementFromTable(t, e)
local ret = {}
for a = 1, #t do
if t[a] ~= e then
table.insert(ret, t[a])
end
end
return ret
end
function doFaceCreature(sid, pos)
if not isCreature(sid) then return true end
if getThingPos(sid).x == pos.x and getThingPos(sid).y == pos.y then return true end
local ret = 0
local ld = getCreatureLookDir(sid)
local dir = getDirectionTo(getThingPos(sid), pos)
local al = {
[NORTHEAST] = {NORTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHEAST] = {SOUTH, EAST},
[sOUTHWEST] = {SOUTH, WEST}}
if dir >= 4 and isInArray(al[dir], ld) then return true end
doChangeSpeed(sid, 1)
if dir == 4 then
ret = math.random(2, 3)
elseif dir == 5 then
ret = math.random(1, 2)
elseif dir == 6 then
local dirs = {0, 3}
ret = dirs[math.random(1, 2)]
elseif dir == 7 then
ret = math.random(0, 1)
else
ret = getDirectionTo(getThingPos(sid), pos)
end
doCreatureSetLookDir(sid, ret)
doChangeSpeed(sid, -1)
return true
end
function doCreatureAddCondition(cid, condition)
if not isCreature(cid) then return true end
doAddCondition(cid, condition)
end
function doCreatureRemoveCondition(cid, condition)
if not isCreature(cid) then return true end
doRemoveCondition(cid, condition)
end
function setCD(item, tipo, tempo)
if not tempo or not tonumber(tempo) then
doItemEraseAttribute(item, tipo)
return true
end
doItemSetAttribute(item, tipo, "cd:"..(tempo + os.time()).."")
return tempo + os.time()
end
function getCD(item, tipo, limite)
if not getItemAttribute(item, tipo) then
return 0
end
local string = getItemAttribute(item, tipo):gsub("cd:", "")
local number = tonumber(string) - os.time()
if number <= 0 then
return 0
end
if limite and limite < number then
return 0
end
return number
end
function doSendMoveEffect(cid, target, effect)
if not isCreature(cid) or not isCreature(target) then return true end
doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)
return true
end
function doSetItemActionId(uid, actionid)
doItemSetAttribute(uid, "aid", actionid)
return true
end
function threeNumbers(number)
if number <= 9 then
return "00"..number..""
elseif number <= 99 then
return "0"..number..""
end
return ""..number..""
end
function isBr(cid)
if getPlayerStorageValue(cid, 105505) ~= -1 then
return true
end
return false
end
function isBeingUsed(ball)
if not ball then return false end
for a, b in pairs (pokeballs) do --alterado v1.9
if b.use == ball then return true end
end
return false
end
function doRemoveTile(pos)-- Script by mock
pos.stackpos = 0
local sqm = getTileThingByPos(pos)
doRemoveItem(sqm.uid,1)
end
function doCreateTile(id,pos) -- By mock
doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)
doCreateItem(id,1,pos)
end
function hasSqm(pos)
local f = getTileThingByPos(pos)
if f.itemid ~= 0 and f.itemid ~= 1 then
return true
end
return false
end
function getPosDirs(p, dir) -- By MatheusMkalo
return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end
function canWalkOnPos(pos, creature, pz, water, sqm, proj)
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
local n = not proj and 3 or 2 --alterado v1.6
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function canWalkOnPos2(pos, creature, pz, water, sqm, proj) --alterado v1.6
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
--[[local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i --edited pra retirar um bug.. ;x
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end ]]
return true
end
function getFreeTile(pos, cid)
if canWalkOnPos(pos, true, false, true, true, false) then
return pos
end
local positions = {}
for a = 0, 7 do
if canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then
table.insert(positions, pos)
end
end
if #positions >= 1 then
if isCreature(cid) then
local range = 1000
local ret = getThingPos(cid)
for b = 1, #positions do
if getDistanceBetween(getThingPos(cid), positions) < range then
ret = positions
range = getDistanceBetween(getThingPos(cid), positions)
end
end
return ret
else
return positions[math.random(#positions)]
end
end
return getThingPos(cid)
end
function isWalkable(pos, creature, proj, pz, water)-- by Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if isWater(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function isPlayerSummon(cid, uid)
return getCreatureMaster(uid) == cid --alterado v1.9
end
function isSummon(sid)
return isCreature(sid) and getCreatureMaster(sid) ~= sid and isPlayer(getCreatureMaster(sid)) --alterado v1.9
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function getPokeballsInContainer(container) -- Function By Kydrai
if not isContainer(container) then return {} end
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getPokeballsInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif isPokeball(item.itemid) then
table.insert(items, item.uid)
end
end
end
return items
end
function getItensUniquesInContainer(container) --alterado v1.6
if not isContainer(container) then return {} end
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItensUniquesInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif getItemAttribute(item.uid, "unique") then
table.insert(items, item)
end
end
end
return items
end
function hasSpaceInContainer(container) --alterado v1.6
if not isContainer(container) then return false end
if getContainerSize(container) < getContainerCap(container) then return true end
for slot = 0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
if hasSpaceInContainer(item.uid) then
return true
end
end
end
return false
end
function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
piles = piles+1
end
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function getPlayerInArea(fromPos, toPos) -- by jhon992
local online = getPlayersOnline()
local players = {}
for i=1, #online do
if isInArea(getPlayerPosition(online), fromPos, toPos) then
players[#players+1] = online
end
end
return players
end
function isPlayerOnline(uid)
return isInArray(getPlayersOnline(), uid)
end
function doRegenerateWithY(cid, sid)
if isPlayerOnline(cid) then
local ball = getPlayerSlotItem(cid, 8) or getPlayerSlotItem(getCreatureMaster(cid), 8)
local Tiers = {
[1] = {bonus = Regen1},
[2] = {bonus = Regen2},
[3] = {bonus = Regen3},
[4] = {bonus = Regen4},
[5] = {bonus = Regen5},
[6] = {bonus = Regen6},
[7] = {bonus = Regen7},
}
if isPlayer(cid) and #getCreatureSummons(cid) > 0 then
local Tier = getItemAttribute(ball.uid, "heldy")
if Tier and Tier > 0 and Tier < 8 then
if not getCreatureCondition(cid, CONDITION_INFIGHT) then
if getCreatureHealth(sid) < getCreatureMaxHealth(sid) then
addEvent(function() doCreatureAddHealth(sid,Tiers[Tier].bonus) doSendAnimatedText(getThingPos(sid), "+ "..Tiers[Tier].bonus, 30) end, 0)
end
addEvent(doRegenerateWithY, 1000, cid, sid)
else
addEvent(doRegenerateWithY, 1000, cid, sid)
end
end
end
end
end
function doCureWithY(cid, sid)
if isPlayerOnline(cid) then
local ball = getPlayerSlotItem(cid, 8) or getPlayerSlotItem(getCreatureMaster(cid), 8)
local Tiers = {
[8] = {chance = Cure1},
[9] = {chance = Cure2},
[10] = {chance = Cure3},
[11] = {chance = Cure4},
[12] = {chance = Cure5},
[13] = {chance = Cure6},
[14] = {chance = Cure7},
}
local Tier = getItemAttribute(ball.uid, "heldy")
if isPlayer(cid) and #getCreatureSummons(cid) > 0 and Tier then
if Tier > 7 and Tier < 15 then
if math.random(1,100) <= Tiers[Tier].chance then
doCureStatus(sid, "all")
doSendMagicEffect(getThingPosWithDebug(sid), 14)
end
addEvent(doCureWithY, 1000, cid, sid)
end
end
end
end
function doPlayerAddItemStacking(cid, itemid, quant)
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
piles = piles+1
end
break
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function doPlayerAddItemStacking(cid, itemid, quant)
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
piles = piles+1
end
break
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function getSmeargleMoveTable(master)
local ball = getPlayerSlotItem(master, 8).uid
local moves = {}
local skts = {"skt1", "skt2", "skt3", "skt4", "skt5", "skt6", "skt7", "skt8"}
for x=1, #skts do
moves["move"..x] = getItemAttribute(ball, skts[x]) and movestable[getItemAttribute(ball, skts[x])]["move"..x] and movestable[getItemAttribute(ball, skts[x])]["move"..x] ~= -1 and movestable[getItemAttribute(ball, skts[x])]["move"..x] or movestable["Smeargle"]["move"..x]
end
return moves
end
function smeargleHaveSpell(cid, spellname)
local has = false
local moves = getSmeargleMoveTable(cid)
local ball = getPlayerSlotItem(cid, 8).uid
local skts = {"skt1", "skt2", "skt3", "skt4", "skt5", "skt6", "skt7", "skt8"}
for x=1, #skts do
if getItemAttribute(ball, skts[x]) and moves["move"..x].name == spellname then
has = true
break
end
end
return has
end
function isDitto(cid)
if (getCreatureName(mysum) == "Ditto") or (getCreatureName(mysum) == "Shiny Ditto") then
if getItemAttribute(thisball.uid, "ehditto") ~= -1 or getItemAttribute(thisball.uid, "ehshinyditto") ~= -1 then
return true
end
end
return true
end

se precisar de algum outro pfv fale q eu posto...
agradesço desde ja a ajuda, nao ira estar ajudando so eu mas sim tudos os jogadores do meu server que gostam dele mas com esse lag ta dificil...

mais erros

 

[12/02/2016 23:40:38] [Error - CreatureScript Interface]
[12/02/2016 23:40:38] In a timer event called from:
[12/02/2016 23:40:38] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
[12/02/2016 23:40:38] Description:
[12/02/2016 23:40:38] (luaGetCreatureStorage) Creature not found
[12/02/2016 23:52:33] [Error - Action Interface]
[12/02/2016 23:52:33] In a timer event called from:
[12/02/2016 23:52:33] data/actions/scripts/goback.lua:onUse
[12/02/2016 23:52:33] Description:
[12/02/2016 23:52:33] (luaDoCreatureSetSkullType) Creature not found
[12/02/2016 23:52:58] [Error - Spell Interface]
[12/02/2016 23:52:58] data/spells/scripts/ps/Leech Seed.lua:onCastSpell
[12/02/2016 23:52:58] Description:
[12/02/2016 23:52:58] (luaGetCreatureStorage) Creature not found
[12/02/2016 23:52:16] [Error - CreatureScript Interface]
[12/02/2016 23:52:16] data/creaturescripts/scripts/look.lua:onLook
[12/02/2016 23:52:16] Description:
[12/02/2016 23:52:16] data/lib/some functions.lua:151: attempt to concatenate a boolean value
[12/02/2016 23:52:16] stack traceback:
[12/02/2016 23:52:16] data/lib/some functions.lua:151: in function 'getPlayerDesc'
[12/02/2016 23:52:16] data/creaturescripts/scripts/look.lua:221: in function <data/creaturescripts/scripts/look.lua:103>

 

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

Posts Recomendados

  • 0

Poste o código das seguintes funções:

onPokeHealthChange(cid)
doPlayerChangeModeIcon(cid)
No código do goback, troque:
local usando = pokeballs[btype].use
por:
local usando = pokeballs[btype]
if not usando then
    doPlayerSendTextMessage(cid, 27, "Error in your pokeball.")
    print(getCreatureName(cid).."'s pokeball presented error. Pokeball type: "..btype.." - NOT IN pokeballs TABLE (lib)")
    return true
end
usando = usando.use
Em some functions.lua, troque os códigos das funções doRegenerateWithY e doCureWithY por:

function doRegenerateWithY(cid, sid)
    if not isPlayer(cid) or not isCreature(sid) then return true end
    
    local ball = getPlayerSlotItem(cid, 8) or getPlayerSlotItem(getCreatureMaster(cid), 8)
    local Tiers = {
        [1] = {bonus = Regen1},
        [2] = {bonus = Regen2},
        [3] = {bonus = Regen3},
        [4] = {bonus = Regen4},
        [5] = {bonus = Regen5},
        [6] = {bonus = Regen6},
        [7] = {bonus = Regen7},
    }
    
    if #getCreatureSummons(cid) > 0 then
        local Tier = getItemAttribute(ball.uid, "heldy") or 0
        if Tier > 0 and Tier < 8 and Tiers[Tier] then
            if not getCreatureCondition(cid, CONDITION_INFIGHT) then
                if getCreatureHealth(sid) < getCreatureMaxHealth(sid) then
                    addEvent(function() doCreatureAddHealth(sid, Tiers[Tier].bonus) doSendAnimatedText(getThingPos(sid), "+ "..Tiers[Tier].bonus, 30) end, 0)
                end
                addEvent(doRegenerateWithY, 1000, cid, sid)  
            else
                addEvent(doRegenerateWithY, 1000, cid, sid)
            end
        end   
    end
end
 
function doCureWithY(cid, sid)
    if not isPlayer(cid) or not isCreature(sid) then return true end
    
    local ball = getPlayerSlotItem(cid, 8) or getPlayerSlotItem(getCreatureMaster(cid), 8)
    local Tiers = {
        [8] = {chance = Cure1},
        [9] = {chance = Cure2},
        [10] = {chance = Cure3},
        [11] = {chance = Cure4},
        [12] = {chance = Cure5},
        [13] = {chance = Cure6},
        [14] = {chance = Cure7},
    }
    
    local Tier = getItemAttribute(ball.uid, "heldy") or 0
    if #getCreatureSummons(cid) > 0 and Tiers[Tier] then
        if Tier > 7 and Tier < 15 then
            if math.random(1, 100) <= Tiers[Tier].chance then
                doCureStatus(sid, "all")
                doSendMagicEffect(getThingPosWithDebug(sid), 14)
            end
            addEvent(doCureWithY, 1000, cid, sid)  
        end
    end 
end

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Poste o código das seguintes funções:

onPokeHealthChange(cid)
doPlayerChangeModeIcon(cid)
No código do goback, troque:
local usando = pokeballs[btype].use
por:
local usando = pokeballs[btype]
if not usando then
    doPlayerSendTextMessage(cid, 27, "Error in your pokeball.")
    print(getCreatureName(cid).."'s pokeball presented error. Pokeball type: "..btype.." - NOT IN pokeballs TABLE (lib)")
    return true
end
usando = usando.use
Em some functions.lua, troque os códigos das funções doRegenerateWithY e doCureWithY por:

function doRegenerateWithY(cid, sid)
    if not isPlayer(cid) or not isCreature(sid) then return true end
    
    local ball = getPlayerSlotItem(cid, 8) or getPlayerSlotItem(getCreatureMaster(cid), 8)
    local Tiers = {
        [1] = {bonus = Regen1},
        [2] = {bonus = Regen2},
        [3] = {bonus = Regen3},
        [4] = {bonus = Regen4},
        [5] = {bonus = Regen5},
        [6] = {bonus = Regen6},
        [7] = {bonus = Regen7},
    }
    
    if #getCreatureSummons(cid) > 0 then
        local Tier = getItemAttribute(ball.uid, "heldy") or 0
        if Tier > 0 and Tier < 8 and Tiers[Tier] then
            if not getCreatureCondition(cid, CONDITION_INFIGHT) then
                if getCreatureHealth(sid) < getCreatureMaxHealth(sid) then
                    addEvent(function() doCreatureAddHealth(sid, Tiers[Tier].bonus) doSendAnimatedText(getThingPos(sid), "+ "..Tiers[Tier].bonus, 30) end, 0)
                end
                addEvent(doRegenerateWithY, 1000, cid, sid)  
            else
                addEvent(doRegenerateWithY, 1000, cid, sid)
            end
        end   
    end
end
 
function doCureWithY(cid, sid)
    if not isPlayer(cid) or not isCreature(sid) then return true end
    
    local ball = getPlayerSlotItem(cid, 8) or getPlayerSlotItem(getCreatureMaster(cid), 8)
    local Tiers = {
        [8] = {chance = Cure1},
        [9] = {chance = Cure2},
        [10] = {chance = Cure3},
        [11] = {chance = Cure4},
        [12] = {chance = Cure5},
        [13] = {chance = Cure6},
        [14] = {chance = Cure7},
    }
    
    local Tier = getItemAttribute(ball.uid, "heldy") or 0
    if #getCreatureSummons(cid) > 0 and Tiers[Tier] then
        if Tier > 7 and Tier < 15 then
            if math.random(1, 100) <= Tiers[Tier].chance then
                doCureStatus(sid, "all")
                doSendMagicEffect(getThingPosWithDebug(sid), 14)
            end
            addEvent(doCureWithY, 1000, cid, sid)  
        end
    end 
end

 

 

 

 

valeu Zipter o cure e regen paresce estar funfando perfeitamente sem erro algum!

se tiver como me falar aonde achar essas funçoes onPokeHealthChange e doPlayerChangeModeIcon eu passo pra vc rapidao ^^ serio que nos 17:09 82 player(s) online tudos agradesce muito pra você! e tenha certeza q o credito é tudo teu pela ajuda!

no caso q estiver em 050-function, ja procurei la e nao tem isso la x.x

 

lembrando desse

[12/02/2016 17:05:20] [Error - CreatureScript Interface]
[12/02/2016 17:05:20] data/creaturescripts/scripts/login.lua:onLogin
[12/02/2016 17:05:20] Description:
[12/02/2016 17:05:20] (luaGetItemAttribute) Item not found
q ta dando sempre que alguem logar acho q é a 1 das causas desse lag tb, é estranho as veces os caras tb ficam bugados 1 que outro char quando ele summona o pokemon o servidor fica travado por uns 3 segundos mas só quando esse char chama o pokemon
Editado por josegvb
Link para o comentário
Compartilhar em outros sites

  • 0

Esse erro é referente às funções que solicitei. Quanto a localização do código delas, não sei dizer. Talvez em algum arquivo relacionado ao sistema de ícones, ou até mesmo no some functions (eu não procurei todas as funções nele). Dê uma procurada rápida nos arquivos da lib que você encontrará.

Link para o comentário
Compartilhar em outros sites

  • 0

Esse erro é referente às funções que solicitei. Quanto a localização do código delas, não sei dizer. Talvez em algum arquivo relacionado ao sistema de ícones, ou até mesmo no some functions (eu não procurei todas as funções nele). Dê uma procurada rápida nos arquivos da lib que você encontrará.

 

onPokeHealthChange

 

 

function onPokeHealthChange(cid, zerar)
if not isCreature(cid) then return true end
if zerar then doPlayerSendCancel(cid, '#ph#,0,0') end
local ball = getPlayerSlotItem(cid, 8).uid
if not ball or ball <= 1 or not pokes[getItemAttribute(ball, 'poke')] then return true end

doPlayerChangeModeIcon

function doPlayerChangeModeIcon(cid)
if getPlayerStorageValue(cid, 8955) >= 1 then
local x = icons[getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")]
local y = icons[getItemAttribute(getPlayerSlotItem(cid, 3).uid, "poke")]
if x and getPlayerSlotItem(cid, 8).itemid == 11826 then -- Pokeball
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11828 then -- Pokeball Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11827 then -- Pokeball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11829 then -- Ultraball
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11831 then -- Ultraball Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11830 then -- Ultraball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11835 then -- Superball
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11837 then -- Superball Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11836 then -- Superball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11832 then -- Greatball
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11834 then -- Greatball Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11833 then -- Greatball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 10975 then -- Saffariball
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 10977 then -- Saffariball Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 10976 then -- Saffariball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12826 then -- Darkball
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12828 then -- Darkball Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12827 then -- Darkball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11740 then -- Shiny Greatball
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11742 then -- Shiny Greatball Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11741 then -- Shiny Greatball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11743 then -- Shiny Super
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11745 then -- Shiny Super Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11744 then -- Shiny Superball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11746 then -- Shiny Ultra
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11748 then -- Shiny Ultra Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11747 then -- Shiny Ultraball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11737 then -- Shiny Poke
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11739 then -- Shiny Poke Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 11738 then -- Shiny Pokeball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12621 then -- Shiny Saffari
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12623 then -- Shiny Saffari Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12622 then -- Shiny Saffariball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12829 then -- Shiny Dark
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.on)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12831 then -- Shiny Dark Morta
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.off)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
elseif x and getPlayerSlotItem(cid, 8).itemid == 12830 then -- Shiny Darkball Usada
doTransformItem(getPlayerSlotItem(cid, 8).uid, x.use)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "ball", "Icone")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "morta", "no")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "yes")
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "shiny", "yes")
end
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
local balls = getItemsInContainerById(bp.uid, 11826) ------ Pokeball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11828) --- Pokeball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
--------------------------------
local balls = getItemsInContainerById(bp.uid, 11829) ------ Ultraball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11831) --- Ultraball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
------------------------------
local balls = getItemsInContainerById(bp.uid, 11835) ------ Superball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11837) --- Superball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
-----------------------------
local balls = getItemsInContainerById(bp.uid, 11834) ------ Greatball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(balll, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11832) --- Greatball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
-----------------------------
local balls = getItemsInContainerById(bp.uid, 10975) ------ Saffariball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(balll, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 10977) --- Saffariball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
-----------------------------
local balls = getItemsInContainerById(bp.uid, 12826) ------ Darkball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 12828) --- Darkball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
-----------------------------------
local balls = getItemsInContainerById(bp.uid, 11740) ------ Shiny Great
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11742) ------ Shiny Greatball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11746) ------ Shiny Ultraball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11748) ------ Shiny Ultraball morta
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
---------------------------------------------------
local balls = getItemsInContainerById(bp.uid, 11737) -- Shiny Pokeball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11739) -- Shiny Pokeball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
--doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
---------------------------------------------------
local balls = getItemsInContainerById(bp.uid, 11740) -- Shiny Greatball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11742) -- Shiny Greatball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
---------------------------------------------------
local balls = getItemsInContainerById(bp.uid, 11743) -- Shiny Superball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 11745) -- Shiny Super
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
---------------------------------------------------
local balls = getItemsInContainerById(bp.uid, 12621) -- Shiny Saffariball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 12623) -- Shiny Saffari
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
---------------------------------------------------
local balls = getItemsInContainerById(bp.uid, 12829) -- Shiny Darkball
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.on)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "no")
doItemSetAttribute(ball, "Icone", "yes")
end
end
local balls = getItemsInContainerById(bp.uid, 12831) -- Shiny Dark
if #balls >= 1 then
for _, ball in pairs (balls) do
local x = icons[getItemAttribute(ball, "poke")]
doTransformItem(ball, x.off)
doItemSetAttribute(ball, "ball", "Icone")
doItemSetAttribute(ball, "morta", "yes")
doItemSetAttribute(ball, "Icone", "yes")
end
end
else
local pokeball = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "ball")
local mortano = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "morta")
local y = icons[getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")]
if pokeball == "normal" and mortano == "no" then -- Pokeball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11826)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "normal" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11828)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Pokeball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11829)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11831)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Pokeball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11835)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11837)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Pokeball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11832)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11834)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- saffariball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 10975)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 10977)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- darkball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 12826)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 12828)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- saffariball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11737)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11739)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Pokeball
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11746)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11748)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Shiny super
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11743)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11745) --- Shiny superr
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Shiny great
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11740)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 11742)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Shiny saffari
doTransformItem(getPlayerSlotItem(cid, 8).uid, 12621)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 12623)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then -- Shiny dark
doTransformItem(getPlayerSlotItem(cid, 8).uid, 12829)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(getPlayerSlotItem(cid, 8).uid, 12831)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "Icone", "no")
end
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
x = { }
for a = 1, #x do
local balls = getItemsInContainerById(bp.uid, x[a])
for _, ball in pairs (balls) do
local pokeball = getItemAttribute(ball, "ball")
local mortano = getItemAttribute(ball, "morta")
if getItemAttribute(ball, "ball") == "Icone" and getItemAttribute(ball, "morta") == "no" then -- Ultra ball
doTransformItem(ball, 11829)
doItemSetAttribute(ball, "Icone", "no")
elseif getItemAttribute(ball, "ball") == "Icone" and getItemAttribute(ball, "morta") == "yes" then -- Ultra ball morta
doTransformItem(ball, 11831)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 11826)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 11828)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 11835)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 11837)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 11832)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 11834)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 10975)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 10977)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 12826)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 12828)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 11737)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 11739)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 11740)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 11742)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 11743)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 11745)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 11746)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 11748)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 12621)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 12623)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "no" then
doTransformItem(ball, 12829)
doItemSetAttribute(ball, "Icone", "no")
elseif pokeball == "Icone" and mortano == "yes" then
doTransformItem(ball, 12831)
doItemSetAttribute(ball, "Icone", "no")
end
end
end
end
end

Link para o comentário
Compartilhar em outros sites

  • 0

ee45071262030725e59bdc9506c0944e.gif

 

irei testar muito obrigado @zipter98 no caso que esses bugs continuarem irei postar dnovo ^^ acho que com isso ja ira parar tds ou quase tds os bugs la vamo ver

pd: como prometi dei o credito pela ajuda ^^

edit2: login perfeito tudo mundo entrou e nao deu aquele bug q tava dando


 

Abaixo de:
function doPlayerChangeModeIcon(cid)
coloque:
if getPlayerSlotItem(cid, 8).uid < 1 then
    return true
end

 

 

tira uma duvida, tem alguns erros q ainda estao dando la no log

no caso que precisar adicionarlo (tem alguns na msm lista) iria precisar criar novo topico?

 

alguns erros aki:

[12/02/2016 23:54:48] [Error - Action Interface] 
[12/02/2016 23:54:48] In a timer event called from: 
[12/02/2016 23:54:48] data/actions/scripts/catch.lua:onUse
[12/02/2016 23:54:48] Description: 
[12/02/2016 23:54:48] (luaDoItemSetAttribute) Invalid data type

[12/02/2016 23:54:59] [Error - Action Interface] 
[12/02/2016 23:54:59] In a timer event called from: 
[12/02/2016 23:54:59] data/actions/scripts/goback.lua:onUse
[12/02/2016 23:54:59] Description: 
[12/02/2016 23:54:59] (luaDoCreatureAddHealth) Creature not found

[12/02/2016 23:54:59] [Error - Action Interface] 
[12/02/2016 23:54:59] In a timer event called from: 
[12/02/2016 23:54:59] data/actions/scripts/goback.lua:onUse
[12/02/2016 23:54:59] Description: 
[12/02/2016 23:54:59] (luaGetThingPosition) Thing not found
Editado por josegvb
Link para o comentário
Compartilhar em outros sites

  • 0

Se possível, poste seu catch.lua (actions) e catch system.lua (lib).

Só haveria necessidade de criar um novo tópico caso o assunto seja diferente do tratado neste. Bem, aparentemente, não é o caso.

Link para o comentário
Compartilhar em outros sites

  • 0

Se possível, poste seu catch.lua (actions) e catch system.lua (lib).

Só haveria necessidade de criar um novo tópico caso o assunto seja diferente do tratado neste. Bem, aparentemente, não é o caso.

pronto!

catch.lua

 

 

local ballcatch = { --id normal, id da ball shiy
[2394] = {cr = 2, on = 193, off = 192, ball = {11826, 11737}, send = 47, typeee = "normal", boost = "0"}, --alterado v1.9 \/
[2391] = {cr = 3, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great", boost = "0"},
[2393] = {cr = 4, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super", boost = "0"},
[2392] = {cr = 7, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra", boost = "0"},
[12617] = {cr = 6, on = 204, off = 203, ball = {10975, 12621}, send = 35, typeee = "saffari", boost = "0"},
[12832] = {cr = 100000, on = 23, off = 24, ball = {12826, 12829}, send = 181, typeee = "dark", boost = "50"},
}
function onUse(cid, item, frompos, item3, topos)
local item2 = getTopCorpse(topos)
if item2 == null then
return true
end
if getItemAttribute(item2.uid, "catching") == 1 then
return true
end
if getItemAttribute(item2.uid, "golden") and getItemAttribute(item2.uid, "golden") == 1 then
return doPlayerSendCancel(cid, "You can't try to catch a pokemon in the Golden Arena!")
end
local name = string.lower(getItemNameById(item2.itemid))
name = string.gsub(name, "fainted ", "")
name = string.gsub(name, "defeated ", "")
name = doCorrectPokemonName(name)
local x = pokecatches[name]
if not x then return true end
local shinys = {"Mega Lucario", "Shiny Aggron", "Mega Sableye", "Mega Sceptile", "Mega Blaziken", "Shiny Alakazam", "Shiny Scyther", "Shiny Electivire", "Shiny Magmortar", "Shiny Salamence", "Shiny Magmar", "Shiny Mantine", "Shiny Gyarados", "Shiny Snorlax", "Shiny Onix", "Shiny Electabuzz", "Shiny Pidgeot", "Aerodactyl", "Ditto", "Shiny Gengar", "Mimo Verde", "Shiny Absol", "Shiny Tropius", "Shiny Piloswine", "Shiny Tangrowth", "Shiny Slowking", "Shiny Donphan", "Shiny Flygon", "Shiny Sudowoodo", "Shiny Miltank", "Shiny Skarmory", "Shiny Sceptile", "Shiny Torterra", "Shiny Infernape", "Shiny Empoleon", "Shiny Swampert", "Shiny Metagross", "Shiny Scizor", "Shiny Steelix", "Shiny Kingdra", "Shiny Blaziken", "Shiny Magcargo", "Shiny Octillery"}
if item.itemid == 12832 and isInArray(shinys, name) then
doPlayerSendCancel(cid, "Você não pode catar esse pokemon com a master ball!")
return true
end
local storage = newpokedex[name].stoCatch
if getPlayerStorageValue(cid, storage) == -1 or not string.find(getPlayerStorageValue(cid, storage), ";") then --alterado v1.9
setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, dark = 0;") --alterado v1.9
end
local owner = getItemAttribute(item2.uid, "corpseowner")
if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner then
doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.")
return true
end
local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] --alterado v1.9
local typeee = ballcatch[item.itemid].typeee
local boost = ballcatch[item.itemid].boost
local catchinfo = {}
catchinfo.rate = ballcatch[item.itemid].cr
catchinfo.catch = ballcatch[item.itemid].on
catchinfo.fail = ballcatch[item.itemid].off
catchinfo.newid = newidd
catchinfo.name = doCorrectPokemonName(name)
catchinfo.topos = topos
catchinfo.chance = x.chance
doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send)
doRemoveItem(item.uid, 1)
local d = getDistanceBetween(getThingPos(cid), topos)
if getPlayerStorageValue(cid, 98796) >= 1 and getPlayerItemCount(cid, 12617) <= 0 then --alterado v1.9
setPlayerStorageValue(cid, 98796, -1)
setPlayerStorageValue(cid, 98797, -1)
doTeleportThing(cid, SafariOut, false)
doSendMagicEffect(getThingPos(cid), 21)
doPlayerSendTextMessage(cid, 27, "You spend all your saffari balls, good luck in the next time...")
end
addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee)
addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3)
return true
end

catch system.lua (lib)

failmsgs = {
"Sorry, you didn't catch that pokemon.",
"Sorry, your pokeball broke.",
"Sorry, the pokemon escaped.",
}
function doBrokesCount(cid, str, ball) --alterado v1.9 \/
if not isCreature(cid) then return false end
local tb = {
{b = "normal", v = 0},
{b = "great", v = 0},
{b = "super", v = 0},
{b = "ultra", v = 0},
{b = "saffari", v = 0},
{b = "dark", v = 0},
}
for _, e in ipairs(tb) do
if e.b == ball then
e.v = 1
break
end
end
local string = getPlayerStorageValue(cid, str)
local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-), dark = (.-);"
local t2 = ""
for n, g, s, u, s2, d in string:gmatch(t) do
t2 = "normal = "..(n+tb[1].v)..", great = "..(g+tb[2].v)..", super = "..(s+tb[3].v)..", ultra = "..(u+tb[4].v)..", saffari = "..(s2+tb[5].v)..", dark = "..(d+tb[6].v)..";"
end
return setPlayerStorageValue(cid, str, string:gsub(t, t2))
end
function sendBrokesMsg(cid, str, ball)
if not isCreature(cid) then return false end
local string = getPlayerStorageValue(cid, str)
local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-), dark = (.-);"
local msg = {}
table.insert(msg, "You have wasted: ")
for n, g, s, u, s2, d in string:gmatch(t) do
if tonumber(n) and tonumber(n) > 0 then
table.insert(msg, tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or ""))
end
if tonumber(g) and tonumber(g) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or ""))
end
if tonumber(s) and tonumber(s) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or ""))
end
if tonumber(u) and tonumber(u) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or ""))
end
if tonumber(s2) and tonumber(s2) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or ""))
end
if tonumber(d) and tonumber(d) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(d).." Dark ball".. (tonumber(d) > 1 and "s" or ""))
end
end
if #msg == 1 then
return true
end
if string.sub(msg[#msg], 1, 1) == "," then
msg[#msg] = " and".. string.sub(msg[#msg], 2, #msg[#msg])
end
table.insert(msg, " trying to catch it.")
sendMsgToPlayer(cid, 27, table.concat(msg))
end --alterado v1.9 /\
--------------------------------------------------------------------------------
function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee) --Edited brokes count system
local name = catchinfo.name
local pos = catchinfo.topos
local topos = {}
topos.x = pos.x
topos.y = pos.y
topos.z = pos.z
local newid = catchinfo.newid
local catch = catchinfo.catch
local fail = catchinfo.fail
local rate = catchinfo.rate
local basechance = catchinfo.chance
if pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) then
rate = 85
end
local corpse = getTopCorpse(topos).uid
if not isCreature(cid) then
doSendMagicEffect(topos, CONST_ME_POFF)
return true
end
doItemSetAttribute(corpse, "catching", 1)
local level = getItemAttribute(corpse, "level") or 0
local levelChance = level * 0.02
local totalChance = math.ceil(basechance * (1.2 + levelChance))
local thisChance = math.random(0, totalChance)
local myChance = math.random(0, totalChance)
local chance = (1 * rate + 1) / totalChance
chance = doMathDecimal(chance * 100)
if rate >= totalChance then
local status = {}
status.gender = getItemAttribute(corpse, "gender")
status.happy = 500
doRemoveItem(corpse, 1)
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee)
return true
end
if totalChance <= 1 then totalChance = 1 end
local myChances = {}
local catchChances = {}
for cC = 0, totalChance do
table.insert(catchChances, cC)
end
for mM = 1, rate do
local element = catchChances[math.random(1, #catchChances)]
table.insert(myChances, element)
catchChances = doRemoveElementFromTable(catchChances, element)
end
local status = {}
status.gender = getItemAttribute(corpse, "gender")
status.happy = 500
doRemoveItem(corpse, 1)
local doCatch = false
for check = 1, #myChances do
if thisChance == myChances[check] then
doCatch = true
end
end
if doCatch then
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee)
else
addEvent(doNotCapturePokemon, 3000, cid, name, typeee)
doSendMagicEffect(topos, fail)
end
end
function doCapturePokemon(cid, poke, ballid, status, typeee)
if not isCreature(cid) then
return true
end
local list = getCatchList(cid)
if not isInArray(list, poke) and not isShinyName(poke) then
doPlayerAddSoul(cid, 1)
end
doAddPokemonInOwnList(cid, poke)
doAddPokemonInCatchList(cid, poke)
if pokes[poke] then
local test = io.open("data/catch.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
if string.find(poke, "Shiny") then
read = read.."\n\n\nName: "..getCreatureName(cid).." - Pokémon: "..poke..""
else
read = read.."\nName: "..getCreatureName(cid).." - Pokémon: "..poke..""
end
if newpokedex[poke].stoCatch ~= -1 then
local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);"
local msg = {}
storage = getPlayerStorageValue(cid, newpokedex[poke].stoCatch)
for n, g, s, u, s2 in storage:gmatch(t) do
if tonumber(n) and tonumber(n) > 0 then
table.insert(msg, tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or ""))
end
if tonumber(g) and tonumber(g) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or ""))
end
if tonumber(s) and tonumber(s) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or ""))
end
if tonumber(u) and tonumber(u) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or ""))
end
if tonumber(s2) and tonumber(s2) > 0 then
table.insert(msg, (#msg > 1 and ", " or "").. tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or ""))
end
end
read = read.." - "..table.concat(msg)..""
end
local reopen = io.open("data/catch.txt", "w")
reopen:write(read)
reopen:close()
end
if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end
if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end
if icons[poke] then
ballid = icons[poke].on
end
local description = "Contains a "..poke.."."
local gender = status.gender
local happy = 200
--alterado v1.9 \/
if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
item = doCreateItemEx(ballid)
else
item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, ballid, 1)
end
doItemSetAttribute(item, "poke", poke)
doItemSetAttribute(item, "hp", 1)
doItemSetAttribute(item, "happy", happy)
doItemSetAttribute(item, "gender", gender)
doItemSetAttribute(item, "fakedesc", description)
doItemSetAttribute(item, "description", description)
doItemSetAttribute(item, "addon", 0)
if poke == "Hitmonchan" or poke == "Shiny Hitmonchan" then
doItemSetAttribute(item, "hands", 0)
doItemSetAttribute(item, "morta", "no")
doItemSetAttribute(item, "Icone", "yes")
doItemSetAttribute(item, "ball", "Icone")
--doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
end
doItemSetAttribute(item, "morta", "no")
doItemSetAttribute(item, "Icone", "yes")
doItemSetAttribute(item, "ball", "Icone")
--doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
----------- task clan ---------------------
if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) then
sendMsgToPlayer(cid, 27, "Quest Done!")
doItemSetAttribute(item, "unique", getCreatureName(cid))
doItemSetAttribute(item, "task", 1)
setPlayerStorageValue(cid, 854788, 'done')
doItemSetAttribute(item, "morta", "no")
doItemSetAttribute(item, "Icone", "yes")
doItemSetAttribute(item, "ball", "Icone")
--doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
end
doItemSetAttribute(item, "morta", "no")
doItemSetAttribute(item, "Icone", "yes")
doItemSetAttribute(item, "ball", "Icone")
--doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
------------------------------------------- --alterado v1.9 \/
if getPlayerFreeCap(cid) >= 6 then
doItemSetAttribute(item, "morta", "no")
doItemSetAttribute(item, "Icone", "yes")
doItemSetAttribute(item, "ball", "Icone")
--doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
doPlayerSendMailByName(getCreatureName(cid), item, 1)
--doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..")!")
doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.")
doPlayerSendTextMessage(cid, 27, "Digite !save para evitar perdas!")
end
local storage = newpokedex[poke].stoCatch
sendBrokesMsg(cid, storage, typeee)
setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0; dark = 0;") --alterado v1.9 /\
if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173)
if catchMakesPokemonHappier then
setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + 20)
if useOTClient then
doCreatureExecuteTalkAction(cid, "/salvar")
end
end
else
doSendMagicEffect(getThingPos(cid), 173)
end
doIncreaseStatistics(poke, true, true)
end
function doNotCapturePokemon(cid, poke, typeee)
if not isCreature(cid) then
return true
end
if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end
if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end
doPlayerSendTextMessage(cid, 27, failmsgs[math.random(#failmsgs)])
if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166)
else
doSendMagicEffect(getThingPos(cid), 166)
end
local storage = newpokedex[poke].stoCatch
doBrokesCount(cid, storage, typeee)
doIncreaseStatistics(poke, true, false)
end
function getPlayerInfoAboutPokemon(cid, poke)
local a = newpokedex[poke]
if not isPlayer(cid) then return false end
if not a then
print("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.")
return false
end
local b = getPlayerStorageValue(cid, a.storage)
if b == -1 then
setPlayerStorageValue(cid, a.storage, poke..":")
end
local ret = {}
if string.find(b, "catch,") then
ret.catch = true
else
ret.catch = false
end
if string.find(b, "dex,") then
ret.dex = true
else
ret.dex = false
end
if string.find(b, "use,") then
ret.use = true
else
ret.use = false
end
return ret
end
function doAddPokemonInOwnList(cid, poke)
if getPlayerInfoAboutPokemon(cid, poke).use then return true end
local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)
setPlayerStorageValue(cid, a.storage, b.." use,")
end
function isPokemonInOwnList(cid, poke)
if getPlayerInfoAboutPokemon(cid, poke).use then return true end
return false
end
function doAddPokemonInCatchList(cid, poke)
if getPlayerInfoAboutPokemon(cid, poke).catch then return true end
local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)
setPlayerStorageValue(cid, a.storage, b.." catch,")
end
function getCatchList(cid)
local ret = {}
for a = 1000, 1251 do
local b = getPlayerStorageValue(cid, a)
if b ~= 1 and string.find(b, "catch,") then
table.insert(ret, oldpokedex[a-1000][1])
end
end
return ret
end
function getStatistics(pokemon, tries, success)
local ret1 = 0
local ret2 = 0
local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
ret1 = 0
else
ret1 = num
end
arq:close()
local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
ret2 = 0
else
ret2 = num
end
arq:close()
if tries == true and success == true then
return ret1, ret2
elseif tries == true then
return ret1
else
return ret2
end
end
function doIncreaseStatistics(pokemon, tries, success)
local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
if tries == true then
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
num = 1
else
num = num + 1
end
arq:close()
local arq = io.open(dir, "w")
arq:write(""..num.."")
arq:close()
end
if success == true then
local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
num = 1
else
num = num + 1
end
arq:close()
local arq = io.open(dir, "w")
arq:write(""..num.."")
arq:close()
end
end
function doUpdateGeneralStatistics()
local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "NUMBER NAME TRIES / CATCHES\n\n"
local str = ""
for a = 1, 251 do
if string.len(oldpokedex[a][1]) <= 7 then
str = "\t"
else
str = ""
end
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."]\t"..oldpokedex[a][1].."\t"..str..""..number1.." / "..number2.."\n"
end
local arq = io.open(dir, "w")
arq:write(base)
arq:close()
end
function getGeneralStatistics()
local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "Number/Name/Tries/Catches\n\n"
local str = ""
for a = 1, 251 do
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].." "..str..""..number1.." / "..number2.."\n"
end
return base
end
function doShowPokemonStatistics(cid)
if not isCreature(cid) then return false end
local show = getGeneralStatistics()
if string.len(show) > 8192 then
print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.")
doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.")
return false
end
doShowTextDialog(cid, math.random(2391, 2394), show)
end

Link para o comentário
Compartilhar em outros sites

  • 0

O bug de catch.lua acontece aleatoriamente ou após executar alguma ação (por exemplo, jogar uma pokeball em determinado pokémon)? Afeta alguma coisa a jogabilidade?

Quanto ao erro de goback.lua, as mesmas perguntas: acontece de forma aleatória ou após o jogador realizar alguma ação (como retornar e/ou lançar o pokémon. Se for o caso, especifique sobre qual destes movimentos induzem ao bug).

Link para o comentário
Compartilhar em outros sites

  • 0

O bug de catch.lua acontece aleatoriamente ou após executar alguma ação (por exemplo, jogar uma pokeball em determinado pokémon)? Afeta alguma coisa a jogabilidade?

Quanto ao erro de goback.lua, as mesmas perguntas: acontece de forma aleatória ou após o jogador realizar alguma ação (como retornar e/ou lançar o pokémon. Se for o caso, especifique sobre qual destes movimentos induzem ao bug).

 

o erro aparesce no log nem tenho certeza (se for com tds as balls) mas pelo menos com a Dark Ball, em qualquer poke quando usa da esse erro, e o erro aparesce muito no log entao acho que debe ser com qualquer ball mesmo

acho que nao laga o servidor nao porem estou com esse outro aqui q ta lagando sim

 

[13/02/2016 01:20:44] [Error - TalkAction Interface]
[13/02/2016 01:20:44] data/talkactions/scripts/move1.lua:onSay
[13/02/2016 01:20:44] Description:
[13/02/2016 01:20:44] (luaAddEvent) Callback parameter should be a function.
[13/02/2016 01:20:44] [Error - TalkAction Interface]
[13/02/2016 01:20:44] data/talkactions/scripts/move1.lua:onSay
[13/02/2016 01:20:44] Description:
[13/02/2016 01:20:44] (luaAddEvent) Callback parameter should be a function.
move1.lua

local msgs = {"use ", ""}
function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid, 8)
if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")
return true
end
local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
if not p or #p <= 0 then return true end
for a = 1, #p do
if getItemAttribute(p[a], cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")
return true
end
end
end
function onSay(cid, words, param, channel)
if param ~= "" then return true end
if string.len(words) > 3 then return true end
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return 0
end
--alterado v1.5
local mypoke = getCreatureSummons(cid)[1]
if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end
if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
name = getPlayerStorageValue(mypoke, 1010) --edited
else
name = getCreatureName(mypoke)
end
--local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)
local it = string.sub(words, 2, 3)
local idd = getPlayerSlotItem(cid, 8).uid
local move = getCreatureName(mypoke) == "Smeargle" and getItemAttribute(idd, "skt1") and movestable[getItemAttribute(idd, "skt1")].move1 or movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
cdzin = "cm_move"..it..""
else
cdzin = "move"..it.."" --alterado v1.5
end
if it == "2" then
if getItemAttribute(idd, "skt2") then
move = movestable[getItemAttribute(idd, "skt2")].move2
else
move = movestable[name].move2
end
elseif it == "3" then
if getItemAttribute(idd, "skt3") then
move = movestable[getItemAttribute(idd, "skt3")].move3
else
move = movestable[name].move3
end
elseif it == "4" then
if getItemAttribute(idd, "skt4") then
move = movestable[getItemAttribute(idd, "skt4")].move4
else
move = movestable[name].move4
end
elseif it == "4" then
if getItemAttribute(idd, "skt4") then
move = movestable[getItemAttribute(idd, "skt4")].move4
else
move = movestable[name].move4
end
elseif it == "5" then
if getItemAttribute(idd, "skt5") then
move = movestable[getItemAttribute(idd, "skt5")].move5
else
move = movestable[name].move5
end
elseif it == "6" then
if getItemAttribute(idd, "skt6") then
move = movestable[getItemAttribute(idd, "skt6")].move6
else
move = movestable[name].move6
end
elseif it == "7" then
if getItemAttribute(idd, "skt7") then
move = movestable[getItemAttribute(idd, "skt7")].move7
else
move = movestable[name].move7
end
elseif it == "8" then
if getItemAttribute(idd, "skt8") then
move = movestable[getItemAttribute(idd, "skt8")].move8
else
move = movestable[name].move8
end
elseif it == "9" then
move = movestable[name].move9
elseif it == "10" then
move = movestable[name].move10
elseif it == "11" then
move = movestable[name].move11
elseif it == "12" then
move = movestable[name].move12
elseif it == "13" then
move = movestable[name].move13
end
if not move then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
if getPlayerLevel(cid) < move.level then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")
return true
end
if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")
return true
end
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return true
end
if getPlayerStorageValue(mypoke, 3894) >= 1 then
return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3
end
--alterado v1.6
if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then
doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
return true
end
--alterado v1.7 \/\/\/
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then
local target = getCreatureTarget(cid)
if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then
if isCreature(getMasterTarget(target)) then --alterado v1.6
doSendMagicEffect(getThingPos(target), 211)
doSendAnimatedText(getThingPos(target), "TOO BAD", 215)
doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
doSendMagicEffect(getThingPos(target), 211)
doFaceCreature(target, getThingPos(mypoke))
return true --alterado v1.6
end
end
end
if move.target == 1 then
if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")
return 0
end
if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end
if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")
return 0
end
if not isCreature(getCreatureSummons(cid)[1]) then
return true
end
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end
if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end
local newid = 0
if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
if getPlayerStorageValue(mypoke, 93828) > os.time() then
return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.")
end
doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY)
local summons = getCreatureSummons(cid) --alterado v1.6
addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
for i = 2, #summons do
if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then
docastspell(summons, move.name) --alterado v1.6
end
end
docastspell(mypoke, move.name)
doCreatureAddCondition(cid, playerexhaust)
if useKpdoDlls then
doUpdateCooldowns(cid)
end
return 0
end

Link para o comentário
Compartilhar em outros sites

  • 0

Apenas para confirmarmos onde está a causa do erro, remova temporariamente a seguinte linha e veja se o erro continua:

addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
Link para o comentário
Compartilhar em outros sites

  • 0

 

Apenas para confirmarmos onde está a causa do erro, remova temporariamente a seguinte linha e veja se o erro continua:

addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)

 

effectivamente @zipter98 paresce que não esta dando + o erro no log, 10 mins on com 50 online no momento e nao saiu + o erro

mas esta dando aquele q achei que tinha resolvido

 

[13/02/2016 20:53:33] [Error - Action Interface]
[13/02/2016 20:53:33] In a timer event called from:
[13/02/2016 20:53:34] data/actions/scripts/goback.lua:onUse
[13/02/2016 20:53:34] Description:
[13/02/2016 20:53:34] (luaDoCreatureAddHealth) Creature not found
[13/02/2016 20:53:34] [Error - Action Interface]
[13/02/2016 20:53:34] In a timer event called from:
[13/02/2016 20:53:34] data/actions/scripts/goback.lua:onUse
[13/02/2016 20:53:34] Description:
[13/02/2016 20:53:34] (luaGetThingPosition) Thing not found
[13/02/2016 21:02:10] [Error - Action Interface]
[13/02/2016 21:02:10] In a timer event called from:
[13/02/2016 21:02:10] data/actions/scripts/goback.lua:onUse
[13/02/2016 21:02:10] Description:
[13/02/2016 21:02:10] (luaDoCreatureSetSkullType) Creature not found

 

 

edit: 1h e media despois, 90 on

[13/02/2016 22:13:51] [Error - TalkAction Interface]
[13/02/2016 22:13:51] data/talkactions/scripts/move1.lua:onSay
[13/02/2016 22:13:51] Description:
[13/02/2016 22:13:51] (luaAddEvent) Callback parameter should be a function.
[13/02/2016 22:13:51] [Error - TalkAction Interface]
[13/02/2016 22:13:51] data/talkactions/scripts/move1.lua:onSay
[13/02/2016 22:13:51] Description:
[13/02/2016 22:13:51] (luaAddEvent) Callback parameter should be a function.

 

Apenas para confirmarmos onde está a causa do erro, remova temporariamente a seguinte linha e veja se o erro continua:

addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)

 

teria como me dar 1 ajuda aki

modifiquei o script order do lib pra tirar 1 bug enquanto fly com scyther, que se voce da fly e dpois usa shedder team, e sober ira travar o servidor com um erro... consegui fazer o script nao deixar fazer isso mas ta dando 1 erro no log e ainda ta bem lagado pelos outros :|

 

order do lib:

 

 

function doPushCreatureTo(uid, direction, distance, speed) --//doPushCreature(creature,getPlayerLookDir(cid))
-- Desenvolvido por Dokmos 30/01/2009
-- Apoio Dinastias
local pos = getThingPos(uid)
local PARAM = {{1}, {500}}
local DIRECTION = {
{{0,0},{6,7},{1,3}}, {{1,1},{5,7},{0,2}}, {{2,2},{4,5},{1,3}}, {{3,3},{4,6},{0,2}},
{{4,4},{2,3}}, {{5,5}, {1,2}}, {{6,6},{0,1}}, {{7,7},{0,3}}
}
table.insert(PARAM[1], distance)
table.insert(PARAM[2], speed)
for dvar = 1, #DIRECTION[direction+1] do
rand = math.random(2)
d = DIRECTION[direction+1][dvar][rand]
dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}
newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}
if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end
rand = (math.fmod(rand,2)+1)
d = DIRECTION[direction+1][dvar][rand]
dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}
newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}
if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end
if (dvar == #DIRECTION[direction+1]) then
newtile = pos
end
end
doTeleportThing(uid, newtile, true)
if (PARAM[1][#PARAM[1]] > 1) then
addEvent(doPushCreature, PARAM[2][#PARAM[2]], uid, direction, (distance-1), speed)
end
end
--///////////////////////////////////////////////////////////////////////////////////////////////////////--
local dirpref = {
[1] = {[NORTH] = {[1] = {NORTH}, [2] = {EAST, WEST}, [3] = {NORTHEAST, NORTHWEST}},
[EAST] = {[1] = {EAST}, [2] = {NORTH, SOUTH}, [3] = {NORTHEAST, SOUTHEAST}},
[sOUTH] = {[1] = {SOUTH}, [2] = {EAST, WEST}, [3] = {SOUTHEAST, SOUTHWEST}},
[WEST] = {[1] = {WEST}, [2] = {SOUTH, NORTH}, [3] = {NORTHWEST, SOUTHWEST}},
[NORTHEAST] = {[1] = {NORTH, EAST}, [2] = {NORTHEAST}, [3] = {SOUTH, WEST}},
[sOUTHEAST] = {[1] = {SOUTH, EAST}, [2] = {SOUTHEAST}, [3] = {NORTH, WEST}},
[sOUTHWEST] = {[1] = {SOUTH, WEST}, [2] = {SOUTHWEST}, [3] = {NORTH, EAST}},
[NORTHWEST] = {[1] = {NORTH, WEST}, [2] = {NORTHWEST}, [3] = {EAST, SOUTH}}},
[2] = {[NORTH] = {[1] = {NORTH}, [2] = {WEST, EAST}, [3] = {NORTHWEST, NORTHEAST}},
[EAST] = {[1] = {EAST}, [2] = {SOUTH, NORTH}, [3] = {SOUTHEAST, NORTHEAST}},
[sOUTH] = {[1] = {SOUTH}, [2] = {WEST, EAST}, [3] = {SOUTHWEST, SOUTHEAST}},
[WEST] = {[1] = {WEST}, [2] = {NORTH, SOUTH}, [3] = {SOUTHWEST, NORTHWEST}},
[NORTHEAST] = {[1] = {EAST, NORTH}, [2] = {NORTHEAST}, [3] = {WEST, SOUTH}},
[sOUTHEAST] = {[1] = {EAST, SOUTH}, [2] = {SOUTHEAST}, [3] = {WEST, NORTH}},
[sOUTHWEST] = {[1] = {WEST, SOUTH}, [2] = {SOUTHWEST}, [3] = {EAST, NORTH}},
[NORTHWEST] = {[1] = {WEST, NORTH}, [2] = {NORTHWEST}, [3] = {SOUTH, EAST}}},
}
function doPushCreature(uid,direction,distance,time)
if isCreature(uid) == TRUE then
local rand = (2*math.random(0,1))-1
local rand2 = math.random(-1,0)
if direction == 0 then
signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0}
elseif direction == 1 then
signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0}
elseif direction == 2 then
signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0}
elseif direction == 3 then
signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0}
elseif direction == 4 then
signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0}
elseif direction == 5 then
signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0}
elseif direction == 6 then
signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0}
else
signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0}
end
local pos = getThingPos(uid)
nsig = #signal
nvar = 0
repeat
nvar = nvar+1
newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z}
newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0}
until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and canWalkOnPos(newtile, true, false, true, true, false) and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)
--alterado v1.5
if distance == nil or distance == 1 then
doTeleportThing(uid,newpos,TRUE)
else
distance = distance-1
doTeleportThing(uid,newpos,TRUE)
if time ~= nil then
addEvent(doPushCreature,time,uid,direction,distance,time)
else
addEvent(doPushCreature,500,uid,direction,distance,500)
end
end
end
end
function doComparePosition(pos1, pos2)
if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then
return true
end
return false
end
function walkTo(cid, direction, finalp, useExtraMoveOrder)
if not isCreature(cid) then return true end
doChangeSpeed(cid, 5)
local x = getThingPos(cid)
local ratedelaywalk = 1
local finalpos = {x = finalp.x, y = finalp.y, z = finalp.z}
if not canWalkOnPos(finalpos, false, false, true, true, true) then
finalpos = getClosestFreeTile(cid, finalpos)
end
if not finalpos then
return false
end
local dir = getDirectionToWalk(cid, finalpos, 2, 0, 0, false, true, 300)
if dir and tonumber(dir) ~= nil and tonumber(dir) >= 0 and tonumber(dir) <= 7 then
if dir >= 4 then
ratedelaywalk = 0.4
end
doPushCreature(cid, dir, 1, getNextStepDelay(cid, dir) * ratedelaywalk)
return getNextStepDelay(cid, dir) * ratedelaywalk
elseif useExtraMoveOrder then
local random = math.random(1, 2)
for ta = 1, 3 do
for tb = 1, #dirpref[random][direction][ta] do
local y = getPosByDir(getThingPos(cid), dirpref[random][direction][ta][tb])
local w = getCreatureLP(cid)
local z = getDirectionTo(y, getThingPos(cid)) -- direção q vai marcar
local j = getDirectionTo(getThingPos(cid), y) -- direção q ele vai
if canWalkOnPos(y, true, false, true, true, true) and w ~= j then
if dirpref[random][direction][ta][tb] >= 4 then
ratedelaywalk = 0.5
end
doPushCreature(cid, dirpref[random][direction][ta][tb], 1, getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk)
markLP(cid, z)
return getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk
end
end
end
end
return false
end
function getCreatureLP(cid)
return getPlayerStorageValue(cid, 197)
end
function markLP(cid, dir)
setPlayerStorageValue(cid, 197, dir)
end
function markPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 145, pos.x)
setPlayerStorageValue(sid, 146, pos.y)
setPlayerStorageValue(sid, 147, pos.z)
end
function markFlyingPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 33145, pos.x)
setPlayerStorageValue(sid, 33146, pos.y)
setPlayerStorageValue(sid, 33147, pos.z)
end
function getFlyingMarkedPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 33145)
local yy = getPlayerStorageValue(sid, 33146)
local zz = getPlayerStorageValue(sid, 33147)
return {x = xx, y = yy, z = zz, stackpos = 0}
end
function getMarkedPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 145)
local yy = getPlayerStorageValue(sid, 146)
local zz = getPlayerStorageValue(sid, 147)
return {x = xx, y = yy, z = zz}
end
function getOwnerPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 148)
local yy = getPlayerStorageValue(sid, 149)
local zz = getPlayerStorageValue(sid, 150)
return {x = xx, y = yy, z = zz}
end
function markOwnerPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 148, pos.x)
setPlayerStorageValue(sid, 149, pos.y)
setPlayerStorageValue(sid, 150, pos.z)
end
function recheck(sid, skill, pos)
if not isCreature(sid) or not isCreature(getCreatureMaster(sid)) then return end
local cid = getCreatureMaster(sid)
if skill == "cut" then
local item = getTileItemById(pos, 2767)
doCreatureSay(sid, "CUT!", TALKTYPE_MONSTER)
markPos(sid, {x=1,y=1,z=7})
doFaceCreature(sid, pos)
doSendMagicEffect(getThingPos(item.uid), 141)
doTransformItem(item.uid, 6216)
local function growBush()
doTransformItem(getTileItemById(pos, 6216).uid, 2767)
end
addEvent(growBush, intervalToRegrowBushAndStones * 1000)
elseif skill == "rock smash" then
local item = getTileItemById(pos, 1285)
doCreatureSay(sid, "ROCK SMASH!", TALKTYPE_MONSTER)
markPos(sid, {x=1,y=1,z=7})
doFaceCreature(sid, pos)
doSendMagicEffect(getThingPos(item.uid), 118)
doTransformItem(item.uid, 3610)
local function growRock()
doTransformItem(getTileItemById(pos, 3610).uid, 1285)
end
addEvent(growRock, intervalToRegrowBushAndStones * 1000)
elseif skill == "headbutt" then --alterado v1.6
local master = getCreatureMaster(sid)
local array = {}
local lvl = {25, 40, 60, 80, 150, 1000} --lvls
for i = 1, #lvl do
if getPlayerLevel(master) <= lvl then
array = headbutt[lvl]
break
end
end
local rand = array[math.random(#array)]
for j = 1, rand[2] do
local poke = doCreateMonster(rand[1], getClosestFreeTile(sid, pos))
doSetMonsterPassive(poke)
doWildAttackPlayer(poke, master)
end
local item = getTileItemById(pos, 12591) --id do item arvore normal
doCreatureSay(sid, "HEADBUTT!", TALKTYPE_MONSTER)
markPos(sid, {x=1,y=1,z=7})
doFaceCreature(sid, pos)
doSendMagicEffect(getThingPos(item.uid), 118)
doTransformItem(item.uid, 12592) --id do item arvore quebrada
local function growHead()
doTransformItem(getTileItemById(pos, 12592).uid, 12591) --id do item arvore quebrada, arvore normal
end
addEvent(growHead, choose(5, 10, 20, 30) * 60 * 10) --o tempo pra arvore voltar ao normal varia de 5~30min --mudei jah
elseif skill == "dig" then
local item = getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
doCreatureSay(sid, "DIG!", TALKTYPE_MONSTER)
markPos(sid, {x=1,y=1,z=7})
doFaceCreature(sid, pos)
doSendMagicEffect(getThingPos(item.uid), 3)
doTransformItem(item.uid, item.itemid+1)
local function closeHole()
doTransformItem(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).uid, item.itemid)
end
addEvent(closeHole, intervalToRegrowBushAndStones * 1000)
elseif skill == "fly" then
--if not isPremium(cid) then
--doPlayerSendCancel(cid, "Only premium members are allowed to fly.")
--return true
--end
local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])]
doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly/levitate higher and \"down\" or \"h2\" to fly/levitate lower.") --alterado v1.8
doChangeSpeed(cid, -getCreatureSpeed(cid))
local speed = 20 + PlayerSpeed + getSpeed(sid) * speedRate
doChangeSpeed(cid, speed)
setPlayerStorageValue(cid, 54844, speed)
doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1]))
doRemoveCreature(getCreatureSummons(cid)[1])
setPlayerStorageValue(cid, 17000, 1)
if getCreatureOutfit(cid).lookType == 667 or getCreatureOutfit(cid).lookType == 999 then
markPosEff(cid, getThingPos(cid))
sendMovementEffect(cid, 137, getThingPos(cid)) --edited efeito quando anda com o porygon
end
local item = getPlayerSlotItem(cid, 8)
if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then
sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8
end
if useOTClient then
doPlayerSendCancel(cid, '12//,hide') --alterado v1.8
end
return true
elseif skill == "ride" then
local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])]
doChangeSpeed(cid, -getCreatureSpeed(cid))
local speed = 20 + PlayerSpeed + getSpeed(sid) * speedRate
doChangeSpeed(cid, speed)
setPlayerStorageValue(cid, 54844, speed)
doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1)
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1]))
doRemoveCreature(getCreatureSummons(cid)[1])
setPlayerStorageValue(cid, 17001, 1)
local item = getPlayerSlotItem(cid, 8)
if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then
sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8
end
if useOTClient then
doPlayerSendCancel(cid, '12//,hide') --alterado v1.8
end
return true
end
if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y or isCreature(getCreatureTarget(getCreatureMaster(sid))) then
doRegainSpeed(sid)
markPos(sid, {x=1,y=1,z=7})
return true
end
addEvent(recheck, 120, sid)
end
function goThere(sid, thepos, skill, target, rept)
if getPlayerStorageValue(getCreatureMaster(sid), 637500) >= 1 or getPlayerStorageValue(getCreatureMaster(sid), 637501) >= 1 then
if thepos.x == getThingPos(getCreatureMaster(sid)).x or thepos.y == getThingPos(getCreatureMaster(sid)).y then
return false
end
return false
else
if not isCreature(sid) or not isCreature(getCreatureMaster(sid)) then return true end
if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end --alterado v1.6
if not isCreature(sid) or not isCreature(getCreatureMaster(sid)) then return true end
if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end --alterado v1.6
if thepos.x ~= getMarkedPos(sid).x or thepos.y ~= getMarkedPos(sid).y then return true end
if isCreature(getCreatureTarget(getCreatureMaster(sid))) and target == false or (rept and rept <= 0) then
doRegainSpeed(sid)
markPos(sid, {x=1,y=1,z=7})
return true
end
if (skill == "ride" or skill == "fly") and getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then
local currentPos = getThingPos(getCreatureMaster(sid))
local summonPos = getThingPos(sid)
local masterPos = getCreatureLastPosition(sid)
if (getThingPos(sid).x == getThingPos(getCreatureMaster(sid)).x and getThingPos(sid).y == getThingPos(getCreatureMaster(sid)).y) or (currentPos.x == masterPos.x and currentPos.y == masterPos.y) then
recheck(sid, skill, thepos)
return true
end
if currentPos.x == thepos.x and currentPos.y == thepos.y then
if getDirectionTo(getThingPos(sid), getThingPos(getCreatureMaster(sid))) <= 3 then
doRegainSpeed(sid)
local ndelay = getNextStepDelay(sid, 0)
doTeleportThing(sid, thepos, true)
doChangeSpeed(sid, -getCreatureSpeed(sid))
markPos(sid, getThingPos(getCreatureMaster(sid)))
addEvent(goThere, ndelay, sid, getMarkedPos(sid), skill, target)
else
doChangeSpeed(sid, - getCreatureSpeed(sid))
doRegainSpeed(sid)
markPos(sid, getThingPos(getCreatureMaster(sid)))
local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly")
doChangeSpeed(sid, - getCreatureSpeed(sid))
addEvent(goThere, x, sid, getMarkedPos(sid), skill, target)
end
return true
else
markPos(sid, getThingPos(getCreatureMaster(sid)))
doChangeSpeed(sid, - getCreatureSpeed(sid))
doRegainSpeed(sid)
local ndelay = getNextStepDelay(sid, 0)
if getDirectionTo(getThingPos(sid), getMarkedPos(sid)) >= 4 then
local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly")
else
doTeleportThing(sid, getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))))
end
doChangeSpeed(sid, - getCreatureSpeed(sid))
addEvent(goThere, x and x or ndelay, sid, getMarkedPos(sid), skill, target)
return true
end
addEvent(recheck, 350, sid, skill, thepos)
return true
end
if getThingPos(sid).x == getMarkedPos(sid).x and getThingPos(sid).y == getMarkedPos(sid).y then
if isCreature(getCreatureTarget(sid)) then
doFaceCreature(sid, getThingPos(getCreatureTarget(sid)))
end
if skill == "blink" then
doChangeSpeed(sid, - getCreatureSpeed(sid)) --edited blink
end
addEvent(recheck, 350, sid, skill, thepos)
return true
end
if (getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y) and isCreature(getCreatureTarget(getCreatureMaster(sid))) == false and skill == "move" then
doRegainSpeed(sid)
markPos(sid, {x=1,y=1,z=7})
return true
end
doRegainSpeed(sid)
local holeid = thepos
holeid.stackpos = 0
holeid = getTileThingByPos(holeid).itemid
if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 and (not isWalkable(getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))), true, false, false, true) or isInArray(specialabilities["digholes"], holeid)) then
if isGhostPokemon(sid) and getPlayerStorageValue(getCreatureMaster(sid), 990) <= 0 then
local todir = getDirectionTo(getThingPos(sid), getMarkedPos(sid))
if todir <= 3 then
doTeleportThing(sid, getMarkedPos(sid), true)
else
local gotopos = getPosByDir(getThingPos(sid), dirpref[math.random(1, 2)][todir][1][math.random(1, 2)])
doTeleportThing(sid, gotopos, true)
addEvent(goThere, getNextStepDelay(sid, 0), sid, getMarkedPos(sid), skill, target)
return true
end
end
doFaceCreature(sid, getMarkedPos(sid))
addEvent(recheck, 180, sid, skill, thepos)
doChangeSpeed(sid, - getCreatureSpeed(sid))
return true
end
local ret = 0
if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then
ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or isGhostPokemon(sid))
if not tonumber(ret) then
doFaceCreature(sid, getMarkedPos(sid))
addEvent(recheck, 180, sid, skill, thepos)
doChangeSpeed(sid, - getCreatureSpeed(sid))
return true
end
else --alterado
ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or not isGhostPokemon(sid))-- and isSightClear(getThingPos(sid), getMarkedPos(sid), false)))
end
if not tonumber(ret) then
doPlayerSendCancel(getCreatureMaster(sid), "Destination is not reachable.")
markPos(sid, {x=1,y=1,z=7})
return true
end
doChangeSpeed(sid, - getCreatureSpeed(sid))
addEvent(goThere, tonumber(ret), sid, getMarkedPos(sid), skill, target, rept and rept - 1 or 22)
end
end

bug:
[14/02/2016 03:04:59] [Error - Action Interface] 
[14/02/2016 03:04:59] In a timer event called from: 
[14/02/2016 03:04:59] data/actions/scripts/order.lua:onUse
[14/02/2016 03:05:00] Description: 
[14/02/2016 03:05:00] (luaGetCreatureMaster) Creature not found

[14/02/2016 03:05:00] [Error - Action Interface] 
[14/02/2016 03:05:00] In a timer event called from: 
[14/02/2016 03:05:00] data/actions/scripts/order.lua:onUse
[14/02/2016 03:05:01] Description: 
[14/02/2016 03:05:01] (luaGetCreatureStorage) Creature not found

[14/02/2016 03:05:01] [Error - Action Interface] 
[14/02/2016 03:05:01] In a timer event called from: 
[14/02/2016 03:05:01] data/actions/scripts/order.lua:onUse
[14/02/2016 03:05:01] Description: 
[14/02/2016 03:05:02] data/lib/order.lua:342: attempt to compare number with boolean
[14/02/2016 03:05:02] stack traceback:
[14/02/2016 03:05:02] 	data/lib/order.lua:342: in function <data/lib/order.lua:341>
Editado por josegvb
Link para o comentário
Compartilhar em outros sites

  • 0

Acima de:

if getPlayerStorageValue(getCreatureMaster(sid), 637500) >= 1 or getPlayerStorageValue(getCreatureMaster(sid), 637501) >= 1 then

coloque:

if not isCreature(sid) or not isCreature(getCreatureMaster(sid)) then return true end

Darei uma olhada no erro de go/back logo. Quanto ao move1.lua, suponho que o problema esteja localizado em pokemon moves.lua (lib) ou na função doUpdateCooldowns. Infelizmente, o relatório de bugs da distro é muito vago em casos como esse, tornando o encontro do erro muito difícil.

Ah, como a remoção daquela linha não resolveu o problema, já pode colocá-la de volta.

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

  • 0

Acima de:

if getPlayerStorageValue(getCreatureMaster(sid), 637500) >= 1 or getPlayerStorageValue(getCreatureMaster(sid), 637501) >= 1 then

coloque:

if not isCreature(sid) or not isCreature(getCreatureMaster(sid)) then return true end

Darei uma olhada no erro de go/back logo. Quanto ao move1.lua, suponho que o problema esteja localizado em pokemon moves.lua (lib) ou na função doUpdateCooldowns. Infelizmente, o relatório de bugs da distro é muito vago em casos como esse, tornando o encontro do erro muito difícil.

Ah, como a remoção daquela linha não resolveu o problema, já pode colocá-la de volta.

 

:D paresce q deu certo, nem esta dando + erro, pelo menos esse de order no log

Link para o comentário
Compartilhar em outros sites

  • 0

Acima de:

if getPlayerStorageValue(getCreatureMaster(sid), 637500) >= 1 or getPlayerStorageValue(getCreatureMaster(sid), 637501) >= 1 then

coloque:

if not isCreature(sid) or not isCreature(getCreatureMaster(sid)) then return true end

Darei uma olhada no erro de go/back logo. Quanto ao move1.lua, suponho que o problema esteja localizado em pokemon moves.lua (lib) ou na função doUpdateCooldowns. Infelizmente, o relatório de bugs da distro é muito vago em casos como esse, tornando o encontro do erro muito difícil.

Ah, como a remoção daquela linha não resolveu o problema, já pode colocá-la de volta.

 

@[member=zipter98], esperando muito isso ^^ tem algum jeito de ver o log pelos crash? (O Servidor parou de funcionar!)

ultimamente esta dando muitos crash e não tem como eu ver oque faz o servidor crashar :/ ou pelo menos nem sei o porque

Olá, estou tendo alguns novos bugs no servidor, e são muito estranhos irei explicar:

 

o primer bug é o siguente... quando alguem tiver MUITOS ITEMS encima (acho q é só a grana pois tudo mundo tem milhoes de grana) o servidor começa a travar, mas trava toda vez que ele COLOCA o seu pokemon, quando tira nao acontece nada, mas quando coloca denovo ai o servidor da uma travada de uns 4 segundos... ja tentei colocar um sistema de "depositall" porem quando tiram a grana de la, ela se buga e se torna em tipo 225 TD e assim... mas só quando tiver muito...

 

e o segundo bug é o siguente... apos algumas horas de o server ficar ON, nem sei pq o catch se torna bugado... começa a dar muito bug no log, fiz burrice e nao salvei o erro irei pegar quando bugar denovo... mas esse bug tem 2 maneiras diferentes de fazer merda, a primeira você taca MB ou UB qualquer ball em qualquer poke, e mesmo que você der catch você nao ira pegar ele, ele simplemente nao aparesce.... e a segunda é quando você taca ball no pokemon morto a ball faz o seu "effeito" mas o corpo n some, e nem aparesce nemhum msg da ball, ai nao da pra tacar mais balls...

 

 

esses bugs sao muitos estranhos e nem faço idea de como resolver... talves ja aconteceu alguma vez pra voce? @@zipter98,

 

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

×
×
  • Criar Novo...