Ir para conteúdo
  • Cadastre-se

Posts Recomendados

BOM TENHO UM SERVIDOR DE POKETIBIA QUE TEM O LEVEL SISTEM,POREM NÃO APARECE DO LADO DO POKEMON.

TERIA COMO ALGUEM ME AJUDAR A COLOCAR O NUMERO DO LADO DO POKEMON?

 

SCRIPT

 

Spoiler

function getPokemonBaseStatus(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 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 getPokeballStatus(owner,pokeball)
	local a = getItemAttribute(owner,pokeball.uid,"poke")
	if not a then return false end
	local ret = {}
	ret.off = getItemAttribute(owner,pokeball.uid,"offense")
	ret.offense = getItemAttribute(owner,pokeball.uid,"offense")

	ret.def = getItemAttribute(owner,pokeball.uid,"defense")
	ret.defense = getItemAttribute(owner,pokeball.uid,"defense")

	ret.agi = getItemAttribute(owner,pokeball.uid,"speed")
	ret.agility = getItemAttribute(owner,pokeball.uid,"speed")

	ret.spatk = getItemAttribute(owner,pokeball.uid,"specialattack")
	ret.specialattack = getItemAttribute(owner,pokeball.uid,"specialattack")

	ret.vit = getItemAttribute(owner,pokeball.uid,"vitality")
	ret.vitality = getItemAttribute(owner,pokeball.uid,"vitality")
return ret
end

function getPokemonXMLOutfit(name)
local johto = false
for i = 209, 308 do       --alterado v2.6
  if oldpokedex[i][1] and oldpokedex[i][1] == name then
     johto = true
  end
end
    if isShinyName(name) then
	   a = "data/monster/pokes/Shiny/"..name..".xml"
    elseif johto then
       a = "data/monster/pokes/geracao 2/"..name..".xml"    --edited pra melhorar a pasta monster
    else
       a = "data/monster/pokes/geracao 1/"..name..".xml"
    end 
	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 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, 19, "Seu "..getPokeballName(item.uid).." recebeu ("..expe..") pontos de experiencia ("..pct.."%).")
	else
		if getItemAttribute(item.uid, "nextlevelexp") > 0 then
			doPlayerSendTextMessage(cid, 19, "Seu Pokemon "..getPokeballName(item.uid).." ["..getItemAttribute(item.uid, "level").."] recebeu ("..expe..") de experiencia. Faltam ("..getItemAttribute(item.uid, "nextlevelexp")..") de experiencia para o próximo level.")
		else
			doPlayerSendTextMessage(cid, 19, "[LEVEL UP] Parabens, seu Pokemon "..getPokeballName(item.uid).." ["..getItemAttribute(item.uid, "level").."] recebeu ("..expe..") de experiencia e avançou de level!")
		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))
		setPlayerStorageValue(summon,5050,getPlayerStorageValue(summon,5050)+1)    ------ STORAGE QUE GANHA AO UPAR DE LVL POKE
		doSendAnimatedText(getThingPos(summon), "Level UP!", 215)

		adjustPokemonLevel(item.uid, cid, item.itemid)
	    doCreatureAddHealth(summon, getCreatureMaxHealth(summon))
	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, 19, "Seu "..getPokeballName(item).." Recebeu ("..expe..") experience points ("..pct.."%).")			
		else
			if getItemAttribute(item, "nextlevelexp") > 0 then
				doPlayerSendTextMessage(cid, 19, "Seu "..getPokeballName(item).." ["..getItemAttribute(item, "level").."] recebeu ("..expe..") de experiencia dentro de sua pokeball. Faltam ("..getItemAttribute(item, "nextlevelexp")..") de experiencia para o próximo level.")
			else
				doPlayerSendTextMessage(cid, 19, "Seu "..getPokeballName(item).." ["..getItemAttribute(item, "level").."] recebeu ("..expe..") de experiencia, e avançou de level dentro de sua 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 bonus_level = getItemAttribute(item, "b_level") or 0

	 
	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 / happy
	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)
	doItemSetAttribute(item, "b_level", bonus_level + 1)
    

	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 doAdjustWithDelay(cid, pk, health, vit, status)
if isCreature(cid) then                                   --alterado v2.5
   if not isCreature(cid) then return true end
   adjustStatus(pk, getPlayerSlotItem(cid, 8).uid, health, vir, status)
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


if (getItemAttribute(item, "ehditto") == 1) then
	setPlayerStorageValue(pk, 1000, getItemAttribute(item, "level"))
	setPlayerStorageValue(pk, 1001, getItemAttribute(item, "offense") + bonusoffense * 0.75)
	setPlayerStorageValue(pk, 1002, getItemAttribute(item, "defense") + bonusdefense * 0.75)
	setPlayerStorageValue(pk, 1003, getItemAttribute(item, "speed") + bonusagility * 0.75)
	setPlayerStorageValue(pk, 1005, getItemAttribute(item, "specialattack") + bonussattack * 0.75)
elseif (getItemAttribute(item, "ehshinyditto") == 1) then
	setPlayerStorageValue(pk, 1000, getItemAttribute(item, "level"))
	setPlayerStorageValue(pk, 1001, getItemAttribute(item, "offense") + bonusoffense * 0.50)
	setPlayerStorageValue(pk, 1002, getItemAttribute(item, "defense") + bonusdefense * 0.50)
	setPlayerStorageValue(pk, 1003, getItemAttribute(item, "speed") + bonusagility * 0.50)
	setPlayerStorageValue(pk, 1005, getItemAttribute(item, "specialattack") + bonussattack * 0.50)
else
	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)
end
-- setPlayerStorageValue(pk, 1000, pokes[getCreatureName(pk)].level)
-- setPlayerStorageValue(pk, 1001, pokes[getCreatureName(pk)].offense * (getMasterLevel(pk) + getPokemonBoost(pk)))
-- setPlayerStorageValue(pk, 1002, pokes[getCreatureName(pk)].defense)
-- setPlayerStorageValue(pk, 1003, pokes[getCreatureName(pk)].agility)
-- setPlayerStorageValue(pk, 1004, pokes[getCreatureName(pk)].vitality * (getMasterLevel(pk) + getPokemonBoost(pk)))
-- setPlayerStorageValue(pk, 1005, pokes[getCreatureName(pk)].specialattack * (getMasterLevel(pk) + getPokemonBoost(pk)))
-- end

	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")) -- retirar caso n funfar

	doRegainSpeed(pk)

	local nick = getItemAttribute(item, "poke")
	
	if string.find(tostring(nick), "Shiny") then
	   nick = tostring(nick):match("Shiny (.*)")
    end

	if string.find(tostring(nick), "Mega ") then
	   nick = tostring(nick):match("Mega (.*)")
    end

	if getItemAttribute(item, "nick") then
		nick = getItemAttribute(item, "nick")
	end

    if isGhostPokemon(pk) then
       setPlayerStorageValue(pk, 8981, 1)
       updateGhostWalk(pk)
    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.."]"
	else
		nick = nick.." ["..getItemAttribute(item, "level")..""..boostshow..""
		end
	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 = 1
		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                        --alterado v2.5 daki pra baixo!!
		local burn = getItemAttribute(item, "burn")   
		if burn and burn >= 0 then
		   local ret = {id = pk, cd = burn, check = false, damage = getItemAttribute(item, "burndmg"), cond = "Burn"}
		   addEvent(doCondition2, 3500, ret)
		end

		local poison = getItemAttribute(item, "poison")
		if poison and poison >= 0 then
		   local ret = {id = pk, cd = poison, check = false, damage = getItemAttribute(item, "poisondmg"), cond = "Poison"}
		   addEvent(doCondition2, 1500, ret)
		end

        local confuse = getItemAttribute(item, "confuse")
		if confuse and confuse >= 0 then
		   local ret = {id = pk, cd = confuse, check = false, cond = "Confusion"}
		   addEvent(doCondition2, 1200, ret)                                                --alterado v2.5
		end

        local sleep = getItemAttribute(item, "sleep")
		if sleep and sleep >= 0 then
		   local ret = {id = pk, cd = sleep, check = false, first = true, cond = "Sleep"}
		   doCondition2(ret)
		end
		
		local miss = getItemAttribute(item, "miss")     
		if miss and miss >= 0 then      
          local ret = {id = pk, cd = miss, eff = getItemAttribute(item, "missEff"), check = false, spell = getItemAttribute(item, "missSpell"), cond = "Miss"}
          doCondition2(ret)
        end
        
        local fear = getItemAttribute(item, "fear")
        if fear and fear >= 0 then
           local ret = {id = pk, cd = fear, check = false, skill = getItemAttribute(item, "fearSkill"), cond = "Fear"}
           doCondition2(ret)
        end
        
        local silence = getItemAttribute(item, "silence")
        if silence and silence >= 0 then      
           local ret = {id = pk, cd = silence, eff = getItemAttribute(item, "silenceEff"), check = false, cond = "Silence"}
           doCondition2(ret)
        end                                     
        
        local stun = getItemAttribute(item, "stun")
        if stun and stun >= 0 then
           local ret = {id = pk, cd = stun, eff = getItemAttribute(item, "stunEff"), check = false, spell = getItemAttribute(item, "stunSpell"), cond = "Stun"}
           doCondition2(ret)
        end 
                                                       
        local paralyze = getItemAttribute(item, "paralyze")
        if paralyze and paralyze >= 0 then
           local ret = {id = pk, cd = paralyze, eff = getItemAttribute(item, "paralyzeEff"), check = false, first = true, cond = "Paralyze"}
           doCondition2(ret)
        end  
                                                     
        local slow = getItemAttribute(item, "slow")
        if slow and slow >= 0 then
           local ret = {id = pk, cd = slow, eff = getItemAttribute(item, "slowEff"), check = false, first = true, cond = "Slow"}
           doCondition2(ret)
        end                                              
        
        local leech = getItemAttribute(item, "leech")
        if leech and leech >= 0 then
           local ret = {id = pk, cd = leech, attacker = 0, check = false, damage = getItemAttribute(item, "leechdmg"), cond = "Leech"}
           doCondition2(ret)
        end                               
        
        for i = 1, 3 do
            local buff = getItemAttribute(item, "Buff"..i)
            if buff and buff >= 0 then
               local ret = {id = pk, cd = buff, eff = getItemAttribute(item, "Buff"..i.."eff"), check = false, 
               buff = getItemAttribute(item, "Buff"..i.."skill"), first = true, attr = "Buff"..i}
               doCondition2(ret)
            end
        end
               
	end
	
    if getItemAttribute(item, "boost") and getItemAttribute(item, "boost") == 50 and getItemAttribute(item, "aura") then
       sendAuraEffect(pk, auraSyst[getItemAttribute(item, "aura")])        --edited aura system
    end
    
    if getPlayerStorageValue(getCreatureMaster(pk), 6598754) >= 1 then
        setPlayerStorageValue(pk, 6598754, 1)                               --edited pvp system
    elseif getPlayerStorageValue(getCreatureMaster(pk), 6598755) >= 1 then
        setPlayerStorageValue(pk, 6598755, 1)
    end

return true
end

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

	if not isCreature(cid) then return true end
	if not pokes[getCreatureName(cid)] then return true end  --alterado v2.6

	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                --alterado v2.8\/
	    levelRange = optionalLevel
	else
	    levelRange = math.random(pokes[this].wildLvlMin, pokes[this].wildLvlMax) 
	end      

	local status = getPokemonBaseStatus(this)
		if status then
			off = status.off
			def = status.def
			agi = status.agi
			vit = status.vit
			spatk = status.spatk
		end

	setPlayerStorageValue(cid, 1000, (levelRange > 100 and 100 or levelRange)) --alterado v2.8

	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)
		if getPlayerStorageValue(cid, 22546) == 1 then
          setPlayerStorageValue(cid, 1006, 750)
          doSetCreatureDropLoot(cid, false)         --edited golden arena
       end  
	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).."")
		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
	if string.find(tostring(getCreatureName(cid)), "Shiny") then
      local newName = tostring(getCreatureName(cid)):match("Shiny (.*)")
      return newName
    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 getMasterLevel(poke)
    if not isSummon(poke) then return 0 end
return getPlayerLevel(getCreatureMaster(poke)) --alterado v2.5
end

function getPokemonBoost(poke)
    if not isSummon(poke) then return 0 end       --alterado v2.5
return getItemAttribute(getPlayerSlotItem(getCreatureMaster(poke), 8).uid, "boost") or 0
end

function getPokemonLevelByName(name)
if tostring(name) then                       --alterado v2.5
   return pokes[name].level
end
return 0
end

function getPokemonLevel(cid)
	if not isCreature(cid) then return 0 end
return getPlayerStorageValue(cid, 1000)
end

function getPokemonGender(cid)
return getCreatureSkullType(cid)
end

 

 

 

Spoiler

function getPokemonExperienceTable(pokemonname)
	if isInArray(fastexppokes, pokemonname) then
		return fastexptable
	elseif isInArray(mediumfastexppokes, pokemonname) then
		return mediumfastexptable
	elseif isInArray(mediumslowexppokes, pokemonname) then
		return mediumslowexptable
	elseif isInArray(slowexppokes, pokemonname) then
		return slowexptable
	end
print(""..pokemonname.." doesn't have an experience table speed gain. Check it at data/lib/level tables.lua.")
return mediumfastexptable
end

fastexppokes = {"Clefairy", "Clefable", "Iglybuff", "Jigglypuff", "Wigglytuff", "Chansey", "Shiny Clefairy", "Shiny Clefable", "Shiny Iglybuff", "Shiny Jigglypuff", "Shiny Wigglytuff", "Shiny Chansey", "Ledyba", "Ledian", "Spinarak", "Ariados", "Cleffa", "Togepi", "Togetic", "Marill", "Azumarill", "Aipom", "Misdreavus", "Snubbull", "Granbull", "Corsola", "Delibird", "Smeargle", "Blissey"}

fastexptable = {
[1] = 0,
[2] = 51,
[3] = 172,
[4] = 409,
[5] = 800,
[6] = 1382,
[7] = 2195,
[8] = 3276,
[9] = 4665,
[10] = 6400,
[11] = 8518,
[12] = 11059,
[13] = 14060,
[14] = 17561,
[15] = 21600,
[16] = 26214,
[17] = 31443,
[18] = 37324,
[19] = 43897,
[20] = 51200,
[21] = 59270,
[22] = 68147,
[23] = 77868,
[24] = 88473,
[25] = 100000,
[26] = 112486,
[27] = 125971,
[28] = 140492,
[29] = 156089,
[30] = 172800,
[31] = 190662,
[32] = 209715,
[33] = 229996,
[34] = 251545,
[35] = 274400,
[36] = 298598,
[37] = 324179,
[38] = 351180,
[39] = 379641,
[40] = 409600,
[41] = 441094,
[42] = 474163,
[43] = 508844,
[44] = 545177,
[45] = 583200,
[46] = 622950,
[47] = 664467,
[48] = 707788,
[49] = 752953,
[50] = 800000,
[51] = 848966,
[52] = 899891,
[53] = 952812,
[54] = 1007769,
[55] = 1064800,
[56] = 1123942,
[57] = 1185235,
[58] = 1248716,
[59] = 1314425,
[60] = 1382400,
[61] = 1452678,
[62] = 1525299,
[63] = 1600300,
[64] = 1677721,
[65] = 1757600,
[66] = 1839974,
[67] = 1924883,
[68] = 2012364,
[69] = 2102457,
[70] = 2195200,
[71] = 2290630,
[72] = 2388787,
[73] = 2489708,
[74] = 2593433,
[75] = 2700000,
[76] = 2809446,
[77] = 2921811,
[78] = 3037132,
[79] = 3155449,
[80] = 3276800,
[81] = 3401222,
[82] = 3528755,
[83] = 3659436,
[84] = 3793305,
[85] = 3930400,
[86] = 4070758,
[87] = 4214419,
[88] = 4361420,
[89] = 4511801,
[90] = 4665600,
[91] = 4822854,
[92] = 4983603,
[93] = 5147884,
[94] = 5315737,
[95] = 5487200,
[96] = 5662310,
[97] = 5841107,
[98] = 6023628,
[99] = 6209913,
[100] = 6400000,
[101] = 999999999}

mediumfastexppokes = {"Caterpie", "Metapod", "Torchic", "Treecko", "Mudkip", "Butterfree", "Weedle", "Kakuna", "Beedrill", "Rattata", "Raticate", "Spearow", "Fearow", "Ekans", "Arbok", "Pikachu", "Raichu", "Sandshrew", "Sandslash", "Vulpix", "Ninetales", "Zubat", "Golbat", "Paras", "Parasect", "Diglett", "Dugtrio", "Meowth", "Persian", "Psyduck", "Golduck", "Mankey", "Primeape", "Ponyta", "Rapidash", "Magnemite", "Magneton", "Doduo", "Dodrio", "Seel", "Dewgong", "Grimer", "Muk", "Onix", "Steelix", "Drowzee", "Hypno", "Krabby", "Kingler", "Voltorb", "Electrode", "Cubone", "Marowak", "Hitmonlee", "Tyrogue", "Hitmonchan", "Lickitung", "Koffing", "Weezing", "Kangaskhan", "Horsea", "Seadra", "Goldeen", "Seaking", "Mr. Mime", "Scyther", "Jynx", "Smoochum", "Electabuzz", "Magmar", "Ditto", "Eevee", "Jolteon", "Flareon", "Porygon", "Omanyte", "Omastar", "Kabuto", "Kabutops", "Shiny Caterpie", "Shiny Metapod", "Shiny Butterfree", "Shiny Weedle", "Shiny Kakuna", "Shiny Beedrill", "Shiny Rattata", "Shiny Raticate", "Shiny Spearow", "Shiny Fearow", 
"Shiny Ekans", "Shiny Arbok", "Shiny Pikachu", "Shiny Raichu", "Shiny Sandshrew", "Shiny Sandslash", "Shiny Vulpix", "Shiny Ninetales", "Shiny Zubat", "Shiny Golbat", "Shiny Paras", "Shiny Parasect", "Shiny Diglett", "Shiny Dugtrio", "Shiny Meowth", "Shiny Persian", "Shiny Psyduck", "Shiny Golduck", "Shiny Mankey", "Shiny Primeape", "Shiny Ponyta", "Shiny Rapidash", "Shiny Magnemite", "Shiny Magneton", "Shiny Doduo", "Shiny Dodrio", "Shiny Seel", "Shiny Dewgong", "Shiny Grimer", "Shiny Muk", "Shiny Onix", "Shiny Steelix", "Shiny Drowzee", "Shiny Hypno", "Shiny Krabby", "Shiny Kingler", "Shiny Voltorb", "Shiny Electrode", "Shiny Cubone", "Shiny Marowak", "Shiny Hitmonlee", "Shiny Hitmontop", "Tyrogue", "Shiny Hitmonchan", "Shiny Lickitung", "Shiny Koffing", "Shiny Weezing", "Shiny Kangaskhan", "Shiny Horsea", "Shiny Seadra", "Shiny Goldeen", "Shiny Seaking", "Shiny Mr. Mime", "Shiny Scyther", "Shiny Jynx", "Smoochum", "Shiny Electabuzz", "Shiny Magmar", "Shiny Ditto", "Shiny Eevee", "Shiny Jolteon", "Shiny Flareon", 
"Shiny Porygon", "Shiny Omanyte", "Shiny Omastar", "Shiny Kabuto", "Shiny Kabutops", "Sentret", "Furret", "Hoothoot", "Noctowl", "Crobat", "Pichu", "Natu", "Xatu", "Wooper", "Quagsire", "Espeon", "Umbreon", "Girafarig", "Pineco", "Forretress", "Dunsparce", "Qwilfish", "Scizor", "Magcargo", "Slugma", "Remoraid", "Octillery", "Kingdra", "Phanpy", "Donphan", "Porygon2", "Hitmontop", "Elekid", "Magby", "Vaporeon", "Shiny Vaporeon", "Venonat", "Venomoth", "Slowpoke", "Shiny Slowpoke", "Slowbro", "Slowking", "Farfetch'd", "Tangela", "Shiny Tangela", "Sudowoodo", "Yanma", "Unown", "Wobbuffet", "Teddiursa", "Ursaring", "Shiny Farfetch'd"}                                             --alterado v2.4

mediumfastexptable = {
[1] = 0,
[2] = 64,
[3] = 216,
[4] = 512,
[5] = 1000,
[6] = 1728,
[7] = 2744,
[8] = 4096,
[9] = 5832,
[10] = 8000,
[11] = 10648,
[12] = 13824,
[13] = 17576,
[14] = 21952,
[15] = 27000,
[16] = 32768,
[17] = 39304,
[18] = 46656,
[19] = 54872,
[20] = 64000,
[21] = 74088,
[22] = 85184,
[23] = 97336,
[24] = 110592,
[25] = 125000,
[26] = 140608,
[27] = 157464,
[28] = 175616,
[29] = 195112,
[30] = 216000,
[31] = 238328,
[32] = 262144,
[33] = 287496,
[34] = 314432,
[35] = 343000,
[36] = 373248,
[37] = 405224,
[38] = 438976,
[39] = 474552,
[40] = 512000,
[41] = 551368,
[42] = 592704,
[43] = 636056,
[44] = 681472,
[45] = 729000,
[46] = 778688,
[47] = 830584,
[48] = 884736,
[49] = 941192,
[50] = 1000000,
[51] = 1061208,
[52] = 1124864,
[53] = 1191016,
[54] = 1259712,
[55] = 1331000,
[56] = 1404928,
[57] = 1481544,
[58] = 1560896,
[59] = 1643032,
[60] = 1728000,
[61] = 1815848,
[62] = 1906624,
[63] = 2000376,
[64] = 2097152,
[65] = 2197000,
[66] = 2299968,
[67] = 2406104,
[68] = 2515456,
[69] = 2628072,
[70] = 2744000,
[71] = 2863288,
[72] = 2985984,
[73] = 3112136,
[74] = 3241792,
[75] = 3375000,
[76] = 3511808,
[77] = 3652264,
[78] = 3796416,
[79] = 3944312,
[80] = 4096000,
[81] = 4251528,
[82] = 4410944,
[83] = 4574296,
[84] = 4741632,
[85] = 4913000,
[86] = 5088448,
[87] = 5268024,
[88] = 5451776,
[89] = 5639752,
[90] = 5832000,
[91] = 6028568,
[92] = 6229504,
[93] = 6434856,
[94] = 6644672,
[95] = 6859000,
[96] = 7077888,
[97] = 7301384,
[98] = 7529536,
[99] = 7762392,
[100] = 8000000,
[101] = 999999999}

mediumslowexppokes = {"Bulbasaur", "Ivysaur", "Marshtomp", "Combusken", "Grovyle", "Venusaur", "Charmander", "Charmeleon", "Charizard", "Squirtle", "Wartortle", "Blastoise", "Pidgey", "Pidgeotto", "Pidgeot", "Nidoran Female", "Nidorina", "Nidoqueen", "Nidoran Male", "Nidorino", "Nidoking", "Oddish", "Gloom", "Vileplume", "Poliwag", "Poliwhirl", "Poliwrath", "Abra", "Kadabra", "Alakazam", "Machop", "Machoke", "Machamp", "Bellsprout", "Weepinbell", "Victreebel", "Geodude", "Graveler", "Golem", "Gastly", "Haunter", "Gengar", "Mew", "Shiny Bulbasaur", "Shiny Ivysaur", "Shiny Venusaur", "Shiny Charmander", "Shiny Charmeleon", "Shiny Charizard", "Shiny Squirtle", "Shiny Wartortle", "Shiny Blastoise", "Shiny Pidgey", "Shiny Pidgeotto", "Shiny Pidgeot", "Shiny Nidoran Female", "Shiny Nidorina", "Shiny Nidoqueen", "Shiny Nidoran Male", "Shiny Nidorino", "Shiny Nidoking", "Shiny Oddish", "Shiny Gloom", "Shiny Vileplume", "Shiny Poliwag", "Shiny Poliwhirl", "Shiny Poliwrath", "Shiny Abra", "Shiny Kadabra", "Shiny Alakazam", "Shiny Machop", "Shiny Machoke", "Shiny Machamp", "Shiny Bellsprout", "Shiny Weepinbell", "Shiny Victreebel", "Shiny Geodude", "Shiny Graveler", "Shiny Golem", "Shiny Gastly", "Shiny Haunter", "Shiny Gengar", "Shiny Mew", "Chikorita", "Bayleef", "Meganium", "Cyndaquil", "Quilava", "Typhlosion", "Totodile", "Croconaw", "Feraligatr", "Mareep", "Flaaffy", "Ampharos", "Bellossom", "Politoed", "Hoppip", "Skiploom", "Jumpluff", "Sunkern", "Sunflora", "Murkrow", "Gligar", "Shuckle", "Sneasel", "Celebi"}

mediumslowexptable = {
[1] = 0,
[2] = 72,
[3] = 456,
[4] = 768,
[5] = 1080,
[6] = 1432,
[7] = 1888,
[8] = 2512,
[9] = 3352,
[10] = 4480,
[11] = 5936,
[12] = 7784,
[13] = 10088,
[14] = 12896,
[15] = 16280,
[16] = 20280,
[17] = 24960,
[18] = 30384,
[19] = 36600,
[20] = 43680,
[21] = 51664,
[22] = 60616,
[23] = 70600,
[24] = 81664,
[25] = 93880,
[26] = 107288,
[27] = 121952,
[28] = 137936,
[29] = 155288,
[30] = 174080,
[31] = 194352,
[32] = 216168,
[33] = 239592,
[34] = 264672,
[35] = 291480,
[36] = 320056,
[37] = 350464,
[38] = 382768,
[39] = 417016,
[40] = 453280,
[41] = 491600,
[42] = 532040,
[43] = 574664,
[44] = 619520,
[45] = 666680,
[46] = 716184,
[47] = 768096,
[48] = 822480,
[49] = 879384,
[50] = 938880,
[51] = 1001008,
[52] = 1065832,
[53] = 1133416,
[54] = 1203808,
[55] = 1277080,
[56] = 1353272,
[57] = 1432448,
[58] = 1514672,
[59] = 1599992,
[60] = 1688480,
[61] = 1780176,
[62] = 1875144,
[63] = 1973448,
[64] = 2075136,
[65] = 2180280,
[66] = 2288920,
[67] = 2401120,
[68] = 2516944,
[69] = 2636440,
[70] = 2759680,
[71] = 2886704,
[72] = 3017576,
[73] = 3152360,
[74] = 3291104,
[75] = 3433880,
[76] = 3580728,
[77] = 3731712,
[78] = 3886896,
[79] = 4046328,
[80] = 4210080,
[81] = 4378192,
[82] = 4550728,
[83] = 4727752,
[84] = 4909312,
[85] = 5095480,
[86] = 5286296,
[87] = 5481824,
[88] = 5682128,
[89] = 5887256,
[90] = 6097280,
[91] = 6312240,
[92] = 6532200,
[93] = 6757224,
[94] = 6987360,
[95] = 7222680,
[96] = 7463224,
[97] = 7709056,
[98] = 7960240,
[99] = 8216824,
[100] = 8478880,
[101] = 999999999}

slowexppokes = {"Ho-oh", "Lucario", "Shiny Lucario", "Growlithe", "Arcanine", "Blaziken", "Sceptile", "Swampert", "Tentacool", "Tentacruel", "Shellder", "Cloyster", "Exeggcute", "Exeggutor", "Rhyhorn", "Rhydon", "Staryu", "Starmie", "Pinsir", "Tauros", "Magikarp", "Gyarados", "Lapras", "Aerodactyl", "Snorlax", "Articuno", "Zapdos", "Moltres", "Dratini", "Dragonair", "Dragonite", "Mewtwo", "Mew", "Chinchou", "Lanturn", "Heracross", "Swinub", "Piloswine", "Mantine", "Skarmory", "Houndour", "Houndoom", "Stantler", "Miltank", "Raikou", "Entei", "Suicune", "Larvitar", "Pupitar", "Tyranitar", "Lugia", "Shiny Growlithe", "Shiny Arcanine", "Shiny Tentacool", "Shiny Tentacruel", "Shiny Shellder", "Shiny Cloyster", "Shiny Exeggcute", "Shiny Exeggutor", "Shiny Rhyhorn", "Shiny Rhydon", "Shiny Staryu", "Shiny Starmie", "Shiny Pinsir", "Shiny Tauros", "Shiny Magikarp", "Shiny Gyarados", "Shiny Lapras", "Shiny Aerodactyl", "Shiny Snorlax", "Shiny Articuno", "Shiny Zapdos", "Shiny Moltres", "Shiny Dratini", "Shiny Dragonair", "Shiny Dragonite", "Mega Charizard Y", "Shiny Mew",}

slowexptable = {
[1] = 0,
[2] = 80,
[3] = 270,
[4] = 640,
[5] = 1250,
[6] = 2160,
[7] = 3430,
[8] = 5120,
[9] = 7290,
[10] = 10000,
[11] = 13310,
[12] = 17280,
[13] = 21970,
[14] = 27440,
[15] = 33750,
[16] = 40960,
[17] = 49130,
[18] = 58320,
[19] = 68590,
[20] = 80000,
[21] = 92610,
[22] = 106480,
[23] = 121670,
[24] = 138240,
[25] = 156250,
[26] = 175760,
[27] = 196830,
[28] = 219520,
[29] = 243890,
[30] = 270000,
[31] = 297910,
[32] = 327680,
[33] = 359370,
[34] = 393040,
[35] = 428750,
[36] = 466560,
[37] = 506530,
[38] = 548720,
[39] = 593190,
[40] = 640000,
[41] = 689210,
[42] = 740880,
[43] = 795070,
[44] = 851840,
[45] = 911250,
[46] = 973360,
[47] = 1038230,
[48] = 1105920,
[49] = 1176490,
[50] = 1250000,
[51] = 1326510,
[52] = 1406080,
[53] = 1488770,
[54] = 1574640,
[55] = 1663750,
[56] = 1756160,
[57] = 1851930,
[58] = 1951120,
[59] = 2053790,
[60] = 2160000,
[61] = 2269810,
[62] = 2383280,
[63] = 2500470,
[64] = 2621440,
[65] = 2746250,
[66] = 2874960,
[67] = 3007630,
[68] = 3144320,
[69] = 3285090,
[70] = 3430000,
[71] = 3579110,
[72] = 3732480,
[73] = 3890170,
[74] = 4052240,
[75] = 4218750,
[76] = 4389760,
[77] = 4565330,
[78] = 4745520,
[79] = 4930390,
[80] = 5120000,
[81] = 5314410,
[82] = 5513680,
[83] = 5717870,
[84] = 5927040,
[85] = 6141250,
[86] = 6360560,
[87] = 6585030,
[88] = 6814720,
[89] = 7049690,
[90] = 7290000,
[91] = 7535710,
[92] = 7786880,
[93] = 8043570,
[94] = 8305840,
[95] = 8573750,
[96] = 8847360,
[97] = 9126730,
[98] = 9411920,
[99] = 9702990,
[100] = 10000000,
[101] = 999999999}

 

 

 

21:19 Seu Pokemon Shiny Dragonite [85] recebeu (329) de experiencia. Faltam (218981) de experiencia para o próximo level.

 

image.png.ad7e3d12336fd0d6c54379912833f27c.png

image.png.4d5423818c7452dd024347b46df6032b.png

image.png.534b50256d4f2ce67eb3efbf38d1d9db.png

 

 

PFV AJUDEM.

Editado por UnzVega (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
18 minutos atrás, joaod123 disse:

Certeza q é pokecamp kk só falta adicionar a doSetCreatureNick nas sources maninho, q eu me lembre e só compilar as sources e ir la no lib/configuration.lua

 

tendi,só o doSetCreatureNick ?

Link para o post
Compartilhar em outros sites
54 minutos atrás, joaod123 disse:

Sim, se for o poke camp testa a mudança de nick no pokemon, se funcionar é pq ja tem ai só ir em lib/configuration.lua

 

sim é o camp,mas qual a diferença do nick?

Link para o post
Compartilhar em outros sites

vc tem q ir lá no configuration.lua e colocar HideSummonLevel = false

Essa função dosetCreatureNick serve pra alterar o nome do poke, e como o level aparece do lado do nome então, ele está modificando para aparecer o level.

Vc conseguiu arrumar o surf?

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.

  • Conteúdo Similar

    • Por cloudrun2023
      CloudRun - Sua Melhor Escolha para Hospedagem de OTServer!
      Você está procurando a solução definitiva para hospedar seu OTServer com desempenho imbatível e segurança inigualável? Não procure mais! Apresentamos a CloudRun, sua parceira confiável em serviços de hospedagem na nuvem.
       
      Recursos Exclusivos - Proteção DDoS Avançada:
      Mantenha seu OTServer online e seguro com nossa robusta proteção DDoS, garantindo uma experiência de jogo ininterrupta para seus jogadores.
       
      Servidores Ryzen 7 Poderosos: Desfrute do poder de processamento superior dos servidores Ryzen 7 para garantir um desempenho excepcional do seu OTServer. Velocidade e estabilidade garantidas!
       
      Armazenamento NVMe de Alta Velocidade:
      Reduza o tempo de carregamento do jogo com nosso armazenamento NVMe ultrarrápido. Seus jogadores vão adorar a rapidez com que podem explorar o mundo do seu OTServer.
       
      Uplink de até 1GB:
      Oferecemos uma conexão de alta velocidade com até 1GB de largura de banda, garantindo uma experiência de jogo suave e livre de lag para todos os seus jogadores, mesmo nos momentos de pico.
       
      Suporte 24 Horas:
      Estamos sempre aqui para você! Nossa equipe de suporte está disponível 24 horas por dia, 7 dias por semana, para resolver qualquer problema ou responder a qualquer pergunta que você possa ter. Sua satisfação é a nossa prioridade.
       
      Fácil e Rápido de Começar:
      Configurar seu OTServer na CloudRun é simples e rápido. Concentre-se no desenvolvimento do seu jogo enquanto cuidamos da hospedagem.
       
      Entre em Contato Agora!
      Website: https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
      Email: [email protected]
      Telefone: (47) 99902-5147

      Não comprometa a qualidade da hospedagem do seu OTServer. Escolha a CloudRun e ofereça aos seus jogadores a melhor experiência de jogo possível. Visite nosso site hoje mesmo para conhecer nossos planos e começar!
       
      https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
       
      CloudRun - Onde a Velocidade Encontra a Confiabilidade!
       

    • Por FeeTads
      SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.

      **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts

      vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

      SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.

      vá em creatureevent.cpp

      procure por:
      else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
      Adiciona abaixo:
      else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";  
      Adicione abaixo: 
      case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
      Adicione abaixo:
      case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";

      agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
      uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }

      agora vá em creatureevent.h

      procure por:
      CREATURE_EVENT_PREPAREDEATH
      adicione abaixo:
      CREATURE_EVENT_NOCOUNTFRAG

      procure por:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
      Adicione abaixo:
      uint32_t executeNoCountFragArea(Creature* creature, Creature* target);

      agora vá em player.cpp

      procure por:
      bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
      abaixo de:
      War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
      Adicione o seguinte código:
      if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }

      //

      Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor

      vá até creaturescripts/scripts
      crie um arquivo chamado, "noCountFragInArea.lua"
      e dentro dele cole o código:
       
      --[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
      agora em creaturescripts.xml
      <event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
      agora em creaturescripts/scripts/login.lua
       procure por OU semelhante a esse:
      registerCreatureEvent(cid, "AdvanceSave")
      e abaixo adicione:
      registerCreatureEvent(cid, "fragarea")

      //


      Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script

      Exemplo:
      local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
      assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
      Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
      Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.

      Façam bom proveito dos scripts, e deixem os créditos no script rsrs

      **Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
    • Por Muvuka
      Abri canal a força creaturescript acho que funcione no creaturescript cria script creaturescript
       
      <channel id="9" name="HELP" logged="yes"/>
      <channel id="12" name="Report Bugs" logged="yes"/>
      <channel id="13" name="Loot" logged="yes"/>
      <channel id="14" name="Report Character Rules Tibia Rules" logged="yes"/>
      <channel id="15" name="Death Channel"/>
      <channel id="6548" name="DexSoft" level="1"/>
      <channel id="7" name="Reports" logged="yes"/>
       
      antes de 
              if(lastLogin > 0) then adicione isso:
                      doPlayerOpenChannel(cid, CHANNEL_HELP) doPlayerOpenChannel(cid, 1,  2, 3) = 1,2 ,3 Channels, entendeu? NÃO FUNCIONA EU QUERO UM MEIO DE ABRI SEM USA A SOURCE
       
      EU NÃO CONSEGUI ABRI EU NÃO TENHO SOURCE
       
       
    • Por bolachapancao
      Rapaziada seguinte preciso de um script que ao utilizar uma alavanca para até 4 jogadores.
      Os jogadores serão teleportados para hunt durante uma hora e depois de uma hora os jogadores serão teleportados de volta para o templo.
       
      Observação: caso o jogador morra ou saia da hunt o evento hunt é cancelado.

      Estou a base canary
      GitHub - opentibiabr/canary: Canary Server 13.x for OpenTibia community.
       
    • Por RAJADAO
      .Qual servidor ou website você utiliza como base? 
      Sabrehaven 8.0
      Qual o motivo deste tópico? 
      Ajuda com novos efeitos
       
      Olá amigos, gostaria de ajuda para introduzir os seguintes efeitos no meu servidor (usando o Sabrehaven 8.0 como base), adicionei algumas runas novas (avalanche, icicle, míssil sagrado, stoneshower & Thunderstorm) e alguns novos feitiços (exevo mas san, exori san, exori tera, exori frigo, exevo gran mas frigo, exevo gran mas tera, exevo tera hur, exevo frigo hur) mas nenhum dos efeitos dessas magias parece existir no servidor, alguém tem um link para um tutorial ou algo assim para que eu possa fazer isso funcionar?
      Desculpe pelo mau inglês, sou brasileiro.

      Obrigado!


      AVALANCHE RUNE id:3161 \/
      (COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)

      STONESHOWER RUNE id:3175 \/
      (COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_STONES)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)

      THUNDERSTORM RUNE id:3202 \/
      (COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_E NERGYHIT)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)

      ICICLE RUNE id:3158 \/
      COMBAT_ICEDAMAGE
      CONST_ME_ICEAREA
      CONST_ANI_ICE

      SANTO MÍSSIL RUNA id:3182 \/
      (COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)

      CONST_ME_PLANTATTACK (exevo gran mas tera)
      CONST_ME_ICETORNADO (exevo gran mas frigo)
      CONST_ME_SMALLPLANTS (exevo tera hur)
      CONST_ME_ICEAREA (exevo frigo hur)
      CONST_ME_ICEATTACK (exori frigo)
      CONST_ME_CARNIPHILA (exori tera)

      EXORI SAN \/
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
      CONST_ME_HOLYDAM IDADE

      EXEVO MAS SAN \/
      CONST_ME_HOLYAREA
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo