Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Configurando seu otserv de pokemon


Malerba118
 Compartilhar

Posts Recomendados

Bom Galera,

Já que a sessão do tibia aqui na wb anda meio parada resolvi fazer esse tutorial esperando trazer mais gente para a sessão.

Antes de mais nada lembrando que nenhum script server e etc é meu e todos estão com seus devidos créditos

 

Gostou? Agradeça não custa nada!

 

Antes de tudo, va na pasta data/lib e adicione um script.lua com o nome de pokeLib e adicione isso:

 

Código:

pokein, pokeout = 2222,2223

 

function doRemoveTile(pos)-- Script by mock

pos.stackpos = 0

local sqm = getTileThingByPos(pos)

doRemoveItem(sqm.uid,1)

end

 

 

function doCreateTile(id,pos) -- By mock

doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)

doCreateItem(id,1,pos)

end

 

function getPosDirs(p, dir) -- By MatheusMkalo

return dir == 1 and {x=p.x-1, y=p.y, z=p.z** or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z** or dir == 3 and {x=p.x, y=p.y+1, z=p.z** or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z** or dir == 5 and {x=p.x+1, y=p.y, z=p.z** or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z** or dir == 7 and {x=p.x, y=p.y-1, z=p.z** or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z**

end

 

function doItem(pos,a,d)-- Script by mock

doCreateTile(460,pos)

pos.stackpos = 0

local c = getTileThingByPos(pos)

doItemSetAttribute(c.uid, "aid", a)

end

 

function getDescription(uid)

for i,x in pairs(getItemDescriptions(uid)) do

if i == "special" then

return x

end

end

end

 

function findLetter(string, letter)

for i = 1, #string do

if string:sub(i, i) == letter then

return i

end

end

end

 

function isWalkable(pos, creature, proj, pz)-- by Nord

if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0**).itemid == 0 then return false end

if getTopCreature(pos).uid > 0 and creature then return false end

if getTileInfo(pos).protection and pz then return false, true end

local n = not proj and 3 or 2

for i = 0, 255 do

pos.stackpos = i

local tile = getTileThingByPos(pos)

if tile.itemid ~= 0 and not isCreature(tile.uid) then

if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then

return false

end

end

end

return true

end

 

function getPosDirs(p, dir)

return dir == 1 and {x=p.x-1, y=p.y, z=p.z** or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z** or dir == 3 and {x=p.x, y=p.y+1, z=p.z** or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z** or dir == 5 and {x=p.x+1, y=p.y, z=p.z** or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z** or dir == 7 and {x=p.x, y=p.y-1, z=p.z** or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z**

end

 

function canSummon(cid)

local pos = getCreaturePosition(cid)

local state = false

for i = 1, 8 do

if isWalkable(getPosDirs(getCreaturePosition(cid), i)) then

state = true

end

end

return state

end

 

function isPlayerSummon(cid, uid)

if getCreatureMaster(uid) == cid then

return TRUE

end

return FALSE

end

 

function getSummonLifes(cid)

for _,x in pairs(getCreatureSummons(cid)) do

return getCreatureHealth(x), getCreatureMaxHealth(x)

end

end

 

function getItemsInContainerById(container, itemid) -- Function By Kydrai

local items = ****

if isContainer(container) and getContainerSize(container) > 0 then

for slot=0, (getContainerSize(container)-1) do

local item = getContainerItem(container, slot)

if isContainer(item.uid) then

local itemsbag = getItemsInContainerById(item.uid, itemid)

for i=0, #itemsbag do

table.insert(items, itemsbag)

end

else

if itemid == item.itemid then

table.insert(items, item.uid)

end

end

end

end

return items

end

 

function addPokeball(cid, pokename, maxh)

local s = doPlayerAddItem(cid, pokein)

doItemSetAttribute(s, "poke", "This is "..pokename.."'s pokeball. HP = ["..maxh.."/"..maxh.."]")

doItemSetAttribute(s, "description", "Contains a " .. pokename)

end

 

function getPokeOutLive(cid)

dat = ****

for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do

local item = getPlayerSlotItem(cid, slot)

if isContainer(item.uid) then

local items = getItemsInContainerById(item.uid, pokeout)

for _, ui in pairs(items) do

if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then

table.insert(dat, ui)

end

end

end

 

if item.itemid == pokeout then

if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then

table.insert(dat, item.uid)

end

end

end

return dat

end

M1 System - Créditos 100% Para visualizar o link é necessário se Registrar GRÁTIS! Clique aqui

 

Vá em data/spells e crie 1 arquivo chamado m1.lua

 

Código:

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat1, COMBAT_PARAM_EFFECT, 111)

setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat2, COMBAT_PARAM_EFFECT, 42)

setAttackFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 2.5, 4)

 

 

arr2 = **

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0**,

{0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0**,

{0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

**

 

local area2 = createCombatArea(arr2)

setCombatArea(combat2, area2)

 

local combat3 = createCombatObject()

setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat3, COMBAT_PARAM_EFFECT, 142)

setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -100, -1000, -100, -2000, 500, 500, 100.400, 200.1)

 

local combat4 = createCombatObject()

setCombatParam(combat4, COMBAT_PARAM_EFFECT, 141)

setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, -10, 5, 5, 0.85, 1.95, -20, -40)

 

local combat5 = createCombatObject()

setCombatParam(combat5, COMBAT_PARAM_EFFECT, 16)

setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, -10, 5, 5, 0.85, 1.95, -20, -40)

 

local combat6 = createCombatObject()

setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat6, COMBAT_PARAM_EFFECT, 137)

setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 23)

setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

local combat7 = createCombatObject()

setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat7, COMBAT_PARAM_EFFECT, 59)

setCombatParam(combat7, COMBAT_PARAM_DISTANCEEFFECT, 23)

setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

local combat8 = createCombatObject()

setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat8, COMBAT_PARAM_EFFECT, 138)

setCombatParam(combat8, COMBAT_PARAM_DISTANCEEFFECT, 138)

setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

local combat9 = createCombatObject()

setCombatParam(combat9, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat9, COMBAT_PARAM_EFFECT, 112)

setCombatFormula(combat9, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

local combat10 = createCombatObject()

setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat10, COMBAT_PARAM_EFFECT, 79)

setCombatParam(combat10, COMBAT_PARAM_DISTANCEEFFECT, 5)

setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -2.5, 0, -3.0, 0)

 

local combat11 = createCombatObject()

setCombatParam(combat11, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat11, COMBAT_PARAM_EFFECT, 68)

setCombatParam(combat11, COMBAT_PARAM_DISTANCEEFFECT, 2)

setCombatFormula(combat11, COMBAT_FORMULA_LEVELMAGIC, -2.5, 0, -3.0, 0)

 

local combat12 = createCombatObject()

setCombatParam(combat12, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat12, COMBAT_PARAM_EFFECT, 137)

setCombatParam(combat12, COMBAT_PARAM_DISTANCEEFFECT, 23)

setCombatFormula(combat12, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

local combat13 = createCombatObject()

setCombatParam(combat13, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat13, COMBAT_PARAM_EFFECT, 9)

setCombatParam(combat13, COMBAT_PARAM_DISTANCEEFFECT, 25)

setCombatFormula(combat13, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

local combat14 = createCombatObject()

setCombatParam(combat14, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat14, COMBAT_PARAM_EFFECT, 22)

setCombatParam(combat14, COMBAT_PARAM_DISTANCEEFFECT, 24)

setCombatFormula(combat14, COMBAT_FORMULA_LEVELMAGIC, -2.5, 0, -3.0, 0)

 

local combat15 = createCombatObject()

setCombatParam(combat15, COMBAT_PARAM_EFFECT, 122)

setCombatParam(combat15, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatFormula(combat15, COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, -10, 5, 5, 0.85, 1.95, -20, -40)

 

 

arr15 = **

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0**,

**

 

local area15 = createCombatArea(arr15)

setCombatArea(combat15, area15)

 

 

 

local c = **

["Bulbasaur"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 20

**

**,

["Ivysaur"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 40

**

**,

["Ivysaur"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 40

**

**,

["Venusaur"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 85

**

**,

["Pidgey"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 5

**

**,

["Pidgeotto"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 20

**

**,

["Pidgeotto"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 20

**

**,

["Pidgeot"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 65

**

**,

["Rattata"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 1

**

**,

["Raticate"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 25

**

**,

["Spearow"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 10

**

**,

["Fearow"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 50

**

**,

["Pikachu"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 20

**

**,

["Nidoran Femea"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 10

**

**,

["Nidorina"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 30

**

**,

["Nidoqueen"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 65

**

**,

["Nidoran Macho"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 10

**

**,

["Nidorino"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 30

**

**,

["Nidoking"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 65

**

**,

["Vulpix"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 15

**

**,

["Ninetales"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 70

**

**,

["Ponyta"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 20

**

**,

["Rapidash"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 55

**

**,

["Scyther"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 80

**

**,

["Electabuzz"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 80

**

**,

["Vaporeon"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 55

**

**,

["Jolteon"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 55

**

**,

["Flareon"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 55

**

**,

["Shiny Venusaur"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 100

**

**,

["Shiny Rattata"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 1

**

**,

["Shiny Raticate"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 25

**

**,

["Shiny Scyther"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 100

**

**,

["Shiny Scyther"] = {x = **

m1 = combat1,

spell = "Quick Attack",

minLv = 100

**

**,

["Zapdos"] = {x = **

m1 = combat2,

spell = "Whirlwind",

minLv = 100

**

**,

["Articuno"] = {x = **

m1 = combat2,

spell = "Whirlwind",

minLv = 150

**

**,

["Charmander"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 20

**

**,

["Charmeleon"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 40

**

**,

["Paras"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 5

**

**,

["Mankey"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 15

**

**,

["Primeape"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 50

**

**,

["Magmar"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 80

**

**,

["Pinsir"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 45

**

**,

["Kabuto"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 20

**

**,

["Kabutops"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 80

**

**,

["Snorlax"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 1

**

**,

["Shiny Paras"] = {x = **

m1 = combat3,

spell = "Scratch",

minLv = 5

**

**,

["Charizard"] = {x = **

m1 = combat4,

spell = "Dragon Claw",

minLv = 85

**

**,

["Elder Charizard"] = {x = **

m1 = combat4,

spell = "Dragon Claw",

minLv = 100

**

**,

["Squirtle"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 20

**

**,

["Wartortle"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 40

**

**,

["Blastoise"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 85

**

**,

["Caterpie"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 1

**

**,

["Seel"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 20

**

**,

["Drowzee"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 25

**

**,

["Hypno"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 55

**

**,

["Cubone"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 20

**

**,

["Marowak"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 55

**

**,

["Tauros"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 45

**

**,

["Dragonair"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 60

**

**,

["Dragonite"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 100

**

**,

["Shiny Blastoise"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 100

**

**,

["Shiny Dratini"] = {x = **

m1 = combat5,

spell = "Headbutt",

minLv = 20

**

**,

["Metapod"] = {x = **

m1 = combat6,

spell = "String Shot",

minLv = 15,

distance = 3

**

**,

["Butterfree"] = {x = **

m1 = combat6,

spell = "String Shot",

minLv = 30,

distance = 3

**

**,

["Kakuna"] = {x = **

m1 = combat6,

spell = "String Shot",

minLv = 15,

distance = 3

**

**,

["Beedrill"] = {x = **

m1 = combat6,

spell = "String Shot",

minLv = 25,

distance = 3

**

**,

["Shiny Beedrill"] = {x = **

m1 = combat6,

spell = "String Shot",

minLv = 25,

distance = 3

**

**,

["Weedle"] = {x = **

m1 = combat7,

spell = "Horn Attack",

minLv = 1,

distance = 3

**

**,

["Goldeen"] = {x = **

m1 = combat7,

spell = "Horn Attack",

minLv = 10,

distance = 3

**

**,

["Seaking"] = {x = **

m1 = combat7,

spell = "Horn Attack",

minLv = 35,

distance = 3

**

**,

["Lapras"] = {x = **

m1 = combat7,

spell = "Horn Attack",

minLv = 80,

distance = 3

**

**,

["Ekans"] = {x = **

m1 = combat8,

spell = "Bite",

minLv = 15,

distance = 3

**

**,

["Ekans"] = {x = **

m1 = combat8,

spell = "Bite",

minLv = 15,

distance = 3

**

**,

["Arbok"] = {x = **

m1 = combat8,

spell = "Bite",

minLv = 35,

distance = 3

**

**,

["Kangaskhan"] = {x = **

m1 = combat8,

spell = "Bite",

minLv = 80,

distance = 3

**

**,

["Omanyte"] = {x = **

m1 = combat8,

spell = "Bite",

minLv = 20,

distance = 3

**

**,

["Omastar"] = {x = **

m1 = combat8,

spell = "Bite",

minLv = 80,

distance = 3

**

**,

["Raichu"] = {x = **

m1 = combat9,

spell = "Mega Kick",

minLv = 50

**

**,

["Shiny Raichu"] = {x = **

m1 = combat9,

spell = "Mega Kick",

minLv = 80

**

**,

["Bulbasaur"] = {x = **

m1 = combat10,

spell = "Razor Leaf",

minLv = 20

**

**,

["Ivysaur"] = {x = **

m1 = combat10,

spell = "Razor Leaf",

minLv = 40

**

**,

["Venusaur"] = {x = **

m1 = combat10,

spell = "Razor Leaf",

minLv = 85

**

**,

["Squirtle"] = {x = **

m1 = combat11,

spell = "Bubbles",

minLv = 20

**

**,

["Wartortle"] = {x = **

m1 = combat11,

spell = "Bubbles",

minLv = 40

**

**,

["Blastoise"] = {x = **

m1 = combat11,

spell = "Bubbles",

minLv = 85

**

**,

["Caterpie"] = {x = **

m1 = combat12,

spell = "String Shot",

minLv = 1

**

**,

["Metapod"] = {x = **

m1 = combat12,

spell = "String Shot",

minLv = 15

**

**,

["Butterfree"] = {x = **

m1 = combat12,

spell = "String Shot",

minLv = 30

**

**,

["Weedle"] = {x = **

m1 = combat13,

spell = "Horn Attack",

minLv = 1

**

**,

["Kakuna"] = {x = **

m1 = combat13,

spell = "Horn Attack",

minLv = 15

**

**,

["Beedrill"] = {x = **

m1 = combat13,

spell = "Horn Attack",

minLv = 30

**

**,

["Zubat"] = {x = **

m1 = combat14,

spell = "Super Sonic",

minLv = 10

**

**,

["Golbat"] = {x = **

m1 = combat14,

spell = "Super Sonic",

minLv = 30

**

**,

["Sandshrew"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 20

**

**,

["Sandslash"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 55

**

**,

["Diglett"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 10

**

**,

["Dugtrio"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 35

**

**,

["Farfetchd"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 40

**

**,

["Doduo"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 15

**

**,

["Dodrio"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 45

**

**,

["Onix"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 50

**

**,

["Eevee"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 20

**

**,

["Eevee"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 20

**

**,

["Shiny Farfetchd"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 80

**

**,

["Crystal Onix"] = {x = **

m1 = combat15,

spell = "Sand Attack",

minLv = 80

**

**,

["Mew"] = {x = **

m1 = combat1,

spell = "Test",

minLv = 1,

distance = 3

**

**,

 

["Minotaur"] = {x = **

m1 = combat1,

spell = "Tesurmomt",

minLv = 1,

distance = 3

**

**

 

**

 

function onCastSpell(cid, var)

local summ = getCreatureSummons(cid)

if #summ == 0 then

return doPlayerSendCancel(cid, "Sorry, but you need a pokemon.")

end

 

for i = 1, #summ do

for name, _ in pairs© do

if getCreatureName(summ):lower() == name:lower() then

local con = c[name].x

if getPlayerLevel(cid) < con.minLv then

return doPlayerSendCancel(cid, "Sorry, but you must be level " .. con.minLv .. " or higher to cast.") and doSendMagicEffect(getThingPos(cid), 2)

end

local distance = (not con.distance) and 1 or con.distance

 

if not isCreature(getCreatureTarget(cid)) or getCreatureTarget(cid) == summ then

return doPlayerSendCancel(cid, "Invalid target.") and doSendMagicEffect(getThingPos(cid), 2)

end

 

if getDistanceBetween(getThingPos(summ), getThingPos(getCreatureTarget(cid))) > distance then

return doPlayerSendCancel(cid, "Sorry, your pokemon is too far away.") and doSendMagicEffect(getThingPos(cid), 2)

end

 

if getPlayerStorageValue(cid, 23000) <= os.time() then

doPlayerSetStorageValue(cid, 23000, os.time()+5)

doCombat(summ, con.m1, numberToVariant(getCreatureTarget(cid)))

doCreatureSay(cid, name .. ", " .. con.spell .. ".")

end

 

doPlayerSendCancel(cid, "Cooldown: "..(getPlayerStorageValue(cid, 23000)-os.time()).." sec.")

doSendMagicEffect(getThingPos(cid), 2)

end

end

end

 

return true

end

Agora coloque a tag no spells.lua

 

Código:

<instant name="" words="m1" lvl="1" mana="0" prem="0" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="m1.lua">

Créditos daqui pra baixo Para visualizar o link é necessário se Registrar GRÁTIS! Clique aqui

 

Go/Back Pokeball System By: MatheusMkalo

 

Vá em data/actions/scripts e adicione um arquivo.lua com o nome de goback.lua

Depois de ter feito isso, adicione o seguinte script no arquivo goback.lua:

 

Código:

local pokes = **

["Dragon"] = {level = 1, go = "Vai Dragon", back = "Volte Dragon."**,

["Demon"] = {level = 8, go = "Vai Demon", back = "Volte Demon."**,

["Dragon Lord"] = {level = 8, go = "Vai Dragon Lord", back = "Volte Dragon Lord."**,

["Rat"] = {level = 8, go = "Vai Rat", back = "Volte Rat."**,

**

 

local msgunica = false

 

function onUse(cid, item, frompos, item2, topos)

 

local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))

local health = tonumber(getItemAttribute(item.uid, "poke"):match("%[(.-)/"))

 

if item.itemid == pokeout then

 

if health ~= nil and health <= 0 then

return doPlayerSendCancel(cid, "This pokemon is dead.")

end

 

if #getCreatureSummons(cid) >= 1 then

for _,z in pairs(getCreatureSummons(cid)) do

if getItemAttribute(item.uid, "poke"):find(getCreatureName(z)) then

doTransformItem(item.uid, pokein)

if msgunica then

doCreatureSay(cid, "Back, " .. getCreatureName(z), TALKTYPE_SAY)

else

doCreatureSay(cid, pokes[getCreatureName(z)].back, TALKTYPE_SAY)

end

doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..getCreatureHealth(z).."/"..getCreatureMaxHealth(z).."]")

setPlayerStorageValue(cid, 61204, 0)

doSendMagicEffect(getCreaturePosition(z), 10)

return doRemoveCreature(z)

end

end

end

 

elseif item.itemid == pokein then

 

if getTilePzInfo(getCreaturePosition(cid)) then

return doPlayerSendCancel(cid, "You can't use pokeball in Protection Zones.")

end

 

if not canSummon(cid) then

return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM)

end

 

if getPlayerStorageValue(cid, 63215) >= 1 then

return doPlayerSendCancel(cid, "You can't use pokeball while surfing.")

end

 

if getPlayerStorageValue(cid, 62314) >= 1 then

return doPlayerSendCancel(cid, "You can't use pokeball while flying.")

end

 

if getPlayerStorageValue(cid, 59987) >= 1 then

return doPlayerSendCancel(cid, "You can't use pokeball while riding.")

end

 

for i,x in pairs(pokes) do

if #getCreatureSummons(cid) >= 1 then

return doPlayerSendCancel(cid, "You already summoned a pokemon.")

end

 

if i == getItemAttribute(item.uid, "poke"):sub(9, findLetter(getItemAttribute(item.uid, "poke"), "'")-1) then

if getPlayerLevel(cid) >= x.level then

pk = doSummonCreature(i, getThingPosition(cid))

doConvinceCreature(cid, pk)

setCreatureMaxHealth(pk, tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")))

doCreatureAddHealth(pk, maxh)

doCreatureAddHealth(pk, health-maxh)

doTransformItem(item.uid, pokeout)

if msgunica then

doCreatureSay(cid, "Go, " .. i, TALKTYPE_SAY)

else

doCreatureSay(cid, x.go, TALKTYPE_SAY)

end

doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")))

doSendMagicEffect(getCreaturePosition(pk), 10)

setPlayerStorageValue(cid, 61204, 1)

registerCreatureEvent(pk, "DiePoke")

registerCreatureEvent(cid, "PlayerPokeDeath")

registerCreatureEvent(cid, "LogoutPoke")

break

else

doPlayerSendCancel(cid, "Only players level "..x.level.." or higher can use this pokemon.")

end

end

end

end

return TRUE

end

Depois, va em actions.xml e adicione a seguinte tag:

 

Código:

<action itemid="2222;2223" event="script" value="goback.lua"/>

Sendo que 2222 e 2223 são, respectivamente, o id da pokeball que ira "chamar" o pokemon, e o outro o id da pokeball que ira retirar o pokemon. (Seriam as pokebolas acesas e apagadas do PO)

 

Agora, para evitar alguns bugs, va em data/creaturescripts/scripts e crie um arquivo.lua com o nome goback.lua e bote o seguinte script dentro:

 

Código:

function onLogout(cid)

local health,maxhealth = getSummonLifes(cid)

if getPlayerStorageValue(cid, 61204) >= 1 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then

setPlayerStorageValue(cid, 61205, health)

setPlayerStorageValue(cid, 61206, maxhealth)

setPlayerStorageValue(cid, 61204, 0)

setPlayerStorageValue(cid, 61207, 1)

end

 

if getPlayerStorageValue(cid, 62314) >= 1 then

pos = getCreaturePosition(cid)

for i = 1,8 do

doRemoveTile(getPosDirs(getCreaturePosition(cid), i))

end

doRemoveTile(getCreaturePosition(cid))

setPlayerStorageValue(cid, 61941, pos.x)

setPlayerStorageValue(cid, 61942, pos.y)

setPlayerStorageValue(cid, 61943, pos.z)

end

return TRUE

end

 

function onLogin(cid)

local pokes = **

["Dragon"] = {lookType=267, speed = 1500**,

["Rat"] = {lookType=267, speed = 500**,

**

 

local pokesfly = **

["Dragon"] = {lookType = 216, speed = 500**,

**

 

local pokesride = **

["Dragon Lord"] = {lookType=4, speed = 3000**,

["Dragon"] = {lookType=4, speed = 500**,

**

 

if getPlayerStorageValue(cid, 62314) >= 1 then

doCreateTile(460, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)**)

doTeleportThing(cid, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)**)

for i = 1,8 do

doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i)

end

local item = getPokeOutLive(cid)[1]

local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.")

doSetCreatureOutfit(cid, pokesfly[tostring(a)], -1)

doChangeSpeed(cid, pokesfly[tostring(a)].speed)

registerCreatureEvent(cid, "PlayerPokeDeath")

end

 

if getPlayerStorageValue(cid, 63215) >= 1 then

local item = getPokeOutLive(cid)[1]

local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.")

doSetCreatureOutfit(cid, pokes[tostring(a)], -1)

doChangeSpeed(cid, pokes[tostring(a)].speed)

registerCreatureEvent(cid, "PlayerPokeDeath")

end

 

if getPlayerStorageValue(cid, 59987) >= 1 then

local item = getPokeOutLive(cid)[1]

local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.")

doSetCreatureOutfit(cid, pokesride[tostring(a)], -1)

doChangeSpeed(cid, pokesride[tostring(a)].speed)

registerCreatureEvent(cid, "PlayerPokeDeath")

end

 

if getPlayerStorageValue(cid, 61207) >= 1 then

local item = getPokeOutLive(cid)[1]

doTransformItem(item, pokein)

doRemoveCondition(cid, CONDITION_OUTFIT)

doItemSetAttribute(item, "poke", getItemAttribute(item, "poke"):sub(#getItemAttribute(item, "poke")) ~= "]" and getItemAttribute(item, "poke") .. " HP = ["..getPlayerStorageValue(cid, 61205).."/"..getPlayerStorageValue(cid, 61206).."]" or getItemAttribute(item, "poke"))

setPlayerStorageValue(cid, 61207, 0)

end

 

return TRUE

end

 

function onDeath(cid, deathList)

local owner = getCreatureMaster(cid)

doPlayerSendTextMessage(owner, 22, "Your pokemon died.")

 

for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do

local item = getPlayerSlotItem(owner, slot)

if isContainer(item.uid) then

local items = getItemsInContainerById(item.uid, pokeout)

for _, ui in pairs(items) do

if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then

local maxh = tonumber(getItemAttribute(ui, "poke"):match("/(.+)]"))

doItemSetAttribute(ui, "poke", getItemAttribute(ui, "poke"):sub(1, findLetter(getItemAttribute(ui, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]")

end

end

end

 

if item.itemid == pokeout then

if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then

local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))

doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]")

end

end

end

doRemoveCreature(cid)

setPlayerStorageValue(owner, 61207, 0)

setPlayerStorageValue(owner, 61204, 0)

return FALSE

end

Agora adicione outro arquivo.lua na pasta data/creaturescripts/scripts com o nome de playerpdeath e bote esse script:

 

Código:

function onDeath(cid)

local health,maxhealth = getSummonLifes(cid)

if #getCreatureSummons(cid) >= 1 then

setPlayerStorageValue(cid, 61205, health)

setPlayerStorageValue(cid, 61206, maxhealth)

setPlayerStorageValue(cid, 61204, 0)

setPlayerStorageValue(cid, 61207, 1)

end

 

if getPlayerStorageValue(cid, 63215) >= 1 then

setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61210))

setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61209))

setPlayerStorageValue(cid, 61204, 0)

setPlayerStorageValue(cid, 63215, 0)

setPlayerStorageValue(cid, 61207, 1)

end

 

if getPlayerStorageValue(cid, 62314) >= 1 then

setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61262))

setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61263))

setPlayerStorageValue(cid, 61204, 0)

setPlayerStorageValue(cid, 62314, 0)

setPlayerStorageValue(cid, 61207, 1)

end

 

if getPlayerStorageValue(cid, 59987) >=1 then

setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 59988))

setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 59989))

setPlayerStorageValue(cid, 61204, 0)

setPlayerStorageValue(cid, 59987, 0)

setPlayerStorageValue(cid, 61207, 1)

end

return TRUE

end

Depois va em creaturescripts.xml e adicione as seguintes TAGS:

 

Código:

<event type="death" name="PlayerPokeDeath" event="script" value="playerpdeath.lua"/>

<event type="death" name="DiePoke" event="script" value="goback.lua"/>

<event type="logout" name="LogoutPoke" event="script" value="goback.lua"/>

<event type="login" name="LoginPoke" event="script" value="goback.lua"/>

Catch Pokemon System By: MatheusMkalo

 

Vá em data/actions/scripts e adicione um arquivo.lua com o nome de goback.lua

Depois de ter feito isso, adicione o seguinte script no arquivo goback.lua:

 

Código:

local pokes = **

["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200**,

["Dragon Lord"] = {corpseid = 5984, chance = 100, health = 12200, maxhealth = 12200**,

["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200**,

**

 

local time = 4 -- Tempo para mandar as mensagens e adiciona item

 

function onUse(cid, item, frompos, item2, topos)

for i,x in pairs(pokes) do

if item2.itemid == x.corpseid then

doRemoveItem(item.uid, 1)

doRemoveItem(item2.uid, 1)

if math.random(1,100) <= x.chance then

function add()

local s = doPlayerAddItem(cid, pokein)

doItemSetAttribute(s, "poke", "This is "..i.."'s pokeball. HP = ["..x.health.."/"..x.maxhealth.."]")

doItemSetAttribute(s, "description", "Contains a " .. i)

end

doSendMagicEffect(topos, 24)

addEvent(add, time*1000)

return addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "You catch a " .. i .. ".")

else

addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "Your pokeball broke.")

return doSendMagicEffect(topos, 23)

end

end

end

return TRUE

end

Depois adicione a seguinte TAG no actions.xml:

 

Código:

<action itemid="2147" event="script" value="catch.lua"/>

Sendo 2147, o id da sua pokebola para capturar pokemons (NAO A DE CHAMAR O POKEMON)

 

Npc Healler By: MatheusMkalo

 

Vá em data/npc/scripts e adicione um arquivo.lua com o seguinte script

 

Código:

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = ****

 

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end

 

function creatureSayCallback(cid, type, msg)

 

if(not npcHandler:isFocused(cid)) then

return false

end

 

if msgcontains(msg, 'heal') then

if #getCreatureSummons(cid) >= 1 then

return selfSay('Voce precisa botar seus pokemons dentro da pokebola.', cid)

end

 

for slo = CONST_SLOT_FIRST, CONST_SLOT_LAST do

local item = getPlayerSlotItem(cid, slo)

if isContainer(item.uid) then

local items = getItemsInContainerById(item.uid, pokeout)

for i,x in pairs(items) do

local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]"))

doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]")

doTransformItem(x, pokein)

end

local items2 = getItemsInContainerById(item.uid, pokein)

for i,x in pairs(items2) do

local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]"))

doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]")

end

 

elseif item.itemid == pokeout or item.itemid == pokein then

local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))

doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]")

doTransformItem(item.uid, pokein)

end

end

 

selfSay('Pronto, voce e seus pokemons estao com a life maxima.', cid)

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Depois va ate a pasta data/npc e adicione um arquivo.xml e bote isso dentro:

 

Código:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Pokemon Healer" script="pokehealer.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="128" head="17" body="54" legs="114" feet="0" addons="2"/>

<parameters>

<parameter key="message_greet" value="Ola, diga {heal** para recuperar sua vida e a vida dos seus pokemons."/>

</parameters>

</npc>

Surf System By: MatheusMkalo

 

Vá em data/actions/scripts e crie um arquivo.lua com o nome de surf e bote esse script dentro:

 

Código:

function onUse(cid, item, frompos, item2, topos)

local configs = **

[4647] = {x = -2, y = 0**, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0**, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2**, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2**, -- 4644 é o id da borda norte (acima do player)

**

 

local playerpos = getCreaturePosition(cid)

local pokes = **

["Dragon"] = {lookType=267, speed = 1500**,

["Rat"] = {lookType=267, speed = 500**,

**

 

if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then

return doPlayerSendCancel(cid, "You need a pokemon to surf.")

end

 

l = false

for i,x in pairs(pokes) do

if getPlayerStorageValue(cid, 63215) <= 0 and i:lower() == getCreatureName(getCreatureSummons(cid)[1]):lower() then

l = true

end

end

 

if not l and getPlayerStorageValue(cid, 63215) <= 0 then

return doPlayerSendCancel(cid, "This pokemon can't surf.")

end

 

if getPlayerStorageValue(cid, 63215) <= 0 then

doTeleportThing(cid, {x=playerpos.x+configs[item2.itemid].x, y=playerpos.y+configs[item2.itemid].y, z=playerpos.z**)

setPlayerStorageValue(cid, 63215, 1)

doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1)

doCreatureSay(cid, "Let's surf, "..getCreatureName(getCreatureSummons(cid)[1]), 1)

setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))

setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))

doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed)

doRemoveCreature(getCreatureSummons(cid)[1])

else

doTeleportThing(cid, {x=playerpos.x-configs[item2.itemid].x, y=playerpos.y-configs[item2.itemid].y, z=playerpos.z**)

setPlayerStorageValue(cid, 63215, 0)

doRemoveCondition(cid, CONDITION_OUTFIT)

local item = getPokeOutLive(cid)[1]

doCreatureSay(cid, "Im tired of surf, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1)

pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid))

doConvinceCreature(cid, pk)

registerCreatureEvent(pk, "DiePoke")

registerCreatureEvent(cid, "PlayerPokeDeath")

registerCreatureEvent(cid, "LogoutPoke")

setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61209))

doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61209))

doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61210)-getPlayerStorageValue(cid, 61209))

doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid))

end

return TRUE

end

Depois va em actions.xml e adicione essa tag:

 

Código:

<action itemid="4647;4645;4646;4644" event="script" value="surf.lua"/>

OBS:Todos os scripts mudaram para implementar o surf, atualize-os

OBS2: Para funcionar o id da agua tem que ser 4820.

 

Para usar basta clicar na borda da agua.

 

Evolution System By: MatheusMkalo

 

Vá em data/actions/scripts e adicione um script.lua com o nome de evolution.lua e bote esse script:

 

Código:

local pokes = **

["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000**,

**

 

local types = **

["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"**,

["Venom"] = {itemid = 2278, "Zubat", "Ekans"**,

["*******"] = {itemid = 2279, "Magnemite", "Pikachu"**,

["Rock"] = {itemid = 2280, "Geodude", "Graveler"**,

["Punch"] = {itemid = 2281, "Machop", "Machoke"**,

["Leaf"] = {itemid = 2276, "Ivysaur"**,

["****"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"**,

["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"**,

["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"**,

 

 

["Darkness"] = {itemid = 2286, "Gastly", "Haunter"**,

["Earth"] = {itemid = 2287, "Cubone"**,

["Enigma"] = {itemid = 2288, "Abra", "Kadabra"**,

["Heart"] = {itemid = 2289, "Rattata", "Pidgey"**,

["Ice"] = {itemid = 2290, "Seel"**,

**

 

 

function onUse(cid, item, frompos, item2, topos)

for i,x in pairs(types) do

if item.itemid == x.itemid then

if isCreature(item2.uid) then

if isPlayerSummon(cid, item2.uid) then

if table.find(x, getCreatureName(item2.uid)) then

if getPlayerLevel(cid) >= pokes[getCreatureName(item2.uid)].level then

local pokeball = getPokeOutLive(cid)[1]

local slo = pokes[getCreatureName(item2.uid)].maxh

local sle = pokes[getCreatureName(item2.uid)].evolution

doItemSetAttribute(pokeball, "description", "Contains a " .. pokes[getCreatureName(item2.uid)].evolution)

doPlayerSendTextMessage(cid, 27, "Your "..getCreatureName(item2.uid).." evolued to a "..pokes[getCreatureName(item2.uid)].evolution)

doSendMagicEffect(topos, 18)

doItemSetAttribute(pokeball, "poke", "")

doItemSetAttribute(pokeball, "poke", "This is "..pokes[getCreatureName(item2.uid)].evolution.."'s pokeball. HP = ["..pokes[getCreatureName(item2.uid)].maxh.."/"..pokes[getCreatureName(item2.uid)].maxh.."]")

doRemoveCreature(item2.uid)

local pk = doSummonCreature(sle, topos)

registerCreatureEvent(pk, "DiePoke")

registerCreatureEvent(cid, "PlayerPokeDeath")

registerCreatureEvent(cid, "LogoutPoke")

doConvinceCreature(cid, pk)

setCreatureMaxHealth(pk, slo)

setPlayerStorageValue(cid, 61204, 1)

doCreatureAddHealth(pk, slo)

doRemoveItem(item.uid, 1)

break

else

return doPlayerSendCancel(cid, "You need to be level "..pokes[getCreatureName(item2.uid)].level.." or higher to use this stone in this pokemon.")

end

end

end

end

end

end

return TRUE

end

Depois vá em actions.xml e adicione esta tag:

 

Código:

<action itemid="2276;2277;2278;2279;2280;2281;2283;2284;2285;2286;2287;2288;2289;2290" event="script" value="evolution.lua" allowfaruse="1"/>

Fly System By: MatheusMkalo, Credits: Mock

 

Vá em data/talkactions/scripts e adicione um arquivo.lua com o nome de fly e bote esse script:

 

Código:

function onSay(cid, words, param)

local pokes = **

["Dragon"] = {lookType = 216, speed = 500**,

**

 

if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 then

doPlayerSendCancel(cid, "You need a pokemon to fly.")

end

 

if getPlayerStorageValue(cid, 62314) <= 0 and not pokes[getCreatureName(getCreatureSummons(cid)[1])] then

return doPlayerSendCancel(cid, "This pokemon can't fly.")

end

 

if getPlayerStorageValue(cid, 62314) <= 0 then

doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1)

doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed)

setPlayerStorageValue(cid, 61263, getCreatureMaxHealth(getCreatureSummons(cid)[1]))

setPlayerStorageValue(cid, 61262, getCreatureHealth(getCreatureSummons(cid)[1]))

setPlayerStorageValue(cid, 62314, 1)

registerCreatureEvent(cid, "LogoutPoke")

doCreatureSay(cid, "Let's fly, "..getCreatureName(getCreatureSummons(cid)[1]), 1)

doRemoveCreature(getCreatureSummons(cid)[1])

local ppos = getCreaturePos(cid)

local newpos = {x=ppos.x, y=ppos.y, z = 0**

doCreateTile(460, newpos)

doTeleportThing(cid, newpos)

for i = 1,8 do

doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i)

end

elseif getPlayerStorageValue(cid, 62314) >= 1 then

local ppos = getCreaturePosition(cid)

 

p = true

for i = 1,17 do

 

if getTileThingByPos({x=ppos.x, y=ppos.y, z=ppos.z+i**).itemid ~= 0 and not isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i**) then

p = false

break

end

 

if isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i**) then

l = ppos.z + i

break

end

end

 

if not p or getTileThingByPos({x=ppos.x, y=ppos.y, z=l**).itemid == 4820 then

return doPlayerSendCancel(cid, "You can't down in there.")

end

 

for i = 1,8 do

doRemoveTile(getPosDirs(getCreaturePosition(cid), i))

end

 

setPlayerStorageValue(cid, 62314, 0)

doTeleportThing(cid, {x=ppos.x, y=ppos.y, z=l**)

doRemoveTile(ppos)

local item = getPokeOutLive(cid)[1]

pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid))

doConvinceCreature(cid, pk)

doCreatureSay(cid, "I'm tired of fly, "..getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1)

registerCreatureEvent(pk, "DiePoke")

registerCreatureEvent(cid, "PlayerPokeDeath")

setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61263))

doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61263))

doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61262)-getPlayerStorageValue(cid, 61263))

doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid))

doRemoveCondition(cid, CONDITION_OUTFIT)

end

return TRUE

end

Depois bote essa tag no talkaction.xml:

 

Código:

<talkaction words="!fly" event="script" value="fly.lua"/>

Va em data/movements/scripts e crie um arquivo.lua com o nome de fly.lua e bote:

 

Código:

function onStepIn(cid, item, position, fromPosition)

local actions = **

[65120] = {del = {4,5,6**, add = {1,2,8****,

[65121] = {del = {8,7,6,5,4**, add = {8,1,2,3,4****,

[65122] = {del = {8,7,6**, add = {2,3,4****,

[65123] = {del = {2,1,8,7,6**, add = {6,5,4,3,2****,

[65124] = {del = {2,1,8**, add = {4,5,6****,

[65125] = {del = {8,1,2,3,4**, add = {8,7,6,5,4****,

[65126] = {del = {2,3,4**, add = {8,7,6****,

[65127] = {del = {6,5,4,3,2**, add = {6,7,8,1,2****,

**

local configs = actions[item.actionid]

 

for i = 1,8 do

if table.find(configs.del, i) then

doRemoveTile(getPosDirs(fromPosition, i))

end

doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i)

end

return TRUE

end

Depois va em movements.xml e adicione essa tag:

 

Código:

<movevent type="StepIn" actionid="65120;65121;65122;65123;65124;65125;65126;65127" event="script" value="fly.lua"/>

Para usar o fly diga !fly para descer e subir

 

Ride System By: MatheusMkalo

 

Vá em talkactions/scripts e crie um arquivo.lua com o nome de ride e bote esse script:

 

Código:

function onSay(cid, words)

local pokesride = **

["Dragon Lord"] = {lookType=4, speed = 3000**,

["Dragon"] = {lookType=4, speed = 500**,

**

 

if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then

return doPlayerSendCancel(cid, "You need a pokemon to ride.")

end

 

if not canSummon(cid) and getPlayerStorageValue(cid, 59987) >= 1 then

return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM)

end

 

local sname = #getCreatureSummons(cid) >= 1 and getCreatureName(getCreatureSummons(cid)[1]) or nil

if sname ~= nil and pokesride[sname] and getPlayerStorageValue(cid, 59987) <= 0 then

doSetCreatureOutfit(cid, pokesride[sname], -1)

doChangeSpeed(cid, pokesride[sname].speed)

doCreatureSay(cid, "Let's ride, " .. sname, 1)

setPlayerStorageValue(cid, 59987, 1)

setPlayerStorageValue(cid, 59988, getCreatureHealth(getCreatureSummons(cid)[1]))

setPlayerStorageValue(cid, 59989, getCreatureMaxHealth(getCreatureSummons(cid)[1]))

doRemoveCreature(getCreatureSummons(cid)[1])

elseif getPlayerStorageValue(cid, 59987) >= 1 then

setPlayerStorageValue(cid, 59987, 0)

doRemoveCondition(cid, CONDITION_OUTFIT)

local item = getPokeOutLive(cid)[1]

doCreatureSay(cid, "Im tired of ride, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1)

pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid))

doConvinceCreature(cid, pk)

registerCreatureEvent(pk, "DiePoke")

registerCreatureEvent(cid, "PlayerPokeDeath")

registerCreatureEvent(cid, "LogoutPoke")

setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 59989))

doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59989))

doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59988)-getPlayerStorageValue(cid, 59989))

doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid))

end

return TRUE

end

Agora bote essa tag em talkactions.xml:

 

Código:

<talkaction words="!ride" event="script" value="ride.lua"/>

Pra usar o ride é so falar !ride. Para configurar os pokemons é praticamente igual ao surf.

 

Configurando os scripts

 

Como adicionar mais pokemons no go/back:

 

No inicio do script, tem essa tabela com as informaçoes:

 

local pokes = **

["Dragon"] = {level = 150, msgs = **"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"****,

["Demon"] = {level = 500, msgs = **"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"****,

["Dragon Lord"] = {level = 300, msgs = **"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"****,

**

Copie a ultima linha (vermelha) e cole logo abaixo, editando os nomes e as mensagens ficando assim:

 

local pokes = **

["Dragon"] = {level = 150, msgs = **"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"****,

["Demon"] = {level = 500, msgs = **"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"****,

["Dragon Lord"] = {level = 300, msgs = **"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"****,

["Dragon Lord"] = {level = 300, msgs = **"Essa mensagem pode ser sortiada 1", "Essa mensagem pode ser sortiada 2"****,

**

Voce pode configurar o level para usar o poke mudando o valor de level.

 

Configurando pokemons para o catch

 

Olhe a tabela no inicio do script:

 

local pokes = **

["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200**,

["Dragon Lord"] = {corpseid = 2881, chance = 100, health = 12200, maxhealth = 12200**,

["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200**,

**

Faça o mesmo processo do acima de copiar e colar embaixo e editar:

 

local pokes = **

["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200**,

["Dragon Lord"] = {corpseid = 2881, chance = 100, health = 12200, maxhealth = 12200**,

["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200**,

["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200**,

**

Aonde as informaçoes corpseid, chance, health, maxhealth serao, respectivamente: Id do corpo do monstro, Chance de capturar em %, health que o pokemon iria ir pro player, e health maxima que o poke iria ir para o player.

 

Como trocar os ids das pokebolas, acesas e apagadas.

Para trocar o id da pokebola "acesa" e "apagada" basta mudar os ids 2222,2223 na lib sendo que 2222 eh o da acesa e o 2223 eh o id da apagada

 

Mude tambem na tag do action.xml que seu script ira funcionar perfeitamente.

 

Como adicionar mais bordas ao surf.

 

Primeiramente va em actions.xml e adicione os ids das bordas na tag do surf: (Eu fiz com a borda de areia)

 

<action itemid="4647;4645;4646;4644;4632;4633;4634;4635" event="script" value="surf.lua"/>

Depois va no script surf.lua em actions e repare nessa parte:

 

local configs = **

[4647] = {x = -2, y = 0**, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0**, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2**, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2**, -- 4644 é o id da borda norte (acima do player)

**

Copie todas as 4 bordas e cole abaixo ficando:

 

local configs = **

[4647] = {x = -2, y = 0**, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0**, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2**, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2**, -- 4644 é o id da borda norte (acima do player)

 

[4647] = {x = -2, y = 0**, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0**, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2**, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2**, -- 4644 é o id da borda norte (acima do player)

**

Depois mude os ids das bordas do lado << conforme as informaçoes do lado >>, ficando:

 

local configs = **

[4647] = {x = -2, y = 0**, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4645] = {x = 2, y = 0**, -- 4645 é o id da borda leste (lado direito do player)

[4646] = {x = 0, y = 2**, -- 4646 é o id da borda sul (abaixo do player)

[4644] = {x = 0, y = -2**, -- 4644 é o id da borda norte (acima do player)

 

[4633] = {x = -2, y = 0**, -- 4647 é o id da borda oeste (lado esquerdo do player)

[4635] = {x = 2, y = 0**, -- 4645 é o id da borda leste (lado direito do player)

[4634] = {x = 0, y = 2**, -- 4646 é o id da borda sul (abaixo do player)

[4632] = {x = 0, y = -2**, -- 4644 é o id da borda norte (acima do player)

**

Como adicionar mais pokes ao surf:

 

Va no script surf.lua em actions e repare nessa parte:

 

local pokes = **

["Dragon"] = {lookType=267, speed = 1500**,

["Rat"] = {lookType=267, speed = 300**,

**

Ai voce pode adicionar o pokemon pra surf e o outfit que ele vai te dar na agua copiando o de cima e colando logo abaixo e editando algumas coisas:

 

local pokes = **

["Dragon"] = {lookType=267, speed = 1500**,

["Rat"] = {lookType=267, speed = 300**,

["Demon"] = {lookType=268, speed = 600**,

**

Lembre-se de depois que acabar de editar toda a tabela no surf.lua, va no goback.lua em creaturescripts e substitua a tabela pokes, pela que esta na actions surf.lua:

 

...

function onLogin(cid)

local pokes = **

["Dragon"] = {lookType=267, speed = 1500**,

["Rat"] = {lookType=267, speed = 300**,

["Demon"] = {lookType=268, speed = 600**,

**

 

if getPlayerStorageValue(cid, 63215) >= 1 then

local item = getPlayerItemById(cid, TRUE, pokeout)

local a = getDescription(item.uid):match("This is (.-)'s pokeball.")

doSetCreatureOutfit(cid, pokes[tostring(a)], -1)

end...

Como adicionar mais pokes no evolution:

 

Repare nessa parte do script evolution.lua em actions:

 

local pokes = **

["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000**,

**

 

local types = **

["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"**,

["Venom"] = {itemid = 2278, "Zubat", "Ekans"**,

["*******"] = {itemid = 2279, "Magnemite", "Pikachu"**,

["Rock"] = {itemid = 2280, "Geodude", "Graveler"**,

["Punch"] = {itemid = 2281, "Machop", "Machoke"**,

["Leaf"] = {itemid = 2276, "Ivysaur"**,

["****"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"**,

["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"**,

["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"**,

["Darkness"] = {itemid = 2286, "Gastly", "Haunter"**,

["Earth"] = {itemid = 2287, "Cubone"**,

["Enigma"] = {itemid = 2288, "Abra", "Kadabra"**,

["Heart"] = {itemid = 2289, "Rattata", "Pidgey"**,

["Ice"] = {itemid = 2290, "Seel"**,

**

Bem voce deve copiar o primeiro monstro da tabela "pokes", e adicionar no final e mudar as configuraçoes:

 

local pokes = **

["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000**,

["Bulbasaur"] = {level = 30, evolution = "Ivysaur", maxh = 4000**,

**

Sendo level,evolution,maxh respectivamente, o level pra evoluir o poke, o nome da evoluçao, e a health maxima do pokemon evoluido.

 

Depois eh so adicionar o Nome do monstro que foi adicionado a tabela "pokes" na tabela "types", no lugar do type dele:

 

local types = **

["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"**,

["Venom"] = {itemid = 2278, "Zubat", "Ekans"**,

["*******"] = {itemid = 2279, "Magnemite", "Pikachu"**,

["Rock"] = {itemid = 2280, "Geodude", "Graveler"**,

["Punch"] = {itemid = 2281, "Machop", "Machoke"**,

["Leaf"] = {itemid = 2276, "Ivysaur", "Bulbasaur"**,

["****"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"**,

["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"**,

["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"**,

["Darkness"] = {itemid = 2286, "Gastly", "Haunter"**,

["Earth"] = {itemid = 2287, "Cubone"**,

["Enigma"] = {itemid = 2288, "Abra", "Kadabra"**,

["Heart"] = {itemid = 2289, "Rattata", "Pidgey"**,

["Ice"] = {itemid = 2290, "Seel"**,

**

Como adicionar mais pokes no fly:

 

Repare nas partes iguais no fly.lua (talkaction) e no goback.lua(creaturescripts):

 

fly.lua:

 

local pokein, pokeout = 2222,2223

function onSay(cid, words, param)

local pokes = **

["Dragon"] = {lookType = 216, speed = 500**,

**

goback.lua:

 

function onLogin(cid)

local pokes = **

["Dragon"] = {lookType=267, speed = 1500**,

["Rat"] = {lookType=267, speed = 500**,

**

 

local pokesfly = **

["Dragon"] = {lookType = 216, speed = 500**,

**

A unica coisa que mudou foi o nome da tabela, "pokes" e "pokesfly", para adicionar mais pokes no fly basta adicionar no fly.lua e botar igual no goback.lua

 

Informaçoes Importantes!!!

 

Para testar o script de catch que esta no topico, voce deve deletar as tags de encantamento de armas.

 

Para poder summonar os pokemons com o go/back, voce precisa ir no arquivo.xml do monstro e editar essa linha:

 

<flag convinceable="0"/>

Se estiver convinceable="0", mude para convinceable="1" ficando:

 

<flag convinceable="1"/>

Creditos Especiais:

Kydrai pela funçao "getItemsInContainerById"

MarcelloMkez

Mock por algumas funçoes do fly system dele.

 

----------------------------------------------------------

 

Servidor de Pokemon Com os Scripts Acima

 

Pokeserver Pokemon Flash

 

O Que contem no Servidor:

 

Código:

Surf 100%

Fly 100%

Ride 100%

Catch 100%

Stones 100%

Teleport 100%

Fishing 100% e balanceado

Todos os 151 pokemons, com ataques, vida, e hit's balanceados

Para teleportar diga !teleport "nomedacity, exemplo : !teleport "saffron

Arena pvp, acesso com o npc PVP ZONE, em saffron.

Npc em saffron que teleporta você a uma area de fishing muito boa.

Charmander, Squirtle e Bulbasaur como pokemons iniciais.

Novos Ataques para os pokemons

Novas magias para os pokemons

Stones dropando de pokemons selvagens

Mapa e Hunt's editadas

Novas hunt's adicionadas

Loot dos pokemons certos (não é mais sell item)

Alguns pokemons evoluindo com 2 stones, exemplo : Tentacool + water stone + venom stone = Tentacruel, Nidorino + venom stone + earth stone = Nidoking.

E mais algumas coisas.

Download Servidor

 

Código:

Download do server v2 (mirror 1) : Para visualizar o link é necessário se Registrar GRÁTIS! Clique aqui

 

Download do server v2 (mirror 2) : Para visualizar o link é necessário se Registrar GRÁTIS! Clique aqui

Download Client

 

Código:

Para visualizar o link é necessário se Registrar GRÁTIS! Clique aqui

Créditos Pokemon Flash

Créditos ao pessoal do pokeserver tfs 4.1

Para visualizar o link é necessário se Registrar GRÁTIS! Clique aqui

 

Deu bastante trabalho arrumar todas as tags a mão mas ta aí

Gostou? Agradeça não custa nada

Link para o comentário
Compartilhar em outros sites

Deu bastante trabalho arrumar todas as tags a mão mas ta aí

Gostou? Agradeça não custa nada

Que mentira, deu ctrl c ctrl v e nem olhou, nem colocou os links e nem editou.

 

Parabens, mais um tópico de Ripper ínutil :yes:

Link para o comentário
Compartilhar em outros sites

Boa noite.

 

Com a vinda desses servidores pokémons, sem dúvidas quaisquer tutorial seja ele voltado para configuração, vão ser todos bem acessados, pois existem muitos usuários com dúvidas na utilização do mesmo.

Porém seu tópico não está nada organizado, realmente está parecendo ctrl+c e ctr+v, como o parceiro acima relata.

Aconselho você melhor organizar seu topico, com imagens se possível, cores principalmente.

E parabéns pela iniciativa (Y)

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.