Você adicionou os novos efeitos ao const.h? Caso sim, provavelmente o erro seja que o client não está recebendo como uint16.
info
Grupo: Marquês
Registrado: 16/06/07
Posts: 1.2k
Reputação: +377
Gênero: Masculino
Char no Tibia: Nenhum

Sua dúvida é específica a OTClient. Vou mover seu tópico para a seção de pedidos e dúvidas relacionados para que possam ajudá-lo melhor.
Cara, cada tipo de variavel tem um numero especifico de bytes, quando voce troca o numero de bytes pro client ler, no seu caso de int8 pra int16, voce ta mudando de um pra dois bytes, mas o erro esta no seguinte, voce nao alterou no protocolgame.cpp/h o tipo da variavel, dai o server envia um byte e o cliente tenta ler dois, obvio que vai dar erros
Cara, cada tipo de variavel tem um numero especifico de bytes, quando voce troca o numero de bytes pro client ler, no seu caso de int8 pra int16, voce ta mudando de um pra dois bytes, mas o erro esta no seguinte, voce nao alterou no protocolgame.cpp/h o tipo da variavel, dai o server envia um byte e o cliente tenta ler dois, obvio que vai dar erros
Nas souces do servidor eu mudei isso
protocolgame.h
void sendMagicEffect(const Position& pos, uint16_t type);
protocolgame.cpp
void ProtocolGame::sendMagicEffect(const Position& pos, uint16_t type)
Agora no otclient nao eu sei que e nessa parte mais fazer o que nela
protocolgameparse.cpp
void ProtocolGame::parseMagicEffect(const InputMessagePtr& msg)
{
Position pos = getPosition(msg);
int effectId;
if(g_game.getFeature(Otc::GameMagicEffectU16))
effectId = msg->getU16();
else
effectId = msg->getU8();
if(!g_things.isValidDatId(effectId, ThingCategoryEffect)) {
g_logger.traceError(stdext::format("invalid effect id %d", effectId));
return;
}
EffectPtr effect = EffectPtr(new Effect());
effect->setId(effectId);
g_map.addThing(effect, pos);
}
Axei o erro dalv valeu pela diga
Pode fechar O Topico
Editado Abril 9 por nociam






info
Grupo: Conde
Registrado: 04/02/13
Posts: 541
Reputação: +90
Gênero: Masculino
Bom pessoal segui esse topico sobre como liberar mais effect so que estou com um erro no cliente se alguem souber como arrumar ou o que pode estar acontecendo e me ajudar alis vai ajudar muita gente, outra quem tiver erro nas souces e porque tem que fazer rebuild f11 por isso muitos erro no action etc...
erro no otlient.
Exiting application..
== application started at Jan 15 2014 18:34:41
OTClient 0.6.2 rev 0 (devel) built on Apr 15 2013 for arch x86
ERROR: Unable to send extended opcode 1, extended opcodes are not enabled
ERROR: invalid effect id 36619
at:
[C++]: ProtocolGame::parseMagicEffect
ERROR: ProtocolGame parse message exception (159 bytes unread, last opcode is 50, prev opcode is 131): InputMessage eof reached
ERROR: ProtocolGame parse message exception (1 bytes unread, last opcode is 131, prev opcode is -1): InputMessage eof reached
ERROR: ProtocolGame parse message exception (1 bytes unread, last opcode is 131, prev opcode is -1): InputMessage eof reached
ERROR: ProtocolGame parse message exception (1 bytes unread, last opcode is 131, prev opcode is -1): InputMessage eof reached
ERROR: ProtocolGame parse message exception (1 bytes unread, last opcode is 131, prev opcode is -1): InputMessage eof reached
ERROR: ProtocolGame parse message exception (1 bytes unread, last opcode is 131, prev opcode is -1): InputMessage eof reached
Exiting application..
1- talvez na parte que estou mandando o arquivo do otclient seja o erro em game_things/things.lua
la no final estou colocando antes do ultimo end coloca isso g_game.enableFeature(GameMagicEffectU16)
thing.lua
filename = nil
loaded = false
function init()
connect(g_game, { onProtocolVersionChange = load })
end
function terminate()
disconnect(g_game, { onProtocolVersionChange = load })
end
function setFileName(name)
filename = name
end
function isLoaded()
return loaded
end
function load()
local version = g_game.getProtocolVersion()
local datPath, sprPath
if filename then
datPath = resolvepath('/things/' .. filename)
sprPath = resolvepath('/things/' .. filename)
else
datPath = resolvepath('/things/' .. version .. '/Tibia')
sprPath = resolvepath('/things/' .. version .. '/Tibia')
end
local errorMessage = ''
if not g_things.loadDat(datPath) then
errorMessage = errorMessage .. tr("Unable to load dat file, please place a valid dat in '%s'", datPath) .. '\n'
end
if not g_sprites.loadSpr(sprPath) then
errorMessage = errorMessage .. tr("Unable to load spr file, please place a valid spr in '%s'", sprPath)
end
loaded = (errorMessage:len() == 0)
if errorMessage:len() > 0 then
local messageBox = displayErrorBox(tr('Error'), errorMessage)
addEvent(function() messageBox:raise() messageBox:focus() end)
disconnect(g_game, { onProtocolVersionChange = load })
g_game.setProtocolVersion(0)
connect(g_game, { onProtocolVersionChange = load })
end
g_game.enableFeature(GameBlueNpcNameColor)
g_game.enableFeature(GameMagicEffectU16)
end
Editado Janeiro 20 por nociam