Ir para conteúdo

[ Action ]Pokeball System


Posts Recomendados

Quem conseguir passaro script para capturar monstro poderia postar aqui no xtibia? Agradecida :D

 

Devilmoon, tava dando certo e do nada ta dando erro nisso:

 

doConvinceSummon(cid, pokeName, 0, toPos)

doSendDistanceShoot(fromPos, toPos, 37)

doPlayerSay(cid, pokeName .. " Go!!", TALKTYPE_SAY)

setPlayerStorageValue(cid, storage.status, -1)

doSetItemSpecialDescription(item.uid, "it is empty.")

 

O pokemon não sai.

 

O meu ta exatamente assim o que pode ter dado errado?

Link para o comentário
Compartilhar em outros sites

Por favor alguém me ajuda!

 

meu OT é 8.42 (the Forgotten Server)

 

E o Script ta dando o seguinte erro:

 

Warning: [Event::loadScript] Can not load script. data/actions/scripts/pokeball.lua

data/actions/scripts/pokeball.lua:67: 'end' expected (to close 'function' at line 8) near 'else'

Link para o comentário
Compartilhar em outros sites

Sandim18 , Tu Coloco , as Configuraçoes no Function.lua errado ! , tenta colocar dinovo direitinho!

 

Ae Valew, pelo menos o erro não aparece mais!

 

e da onde tu tirou o "18"?

Link para o comentário
Compartilhar em outros sites

PokeBall System!

 

 

Sempre Vi Alguns Postando Pokeball system e falando que nao funfava entaum no OtServ Newtworks tenhu um amigo chamado Nahruto Que Deichou Eu Postar sua Incrivel Scripter de Pokeball System! aki no Xtibia entao Vamos La!

 

Para Tfs: 0.34 , 0.35 e 0.36 Essas Forao Testadas E Funfo

Versao: Qualquer Versao Funciona bem , Versoes Testadas , 8.42 e 8.50 e 8.52 e Funfo

 

Primeiro Vamos Fuçar com Global Functions! Voce Vai Precisar disso na Global!

 

Bote Isto!

 

 

_warpzone = 2147483648 -- start storing strings here (THIS IS THE ABSOLUTE MAXIMUM VALUE FOR THIS)
_maxlength = 1024 -- multiply by 3 to get the true length.

setPlayerStorageInteger = setPlayerStorageValue
getPlayerStorageInteger = getPlayerStorageValue

function setPlayerStorageString(cid, key, value)
   if #value > (_maxlength-1) * 3 - 1 then -- Last word is reserved for 0 termination of the string.
       error("Storage string is too long")
   end
   if key > _warpzone / _maxlength then
       error("Storage string key is too large (" .. key .. ")")
   end
   key = _warpzone + key * _maxlength

   local word = 0
   local wordwrap = 0
   local wordcount = 0
   local i = 1
   while i <= #value do
       local byte = string.byte(string.sub(value, i, i))
       word = bit.bor(word, bit.lshift(byte, wordwrap))
       wordwrap = wordwrap + 8
       if wordwrap == 24 then
           --[[
               In the ideal world we would be able to store 4 characters per word,
               however, as the default return value for getPlayerStorageValue is
               -1, we cant use the last bit.
           ]]--
           setPlayerStorageInteger(cid, key + wordcount, word)
           word = 0
           wordwrap = 0
           wordcount = wordcount + 1
       end
       i = i + 1
   end
   -- store the last word
   setPlayerStorageInteger(cid, key + wordcount, word)
end

function getPlayerStorageString(cid, key)
   if key > _warpzone / _maxlength then
       error("Storage string key is too large (" .. key .. ")")
   end
   key = _warpzone + key * _maxlength

   local wordcount = 0
   local str = ""
   while true do
       if wordcount >= _maxlength then
           break
       end
       local word = getPlayerStorageInteger(cid, key + wordcount)
       if word == -1 then
           -- end of string
           break
       else 
           -- Extract the 3 characters from the value
           byte = bit.band(word, 255)
           if byte == 0 then break else str = str .. string.char(byte) end
           byte = bit.rshift(bit.band(word, 65280), 8)
           if byte == 0 then break else str = str .. string.char(byte) end
           byte = bit.rshift(bit.band(word, 16711680), 16)
           if byte == 0 then break else str = str .. string.char(byte) end
       end
       wordcount = wordcount + 1
   end
   return str
end

 

E Isso!

  function doConvinceSummon(cid, creature, amount, pos)
summonplayerpos = {x=pos.x, y=pos.y, z=pos.z, stackpos=253}
summonplayer = getThingfromPos(summonplayerpos)


   if(summonplayer ~= nil and summonplayer.itemid > 0) then    
       doPlayerSendCancel(cid,"There is not enough room to summon here.")
       ret = 0
   else
       convince = doSummonCreature(creature, pos)
       doConvinceCreature(cid, convince)
       ret = 1
end

       return ret
end  

 

Agora Vamos Fazer o Script Vá em Pasta do Seu Ot > Data > Actions > Scripts Crie uma Pasta chamada pokeball.lua

e bote isso dentro

 

local notAllowed = {"Ferumbras", "Demon"}
local storage = {
   status = 25650,
   pokeName = 25651
}
local actionid_used = 7510

function onUse(cid, item, fromPos, item2, toPos)
   local pokeballStatus = getPlayerStorageValue(cid, storage.status)
   local pokeName = getPlayerStorageString(cid, storage.pokeName)
   pos = getPlayerPosition(cid) pos.stackpos = 0
       if pokeballStatus == -1 then
           toPos.stackpos = 253
           local pokeThing = getThingfromPos(toPos)
           if isCreature(pokeThing.uid) == TRUE then
               if isPlayer(pokeThing.uid) == FALSE then
                   local pokename_ = getCreatureName(pokeThing.uid)
                   if item.actionid ~= actionid_used then
                   --    local maxHealth = 400
                   --    local creatureHealth = getCreatureHealth(pokeThing.uid)
                   --    local divNum = (string.len(maxHealth)-1)^2
                   --    local result = math.floor((creatureHealth/divNum)/10)
                   --    local chance = math.random(1, math.random(4, math.random(7, math.max(result, 7))))
                   --    if chance == result then
                           if isInTable(notAllowed, pokename_) == TRUE then
                               doPlayerSendCancel(cid, "You cannot catch this creature")
                           else
                               setPlayerStorageString(cid, storage.pokeName, pokename_)
                               doRemoveCreature(pokeThing.uid)
                               doSendDistanceShoot(fromPos, toPos, 37)
                               setPlayerStorageValue(cid, storage.status, 1)
                               doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".")
                               doSetItemActionId(item.uid, actionid_used)
                           end
                   --    else
                   --        doSendMagicEffect(fromPos, 2)
                   --        doPlayerSendCancel(cid, "The Pokemom Escaped")
                   --    end
                   elseif item.actionid == actionid_used and pokename_  == pokeName then
                       doPlayerSay(cid, pokeName .. " Back!!", TALKTYPE_SAY)
                       doRemoveCreature(pokeThing.uid)
                       doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".")
                       setPlayerStorageValue(cid, storage.status, 1)
                       doSendDistanceShoot(fromPos, toPos, 37)
                   else
                       doSendMagicEffect(fromPos, 2)
                       doPlayerSendCancel(cid, "This pokeball is already used")
                   end
               else
                   doPlayerSendCancel(cid, "You cannot catch this creature")
               end
           else
               doPlayerSendCancel(cid, "Creature not found")
           end
       elseif pokeballStatus == 1 then
           summons = getCreatureSummons(cid)
       --    if #summons >= 2 then
       --        doPlayerSendCancel(cid, "You cannot call more pokemons")
       --    else
               doConvinceSummon(cid, pokeName, 0, toPos)
               doSendDistanceShoot(fromPos, toPos, 37)
               doPlayerSay(cid, pokeName .. " Go!!", TALKTYPE_SAY)
               setPlayerStorageValue(cid, storage.status, -1)
               doSetItemSpecialDescription(item.uid, "it is empty.")
       --    end
       end
   else

   return 1
end 

function isInTable(t, val)
   for _, v in pairs(t) do
       if v == val then
           return TRUE
       end
   end
   return LUA_ERROR
end

 

para TFS

 

local notAllowed = {"Ferumbras", "Demon"}
local storage = {
   status = 15244,
   pokeName = 15212
}
local actionid_used = 7510

function onUse(cid, item, fromPos, item2, toPos)
   local pokeballStatus = getPlayerStorageValue(cid, storage.status)
   local pokeName = getPlayerStorageString(cid, storage.pokeName)
   pos = getPlayerPosition(cid) pos.stackpos = 0
       if pokeballStatus <= 0 then
           toPos.stackpos = 253
           local pokeThing = getThingfromPos(toPos)
           if isCreature(pokeThing.uid) == TRUE then
               if isPlayer(pokeThing.uid) == FALSE then
                   local pokename_ = getCreatureName(pokeThing.uid)
                   if item.actionid ~= actionid_used then
                   --    local maxHealth = 400
                   --    local creatureHealth = getCreatureHealth(pokeThing.uid)
                   --    local divNum = (string.len(maxHealth)-1)^2
                   --    local result = math.floor((creatureHealth/divNum)/10)
                   --    local chance = math.random(1, math.random(4, math.random(7, math.max(result, 7))))
                   --    if chance == result then
                           if isInTable(notAllowed, pokename_) == TRUE then
                               doPlayerSendCancel(cid, "You cannot catch this creature")
                           else
                               setPlayerStorageString(cid, storage.pokeName, pokename_)
                               doRemoveCreature(pokeThing.uid)
                               doSendDistanceShoot(fromPos, toPos, 37)
                               setPlayerStorageValue(cid, storage.status, 1)
                               doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".")
                               doSetItemActionId(item.uid, actionid_used)
                           end
                   --    else
                   --        doSendMagicEffect(fromPos, 2)
                   --        doPlayerSendCancel(cid, "The Pokemom Escaped")
                   --    end
                   elseif item.actionid == actionid_used and pokename_  == pokeName then
                       doCreatureSay(cid, pokeName .. " Back!!", TALKTYPE_SAY)
                       doRemoveCreature(pokeThing.uid)
                       doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".")
                       setPlayerStorageValue(cid, storage.status, 1)
                       doSendDistanceShoot(fromPos, toPos, 37)
                   else
                       doSendMagicEffect(fromPos, 2)
                       doPlayerSendCancel(cid, "This pokeball is already used")
                   end
               else
                   doPlayerSendCancel(cid, "You cannot catch this creature")
               end
           else
               doPlayerSendCancel(cid, "Creature not found")
           end
       elseif pokeballStatus == 1 then
       --    summons = doCreatureSummons(cid)
       --    if #summons >= 2 then
       --        doPlayerSendCancel(cid, "You cannot call more pokemons")
       --    else
               doConvinceSummon(cid, pokeName, 0, toPos)
               doSendDistanceShoot(fromPos, toPos, 37)
               doCreatureSay(cid, pokeName .. " Go!!", TALKTYPE_SAY)
               setPlayerStorageValue(cid, storage.status, 0)
               doSetItemSpecialDescription(item.uid, "it is empty.")
       --    end
       end

   return 1
end 

function isInTable(t, val)
   for _, v in pairs(t) do
       if v == val then
           return TRUE
       end
   end
   return LUA_ERROR
end

 

Em data/actions/actions.xml adicione isto

 

<action itemid="xxxx" script="pokeball.lua" allowfaruse="1" blockwalls="1" />

 

Vermelho= ali no xxxx adiciona o id do iten que voce fara de Pokeball

 

 

O que o action faz:

 

- Guarda monstros dentro de objetos e salva seu status, você pode colocar pra salvar em qlqr objeto.. seria ótimo para projetos pokemons..

 

 

Um Grande Homem Nao Imita e Fala a Verdade sobre o Scripter se E Dele ou De Outra Pessoa.. Ja Vi Varias pessoas Falando Que o Scripter é dela e Naverdade nao é!

 

 

Créditos Maker: Nahruto

Créditos Post: DevilMoon

 

 

 

Gostou do Scripter e do Topico? Clica no mais.png Para me Ajudar!

 

 

Espero Que Voces Gostem do Scripter!

 

 

Prints Screen!

 

Snorlax Saindo da Pokeball

 

snorlaxgo.png

 

Snorlax Voltando para a Pokeball

 

snorlaxback.png

 

Look da Pokeball ( o Player so Ve assim You See a Pokeball , Have Snorlax )]

 

snorlaxlook.png

Espero que Tenhao Gostado!

 

 

Eu sou novos Nissu.

 

Oq eh TFS?? alguem pode me explicar por favor.

Link para o comentário
Compartilhar em outros sites

Olá Devil Moon.

 

Bom eu sou meio esperto burro com isso, então demora um pouco para entender sobre .lua é esses códigos.

Bom a minha duvida e a seguinte, e sobre o erro que está na imagem anexada ( \/ ).

 

Eu já botei tudo que você mandou fazer, fiz e refiz. Eu vi que o cara teve o mesmo problema e solucionou mais o meu ainda não.

 

 

(OBS: Tentei colocar um código gigantesco na pasta [ DATA>>LIB>>FUNCTIONS.LUA ] é deu um erro que afetou tudo a parte snow, food é etc... Tem mais alguma solução? )

 

Obrigado pela atenção, abs.

Sem título.bmp

Link para o comentário
Compartilhar em outros sites

Seguinte Vamos paçar pelas Seguintes Etapas..

 

1: Voce Apagou Tudo no Functions.lua para Colocar os Codigos ou Deu Espaço.. Colo 1 deu espaço e Colocou o Outro!

(Responda)

 

2: Tag que voce Colocou no Actions.xml Poderia Mandar para ver uma coisa?! Quando Postei o Script Tinha um Errinho na Tag!!

(Responda)

 

 

---------------------end---------------------

 

 

Bom na Minha Citaçao, que eu Olhei para o Erro o Seu OtServ nao tem a Funçao GetPlayerStorageString alguma coisa..

Dependendo das Respostas, se esta algo errado pode mudar o erro ou outra coisa!!

Aguardando!!

 

@Edit

 

Coloque a Imagem nas tags O LINK DA SUA IMAGEM

 

 

Abraços..

Editado por DevilMoon
Link para o comentário
Compartilhar em outros sites

Seguinte Vamos paçar pelas Seguintes Etapas..

 

1: Voce Apagou Tudo no Functions.lua para Colocar os Codigos ou Deu Espaço.. Colo 1 deu espaço e Colocou o Outro!

(Responda)

 

2: Tag que voce Colocou no Actions.xml Poderia Mandar para ver uma coisa?! Quando Postei o Script Tinha um Errinho na Tag!!

(Responda)

 

 

---------------------end---------------------

 

 

Bom na Minha Citaçao, que eu Olhei para o Erro o Seu OtServ nao tem a Funçao GetPlayerStorageString alguma coisa..

Dependendo das Respostas, se esta algo errado pode mudar o erro ou outra coisa!!

Aguardando!!

 

@Edit

 

Coloque a Imagem nas tags O LINK DA SUA IMAGEM

 

 

Abraços..

 

Bom sobre as Functions.Lua, tinha um negocio lá escrito já. Então fui até o final dei um espaço e coloquei seus codigos.

 

E sobre oque coloquei no actions.xml eu botei:

 

<action itemid="xxxx" script="pokeball.lua" allowfaruse="1" blockwalls="1" />

 

Estou cagando sangue, preciso arrumar isso logo!

Link para o comentário
Compartilhar em outros sites

Bom sobre as Functions.Lua, tinha um negocio lá escrito já. Então fui até o final dei um espaço e coloquei seus codigos.

 

E sobre oque coloquei no actions.xml eu botei:

 

<action itemid="xxxx" script="pokeball.lua" allowfaruse="1" blockwalls="1" />

 

Estou cagando sangue, preciso arrumar isso logo!

 

Pelo que tu Falou ali no Functions.lua ta Certo e o Actions.xml Tambem!!

 

Entao o Certo seria que seu OtServ nao tem a Funçao doPlayerStorageString.... que nem diz o Erro no Distro!!

Tente Mudar de Servidor que possa Funcionar!!

 

Abraços..

Link para o comentário
Compartilhar em outros sites

DevilMoon você pode me dizer qual versão é o seu OTServ, se você é um cliente de sua própria, mas essa versão é.

 

obrigado

PD: Desculpem a carta que eu estou usando um tradutor: D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...