Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 08/15/19 in all areas

  1. Vagas abertas para quem quer fazer parte da equipe do xTibia! Se você gosta da comunidade, tem conhecimento em OTServs e deseja fazer parte da equipe, essa é a hora. Preencha o formulário que se encontra abaixo: >> Formulário << Estaremos validando e se for necessario estaremos entrando em contato, boa sorte! xD Caso haja duvidas com o cargo de mod/coordenador, veja: Moderador xTibia Coordenador xTibia
    1 point
  2. local pos = {x= 1264, y=381, z=7} -- aonde o player vai function onUse(cid, item, frompos) slot = getPlayerSlotItem(cid, 8) if getItemAttribute(slot.uid, "poke") == "Alakazam" or getItemAttribute(slot.uid, "poke") == "Shiny Alakazam" and #getCreatureSummons(cid) > 0 then doPlayerSendTextMessage(cid, 22, "Parabens voce passou") doTeleportThing(cid, pos) else doPlayerSendCancel(cid, "voce precisa de um Alakazam ou Shiny alakazam para passar") end return true end
    1 point
  3. Troque if(m_showTimedSquare && animate) { g_painter->setColor(m_timedSquareColor); g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(28, 28)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1)); g_painter->setColor(Color::white); } if(m_showStaticSquare && animate) { g_painter->setColor(m_staticSquareColor); g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement())*scaleFactor, Size(Otc::TILE_PIXELS, Otc::TILE_PIXELS)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1)); g_painter->setColor(Color::white); } por if(m_showTimedSquare && animate) { EffectPtr effect = EffectPtr(new Effect()); effect->setId(379); g_painter->setColor(m_timedSquareColor); Rect rect = Rect(dest + (animationOffset - getDisplacement())*scaleFactor, Size(Otc::TILE_PIXELS, Otc::TILE_PIXELS)*scaleFactor); g_painter->drawTexturedRect(rect, effect->getThingType()->getTexture(0)); g_painter->setColor(Color::white); g_painter->setColor(Color::white); } if(m_showStaticSquare && animate) { EffectPtr effect = EffectPtr(new Effect()); effect->setId(379); g_painter->setColor(m_staticSquareColor); Rect rect = Rect(dest + (animationOffset - getDisplacement())*scaleFactor, Size(Otc::TILE_PIXELS, Otc::TILE_PIXELS)*scaleFactor); g_painter->drawTexturedRect(rect, effect->getThingType()->getTexture(0)); g_painter->setColor(Color::white); } Só mudar o id 379 pela id certa
    1 point
  4. Olá galera tudo bem? Vi um usuário perguntando no fórum sobre Opcodes, como no começo eu tive bastante dificuldade de entender, estou fazendo este tutorial básico para que fique claro! Opcodes são a comunicação entre o cliente e o servidor sem fazer alterações na source.. Na source você poderia usar sockets, que são pacotes de informação, diretamente sem usar funcionalidades do jogo como meio de transmissão, já o opCode utiliza recursos in game para fazer essa comunicação, entendeu? Exemplo: No módulo game_skills, no arquivo skills.lua, você pode notar a utilização do seguinte código: Essa linha, serve para registrar o uso do opCode número 102, estamos dizendo ali, que quando recebermos uma solicitação por opCode, sentido Servidor > Cliente, sendo essa de número 102, deverá ser acionada a função onPokemonSkillChange. em outra parte do mesmo skills.lua, temos o seguinte código: Repare que a parte destaca: g_game.getProtocolGame():sendExtendedOpcode(102, 'refresh'), faz o envio de uma solicitação de sentido Cliente > Servidor, com o número 102 que é o id de identificação da opCode e na frente a string 'refresh', ou seja, um valor para o servidor conseguir enxergar o que deve ser feito.. Para entender melhor vamos ao Servidor e olhar onde é tratada essa chamada do Cliente. No Servidor, em data/creaturescripts/scripts/opcodes/opcode.lua, temos o seguinte código: Repare nas partes que eu destaquei, irei explica-las abaixo: Vamos ver o que essa função faz? em data/lib/106-main functions.lua, temos a definição daquela função, que é: Basicamente, está função preenche uma tabela com as informações sobre insígneas, coins, qtd capturas do player e envia de volta ao Cliente através do comando: return doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_SKILL_BAR, table.concat(str)) lembrando que o opcodes.OPCODE_SKILL_BAR nada mais que que o número 102 e o table.concat(str) é o buffer, ou seja, um parâmetro da função doSendPlayerExtendedOpcode com os dados que serão enviados ao Cliente. Espero que todos tenham entendido, qualquer dúvida deixe nos comentários e se for preciso estarei arrumando qualquer erro que reportem no tutorial.
    1 point
This leaderboard is set to Sao Paulo/GMT-03:00
×
×
  • Create New...