mais facil vc colocar uma função para não poder deslogar enquanto estiver no fly/ride
- Fórum
- xTibia - Notícias e Suporte
- Soluções
- Archived
- [Pokeserver] Outifit Após Logout
3
1k
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

30 de janeiro de 2011 às 21:17



info
Grupo: Campones
Registrado: 05/07/08
Posts: 6
Reputação: 0
Char no Tibia: xuxub lost
Bom gente estou prestes a abrir um Pokeserver. tudo certo sistema de m1 até m9 e talx. mais assim. quando uma pessoa está montada no fly sai do fly e desloga ela volta com a outfit do fly. assim para surf fly ride.. alguem poderia me ajudar. pra evitar ai está meu script de fly/ride
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 onUse(cid, item, frompos, item2, topos)
local pokes = {
['Tauros'] = {128, 200},
['Ninetales'] = {129, 300},
['Rapidash'] = {130, 350},
['Ponyta'] = {131, 200},
['Rhyhorn'] = {132, 150},
['Arcanine'] = {12, 500},
['Shiny Arcanine'] = {492, 800},
['Shiny Venusaur'] = {494, 700},
['Crystal Onix'] = {293, 400},
['Onix'] = {126, 350},
['Venusaur'] = {134, 350},
['Dodrio'] = {133, 350},
['Doduo'] = {135, 250},
}
local idballs = {
[2531] = {"Pokeball"},
[2557] = {"Superball"},
[2524] = {"Greatball"},
[2525] = {"Ultraball"},
[2523] = {"Masterball"},
}
local old_speed = getCreatureBaseSpeed(cid)
local summons = getCreatureSummons(cid)
local storage = 9393
local exhaust = 0
local time = 0
if (getPlayerStorageValue(cid, storage) <= os.time()) then
if getPlayerStorageValue(cid, 18000) == 10 then
local nome = getItemName(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid)
local balls = idballs[getPlayerSlotItem(cid,8).itemid]
local poke_name = nome:match('(.-) '..balls[1])
local action_id = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid")
if action_id == -1 then
return doPlayerSendCancel(cid,"Use o pokemon correto pra sair do fly")
end
doChangeSpeed(cid, -(getCreatureSpeed(cid) - getCreatureBaseSpeed(cid)))
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 18000, 7)
setPlayerStorageValue(cid, 25000, 6)
local monster = doCreateMonster(poke_name, getCreaturePosition(cid))
doConvinceCreature(cid, monster)
doCreatureAddHealth(monster, -(tonumber(getPokemonMaxLife(poke_name) - action_id)))
doPlayerSay(cid, poke_name .. ", I'm tired of riding!", TALKTYPE_SAY)
return true
end
if isPremium(cid) == FALSE then
return doPlayerSendCancel(cid, "Você não é premium account.")
end
if #getCreatureSummons(cid) < 1 then
return doPlayerSendCancel(cid, "Para dar ride você precisa de um pokemon")
end
local pokemon = pokes[getCreatureName(getCreatureSummons(cid)[1])]
local name = getCreatureName(getCreatureSummons(cid)[1])
if not pokes[name] then
return doPlayerSendCancel(cid, "Este pokemon não pode dar ride.")
end
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doChangeSpeed(cid, pokemon[2])
setPlayerStorageValue(cid, 18000, 10)
setPlayerStorageValue(cid, 25000, 5)
doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
setPlayerStorageValue(cid,10000,pokemon[1])
setPlayerStorageValue(cid,8889,pokemon[2])
doItemSetAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid", getCreatureHealth(getCreatureSummons(cid)[1]))
function getPokemonId(summons)
for _, pid in ipairs(summons) do
return pid
end
end
doRemoveCreature(getPokemonId(summons))
doPlayerSay(cid, name .. ", Let's go RIDE!", TALKTYPE_SAY)
end
end
Agr o fly
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 onUse(cid, item, frompos, item2, topos)
local pokes = {
['Moltres'] = {229, 1000},
['Articuno'] = {230, 1000},
['Zapdos'] = {224, 1000},
['Mew'] = {232, 900},
['Mewtwo'] = {233, 900},
['Dragonite'] = {221, 300},
['Pidgeot'] = {222, 400},
['Fearow'] = {226, 400},
['Aerodactyl'] = {227, 800},
['Charizard'] = {216, 600},
['Elder Charizard'] = {295, 800},
['Porygon'] = {316, 800},
}
local idballs = {
[2531] = {"Pokeball"},
[2557] = {"Superball"},
[2524] = {"Greatball"},
[2525] = {"Ultraball"},
[2523] = {"Masterball"},
}
local storage = 9393 -- Não mexa aqui!
local exhaust = 0 -- Tempo para player poder usar o item novamente! (tempo em segundos)
local time = 0 -- Tempo para ficar na montaria! (tempo em segundos)
local old_speed = getCreatureBaseSpeed(cid)
local summons = getCreatureSummons(cid)
if (getPlayerStorageValue(cid, storage) <= os.time()) then
if getPlayerStorageValue(cid, 24000) == 5 then
return doPlayerSendCancel(cid, "You are riding.")
end
if getPlayerStorageValue(cid, 17000) == 10 then
local nome = getItemName(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid)
local balls = idballs[getPlayerSlotItem(cid,8).itemid]
local poke_name = nome:match('(.-) '..balls[1])
local action_id = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid")
if action_id == -1 then
return doPlayerSendCancel(cid,"Use o pokemon correto pra sair do fly")
end
if getSqmId(getCreaturePosition(cid)).itemid == CONST_FLYVOID then
return doPlayerSendCancel(cid,"Desça antes de sair do fly")
end
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doChangeSpeed(cid, -(getCreatureSpeed(cid) - getCreatureBaseSpeed(cid)))
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 17000, 7)
setPlayerStorageValue(cid, 23000, 6)
local monster = doCreateMonster(poke_name, getCreaturePosition(cid))
doConvinceCreature(cid, monster)
doCreatureAddHealth(monster, -(tonumber(getPokemonMaxLife(poke_name) - action_id)))
doPlayerSay(cid, poke_name .. ", I'm tired of flying!", TALKTYPE_SAY)
setPlayerStorageValue(cid, 9999,-1)
setPlayerStorageValue(cid, 8888,-1)
return true
end
if #getCreatureSummons(cid) < 1 then
return doPlayerSendCancel(cid, "Para voar você precisa de um pokemon")
end
if isPremium(cid) == FALSE then
return doPlayerSendCancel(cid, "Você não é premium account.")
end
local name = getCreatureName(getCreatureSummons(cid)[1])
local pokemon = pokes[getCreatureName(getCreatureSummons(cid)[1])]
if not pokes[name] then
return doPlayerSendCancel(cid, "Este pokemon não pode voar.")
end
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doChangeSpeed(cid, pokemon[2])
setPlayerStorageValue(cid, 17000, 10)
setPlayerStorageValue(cid, 23000, 5)
doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
setPlayerStorageValue(cid,9999,pokemon[1])
setPlayerStorageValue(cid,8888,pokemon[2])
doItemSetAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid", getCreatureHealth(getCreatureSummons(cid)[1]))
function getPokemonId(summons)
for _, pid in ipairs(summons) do
return pid
end
end
doRemoveCreature(getPokemonId(summons))
doPlayerSay(cid, name .. ", Vamos voar!", TALKTYPE_SAY)
doPlayerSendTextMessage(cid,27,'Fale \'h1\' para subir e \'h2\' para descer!.' )
if fly.using(cid) then
local p = getCreaturePosition(cid)
p.stackpos = 0
local f = getTileThingByPos(p)
if fly.del(cid) then
if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID then
return true
else
setPlayerStorageValue(cid,10941,1)
local p = getCreaturePosition(cid)
setPlayerStorageValue(cid, 102011,p.x)
setPlayerStorageValue(cid, 102012,p.y)
setPlayerStorageValue(cid, 102013,p.z)
return true
end
else
doPlayerSendTextMessage(cid,27,'Você não pode voar neste local.')
end
end
end
return true
end
Valews aew'
Por favor respondam. to loco pa da rep+ ;D