[QuickList2] Pokemon Online
Hard Cheats :: MMO Games Zone :: Tibia :: Tibia - Private :: Tibia - Scripting
Página 1 de 1
[QuickList2] Pokemon Online
Segunda Parte da QuickList de Pokemon Online
Link da Primeira Parte:Parte 1
Créditos daqui pra baixo MatheusMkalo
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:
Depois, va em actions.xml e adicione a seguinte tag:
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:
Agora adicione outro arquivo.lua na pasta data/creaturescripts/scripts com o nome de playerpdeath e bote esse script:
Depois va em creaturescripts.xml e adicione as seguintes TAGS:
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:
Depois adicione a seguinte TAG no actions.xml:
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
Depois va ate a pasta data/npc e adicione um arquivo.xml e bote isso dentro:
Surf System By: MatheusMkalo
Vá em data/actions/scripts e crie um arquivo.lua com o nome de surf e bote esse script dentro:
Depois va em actions.xml e adicione essa tag:
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:
Depois vá em actions.xml e adicione esta tag:
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:
Depois bote essa tag no talkaction.xml:
Va em data/movements/scripts e crie um arquivo.lua com o nome de fly.lua e bote:
Depois va em movements.xml e adicione essa tag:
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:
Agora bote essa tag em talkactions.xml:
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
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.
----------------------------------------------------------
Servidor de Pokemon Com os Scripts Acima
Pokeserver Pokemon Flash
O Que contem no Servidor:
Download Servidor
Download Client
Créditos Pokemon Flash
Créditos ao pessoal do pokeserver tfs 4.1
RoyalFlash
Deu bastante trabalho arrumar todas as tags a mão mas ta aí
[b]Gostou? Agradeça não custa nada!
Link da Primeira Parte:Parte 1
Créditos daqui pra baixo MatheusMkalo
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:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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
- Spoiler:
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:
- Spoiler:
Surf System By: MatheusMkalo
Vá em data/actions/scripts e crie um arquivo.lua com o nome de surf e bote esse script dentro:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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"**,
["****"] = {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:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
Va em data/movements/scripts e crie um arquivo.lua com o nome de fly.lua e bote:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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:
- Spoiler:
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)
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"**,
["Thunder"] = {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"**,
["Thunder"] = {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:
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.
----------------------------------------------------------
Servidor de Pokemon Com os Scripts Acima
Pokeserver Pokemon Flash
O Que contem no Servidor:
- Spoiler:
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
- Spoiler:
Download do server v2 (mirror 1) : Pkmflash 2.0.rar - 4shared.com - online file sharing and storage - download
Download do server v2 (mirror 2) : Pkmflash 2 0 rar
Download Client
- Spoiler:
PBF 1.0.rar - 4shared.com - online file sharing and storage - download
Créditos Pokemon Flash
Créditos ao pessoal do pokeserver tfs 4.1
RoyalFlash
Deu bastante trabalho arrumar todas as tags a mão mas ta aí
[b]Gostou? Agradeça não custa nada!
Hard Cheats :: MMO Games Zone :: Tibia :: Tibia - Private :: Tibia - Scripting
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos