Malerba118 0 Postado 10 de Janeiro 2011 Compartilhar Postado 10 de Janeiro 2011 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 ᅠᅠMural de Coleçõesᅠᅠ Clique aqui e adquira suas medalhas Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
fabiopunk 0 Postado 10 de Janeiro 2011 Compartilhar Postado 10 de Janeiro 2011 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: ᅠᅠMural de Coleçõesᅠᅠ Clique aqui e adquira suas medalhas Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
TaLiBaaN 1 Postado 15 de Janeiro 2011 Compartilhar Postado 15 de Janeiro 2011 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) ᅠᅠMural de Coleçõesᅠᅠ Clique aqui e adquira suas medalhas Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados