Ir para conteúdo
  • 0

[Pedido] Monsters Com Level


karanzinho123

Pergunta

Tipo do script: não sei x.x

Protocolo (versão do Tibia): 8.6

Servidor utilizado: Snowz-Thyranic 3.1

Nível de experiência: iniciante

Adicionais/Informações: to procurando um script pra um sistema que faça os monsters ter level, tipo minotaur lv 1, estilo os do pokemon dando spawn com os leveis aleatorios, entre 1 a 10, alguém pode ajudar? :S

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Seria tensamente tenso fazer isso.

 

Ja tentei fazer isso, pegando arquivos do PDA e usando como base, porem sao muitas libs e muitos scripts.

Acho que o trabalho disso, nao seria tao resultante em seu servidor...

Qual diferença iria fazer o minotaur level 1, 2 ,3 ,4... ?

Mais um pouquinho de HP? Só isso.

Link para o comentário
Compartilhar em outros sites

  • 0

na verdade a ideia, era fazer isso com diversos bixos, pra dar uma diferenciada na hunt, porque to com um projeto de tibia mais puxado pra mitologia, e isso me limita em questão de monsters, então a ideia seria fazer minotaurs de diferentes leveis, e se fosse o caso o mino leveis de 1 a 4, seriam o normal, ficando um pouco mais forte por level, depois do 4 ao 8, o archer mesma coisa e o resto o guard... , mas parece que terei que fazer isso manualmente AOSIJEIOSJIEOSEIOSA, vai ter um pouco de trampo se eu não conseguir esse system, mas obrigado ai pra quem tentou ajudar até agora

Link para o comentário
Compartilhar em outros sites

  • 0

da pra fase uma gambiarra nervosa, mas para o nome ficar com o lv, teria que usar uma função de setcreaturename que pode ser encontrada nesse link http://www.xtibia.com/forum/topic/159133-setcreaturename-850-muda-o-nome-da-criature-in-game/

essa função é pra instala nas sourcers, caso n as tenha procure por uma da verção que voce usa(8.6 no caso)

 

to fasendo uma gambiarra aki depois posto pra vc ve se funciona

Link para o comentário
Compartilhar em outros sites

  • 0

como eu disse estou fasendo uma gambiarra. vou usar attack por spell,dai no script eu uso uma formula usando a gambiarra. so n sei se vai funciona

se funciona quanto maior o lv +health e +forte os attacks

so n lenbro como ponhe pro monster attaka por spell do spell.xml

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte, pesquisei aqui, vi as libs de pokemon.

 

PUTA QUE PARIU!!!!

 

É muita coisa para fazer, as libs, as configurações sao muito extensas, e tem muita coisa a ser retirada

Devem ser umas 900 linhas para analizar..

 

Consegui ir até a metade, maaas,

se tu quiser elas eu mando por aqui, se der..

Link para o comentário
Compartilhar em outros sites

  • 0

lib\Level System.lua

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 johto = false
for i = 303, 402 do
 if 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 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
	doCreatureAddHealth(summon, getCreatureMaxHealth(summon))   --edited enxe a vida do poke quando ele evolui

 doSendFlareEffect(getThingPos(summon))
 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, 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 string.find(tostring(nick), "Shiny") then
nick = tostring(nick):match("Shiny (.*)")
end
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, "sleep") and getItemAttribute(item, "sleep") >= 1 then
 doSleep(pk, getItemAttribute(item, "sleep"))
 end

 if getItemAttribute(item, "missSyst") and getItemAttribute(item, "missSyst") >= 1 then	   --edited miss system
	  doMissSyst(pk, getItemAttribute(item, "missSyst"), getItemAttribute(item, "missEff"), false, getItemAttribute(item, "missCond"))
	end

	cidd = isCreature(getMasterTarget(pk)) and getMasterTarget(pk) or pk

	if getItemAttribute(item, "Fear") and getItemAttribute(item, "Fear") >= 1 then
	   doAdvancedFear(pk, getItemAttribute(item, "Fear"), false, cidd, "Fear")			--edited fear/roar system
	elseif getItemAttribute(item, "Roar") and getItemAttribute(item, "Roar") >= 1 then
	   doAdvancedFear(pk, getItemAttribute(item, "Roar"), false, cidd, "Roar")
	end

	if getItemAttribute(item, "buffSyst") and getItemAttribute(item, "buffSyst") >= 1 then	  --edited buff system
	  doBuffSyst(pk, getItemAttribute(item, "buffSyst"), getItemAttribute(item, "buffEff"), false, getItemAttribute(item, "buffSkill"), true)
	end

end

if getItemAttribute(item, "boost") and getItemAttribute(item, "boost") >= 10 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
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) >= 5 then
  if optionalLevel <= 10 then
levelRange = optionalLevel
  else
levelRange = 3
  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

 

creaturescript\wildpoke

function onAttack(cid, target)
doSendMagicEffect(getThingPos(target), 15)
return true
end
function onThink(cid, interval)
doSendAnimatedText(getThingPos(cid), getPlayerStorageValue(cid, 1008).."/"..getPlayerStorageValue(cid, 1009).."", COLOR_GRASS)
end
function onDirection(cid)
if isSleeping(cid) then
return false
end
if getPlayerStorageValue(cid, 446) >= 1 then
return false
end
if isSummon(cid) and isCreature(getCreatureTarget(cid)) then
return true
end
if getCreatureSpeed(cid) == 0 then
return false
end
if isPassive(cid) and getCreatureSpeed(cid) ~= 1 then
return false
end
return true
end
function onCast(cid, target)
if isSleeping(cid) then
return false
end
if getCreatureCondition(cid, CONDITION_INVISIBLE) and not isGhostPokemon(cid) then
return false
end
return true
end

 

creaturescript\spawn

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", "Dragonair", "Dratini"
}
local raros = {"Articuno", "Zapdos", "Moltreas", "Mew", "Mewtwo", "Dragonite", "Aerodactyl"}
local function ShinyName(cid)
if isCreature(cid) then
  if string.find(tostring(getCreatureName(cid)), "Shiny") then
  local newName = tostring(getCreatureName(cid)):match("Shiny (.*)")
  local newNamed = newName.." ["..getPokemonLevel(cid).."]"
  doCreatureSetNick(cid, newNamed)
  end
end
end

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 isNpcSummon(cid) then return true end
if isInArray(shinys, getCreatureName(cid)) then
  transform = math.random(1, 1000)	--0.1% chance	  
elseif isInArray(raros, getCreatureName(cid)) then
  transform = math.random(1, 1000)   --0.1% chance	  
elseif not isInArray(raros, getCreatureName(cid)) and not isInArray(shinys, getCreatureName(cid)) then
  return true
end  
if transform == 10 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, "Experience")
registerCreatureEvent(cid, "GeneralConfiguration")
registerCreatureEvent(cid, "DirectionSystem")
registerCreatureEvent(cid, "CastSystem")
if isSummon(cid) then
 registerCreatureEvent(cid, "SummonDeath")
return true
end
addEvent(doPokemonRegisterLevel, 5, cid)
addEvent(doSetRandomGender, 5, cid)
addEvent(doShiny, 10, cid)
addEvent(ShinyName, 15, cid)
return true
end

 

Bem... oque voce terá que fazer....

 

Primeiramente, terá que tirar coisas de

BOOST, SHINY, GENDER, DIRECTIONS , etc

 

 

E ficar com

getPokemonLevel, getWildPokemonLevel, getWildPokemonExp , etc

 

Boa sorte... Se conseguir manda MP

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

  • 0

mas esssa lib n vai servi pra nada sem as fuções da sourcers(tipo onSpawn que é usado ali), e n tem como registra storage para criaturas, entre outras coisas que são proprias do exe do serve de pokemon em questão

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...