Ir para conteúdo
  • Cadastre-se

[Resolvido] Error-CreatureScript Interface


Posts Recomendados

[19/01/2013 10:44:50] [Error - CreatureScript Interface]

[19/01/2013 10:44:50] In a timer event called from:

[19/01/2013 10:44:50] data/creaturescripts/scripts/spawn.lua:onSpawn

[19/01/2013 10:44:50] Description:

[19/01/2013 10:44:50] data/lib/level system.lua:590: attempt to index field '?' (a nil value)

[19/01/2013 10:44:50] stack traceback:

[19/01/2013 10:44:50] data/lib/level system.lua:590: in function 'setWildPokemonLevel'

[19/01/2013 10:44:50] data/creaturescripts/scripts/spawn.lua:22: in function <data/creaturescripts/scripts/spawn.lua:19>

Olá pessoal, to começando um otserver de pokemon agora, e consegui um ot muito bom mesmo.Eu até sei um pouco de programação, mas como é pouco to precisando da ajuda de voces para intender esse erro que dá ao abrir o ot.

eu consigo entender o local que ta dando erro, mas como arruma-lo, ou melhor entender o que esta acontencendo...

seria estar dando erro em alguma função no arquivo system.lua na função setWildPokemonLevel

o que seria aquele numero que aparece no texto acima ( 590) ou (22) ou (19)?

Bom, agradeço desde ja!

Link para o post
Compartilhar em outros sites

Esses numeros "acima ( 590) ou (22) ou (19)?" são as linhas onde se encontra o erro :X

Não entendo muito de pokemon, mas poste o script que vou tentar arrumar :D

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

Obrigado por responder, mandei os scripts para ajudar na compreensao.

function getPokemonStatus(name, multiplier)

local a = pokes[name]

local m = 1

if not a then return false end

if not a.offense then return false end

if multiplier then m = multiplier end

local ret = {}

ret.off = a.offense * m

ret.offense = ret.off


ret.def = a.defense * m

ret.defense = ret.def


ret.agi = a.agility * m

ret.agility = ret.agi


ret.spatk = a.specialattack * m

ret.specialattack = ret.spatk


ret.vit = a.vitality * m

ret.vitality = ret.vit

return ret

end


function getPokemonXMLOutfit(name)

local a = "data/monster/pokes/"..name..".xml"

local b = io.open(a, "a+")

local c = b:read("*all")

b:close()

local d, e = c:find('look type="(.-)"')

c = string.sub(c, d + 11, e - 1)

return tonumber(c)

end


function doEvolutionOutfit(cid, oldout, outfit)

if not isCreature(cid) then return true end

if getCreatureOutfit(cid).lookType == oldout then

doSetCreatureOutfit(cid, {lookType = outfit}, -1)

else

doSetCreatureOutfit(cid, {lookType = oldout}, -1)

end

end


function doStartEvolution(cid, evolution, seconds)

if not isCreature(cid) then return true end

local a = getPlayerStorageValue(cid, 1007)

local b = getCreatureHealth(cid) / getCreatureMaxHealth(cid)

local d = getThingPos(cid)

local e = getCreatureMaster(cid)

if getHappinessRate(cid) < 1 then return true end

local f = getCreatureOutfit(cid).lookType

local g = getItemAttribute(getPlayerSlotItem(e, 8).uid, "nick") or getCreatureName(cid)

local h = getPokemonXMLOutfit(evolution)

doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hp", b)

doCreatureSay(e, "What? My "..g.." is evolving!", TALKTYPE_SAY)

doSummonMonster(e, "Evolution")

doReturnPokemon(e, cid, getPlayerSlotItem(e, 8), 0, true)

local evo = getCreatureSummons(e)[1]

doEvolutionOutfit(evo, h, f)

doCreatureSetHideHealth(evo, true)

doCreatureSetLookDir(evo, 2)

setPlayerStorageValue(evo, 1007, g)

doTeleportThing(evo, d, false)

addEvent(sendSSJEffect, 250, evo)

doSendAnimatedText(getThingPos(evo), "EVOLUTION", COLOR_GRASS)

doSendEvolutionEffect(evo, getThingPos(evo), evolution, 20, false, false, f, h)

end


function doSendEvolutionEffect(cid, pos, evolution, turn, ssj, evolve, f, h)

if not isCreature(cid) then

doSendAnimatedText(pos, "CANCEL", 215)

return true end

if evolve then

doEvolvePokemon(getCreatureMaster(cid), {uid = cid}, evolution, 0, 0)

return true

end

doSendMagicEffect(pos, 18)

if ssj then

sendSSJEffect(evo)

end

doEvolutionOutfit(cid, f, h)

addEvent(doSendEvolutionEffect, math.pow(1900, turn/20), cid, getThingPos(cid), evolution, turn - 1, turn == 19, turn == 2, f, h)

end


function sendSSJEffect(cid)

if not isCreature(cid) then return true end

local pos1 = getThingPos(cid)

local pos2 = getThingPos(cid)

pos2.x = pos2.x + math.random(-1, 1)

pos2.y = pos2.y - math.random(1, 2)

doSendDistanceShoot(pos1, pos2, 37)

addEvent(sendSSJEffect, 45, cid)

end


function sendFinishEvolutionEffect(cid, alternate)

if not isCreature(cid) then return true end

local pos1 = getThingPos(cid)


if alternate then

local pos = {

[1] = {-2, 0},

[2] = {-1, -1},

[3] = {0, -2},

[4] = {1, -1},

[5] = {2, 0},

[6] = {1, 1},

[7] = {0, 2},

[8] = {-1, 1}}

for a = 1, 8 do

local pos2 = getThingPos(cid)

pos2.x = pos2.x + pos[a][1]

pos2.y = pos2.y + pos[a][2]

local pos = getThingPos(cid)

doSendDistanceShoot(pos2, pos, 37)

addEvent(doSendDistanceShoot, 300, pos, pos2, 37)

end

else

for a = 0, 3 do

doSendDistanceShoot(pos1, getPosByDir(pos1, a), 37)

end

for a = 4, 7 do

addEvent(doSendDistanceShoot, 600, pos1, getPosByDir(pos1, a), 37)

end

end

end


function doEvolvePokemon(cid, item2, theevo, stone1, stone2)


if not isCreature(cid) then return true end


if not pokes[theevo] or not pokes[theevo].offense then

doReturnPokemon(cid, item2.uid, getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect, false, true)

return true

end


local owner = getCreatureMaster(item2.uid)

local pokeball = getPlayerSlotItem(cid, 8)

local description = "Contains a "..theevo.."."

local pct = getCreatureHealth(item2.uid) / getCreatureMaxHealth(item2.uid)


doItemSetAttribute(pokeball.uid, "hp", pct)


doItemSetAttribute(pokeball.uid, "poke", theevo)

doItemSetAttribute(pokeball.uid, "description", "Contains a "..theevo..".")


doPlayerSendTextMessage(cid, 27, "Congratulations! Your "..getPokeName(item2.uid).." evolved into a "..theevo.."!")


doSendMagicEffect(getThingPos(item2.uid), 18)

doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos[theevo])

doSendMagicEffect(getThingPos(cid), 173)


local oldpos = getThingPos(item2.uid)

local oldlod = getCreatureLookDir(item2.uid)

local oldlvl = getPokemonLevel(item2.uid)

doRemoveCreature(item2.uid)


doSummonMonster(cid, theevo)

local pk = getCreatureSummons(cid)[1]


doTeleportThing(pk, oldpos, false)

doCreatureSetLookDir(pk, oldlod)


sendFinishEvolutionEffect(pk, true)

addEvent(sendFinishEvolutionEffect, 550, pk, true)

addEvent(sendFinishEvolutionEffect, 1050, pk)


doPlayerRemoveItem(cid, stone1, 1)

doPlayerRemoveItem(cid, stone2, 1)


doAddPokemonInOwnList(cid, theevo)


local status = getPokemonStatus(getCreatureName(pk))


local off = status.off * 7.5

local def = status.def * 7.5

local agi = status.agi * 7.5

local spatk = status.spatk * 7.5

local vit = status.vit * 7


doItemSetAttribute(pokeball.uid, "offense", getItemAttribute(pokeball.uid, "offense") + off)

doItemSetAttribute(pokeball.uid, "defense", getItemAttribute(pokeball.uid, "defense") + def)

doItemSetAttribute(pokeball.uid, "speed", getItemAttribute(pokeball.uid, "speed") + agi)

doItemSetAttribute(pokeball.uid, "specialattack", getItemAttribute(pokeball.uid, "specialattack") + spatk)

doItemSetAttribute(pokeball.uid, "vitality", getItemAttribute(pokeball.uid, "vitality") + vit)


doPlayerSendTextMessage(cid, 27, "Evolution bonus: • Offense: +"..doMathDecimal(off).." • Defense: +"..doMathDecimal(def).." • Spc. Atk: +"..doMathDecimal(spatk).." • Agility: +"..doMathDecimal(agi).." • Vitality: +"..doMathDecimal(vit).."")


local happy = getItemAttribute(pokeball.uid, "happy")


doItemSetAttribute(pokeball.uid, "happy", happy + happyGainedOnEvolution)


if happy + happyGainedOnEvolution > 255 then

doItemSetAttribute(pokeball.uid, "happy", 255)

end


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


if useKpdoDlls then

doUpdateMoves(cid)

end

end






function givePokemonExp(cid, item, expe, pct, rarecandy)


if expe <= 0 or not isCreature(cid) then return true end


local leveltable = getPokemonExperienceTable(getPokeballName(item.uid, true))


if getItemAttribute(item.uid, "exp") + expe > leveltable[100] then

givePokemonExp(cid, item, leveltable[100] - getItemAttribute(item.uid, "exp"))

return true

end


doItemSetAttribute(item.uid, "exp", getItemAttribute(item.uid, "exp") + expe)

doItemSetAttribute(item.uid, "happy", getItemAttribute(item.uid, "happy") + 1)

doItemSetAttribute(item.uid, "nextlevelexp", getItemAttribute(item.uid, "nextlevelexp") - expe)



if pct then

doPlayerSendTextMessage(cid, 27, "Your "..getPokeballName(item.uid).." has received "..expe.." experience points ("..pct.."%).")

else

if getItemAttribute(item.uid, "nextlevelexp") > 0 then

doPlayerSendTextMessage(cid, 27, "Your "..getPokeballName(item.uid).." ["..getItemAttribute(item.uid, "level").."] has received "..expe.." experience points ("..getItemAttribute(item.uid, "nextlevelexp").." to next level).")

else

doPlayerSendTextMessage(cid, 27, "Your "..getPokeballName(item.uid).." ["..getItemAttribute(item.uid, "level").."] has received "..expe.." experience points and has leveled up!")

end

end


if isBeingUsed(item.itemid) then

doSendAnimatedText(getThingPos(getCreatureSummons(cid)[1]), expe, 215)

end


if getItemAttribute(item.uid, "nextlevelexp") <= 0 then

local summon = getCreatureSummons(cid)[1]


if not isCreature(summon) then return true end


doSendFlareEffect(getThingPos(summon))

doSendAnimatedText(getThingPos(summon), "Level up!", 215)


adjustPokemonLevel(item.uid, cid, item.itemid)

end

end



function givePokemonExpInBp(cid, item, expe, ballid, pct, hidemessage)


if expe <= 0 or not isCreature(cid) then return true end


local leveltable = getPokemonExperienceTable(getPokeballName(item, true))


if getItemAttribute(item, "exp") + expe > leveltable[100] then

givePokemonExpInBp(cid, item, leveltable[100] - getItemAttribute(item, "exp"), ballid)

return true

end


doItemSetAttribute(item, "exp", getItemAttribute(item, "exp") + expe)

doItemSetAttribute(item, "happy", getItemAttribute(item, "happy") + 1)

doItemSetAttribute(item, "nextlevelexp", getItemAttribute(item, "nextlevelexp") - expe)


if not hidemessage then

if pct then

doPlayerSendTextMessage(cid, 27, "Your "..getPokeballName(item).." has received "..expe.." experience points ("..pct.."%).")

else

if getItemAttribute(item, "nextlevelexp") > 0 then

doPlayerSendTextMessage(cid, 27, "Your "..getPokeballName(item).." ["..getItemAttribute(item, "level").."] has received "..expe.." experience points inside his pokeball ("..getItemAttribute(item, "nextlevelexp").." to next level).")

else

doPlayerSendTextMessage(cid, 27, "Your "..getPokeballName(item).." ["..getItemAttribute(item, "level").."] has received "..expe.." experience points and has leveled up inside his pokeball.")

adjustPokemonLevel(item, cid, ballid)

end

end

end

end




function doMathDecimal(number, casas)


if math.floor(number) == number then return number end


local c = casas and casas + 1 or 3


for a = 0, 10 do

if math.floor(number) < math.pow(10, a) then

local str = string.sub(""..number.."", 1, a + c)

return tonumber(str)

end

end


return number

end




function adjustPokemonLevel(item, cid, id, rarecandy)


if not isCreature(cid) then return true end


local exp = getItemAttribute(item, "exp")

local level = getItemAttribute(item, "level")

local leveltable = getPokemonExperienceTable(getPokeballName(item, true))

local newlevel = 1


for x = 1, 100 do

if exp >= leveltable[x] and exp < leveltable[x+1] then

newlevel = x

end

end


if newlevel <= 1 then return true end


local levelsup = (newlevel - level)

local pokemon = getItemAttribute(item, "poke")

local happy = getItemAttribute(item, "happy")

local rate = happy / 100

local newhappiness = happy


if happy >= 250 then

newhappiness = 255

elseif happy >= 230 then

newhappiness = happy + 4

elseif happy >= 210 then

newhappiness = happy + 6

elseif happy >= 180 then

newhappiness = happy + 8

elseif happy >= 140 then

newhappiness = happy + 10

elseif happy >= 110 then

newhappiness = happy + 12

else

newhappiness = happy + 15

end


local status = getPokemonStatus(pokemon)


local off = status.off * rate * levelsup

local def = status.def * rate * levelsup

local agi = status.agi * rate * levelsup

local spatk = status.spatk * rate * levelsup

local vit = status.vit * rate * levelsup


doItemSetAttribute(item, "level", newlevel)


if not rarecandy then

doItemSetAttribute(item, "happy", newhappiness)

end


local nextexp = leveltable[newlevel + 1] - exp

doItemSetAttribute(item, "nextlevelexp", nextexp)


doItemSetAttribute(item, "offense", getItemAttribute(item, "offense") + off)

doItemSetAttribute(item, "defense", getItemAttribute(item, "defense") + def)

doItemSetAttribute(item, "speed", getItemAttribute(item, "speed") + agi)

doItemSetAttribute(item, "specialattack", getItemAttribute(item, "specialattack") + spatk)

doItemSetAttribute(item, "vitality", getItemAttribute(item, "vitality") + vit)


if newlevel > getPlayerLevel(cid) + pokemonMaxLevelAbovePlayer then

addEvent(doPlayerSendTextMessage, 30, cid, 18, "Warning: Your "..getPokeballName(item).."'s ["..newlevel.."] level is much higher than yours, so you will not be able to call him to battles.")

end


if isCreature(cid) and id >= 1 and isBeingUsed(id) then

adjustStatus(getCreatureSummons(cid)[1], item, false, true)

doPlayerSendTextMessage(cid, 27, "• Level: "..newlevel.." (+"..levelsup..") • Offense: +"..doMathDecimal(off).." • Defense: +"..doMathDecimal(def).." • Spc. Atk: +"..doMathDecimal(spatk).." • Agility: +"..doMathDecimal(agi).." • Vitality: +"..doMathDecimal(vit).."")


if happy < minHappyToEvolve then return true end


if pokemonsCanEvolveByLevel then


local summon = getCreatureSummons(cid)[1]


local reqlevel = poevo[getCreatureName(summon)] and poevo[getCreatureName(summon)].level or -1

local level = getItemAttribute(item, "level")

local evolution = "none"

local name = getCreatureName(summon)


if name == "Tyrogue" and level >= 20 then

if getOffense(summon) == getDefense(summon) then

evolution = "Hitmontop"

elseif getOffense(summon) > getDefense(summon) then

evolution = "Hitmonlee"

else

evolution = "Hitmonchan"

end

elseif name == "Eevee" then

if happy >= maxHappyToEvolve then

if isDay() then

evolution = "Espeon"

else

evolution = "Umbreon"

end

end

elseif name == "Slowpoke" and level >= 28 then

evolution = "Slowbro"

elseif name == "Poliwhirl" and level >= 36 then

evolution = "Poliwrath"

elseif reqlevel > 4 and level >= reqlevel then

evolution = poevo[getCreatureName(summon)].evolution

elseif reqlevel == 2 and happy >= maxHappyToEvolve then

evolution = poevo[getCreatureName(summon)] and poevo[getCreatureName(summon)].evolution or "none"

end


if evolution ~= "none" then

doStartEvolution(summon, evolution, 4)

end

end

end

end


function adjustStatus(pk, item, health, vite, conditions)


if not isCreature(pk) then return true end


local bonusoffense = getItemAttribute(item, boffense) or 0

local bonusdefense = getItemAttribute(item, bdefense) or 0

local bonusagility = getItemAttribute(item, bagility) or 0

local bonussattack = getItemAttribute(item, bsattack) or 0


setPlayerStorageValue(pk, 1000, getItemAttribute(item, "level"))

setPlayerStorageValue(pk, 1001, getItemAttribute(item, "offense") + bonusoffense)

setPlayerStorageValue(pk, 1002, getItemAttribute(item, "defense") + bonusdefense)

setPlayerStorageValue(pk, 1003, getItemAttribute(item, "speed") + bonusagility)

setPlayerStorageValue(pk, 1005, getItemAttribute(item, "specialattack") + bonussattack)


local gender = getItemAttribute(item, "gender") and getItemAttribute(item, "gender") or 0

doCreatureSetSkullType(pk, gender)


if vite == true then

local pct = getCreatureHealth(pk) / getCreatureMaxHealth(pk)

local vit = getItemAttribute(item, "vitality") - getPlayerStorageValue(pk, 1004)

setCreatureMaxHealth(pk, getCreatureMaxHealth(pk) + ( vit * HPperVIT ))

doCreatureAddHealth(pk, pct * vit * HPperVIT)

end


setPlayerStorageValue(pk, 1004, getItemAttribute(item, "vitality"))


doRegainSpeed(pk)


local nick = getItemAttribute(item, "poke")


if getItemAttribute(item, "nick") then

nick = getItemAttribute(item, "nick")

end


setPlayerStorageValue(pk, 1007, nick)


local boostlevel = getItemAttribute(item, "boost") or 0

local boostshow = hideBoost and "]" or " + "..boostlevel.."]"

local lvlstr = ""


if showBoostSeparated then

boostshow = hideBoost and "]" or "] [+"..boostlevel.."]"

end


if hideSummonsLevel then

if not hideBoost then

nick = nick.." [+"..boostlevel.."]"

end

else

nick = nick.." ["..getItemAttribute(item, "level")..""..boostshow..""

end


doCreatureSetNick(pk, nick)


if not getItemAttribute(item, "happy") then

doItemSetAttribute(item, "happy", 120)

end


if not getItemAttribute(item, "hunger") then

doItemSetAttribute(item, "hunger", 5)

end


local happy = getItemAttribute(item, "happy")

if happy < 0 then

happy = 0

end

setPlayerStorageValue(pk, 1008, happy)


local hunger = getItemAttribute(item, "hunger")

setPlayerStorageValue(pk, 1009, hunger)


if health == true then

local mh = getCreatureMaxHealth(pk) + HPperVIT * getVitality(pk)

local rd = 1 - (tonumber(getItemAttribute(item, "hp")))

setCreatureMaxHealth(pk, mh)

doCreatureAddHealth(pk, getCreatureMaxHealth(pk))

doCreatureAddHealth(pk, -(getCreatureMaxHealth(pk) * rd))

end


if isSummon(pk) and conditions then

local burn = getItemAttribute(item, "burn")

if burn and burn >= 0 then

addEvent(doAdvancedBurn, 5000, pk, pk, getItemAttribute(item, "burndmg"), burn - 1)

end


local poison = getItemAttribute(item, "poison")

if poison and poison >= 0 then

addEvent(doAdvancedPoison, 2500, pk, pk, getItemAttribute(item, "poisondmg"), poison - 1)

end


if getItemAttribute(item, "confuse") and getItemAttribute(item, "confuse") >= 1 then

addEvent(doAdvancedConfuse, 1200, pk, getItemAttribute(item, "confuse"), getPlayerStorageValue(pk, 3891))

end


if getItemAttribute(item, "blind") and getItemAttribute(item, "blind") >= 1 then

addEvent(doBlind, 300, pk, getItemAttribute(item, "blind"), getItemAttribute(item, "blindef"))

end


if getItemAttribute(item, "sleep") and getItemAttribute(item, "sleep") >= 1 then

doSleep(pk, getItemAttribute(item, "sleep"))

end

end


return true

end


function setWildPokemonLevel(cid, optionalLevel, optionalStatus, optionalNick, optionalExtraExp)


if not isCreature(cid) then return true end


local levelRange = 0

local off = 0

local def = 0

local agi = 0

local spatk = 0

local vit = 0

local this = getCreatureName(cid)

local ee = 1


if optionalExtraExp then

ee = optionalExtraExp

end



if optionalLevel and tonumber(optionalLevel) >= 1 then

if optionalLevel <= 100 then

levelRange = optionalLevel

else

levelRange = 100

end

elseif getCreatureOutfit(cid).lookHead and getCreatureOutfit(cid).lookBody and getCreatureOutfit(cid).lookHead <= getCreatureOutfit(cid).lookBody then

levelRange = math.random(getCreatureOutfit(cid).lookHead, getCreatureOutfit(cid).lookBody)

else

levelRange = math.random(20, 30)

end


local status = getPokemonStatus(this)

if status then

off = status.off

def = status.def

agi = status.agi

vit = status.vit

spatk = status.spatk

end


setPlayerStorageValue(cid, 1000, levelRange)


if optionalStatus and optionalStatus.off then

setPlayerStorageValue(cid, 1001, optionalStatus.offense)

setPlayerStorageValue(cid, 1002, optionalStatus.defense)

setPlayerStorageValue(cid, 1003, optionalStatus.agility)

setPlayerStorageValue(cid, 1004, optionalStatus.vitality)

setPlayerStorageValue(cid, 1005, optionalStatus.specialattack)

setPlayerStorageValue(cid, 1011, optionalStatus.offense)

setPlayerStorageValue(cid, 1012, optionalStatus.defense)

setPlayerStorageValue(cid, 1013, optionalStatus.agility)

setPlayerStorageValue(cid, 1014, optionalStatus.vitality)

setPlayerStorageValue(cid, 1015, optionalStatus.specialattack)

else

setPlayerStorageValue(cid, 1001, 5 + math.random(off * levelRange * 0.9, off * levelRange * 1.8))

setPlayerStorageValue(cid, 1002, 5 + math.random(def * levelRange * 0.9, def * levelRange * 1.8))

setPlayerStorageValue(cid, 1003, math.random(agi * levelRange * 0.9, agi * levelRange * 1.8))

setPlayerStorageValue(cid, 1004, math.random(vit * levelRange * 0.9, vit * levelRange * 1.8))

setPlayerStorageValue(cid, 1005, 5 + math.random(spatk * levelRange * 0.9, spatk * levelRange * 1.8))

setPlayerStorageValue(cid, 1011, getPlayerStorageValue(cid, 1001))

setPlayerStorageValue(cid, 1012, getPlayerStorageValue(cid, 1002))

setPlayerStorageValue(cid, 1013, getPlayerStorageValue(cid, 1003))

setPlayerStorageValue(cid, 1014, getPlayerStorageValue(cid, 1004))

setPlayerStorageValue(cid, 1015, getPlayerStorageValue(cid, 1005))

end


doRegainSpeed(cid)


setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + getPlayerStorageValue(cid, 1004) * HPperVIT * vitReductionForWild)

doCreatureAddHealth(cid, getCreatureMaxHealth(cid))


if pokes[getCreatureName(cid)].exp then

--getMonsterInfo(getCreatureName(cid)).experience

local exp = (50 + pokes[getCreatureName(cid)].exp) * baseExpRate + pokes[getCreatureName(cid)].vitality * levelRange * pokemonExpPerLevelRate

setPlayerStorageValue(cid, 1006, exp * generalExpRate * ee)

end


local wildshow = wildBeforeNames and "Wild " or ""

if optionalNick then

if hideWildsLevel then

doCreatureSetNick(cid, optionalNick)

else

doCreatureSetNick(cid, optionalNick.." ["..getWildPokemonLevel(cid).."]")

end

else

if hideWildsLevel then

doCreatureSetNick(cid, ""..wildshow..""..getCreatureName(cid).."")

else

doCreatureSetNick(cid, ""..wildshow..""..getCreatureName(cid).." ["..getWildPokemonLevel(cid).."]")

end

end

end


function getOffense(cid)

if not isCreature(cid) then return 0 end


if getPlayerStorageValue(cid, 3894) >= 1 then

return tonumber(getPlayerStorageValue(cid, 1001)) / 2

end


return tonumber(getPlayerStorageValue(cid, 1001))

end


function getDefense(cid)

if not isCreature(cid) then return 0 end


if getPlayerStorageValue(cid, 3894) >= 1 then

return tonumber(getPlayerStorageValue(cid, 1002)) / 2

end


return tonumber(getPlayerStorageValue(cid, 1002))

end


function getSpeed(cid)

if not isCreature(cid) then return 0 end

return tonumber(getPlayerStorageValue(cid, 1003))

end


function getVitality(cid)

if not isCreature(cid) then return 0 end

return tonumber(getPlayerStorageValue(cid, 1004))

end


function getSpecialAttack(cid)

if not isCreature(cid) then return 0 end

return tonumber(getPlayerStorageValue(cid, 1005))

end


function getHappiness(cid)

if not isCreature(cid) then return 0 end

return tonumber(getPlayerStorageValue(cid, 1008))

end


function getSpecialDefense(cid)

if not isCreature(cid) then return 0 end

return getSpecialAttack(cid) * 0.85 + getDefense(cid) * 0.2

end


function getWildPokemonExp(cid)

return getPlayerStorageValue(cid, 1006)

end


function getWildPokemonLevel(cid)

return getPlayerStorageValue(cid, 1000)

end


function getLevel(cid)

if isSummon(cid) then

return getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "level")

end

return getPlayerStorageValue(cid, 1000)

end


function getPokeName(cid)

if not isSummon(cid) then return getCreatureName(cid) end

if getCreatureName(cid) == "Evolution" then return getPlayerStorageValue(cid, 1007) end

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

if getItemAttribute(item.uid, "nick") then

return getItemAttribute(item.uid, "nick")

end

return getCreatureName(cid)

end


function getPokeballName(item, truename)

if not truename and getItemAttribute(item, "nick") then

return getItemAttribute(item, "nick")

end

return getItemAttribute(item, "poke")

end


function getPokemonName(cid)

return getCreatureName(cid)

end


function getPokemonLevel(cid)

if not isCreature(cid) then return 0 end

return getPlayerStorageValue(cid, 1000)

end


function getPokemonGender(cid)

return getCreatureSkullType(cid)

end
local shinys = {

"Bulbasaur", "Ivysaur", "Venusaur", "Charmander", "Charmeleon", "Charizard", "Squirtle", "Wartortle", "Blastoise",

"Caterpie", "Metapod", "Butterfree", "Weedle", "Kakuna", "Beedrill", "Pidgey", "Pidgeotto", "Pidgeot", "Rattata",

"Raticate", "Spearow", "Fearow", "Ekans", "Arbok", "Pikachu", "Raichu", "Sandshrew", "Sandslash", "Nidoran Female",

"Nidorina", "Nidoqueen", "Nidoran Male", "Nidorino", "Nidoking", "Clefairy", "Clefable", "Vulpix", "Ninetales",

"Jigglytuff", "Wigglytuff", "Zubat", "Golbat", "Odish", "Gloom", "Vileplume", "Paras", "Parasect", "Venonat", "Venomoth",

"Diglett", "Dugtrio", "Mewoth", "Persian", "Psyduck", "Golduck", "Mankey", "Primeape", "Growlithe", "Arcanine",

"Poliwag", "Poliwhirl", "Poliwrath", "Abra", "Kadabra", "Alakazam", "Machop", "Machoke", "Machamp", "Bellsprout",

"Weepinbell", "Victreebel", "Tentacool", "Tentacruel", "Geodude", "Graveler", "Golem", "Ponyta", "Rapidash", "Slowpoke",

"Slowbro", "Magnamite", "Magneton", "Farfetch'd", "Doduo", "Dodrio", "Seel", "Dewgong", "Grimer", "Muk", "Shellder",

"Cloyster", "Gastly", "Haunter", "Gengar", "Onix", "Drowzee", "Hypno", "Krabby", "Kingler", "Voltorb", "Electrode",

"Exeggcute", "Exeggutor", "Cubone", "Marowak", "Hitmonlee", "Hitmonchan", "Lickitung", "Koffing", "Weezing", "Rhyhorn",

"Rhydon", "Chansey", "Tangela", "Kangaskhan", "Horsea", "Seadra", "Goldeen", "Seaking", "Staryu", "Starmie", "Mr. Mime",

"Scyther", "Jynx", "Electabuzz", "Magmar", "Pinsir", "Tauros", "Magikarp", "Gyarados", "Lapras", "Ditto", "Eevee", "Vaporeon",

"Jolteon", "Flareon", "Porygon", "Omanyte", "Omastar", "Kabuto", "Kabutops", "Snorlax", "Porygo Z", "Dragonair", "Dratini", "Absol", "Altaria", "Baltoy", "Claydol", "Buneary", "Beldum", "Metang", "Metagross", "Camerupt", "Carnivine", "Carvanha", "Sharpedo", "Croagunk", "Toxicroak", "Buizel", "Floatzel", "Gabite", "Gible", "Gliscor", "Honchkrow", "Luxray", "Mamoswine", "Pachirisu", "Plusle", "Minun", "Probopass", "Purugly", "Froslass", "Glalie", "Snorunt", "Lunatone", "Solrock", "Staraptor", "Tropius", "Yanmega", "Zangoose", "Rhyperior", "Gastrodon", "Typhlosion", "Quilava", "Cyndaquil", "Chikorita", "Meganium", "Bayleef", "Totodile", "Croconaw", "Feraligatr"

}

local raros = {"Articuno", "Zapdos", "Moltreas", "Mew", "Mewtwo", "Dragonite", "Aerodactyl"}


local function doPokemonRegisterLevel(cid)

if not isCreature(cid) then return true end

if getWildPokemonLevel(cid) == -1 then

setWildPokemonLevel(cid)

end

end


local function doSetRandomGender(cid)

if not isCreature(cid) then return true end

local gender = 0

local name = getCreatureName(cid)

if not newpokedex[name] then return true end

local rate = newpokedex[name].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

doCreatureSetSkullType(cid, gender)

end


local function doShiny(cid)

if isCreature(cid) then

if isSummon(cid) then return true end

if getPlayerStorageValue(cid, 74469) >= 1 then return true end

if isInArray(shinys, getCreatureName(cid)) then

transform = math.random(1, 100) --10% chance

elseif isInArray(raros, getCreatureName(cid)) then

transform = math.random(1, 1000) --100% chance

elseif not isInArray(raros, getCreatureName(cid)) and not isInArray(shinys, getCreatureName(cid)) then

return true

end

if transform == 1 then

doSendMagicEffect(getThingPos(cid), 18)

local shi = doCreateMonster("Shiny ".. getCreatureName(cid) .."", getThingPos(cid))

setPlayerStorageValue(shi, 74469, 1)

setPlayerStorageValue(cid, 74469, 1)

doRemoveCreature(cid)

else

setPlayerStorageValue(cid, 74469, 1)

end

else

return true

end

end


function onSpawn(cid)


registerCreatureEvent(cid, "GeneralConfiguration")

registerCreatureEvent(cid, "DirectionSystem")

registerCreatureEvent(cid, "CastSystem")


if isSummon(cid) then

registerCreatureEvent(cid, "SummonDeath")

return true

end


registerCreatureEvent(cid, "Experience")


addEvent(doPokemonRegisterLevel, 5, cid)

addEvent(doSetRandomGender, 5, cid)

addEvent(doShiny, 10, cid)


return true

end

Link para o post
Compartilhar em outros sites

bah, o erro é nessas pastas, se eu soubesse dessa tabela eu postaria.o problema desses ots de poke é que sao diferente dos de tibia.dai ferra o kara!

Link para o post
Compartilhar em outros sites
  • 3 years later...
  • 1 year later...
Em 28/01/2013 em 12:05, Kav Ra disse:

PODEM FECHAR O TOPICO PROBLEMA RESOLVIDO, PARA QUEM TEM O MESMO PROBLEMA MAS PM QUE AJUDO, VALEU!

@Kav Ra como vc arrumou esse problema ??

Editado por hallanehallex (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo