AB

Opcode Duvida

Por Aberos, 16 de dez. de 2013 em Clients

23
3.7k
AberosA
16 de dezembro de 2013 às 21:41

Galera copilei os opcode no meus erver mas nao to sabendo usar , queria saber como faço pro server enviar uma storage pro OTC por opencode , quero só um exemplo para poder enterder sobre essa vantagem q o OTC nos proporciona

SlicerS
16 de dezembro de 2013 às 21:51

Server-side:

doSendPlayerExtendedOpcode(cid, 51, getPlayerStorageValue(cid, xxxxx))

Client-side:

ProtocolGame.registerExtendedOpcode(51, function (protocol, opcode, buffer) 
   print(buffer) 
end)

esse eh o exemplo q tenhu aki... -nunca testei-

Editado Dezembro 16 por Slicer

AberosA
16 de dezembro de 2013 às 22:03

Vlw ai slicer pela ajuda ^^


#PARTIU ACABA COM A GAMBIARRA DO SENDCANCEL KKKKKKKKKKKKK


slcier só uma duvida , teria como pegar a vida do poke por opencode?

xSONYxX
17 de dezembro de 2013 às 00:43

Sim ué, você pode fazer por storage a vida dele po, só criar um storage e setar a vida do player nesse storage pelo server e chamar pelo otc..

VincV
17 de dezembro de 2013 às 13:09

Sim ué, você pode fazer por storage a vida dele po, só criar um storage e setar a vida do player nesse storage pelo server e chamar pelo otc..

lol,que pog

 

é so manda vida dele direto por

caso seja o cid do poke:

doSendPlayerExtendedOpcode(getCreatureMaster(cid), 51, getCreatureHealth(cid))

 

caso seja o cid do player:

doSendPlayerExtendedOpcode(cid, 51, getCreatureHealth(getCreatureSummons(cid)[1]))

 

vc pode mandar qualquer string que desejar por opcode

 

ProtocolGame.registerExtendedOpcode(51, function (protocol, opcode, buffer)
   print(buffer)
end)

tá ligado que isso so vai printa no console né?

tem que usar algo do tipo

ProtocolGame.registerExtendedOpcode(51, function (protocol, opcode, buffer)
   health = tonumber(buffer)
end)

Editado Dezembro 17 por lordbug99

AberosA
17 de dezembro de 2013 às 16:24

no caso doSendPlayerExtendedOpcode(getCreatureMaster(cid), 51, getCreatureHealth(cid)) envia so a health , se eu quise enviar getCreatureHealth(cid) eo getCreatureMaxHealth(cid) como faria?

xSONYxX
17 de dezembro de 2013 às 17:18

Sim é pogg, mas seria a maneira mais facil, pode ser assim do seu jeito também, não disse que era a unica maneira.

VincV
17 de dezembro de 2013 às 17:20

doSendPlayerExtendedOpcode(getCreatureMaster(cid), 51, getCreatureHealth(cid).."/"..getCreatureMaxHealth(cid))

 

vai manda em forma de string "health/maxhealthg",dai só separa com string.explode

 

tem outros meios mais legais de fazer isso tbm, mas é bem mais complica

AberosA
17 de dezembro de 2013 às 19:12

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

akumahA
17 de dezembro de 2013 às 23:40

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.

AberosA
18 de dezembro de 2013 às 09:59

como sera que faço isso na source mudar tipo o magic level para a life do summon

StrogmanS
18 de dezembro de 2013 às 11:48

[spoile]

ERROR: protected lua call failed: LUA ERROR:
/corelib/ui/uiprogressbar.lua:59: attempt to perform arithmetic on field 'maximum' (a nil value)
stack traceback:
[C]: ?
/corelib/ui/uiprogressbar.lua:59: in function 'getProgress'
/corelib/ui/uiprogressbar.lua:64: in function 'updateBackground'
/corelib/ui/uiprogressbar.lua:98: in function </corelib/ui/uiprogressbar.lua:94>
ERROR: protected lua call failed: LUA ERROR:
/corelib/ui/uiprogressbar.lua:59: attempt to perform arithmetic on field 'maximum' (a nil value)
stack traceback:
[C]: ?
/corelib/ui/uiprogressbar.lua:59: in function 'getProgress'
/corelib/ui/uiprogressbar.lua:64: in function 'updateBackground'
/corelib/ui/uiprogressbar.lua:98: in function </corelib/ui/uiprogressbar.lua:94>[/spoile]
da esse erro no otc
a progress nao fuciona e se usar aquele tang ali nao fuciona so essa que fuciona e so manda a health nao manda a max doSendPlayerExtendedOpcode(cid, 51, getCreatureHealth(getCreatureSummons(cid)[1]))
no otc o mod coloquei so isso
ProtocolGame.registerExtendedOpcode(51, function (protocol, opcode, buffer)
localCreature, hp, maxHp = tonumber(buffer), tonumber(buffer)
pokeHealthBar:setText(hp .. ' / ' .. hp)
barWindow:recursiveGetChildById("pokeHealthIcon"):setTooltip(tr(pokeHealthTooltip, hp, maxHp))
pokeHealthBar:setValue(hp, 0, maxHp)
end)
se aqui pokeHealthBar:setText(hp .. ' / ' .. hp) colocar assim pokeHealthBar:setText(hp .. ' / ' .. maxHp) da outro erro com o nome maxHp no otc com essa tang doSendPlayerExtendedOpcode(cid, 51, getCreatureHealth(getCreatureSummons(cid)[1])) a outra nao funfa aaa e como coloco pra o do login do exp pq tentei varias vezes com tang diferente e nada de fuciona da erro no console quando o poke usa o exp erro de luagetcreaturehealth
xSONYxX
18 de dezembro de 2013 às 12:39

Isso você pode fazer pelo server po, só você setar o ml do cara o life do poke..

AberosA
18 de dezembro de 2013 às 13:14

em q script faz isso?

xSONYxX
18 de dezembro de 2013 às 13:20

No server, se você quer que o player fique com o life do poke no lugar do ml dele, você tem que fazer um script que cheque se tem sumon e se tiver setar o ml do player igual ao life do sumon..