Função getPlayerFreeCap(cid)

Lordbaxx
em Scripts

Lordbaxx

Imperium Project
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 01/07/13Posts: 521
Bom eu tentei utilizar a função "getPlayerFreeCap", para a verificação/contagem do número de pokebolas que o jogador tem dentro de sua bag. Tentei numerar com 0.99 + 0.99 e com 1, 2, 3, 4 etc.
Exemplo:
 if getPlayerFreeCap(cid) < 0.99 then  --[[O 0.99 conta como uma pokeball com um pokemon na bag do jogador (CADA 0.99 = 1 pokemon)
 doPlayerSendCancel("You don't have pokemon!")
 end
E tentei também:
if getPlayerFreeCap(cid) < 1 then  --[[O 1 conta como uma pokeball com um pokemon na bag do jogador
 doPlayerSendCancel("You don't have pokemon!")
 end

 

Porém nenhum dos dois modos funcionaram.. Eu utilizo estes if's no script onde abre o channel para escolher o número de pokemons.

 

1 pokemon, 2 pokemons, 3 pokemons etc..

 

No caso o if getPlayerFreeCap(cid), serviria para checar se o player tem a quantidade de pokemons que escolheu.. Espero que alguém saiba se tem algo errado e possa ajudar. Abraço!

LOGO OFICIAL.png

Night Wolf

Coordenador de Desenvolvimento
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/02/14Posts: 341Gênero: MasculinoChar no Tibia: Night Wolf

cara, esse n é o jeito certo de se fazer isso. Você tá verificando quantos oz o player tem de capacidade, independente de numero de pokebolas.

Pra fazer isso que vc quer vc precisa ter a função onMoveItem compilada na sua source e fazer checagem por id (acredito que o id da pokebola cheia seja diferente da pokebola vazia, não?)
daí vc só pega os tipos diferentes de pokebola que existem e executa essa função getPlayerItemCount(cid, itemid) pra cada um deles. Se a soma das counts for maior que a quantidade que ele pode carregar vc dá um return false no callback da onMoveItem.

I9AtE9T.png
/NW

meubk

@miillerdomingues
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/04/08Posts: 311

getPlayerMana()

 

esqueceu que os server de pokemon usam a mana para mostrar na barra quantos pokemons tem, logo usando a função getPlayerMana, vai retornar o numero de pokemons q tem.

 

E é possivel usar sim a função getPlayerFreeCap(), só que ela retorna o tanto que você tem LIVRE(FREE) de cap, não o tanto que você esta utilizando, e muito menos o tanto que você tem no total.

Deadpool

!!!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/11Posts: 2175Gênero: MasculinoChar no Tibia: Sociopata

Nightwolf.. Teria como mudar isso? Tipo, ao invés de Cap. Colocar por mana? No meu serve é por cap, e isso está me dando bug quando captura o pokemon.. E bem, eu tenho essa função onmoveitem.. E possuo as sources..

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 

 

 

 

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

Lordbaxx

Imperium Project
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 01/07/13Posts: 521

cara, esse n é o jeito certo de se fazer isso. Você tá verificando quantos oz o player tem de capacidade, independente de numero de pokebolas.

 

Pra fazer isso que vc quer vc precisa ter a função onMoveItem compilada na sua source e fazer checagem por id (acredito que o id da pokebola cheia seja diferente da pokebola vazia, não?)

daí vc só pega os tipos diferentes de pokebola que existem e executa essa função getPlayerItemCount(cid, itemid) pra cada um deles. Se a soma das counts for maior que a quantidade que ele pode carregar vc dá um return false no callback da onMoveItem.

Entendi perfeitamente. Obrigado!

LOGO OFICIAL.png

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

Existe uma função nos ots que se chama getPlayerPokeballs

function getPlayerPokeballs(cid)
local ret = {}
local container = 0
 
if isCreature(cid) then
   container = getPlayerSlotItem(cid, 3).uid
   local myball = getPlayerSlotItem(cid, 8)
   if myball.uid > 0 then
      table.insert(ret, myball)
   end
else
   container = cid
end
 
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 = getPlayerPokeballs(item.uid)
          if itemsbag and #itemsbag > 0 then
             for i = 0, #itemsbag do
                 table.insert(ret, itemsbag[i])
             end
          end
       elseif isPokeball(item.itemid) then
          table.insert(ret, item)
       end
   end
end
return ret
end

Porem depende dessa funçao isPokeball onde vc prescisa configurar os ids das balls

 

function isPokeball(item)
if not item then return false end
    if item == 2227 then return true end
if item >= 2220 and item <= 2224 then
return true
end
if item >= 2651 and item <= 2659 then
return true
end
if item >= 11579 and item <= 12039 then
return true
end
return false
end 

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Deadpool

!!!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/11Posts: 2175Gênero: MasculinoChar no Tibia: Sociopata

Isso é no PDA, aberos.. tentei colocar por "mana e cap" consegui.. Porem, eu descobrir o porque do brun123 colocar os pokémons por cap.. bem, se for por mana, quando dar goback em um pokémon, vai o pokémon e outro sendo selvagem uahe

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 

 

 

 

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

Jovem nao existe isso de é no pda, LUA é igual em qualquer server , e pelo oque o cara flw ali ele quer uma funcao pra retornar o tanto de pokeballs o player tem na bag , se ele editar ali vai funcionar de boa.Eu uso ja usei essa funcao ate no 8.6

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Deadpool

!!!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/11Posts: 2175Gênero: MasculinoChar no Tibia: Sociopata

Você não entendeu o que falei mas de boas. Ele quer verificar o tanto de pokéball que o player tem na bag, em um sistema de duel..

tipo, se o player(cid) foi invitar o outro jogar e o mesmo(cid) nao tiver o tanto de pokeball que ele escolheu os channels, vai dar um sendcansel e avisar que ele nao tem pokemons suficiente.. Se o player(cid) invitar e tive as balls, só que se o outro player(target) não tiver, vai dar outro cancel.. ou entao poderia invitar normal e quando o target for aceitar, é só colocar pra fazer a mesma checagem..

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 

 

 

 

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

Entao me explica pq a funcao que eu postei ali nao vai funcionar? se a funcao que eu postei ali serve pra retornar a quantidade de pokeballs o player tem

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Deadpool

!!!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/11Posts: 2175Gênero: MasculinoChar no Tibia: Sociopata

Bem, eu n disse que não iria funcionar '-'

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 

 

 

 

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

Nao foi oque pareceu ali quando vc disse -"Isso e no Pda, aberos", mas foda-se o foco aki e ajudar o cara que fez o topico

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Lordbaxx

Imperium Project
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 01/07/13Posts: 521

 

Existe uma função nos ots que se chama getPlayerPokeballs

function getPlayerPokeballs(cid)
local ret = {}
local container = 0
 
if isCreature(cid) then
   container = getPlayerSlotItem(cid, 3).uid
   local myball = getPlayerSlotItem(cid, 8)
   if myball.uid > 0 then
      table.insert(ret, myball)
   end
else
   container = cid
end
 
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 = getPlayerPokeballs(item.uid)
          if itemsbag and #itemsbag > 0 then
             for i = 0, #itemsbag do
                 table.insert(ret, itemsbag[i])
             end
          end
       elseif isPokeball(item.itemid) then
          table.insert(ret, item)
       end
   end
end
return ret
end

Porem depende dessa funçao isPokeball onde vc prescisa configurar os ids das balls

function isPokeball(item)
if not item then return false end
    if item == 2227 then return true end
if item >= 2220 and item <= 2224 then
return true
end
if item >= 2651 and item <= 2659 then
return true
end
if item >= 11579 and item <= 12039 then
return true
end
return false
end 

É preciso utilizar o atributo "isPokeball" no items.xml? Grato.

LOGO OFICIAL.png

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

N prescisa do isPokeball no atributo nao

 

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm