AB

Opcode Duvida

Por Aberos, 16 de dez. de 2013 em Clients

23
3.7k
StrogmanS
19 de dezembro de 2013 às 01:21

tem auguma tang que mande a life do poke sem o poke esta sumonado?

xSONYxX
19 de dezembro de 2013 às 02:23

Aí acho que já é mais complexo..

VincV
19 de dezembro de 2013 às 12:16

tem auguma tang que mande a life do poke sem o poke esta sumonado?

tenta tang de morango

 

n entendi nada de nenhum dos dois post,recomendo que reformule seu post de uma forma mais coerente e sucinta.

aparentemente vc n declarou as variaveis...

 

Cara, isso ai é bem gambiarra. Você teria que mandar um opcode em TODAS as possibilidades de adcionar e remover vida do pokemon. Go/back, exp2.0, potions, x-regen, nurse, e tudo mais. Minha dica é que tente fazer isso nas sources mesmo. Uma função igual a de mandar sua vida pro cliente, mandar a do seu summon, se ele existir. Não deve ser tão difícil assim. Mesmo sendo um opcode pelas sources, pra não ser tão complicado de mecher no otclient.

é só manda periodicamente(checando se mudou antes de eviar), com um loop de addEvent (n recomendo onThinck porque ficaria muito pesado)

 

esse exemplos que vc deu e do server enviando pro client, agora como seria client enviando pro server?

protocol = g_game.getProtocolGame()
protocol:sendExtendedOpcode(seuopcode, buffer)

buffer pode ser qualquer string ou number que vc queira mandar

seuopcode o numero do opcode

para receber vc usaria no server

function onExtendedOpcode(cid, opcode, buffer)
        if opcode == seuopcode then
               bloco de codigo             
        end
end

lembrando de colocar a tag no creaturescript.xml

Editado Dezembro 19 por lordbug99

AberosA
19 de dezembro de 2013 às 16:09

@lordbug99 no caso tipo eu tenho um shop no otc que o player compra itens ao clicar no botao executando uma talk q add o item ao player,isso seria possivel em opcode?

VincV
19 de dezembro de 2013 às 17:05

sim

algo do tipo:

 

buy = {
[2160] = 10000,
 
}
function onExtendedOpcode(cid, opcode, buffer)
        if opcode == 30 then
               local item,quant = string.explode(buffer,":") 
               item,quant = tonumber(item),tonumber(quant)
               if buy[item] and doPlayerRemoveMoney(cid, buy[item]*quant  ) then
                         doPlayerAddItem(cid, item, quant, false) 
               else 
                         doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para comprar "..quant.." "..getItemNameById(item)..". ")     
              end
        end
end

e no cliente vc mandaria na forma "itemid:quantidade" por opcode

AberosA
20 de dezembro de 2013 às 12:22

@lordbug99 so a ultima duvida , antes de fechar o topico , tipo no meu shop vende vip e outfits , como fiakaria isos em opcode, so um exemplo ^^

SlicerS
21 de dezembro de 2013 às 23:16

@lordbug99

meio atrasado meu comentario mas... sim, a ideia era soh printar ms... ;x eh soh um exemplo q o BananaFight me passo a muito tempo atras... ;p

1 mês depois...
dalvorsnD
10 de janeiro de 2014 às 18:53

quando se trata de rede quanto mais resumido for a mensagem melhor, quando se tratam de numero entao, a melhor opcao e usar bytes

o proprio client ja tem suporte para reeceber nesse formato

 

Cara, isso ai é bem gambiarra. Você teria que mandar um opcode em TODAS as possibilidades de adcionar e remover vida do pokemon. Go/back, exp2.0, potions, x-regen, nurse, e tudo mais. Minha dica é que tente fazer isso nas sources mesmo. Uma função igual a de mandar sua vida pro cliente, mandar a do seu summon, se ele existir. Não deve ser tão difícil assim. Mesmo sendo um opcode pelas sources, pra não ser tão complicado de mecher no otclient.

discordo disso, nao precisa ser uma baita gambiarra nao, voce precisaria somente de duas coisas, um onthink para quando o pokemon nao esta summonado e um onstatschange para quando esta summonado