Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.).
Ex: The Forgotten Server 1.3, Versão: 10.98.
Base:
Qual é a sua pergunta?
Eai, rapaziada. Não sei se o estilo do tópico está correto, peço desculpas se tiver algo errado. Seguinte, já procurei em todos os lugares algo que podia me auxiliar em relação a Opcodes, até mesmo aqui no OTServ Brasil, li alguns tópicos sobre e mesmo assim não consegui nenhum resultado. Como escrito ali em cima, estou usando o TFS 1.3 e até onde sei isso já vem instalado na source.
Estou usando o OTClientV8.
Não consigo passar informações simples do servidor para o client e vice versa. Quando tento mandar do client pro servidor obtenho esse erro.
ERROR: Unable to send extended opcode 110, extended opcodes are not enabled on this server
Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo:
Exemplos que causaram o erro abaixo:
Tenho isso no meu\creaturescripts\creaturescripts.xml
Estou usando esse código no meu\creaturescripts\scripts\opcodes.lua
Spoiler
local OPCODE_LANGUAGE = 1
local OPCODE_TESTE = 110
function onExtendedOpcode(player, opcode, buffer)
if opcode == OPCODE_LANGUAGE then
-- otclient language
if buffer == 'en' or buffer == 'pt' then
-- example, setting player language, because otclient is multi-language...
-- player:setStorageValue(SOME_STORAGE_ID, SOME_VALUE)
end
elseif opcode == OPCODE_TESTE then
--player:sendExtendedOpCodes(OPCODE_TESTE, )
print(buffer) -- other opcodes can be ignored, and the server will just work fine...
end
end
Partindo para o otclient, tenho o meu \modules\game_teste\teste.lua
Spoiler
local window = nil
local lblName = nil
local Opcodes = 110
function init()
ProtocolGame.registerExtendedOpcode(Opcodes, function(protocol, opcode, buffer)
lblName:setText('Name: '..buffer)
print(buffer)
end)
window = g_ui.displayUI('teste')
window:hide()
lblName = window:getChildById('lblName')
g_keyboard.bindKeyPress('Ctrl+X', toggle)
end
function terminate()
disconnect(g_game, { onGameEnd = offline })
ProtocolGame.unregisterExtendedOpcode(Opcodes)
window:destroy()
g_keyboard.unbindKeyPress('Ctrl+X')
end
function toggle()
if window:isVisible() then
window:setFocusable(false)
window:hide()
else
window:show()
end
end
function getName()
g_game.getProtocolGame():sendExtendedOpcode(Opcodes, 'OPCODES CADE SEU DEUS AGORA')
g_game.talk('af')
end
Tenho isso também no meu \modules\game_teste\teste.otui
Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo:
https://forums.otserv.com.br/index.php?/forums/topic/168583-regras-da-seção/
https://forums.otserv.com.br/index.php?/forums/topic/165121-como-fazer-uma-pergunta-ou-o-grande-guia-do-usuário-com-dúvidas/
Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.).
Ex: The Forgotten Server 1.3, Versão: 10.98.
Base:
Qual é a sua pergunta?
Eai, rapaziada. Não sei se o estilo do tópico está correto, peço desculpas se tiver algo errado. Seguinte, já procurei em todos os lugares algo que podia me auxiliar em relação a Opcodes, até mesmo aqui no OTServ Brasil, li alguns tópicos sobre e mesmo assim não consegui nenhum resultado. Como escrito ali em cima, estou usando o TFS 1.3 e até onde sei isso já vem instalado na source.
Estou usando o OTClientV8.
Não consigo passar informações simples do servidor para o client e vice versa. Quando tento mandar do client pro servidor obtenho esse erro.
ERROR: Unable to send extended opcode 110, extended opcodes are not enabled on this server
Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo:
Exemplos que causaram o erro abaixo:
Tenho isso no meu \creaturescripts\creaturescripts.xml
<event type="extendedopcode" name="ExtendedOpcode" script="extendedopcode.lua" />
Estou usando esse código no meu \creaturescripts\scripts\opcodes.lua
local OPCODE_LANGUAGE = 1
local OPCODE_TESTE = 110
function onExtendedOpcode(player, opcode, buffer)
if opcode == OPCODE_LANGUAGE then
-- otclient language
if buffer == 'en' or buffer == 'pt' then
-- example, setting player language, because otclient is multi-language...
-- player:setStorageValue(SOME_STORAGE_ID, SOME_VALUE)
end
elseif opcode == OPCODE_TESTE then
--player:sendExtendedOpCodes(OPCODE_TESTE, )
print(buffer) -- other opcodes can be ignored, and the server will just work fine...
end
end
Partindo para o otclient, tenho o meu \modules\game_teste\teste.lua
local window = nil
local lblName = nil
local Opcodes = 110
function init()
ProtocolGame.registerExtendedOpcode(Opcodes, function(protocol, opcode, buffer)
lblName:setText('Name: '..buffer)
print(buffer)
end)
window = g_ui.displayUI('teste')
window:hide()
lblName = window:getChildById('lblName')
g_keyboard.bindKeyPress('Ctrl+X', toggle)
end
function terminate()
disconnect(g_game, { onGameEnd = offline })
ProtocolGame.unregisterExtendedOpcode(Opcodes)
window:destroy()
g_keyboard.unbindKeyPress('Ctrl+X')
end
function toggle()
if window:isVisible() then
window:setFocusable(false)
window:hide()
else
window:show()
end
end
function getName()
g_game.getProtocolGame():sendExtendedOpcode(Opcodes, 'OPCODES CADE SEU DEUS AGORA')
g_game.talk('af')
end
Tenho isso também no meu \modules\game_teste\teste.otui
MainWindow
id: window
size: 250 100
!text: tr('Teste')
&focusable: false
Label
id: lblName
anchors.top: parent.top
anchors.left: parent.left
text-auto-resize: true
text: Name:
Button
id: btn
anchors.bottom: parent.bottom
anchors.left: parent.left
text: Get Name
@onClick: getName()
Já rachei minha cabeça e não saí do lugar. Existe algum problema com a TFS 1.3 referente a Opcodes? Testei com um TFS 1.2 e não obtive problemas.
Me ajudem, por favor!
Editado por PeixonautaCompartilhar este post
Link para o post
Compartilhar em outros sites