Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 10/19/10 em %
-
[Systems] Pokemon Systems
VaizardX e um outro reagiu a MatheusGlad por um tópico no fórum
Scripts para TFS 0.3.6pl1 NAO FOI TESTADO EM OUTRA! Preview: Antes de tudo, va na pasta data/lib e adicione um script.lua com o nome de pokeLib e adicione isso: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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[i]) 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 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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <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 catch.lua Depois adicione o seguinte script dentro dele: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <?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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <action itemid="4647;4645;4646;4644" event="script" value="surf.lua"/> Ensinarei nos tutorias como adicionar novas bordas e botar cada pokemon com seu proprio outfit na agua. 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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000}, } local types = { ["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"}, ["Venom"] = {itemid = 2278, "Zubat", "Ekans"}, ["Thunder"] = {itemid = 2279, "Magnemite", "Pikachu"}, ["Rock"] = {itemid = 2280, "Geodude", "Graveler"}, ["Punch"] = {itemid = 2281, "Machop", "Machoke"}, ["Leaf"] = {itemid = 2276, "Ivysaur"}, ["Fire"] = {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: <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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <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: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- 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: <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: Copie a ultima linha (vermelha) e cole logo abaixo, editando os nomes e as mensagens ficando assim: Voce pode configurar o level para usar o poke mudando o valor de level. Configurando pokemons para o catch:[/b] Olhe a tabela no inicio do script: Faça o mesmo processo do acima de copiar e colar embaixo e editar: 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) Depois va no script surf.lua em actions e repare nessa parte: Copie todas as 4 bordas e cole abaixo ficando: Depois mude os ids das bordas do lado << conforme as informaçoes do lado >>, ficando: Como adicionar mais pokes ao surf: Va no script surf.lua em actions e repare nessa parte: 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: 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: Como adicionar mais pokes no evolution: Repare nessa parte do script evolution.lua em actions: Bem voce deve copiar o primeiro monstro da tabela "pokes", e adicionar no final e mudar as configuraçoes: 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: Como adicionar mais pokes no fly: Repare nas partes iguais no fly.lua (talkaction) e no goback.lua(creaturescripts): fly.lua: goback.lua: 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: Se estiver convinceable="0", mude para convinceable="1" ficando: Creditos Especiais: Kydrai pela funçao "getItemsInContainerById" MarcelloMkez Mock por algumas funçoes do fly system dele. Agradecimentos: D3rs00n (Me ajudou a fazer sumir o corpo do pokemon) Julio Cezar (Ajudou reportando bugs e testando scripts) Miih (Ajudou reportando bugs e testando scripts) Arth3miS (Ajudou reportando bugs e testando scripts) E para todos que reportaram bugs. Bugs, erros, duvidas, elogios no topico[/b]2 pontos -
[Oficial] Real Global Map hello Galerinha do Xtibia, Venho aqui desponibilizar o mapa do Doidin (8.57 Só que editado com minhas ideias e na versão 8.60 OBS: Para rodar esse servidor No seu pc voce tem que ter 2GB+ de memória ram e em bom estado. ( nao recomendo abrir o otserv com o mapa editor aberto junto). Real Global Map: - Versão do Tibia:8.60 - Mapa global 95% full. - Quase todos os NPC's do Tibia Global. - Servidor com o mínimo de bugs possíveis. - Scripts arrumados. - Entre outros... Cidades: Quest's: Oque tem de melhor que o servidor do Doidin? Quase nada pois ele copio minhas coisas x) Algumas Print Screen: para quem nao conseguiu abrir o spolier e gostaria de ver as SS link abaixo: print screen.txt Créditos: - Doohz Rush - Doidin - Alissow - DoidinMapper - RenanSdc - TFS Team - Styller Team - Alissow Team - Feragon - Viana! - Azevedo ATUALIZADO DIA 28/10/2010 Scan: Arquivo Muito grande para fazer scan. Remeres Mapa Editor 2.0 ( nao use outra versão ou vai bugar o mapa: Download Aqui! Doohz Rush Server : Download Aqui! OBS: FOI ARRUMADO TODOS OS LOOT'S DOS MONSTROS, E FOI ADICIONADO A NOVA AREA DE ZÃO (OS Draken elite etc, todos configurados perfeitamente ) Atualização 2.2; Arrumado os Teleport's dos Drakens; Editado os seal's da POI (+ parecido com global); adicionado 1 npc de runa em northern de ZAO; arrumada as Houses, e bugs de Cormaya; Retirado BUG de money; Arrumado detalhes do mapa. MSN: Doohz_rush@hotmail.com Gostou? REP+ Ali do lado :arrow:1 ponto
-
Base do evolution system do Kydrai ;~ ~~> Crie um arquivo com o nome de stones.lua em actions/sctips e cole isso dentro: local evo = { ["Pidgey"] = "Pidgeotto", -- Pidgey Evolui para Pidgeotto ["Pidgeotto"] = "Pidgeot", -- Pidgeotto evolui para pidgeot } function onUse(cid, item, fromPosition, itemEx, toPosition) if isMonster(itemEx.uid) and getCreatureMaster(itemEx.uid) == cid then local monster = getCreatureName(itemEx.uid) if evo[monster] then local health, maxHealth = getCreatureHealth(itemEx.uid), getCreatureMaxHealth(itemEx.uid) doRemoveCreature(itemEx.uid) doRemoveItem(item.uid) local summon = doCreateMonster(evo[monster], toPosition) doConvinceCreature(cid, summon) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "name", ""..evo[monster].." Pokeball") doCreatureAddHealth(summon, health-maxHealth) doSendMagicEffect(getThingPos(summon), 18) doPlayerSendTextMessage(cid, 27, "Your "..monster.." evolued to a "..evo[monster]..", Congratulations.") doSendMagicEffect(getThingPos(cid), 28) else doPlayerSendCancel(cid, 'Pokemon not allowed.') doSendMagicEffect(getThingPos(cid), 2) return TRUE end end return FALSE end ~~> Em Actions.xml add: xxxx - ID da stone. OBS: o item tem que ser usable , traduzindo : tem que ter a opção Use With... GOSTOU? REP++ *-*1 ponto
-
Bom galera, é um sistema de go/back, catch , NPC heal Meu sistema de ride funciona 100% com esse script do go/back... -- GO/BACK-- ~~> Crie um arquivo goback.lua em action/scripts e cole isso dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) function getPokemonMaxLife(name) local file = io.open('data/monster/monsters.xml','r') local arquivo = file:read(-1):lower():match('<monster name="'..name:lower()..'" file="(.-)"/>') file:close() local data = io.open('data/monster/'..(arquivo or ''),'r') if not data then return 100 end local maximo = data:read(-1):match('max%s*=%s*"(%d+)"') data:close() return maximo end ----- Config ----- local MaximoSummon = 1 local nome1 = getItemName(item.uid) local nome = nome1:match('(.-) Pokeball') local summons = getCreatureSummons(cid) local action_id = getItemAttribute(item.uid, "aid") ------ Config ----- local summons = getCreatureSummons(cid) if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then doPlayerSendCancel(cid, "Coloque no slot certo!.") return TRUE end if getItemAttribute(item.uid,"level") >= getPlayerLevel(cid) then doPlayerSendCancel(cid, "You dont have level to use.") return TRUE end if(table.maxn(summons) < MaximoSummon) then -- no summons creature = doSummonCreature(nome, getCreaturePosition(cid)) doConvinceCreature(cid, creature) local hp = getCreatureHealth(getCreatureSummons(cid)[1]) doItemSetAttribute(getPlayerSlotItem(cid,8).uid,"aid",hp) doPlayerSay(cid, "Go,"..nome.."", TALKTYPE_SAY) registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(creature, "DiePoke") doSendMagicEffect(getCreaturePosition(creature), 188) doTransformItem(getPlayerSlotItem(cid,8).uid, 2531, 1) doItemSetAttribute(getPlayerSlotItem(cid,8).uid,"name",""..nome.." Pokeball") if action_id ~= 0 then doCreatureAddHealth(creature, -(tonumber(getPokemonMaxLife(nome) - action_id))) else doCreatureAddHealth(creature, getPokemonMaxLife(nome)) end else for _, pid in ipairs(summons) do if (table.maxn(summons) >= 1) then doItemSetAttribute(item.uid, "aid", getCreatureHealth(summons[1])) doSendMagicEffect(getCreaturePosition(creature), 188) doPlayerSay(cid, "Back,"..nome.."", TALKTYPE_SAY) doRemoveCreature(pid) doTransformItem(getPlayerSlotItem(cid,8).uid, 2532, 1) doItemSetAttribute(getPlayerSlotItem(cid,8).uid,"name", nome .." Pokeball") end end end return true end ~~> Em actions.xml add: <action itemid="2520" event="script" value="goback.lua"/> <action itemid="2531" event="script" value="goback.lua"/> <action itemid="2532" event="script" value="goback.lua"/> ~~> Em itens.xml procure por: <item id="2531" article="a" name="viking shield"> <attribute key="weight" value="6600"/> <attribute key="defense" value="22"/> <attribute key="weaponType" value="shield"/> </item> E substitui por : <item id="2531" article="a" name="Pokeball 1"> <attribute key="slotType" value="feet" /> </item> Agora procure por : <item id="2532" article="an" name="ancient shield"> <attribute key="weight" value="6100"/> <attribute key="defense" value="27"/> <attribute key="weaponType" value="shield"/> </item> E substitui por: <item id="2532" article="a" name="Pokeball 2"> <attribute key="slotType" value="feet" /> </item> Agora procure por : <item id="2520" article="a" name="demon shield"> <attribute key="description" value="This powerful shield seems to be as light as air."/> <attribute key="weight" value="2600"/> <attribute key="defense" value="35"/> <attribute key="weaponType" value="shield"/> </item> E substitui por : <item id="2520" article="a" name="Pokeball Goback"> <attribute key="slotType" value="feet" /> </item> Agora procure por : <item id="2535" article="a" name="castle shield"> <attribute key="weight" value="4900"/> <attribute key="defense" value="28"/> <attribute key="weaponType" value="shield"/> </item> E substitiu por: <item id="2535" article="a" name="Die Pokeball"> <attribute key="slotType" value="feet" /> </item> -- CATCH SYSTEM -- ~~>Em actions/script crie um arquivo catch.lua e cole dentro: local function capturou(params) doSendMagicEffect(getCreaturePosition(params.cid), 173) doPlayerSendTextMessage(params.cid, 25, 'Você capturou um pokemon! ('..params.monster..').') item = doCreateItemEx(2520) doItemSetAttribute(item, "name", ""..params.monster.." Pokeball") doItemSetAttribute(item, "aid", params.hp) doItemSetAttribute(item, "level", params.level) doPlayerAddItemEx(params.cid, item, true) end local level = { ['chansey'] = 15, -- level minimo para usar o pokemon ['squirtle'] = 15, -- level minimo para usar o pokemon ['charmander'] = 15, -- level minimo para usar o pokemon } function onUse(cid, item, fromPosition, itemEx, toPosition) local monster = getItemName(itemEx.uid):match("dead (.*)") if not monster then return doPlayerSendCancel(cid, 'Sorry, use only pokemon dead') and doSendMagicEffect(fromPosition, 2) end ball = 2520 local hpmax = 0 if itemEx.itemid == 6008 then if math.random(1,100) >= 1 then doRemoveItem(itemEx.uid) doSendMagicEffect(toPosition, 24) doRemoveItem(item.uid, 1) addEvent(capturou, 4000, {cid = cid, monster = monster, level = level[monster], ball = ball, hp = hpmax}) else doRemoveItem(itemEx.uid) doRemoveItem(item.uid, 1) doSendMagicEffect(toPosition, 23) end elseif itemEx.itemid == 6010 then if math.random(1,100) >= 1 then doRemoveItem(itemEx.uid) doSendMagicEffect(toPosition, 24) doRemoveItem(item.uid, 1) addEvent(capturou, 4000, {cid = cid, monster = monster, level = level[monster], ball = ball, hp = hpmax}) else doRemoveItem(itemEx.uid) doRemoveItem(item.uid, 1) doSendMagicEffect(toPosition, 23) end end return TRUE end ~~Editando o Catch ~~ elseif itemEx.itemid == 6010 then ~>6010 é o id do corpo do pokemon que o script ira tentar capturar. if math.random(1,100) >= 1 then ~>o 1 siginifica que ele tem 1% de chance de não capturar , que tem 99% de chance de captura, se for 10 tem 90%,se 20 tem 80%.... <~~~~~~~~~~> <~~~~~~~~~~> E em actions.xml add isto: <action itemid="xxxx" event="script" allowfaruse="10" value="catch.lua"/> Em xxxx é o numero da pokeball que captura. -- CREATURE SCRIPTS -- ~~> Em creaturescripts/scripts crie um arquivo chamado goback.lua e cole isso dentro: local pokein, pokeout = 2535,2531 function onDeath(cid, deathList) local owner = getCreatureMaster(cid) doPlayerSendTextMessage(owner, 21, "You pokemon died.") local item = getPlayerItemById(owner, TRUE, pokeout) doTransformItem(item.uid, pokein) doRemoveCreature(cid) return FALSE end ~~> Agora na mesma pasta crie outro arquivo chamado morrer.lua e cole isso dentro: local pokein, pokeout = 2532,2531 function getSummonLifes(cid) for _,x in pairs(getCreatureSummons(cid)) do return getCreatureHealth(x), getCreatureMaxHealth(x) end end 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, 61207, 1) end return TRUE end Em creaturescripts.xml add isto: <event type="death" name="PlayerPokeDeath" event="script" value="morrer.lua"/> <event type="death" name="DiePoke" event="script" value="goback.lua"/> --NPC HEALER-- Em npc/scripts crie um arquivo chamado heal.lua e cole isso: local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false dofile("data/actions/scripts/reviver.lua") function onThingMove(creature, thing, oldpos, oldstackpos, item, itemEx) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end function getPokemonMaxLife(name) local file = io.open('data/monster/monsters.xml','r') local arquivo = file:read(-1):lower():match('<monster name="'..name:lower()..'" file="(.-)"/>') file:close() local data = io.open('data/monster/'..(arquivo or ''),'r') if not data then return 100 end local maximo = data:read(-1):match('max%s*=%s*"(%d+)"') data:close() return maximo end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then local idballs = { [2535] = {"Pokeball"}, [2531] = {"Pokeball"}, [2532] = {"Pokeball"}, } local balls = idballs[getPlayerSlotItem(cid,8).itemid] if #getCreatureSummons(cid) >= 1 then return selfSay('Voce precisa botar seus pokemons dentro da pokebola.', cid) end if balls == nill then return selfSay('Coloque seu pokemon slot da Pokeball para ele ser curado!!') end if balls ~= nill then local nome = getItemName(getPlayerSlotItem(cid,8).uid) local poke_name = nome:match('(.-) Pokeball') doItemSetAttribute(getPlayerSlotItem(cid,8).uid, "aid", getPokemonMaxLife(poke_name)) if getPlayerStorageValue(cid, 5555) == 0 then setPlayerStorageValue(cid, 5555, 1) end local hp = getCreatureMaxHealth(cid) doCreatureAddHealth(cid, hp) selfSay('Você e seu pokemon estão curados!!') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'healing') then end elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Volte Sempre,') focus = 0 talk_start = 0 end end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 20 then if focus > 0 then end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Bye.') focus = 0 end end end E no em npc crie um arquivo chamado heal.xml e cole isto dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Heal" script="data/npc/scripts/heal.lua" access="3" floorchange="0" walkinterval="0"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="180" head="78" body="113" legs="114" feet="0"/> </npc> AAh, já ia me esquecendo, volte em actions/scripts crie um arquivo chamado reviver.lua e cole isso dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) function getPokemonMaxLife(name) local file = io.open('data/monster/monsters.xml','r') local arquivo = file:read(-1):lower():match('<monster name="'..name:lower()..'" file="(.-)"/>') file:close() local data = io.open('data/monster/'..(arquivo or ''),'r') if not data then return 100 end local maximo = data:read(-1):match('max%s*=%s*"(%d+)"') data:close() return maximo end ----- Config ----- local MaximoSummon = 1 local nome = getItemName(item.uid) local poke_name = nome:match('(.-) Pokeball') local summons = getCreatureSummons(cid) local action_id = getItemAttribute(item.uid, "aid") ----- Config ----- local summons = getCreatureSummons(cid) if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then doPlayerSendCancel(cid, "Sorry, you must put your pokeball in the right place.") return TRUE end if getPlayerStorageValue(cid, 5555) == 1 then setPlayerStorageValue(cid, 5555, 0) doTransformItem(item.uid, 2531) doItemSetAttribute(item.uid, "aid", getPokemonMaxLife(poke_name)) else doPlayerSendCancel(cid, "You poke are Dead.") end return true end E no actions.xml add isto: <action itemid="2535" event="script" value="reviver.lua"/> -------> FIM <------- Dúvidas ? Poste Aqui =D1 ponto
-
Crystal Server Venho até aqui para lhes trazer o Crystal Server (Ice Fenix) O mapa deste servidor é o Evolutions, mas estamos desenvolvendo um próprio, caso você esteja afim de usar este mapa Evolutions você pode ultilizar, mas é bom verificarem se há bugs no mapa, pois não nos preucupa-mos com este mapa, apenas com o servidor. Para reportar bugs (Link Removido) Evite flood neste tópico [ CHANGELOG Project Name Crystal Server Version: 0.2.2 Codename: Ice Fenix License: GNU GPLv3 ] [ 0.1.0 A = Tag "log" para commandos (Tryller) A = Protocolo 8.54 (SVN, Tryller) A = Items 8.54 (SVN, Tryller) A = Outfits 8.54 (SVN, Tryller) A = Novos values para weapons (sword, axe, club, rod)(Tryller) A = Comando /premium playername days para GOD's (Tryller) A = Novos commandos para players (Tryller) A = Novas configurações para account manager (Tryller) A = Novas configurações para guilds (Tryller) A = Novas configurações para o sistema de premium account (Tryller) A = Novas configurações para critical hit (Tryller) A = Novas configuraçoes para sistema de cap (Tryller) M = Talkactions setWorldType /pvp, /clean, /B, /i , /n., /bc, /closeserver, /openserver, /m, /summon (Tryller) M = MOD buypremium (Tryller) D = Talkactions em lua /mode, !pvp, !q, !uptime, /clean, !serverinfo, /b, /i, /bc, openserver & /closeserver, /s, !commands (Tryller) D Em data/MODS changender_command.xml, custommonsters.xml, customspells.xml, firstitems.xml, highscorebook.xml (Tryller) D = No distro blacklist code, file's protocolhttp (Tryller) ] [ 0.1.1 A = Todos os outfits e addons (Tryller) A = Novo npc de addons (Tryller) A = Novas funçoes para talkactions (Tryller) C = Spell spaming (TFS, Tryller) C = Recuperação da premium stamina (TFS) C = Skull yellow (TFS) C = Ghost mode (TFS) C = Todos os possiveis crashs (TFS, Tryller) C = Outfits.xml (Tryller) D = Commands.xml (Tryller) D = Preço e numero de dias premium do config.lua (Tryller) ] [ 0.1.3 A = Versão GUI do executavel (Tryller) A = Mnu "About" na versão GUI, lá você encontra informações sobre o servidor (Tryller) A = Novo sistema para verificar se o servidor está atualizado, (Tryller) C = Problema de incompatibilidade com Gesior account maker (Tryller) ] [ 0.1.3 A = Commands.xml (Tryller) A = reloads para commands.xml (Tryller) A = Warsystem adicionado nas sources (TFS, Tryller) A = Adicionado "emblem" para monstros e npcs (TFS, Tryller) M = Agora commandos e talkactions não são mais definidos por "access" e sim por "group" (Tryller) C = Arrumado problema com QuestLog (Tryller) D = "access" dos commandos e talkactions (Tryller) ] [ 0.1.8 A = 8.62 Protocolo suport (SVN) A = 8.60 Items (SVN) A = Sistema de cap configuravel no config.lua (Tryller) C = death debug (TFS) C = sqlite bug em disband guild (TFS) C = unified spells typo (TFS) C = bug que poderia ser usado para criar items (TFS) ] [ 0.1.9 A = Novas configurações para o account manager no config.lua (Tryller) A = Guild Wars funcionando perfeitamente (TFS, Tryller) A = Database atualizando automaticamente para adicionar o guild wars sem resetar o server (Tryller, TFS) A = Sistema de noticias, para ver uma noticia use !notice, e para editar vá no arquivo data/XML/notices.xml (Tryller) A = Mais items 8.6 funcionando corretamente - armors - shields - swords e mais... (Tryller) M = Loot dos monstros não cai mais bag, e já cai amontoado (Tryller) M = Legion helmet não dropa mais de rotworms (Tryller) M = Nome dos items de beholder agora é bonelord (Tryller) M = Agora os player já ganham acesso à todas as outfits apenas pagando premium (Tryller) ] [ 0.2.0 A = Adicionado sistema de VIP - 2 novas funções lua - getPlayerVipDays(cid), doPlayerAddVipDays(cid, days) - comandos do vip system /vip playerName, 1, adiciona 1 dia de VIP ao player, !vip mostra quantos dias vip o player possui (Tryller) A = Adicionado comando para GOD's adicionar premium ao player /premium playerName, 1, adiciona 1 dia de premium ao player (Tryller) A = 2 novas funções lua - getCreatureStorage() & getCreatureStorageList(cid) (TFS) A = NPC de Addon C = Corrigido bug no Global Save - em alguns casos, ele estava funcionando uma hora antes do previsto (TFS) C = Crash bug enquanto estiver usando impressão com null ou tables (TFS) C = Bug do sistema de noticias (TFS) M = Diminuiu o tempo de sleep quando o servidor inicia (de 10 segundos para 1 segundo) - Também foi alterado na SVN, então vamos ver se há alguma desvantagem (SVN) M = Aprimorado sistema de premium account (Tryller) M = data/talkactions/scripts/frags.lua (TFS) M = Mostrar a descrição do erro sqlite quando o servidor não conseguiu conexão M = data/lib/050-functions.lua - doSummonCreature function (TFS) M = Alterado as opções de reload, sem necessidade de reiniciar - experienceStages, useFragHandler, advancedFragList (TFS) ] [ 0.2.1 A = data/XML/commands.xml (Tryller) A = Todos os items 8.6 funcionando (items.xml) (SVN, Tryller) A = Versão para 8.60 (Tryller) A = Novos comandos - /addon - /bless (Tryller) C = Bugs em conexão MySql (Tryller) C = Bugs em houses (TFS, Tryller) C = Bugs em Guilds (TFS) C = Alguns erros com reloads (Tryller) C = Jewelled Backpack, antes tava key ring e não dava de usar como backpack (Tryller) C = Bug em spellbook of dark mysteries (Tryller) M = data/talkactions/talkactions.xml (Tryller) M = data/movements/scripts/citizen.lua (Tryller) M = data/items/items.xml (Tryller) M = data/movements/movements.xml (Tryller) M = data/weapowns/weapons.xml (Tryller) D = data/lib/000-constant.lua - reload types (Tryller) D = data/talkactions/scripts/reload.lua (Tryller) D = data/talkactions/scripts/commands.lua (Tryller) D = data/talkactions/scripts/mode.lua (Tryller) D = data/talkactions/scripts/pvp.lua (Tryller) S = Systema de verificação de versão do servidor (Tryller) ] [ 0.2.2 A = Novos comandos para players !exp, !mana, !r (Tryller) A = Mais items 8.6 adcionados - Corpses, Grounds (Picachu) C = Erros com sqlie (Tryller) C = Erro no war system (Tryller, Picachu) C = Eros em conexão (Tryller) C = Erros da versão 8.60 (Tryller) M = data/npc/lib - isto fará as libs de npc dos ot 8.5 compativeis com o servidor (Tryller) ] Download do Servidor (Links Removidos) Caso você goste do nosso trabalho add Rep++ O Servidor foi compilado com o war system, mas não liberei os scripts, caso queira os scripts faça uma doação no paypal para o endereço a baixo. Faça uma doação no paypal.com para ajudar nosso servidor, doe para shynzomapper@hotmail.com. acc do GOD é 222222/password Não troque a senha na database pois este servidor não usa mais password plain se você mudar lá vai dizer que a senha ta errada, você deve trocar a senha no Account Manager.1 ponto
-
[Action] Varinha Mágica *.*
Kydrai reagiu a MaXwEllDeN por um tópico no fórum
Bom, Sabe aquele varinha Mágica? 7735 ?, ainda não sabe? e agora? Bom, o script faz o seguinte: Se eu usar a varinha em uma dsm, ela vai se transformar em uma Demon Armor, se eu usar ela em uma Demon Armor ela vai virar uma DSM, se eu usar ela em um Cat ele vai virar o npc Obi, se eu usar no Obi, ele vai virar um Cat copie um arquivo qualquer e renomeie ele para Magic_Wand.lua, abra ele com o bloco de notas apague tudo que tiver dentro e cole isso lá: -- Script by MaXwEllDeN -- function onUse(cid,item,frompos,item2,topos) -- Inicio das Variaveis Configuraveis (: local item = {I_1 = 2494,-- Item 1, no caso Demon Armor I_2 = 2492} -- Item 2, no caso Dragon Scale Mail local Creature = { M_1 = 'Cat', -- Monstro 1, no caso Cat M_2 = 'Obi'} -- Monstro 2, no caso não é um Monstro, é um NPC, mas vc pode por pra monstro, ´so é editar o nome ai! -- Fim das Variaveis Configuraveis ): local localpos = getCreaturePosition(cid) if item2.itemid == item.I_1 then doTransformItem(item2.uid, item.I_2) doSendMagicEffect(topos, 31) doPlayerSendTextMessage(cid,22,"Você Transformou ".. getItemNameById(item.I_1) .." em ".. getItemNameById(item.I_2) .. ".") elseif item2.itemid == item.I_2 then doTransformItem(item2.uid, item.I_1) doSendMagicEffect(topos, 31) doPlayerSendTextMessage(cid,22,"Você Transformou ".. getItemNameById(item.I_2) .." em ".. getItemNameById(item.I_1) .. ".") elseif getCreatureName(item2.uid) == Creature.M_1 then doRemoveCreature(item2.uid) doSendMagicEffect(topos, 31) doSummonCreature(Creature.M_2, topos) doPlayerSendTextMessage(cid,22,"Você Transformou ".. Creature.M_1 .." em ".. Creature.M_2 .. ".") elseif getCreatureName(item2.uid) == Creature.M_2 then doRemoveCreature(item2.uid) doSendMagicEffect(topos, 31) doSummonCreature(Creature.M_1, topos) doPlayerSendTextMessage(cid,22,"Você Transformou ".. Creature.M_2 .." em ".. Creature.M_1 .. ".") else doPlayerSendTextMessage(cid,21,"Você só pode transformar ".. getItemNameById(item.I_1) .." em ".. getItemNameById(item.I_2) .. ", " .. Creature.M_1 .. " em " .. Creature.M_2 .. " e vice e versa!") doSendMagicEffect(localpos, 2) end end é isso ai pessoal (: Primeiro Script 100% que eu consegui resolver alguns erros :happy:1 ponto -
Faaaala Galera, Como vocês devem saber, ou pelo menos a maioria, há algum tempo está rolando edições especiais do CEM - Concurso de Edição de Mapas, trata-se de um concurso onde os melhores mappers se reúnem para ver quem faz o melhor mapa, e esses mapas serão adicionados na Cidade XTibia que será o inicio do Servidor Oficial do XTibia. Nós poderíamos simplesmente chamar os melhores mappers e já ter feito essa cidade, mas o intuito é fazer um mapa da comunidade, para a comunidade. E aí? Se interessou? Então clique aqui participe já deste concurso e faça história no XTibia!1 ponto
-
[8.6 - 8.61 - 8.62] Crystal Server V0.2.2
lucas051191 reagiu a Tryller por um tópico no fórum
auhauahauahuaha eu ri muito agora Não preciso postar virus não filho, Não vou queimar minha pessoa aqui no fórum por causa de um OT Mas ta aqui o scan pra você http://www.virustotal.com/file-scan/report.html?id=cc83e3549f8fac5362c1ebd4dcb89e906f5ec23955b44f280e4e1da61494c5d3-12875279841 ponto -
[Duvida] Criar Script Talkaction
SkyDangerous reagiu a Vodkart por um tópico no fórum
esse do teleport é script meu só que nesse caso é usado tabbles,mais pra frente vc vai ver isso... não entendi com oque vc quis dizer encontrar mais comandos if e do? vc quis dizer funções? :X abraços1 ponto -
na magia vc tem que adiciona um return TRUE function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 } addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 400, parameters) addEvent(onCastSpell3, 700, parameters) addEvent(onCastSpell4, 1000, parameters) addEvent(onCastSpell5, 1300, parameters) return TRUE end e no /attr é assim: /attr set attack "VALOR /attr set armor "VALOR /attr set defense "VALOR alguns comando: Alguns subcomandos de /attr. /attr set text "PrSEU TEXTO EM PLACAS destination (altera informações em magic forcefields (TPs)) health (altera a saúde em jogadores) mana (altera a mana em jogadores) group (altera o grupo do personagem) sex (altera o sexo do personagem) Fórmula: /attr subcomando quantidade. Exemplos: /attr group 6 /attr health 50 /attr action = fiqe na frente da porta e mude o level da porta ex: /attr action 1030 quando for esse numero o level nessesario é 10 e se for esse numero /attr action 10100 quer dizer q o level minimo é 100. /attr destination = faça um teleport e depois digite /attr destination 1 1 1 nos lugar do 1 1 1 q eu colokei coloke as coordenadas q vc quiser q seu teleport va. /attr skull group 0 =TIRA O PK ReD /attr name NOME <--- Muda o nome de um iten. Nao pode ter espaço. /attr group 6 <---- 6 e god, 5 gamemaster, 4 senior tutor, 3 tutor, 2 sla aushausha, 1 player. /attr skull 5 <---- 5 black, 4 red, 3 white, 2 green, 1 yellow, 0 nenhuma. /attr desc DESCRIÇAO /attr attackspeed 50 /attr protection <--- nao sei oque fas direito /attr droploot <---- nao dropa o loot do bixo /attr cannotmove <---- o bixo na move /attr vocation 1 <--- 1 = Sorcerer, 2 = Druid, 3 = Paladin, 4 = Knight.1 ponto
-
Faaaala Ékstibianos! Hoje teremos uma entrevista com um jogador muito conhecido no Tibia Global... Ele é conhecido por seus incontáveis records e façanhas dentro do mundo Tibiano, e o melhor, ELE É UM BRASILEIRO! Então, acho que vocês já devem saber quem é... Isso mesmo Sorcerer Manipulator! Se interessou? Então clique aqui e confira já essa grande entrevista!1 ponto
-
[Dúvida]Adicionando Itens Com Outras Sprites.
erd3jak reagiu a kenji1996xD por um tópico no fórum
Como assim vendendo? Quer dizer que o programa agora é pago?1 ponto -
da sim mais você quer colocar custo em todos os outfits?1 ponto