Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 10/30/16 em todas áreas

  1. Foi testado no TheForgottenServer 0.3.6 no Tibia 8.54 Como o client já está modificado, precisamos modificar a parte do servidor que envia os dados para o client. Vamos modificar dois métodos, addMagicEffect e sendMagicEffect. Entre na sua source 0.3.6 Encontre o arquivo protocolgamer.cpp Você vai encontrar esse código void ProtocolGameAddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint8_t type){ msg->AddByte(0x83); msg->AddPosition(pos); msg->AddByte(type + 1);} Percebeu esse parametro uint8_t type? Vamos modificar para uint16_t type. Mas isso não vai adiantar nada se o msg->AddByte(type + 1) continuar desse jeito... Modifique ele para msg->AddU16(type + 1). O código modificado deve ficar desse jeito void ProtocolGameAddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint16_t type){ msg->AddByte(0x83); msg->AddPosition(pos); msg->AddU16(type + 1);} Você já deve ter pegado a lógica... Onde tiver um método addMagicEffect com o parametro uint8_t type, tem que trocar por uint16_t type, o mesmo serve para sendMagicEffect. Mas como sei que tem pessoas que não gostam de trabalhar um pouco, vamos continuar com os arquivos para modificar. No mesmo arquivo procure por esse código void ProtocolGamesendMagicEffect(const Position& pos, uint8_t type){ if(type > MAGIC_EFFECT_LAST || !canSee(pos)) return; NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); AddMagicEffect(msg, pos, type); }} Temos alguém conhecido nos parametros, o uint8_t type, já sabemos o que devemos fazer, modifique ele para uint16_t type, Código deve está desse jeito void ProtocolGamesendMagicEffect(const Position& pos, uint16_t type){ if(type > MAGIC_EFFECT_LAST || !canSee(pos)) return; NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); AddMagicEffect(msg, pos, type); }} As alterações desse arquivos terminaram, salva as alterações. Vamos para outro arquivo, o protocolgamer.h Procure por esse código void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint8_t type); Novamente troque o uint8_t type por uint16_t type Código devera ficar desse jeito void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint16_t type); Procure por esse código void sendMagicEffect(const Position& pos, uint8_t type); Troque o uint8_t type por uint16_t type Código devera ficar desse jeito void sendMagicEffect(const Position& pos, uint16_t type); Salve as alterações e vamos para o outro arquivo, está cançado de modificar os códigos? é assim mesmo, se quer alguma coisa tem que se esforçar por ela. Vamos para o arquivo game.cpp Procure por esses códigos void GameaddMagicEffect(const Position& pos, uint8_t effect, bool ghostMode /* = false */){ if(ghostMode) return; const SpectatorVec& list = getSpectators(pos); addMagicEffect(list, pos, effect);}void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode/* = false*/){ if(ghostMode) return; Player* player = NULL; for(SpectatorVecconst_iterator it = list.begin(); it != list.end(); ++it) { if((player = (*it)->getPlayer())) player->sendMagicEffect(pos, effect); }} Troque os parametros uint8_t effect por uint16_t effect Dexando-os assim void GameaddMagicEffect(const Position& pos, uint16_t effect, bool ghostMode /* = false */){ if(ghostMode) return; const SpectatorVec& list = getSpectators(pos); addMagicEffect(list, pos, effect);}void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode/* = false*/){ if(ghostMode) return; Player* player = NULL; for(SpectatorVecconst_iterator it = list.begin(); it != list.end(); ++it) { if((player = (*it)->getPlayer())) player->sendMagicEffect(pos, effect); }} Salve as alterações e vamos para o outro arquivo, game.h Procure por esse códigos, está ficando repetitivo, mas é assim mesmo void addMagicEffect(const Position& pos, uint8_t effect, bool ghostMode = false);void addMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode = false); Troque o uint8_t effect por uint16_t effect Código tem que ficar desse jeito void addMagicEffect(const Position& pos, uint16_t effect, bool ghostMode = false);void addMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode = false); Essa foi rápido, salve as alterações e vamos para o outro arquivo, player.h Procure por esse código void sendMagicEffect(const Position& pos, uint8_t type) const Troque por esse código void sendMagicEffect(const Position& pos, uint16_t type) const Salve as alterações, esse foi o último arquivo Agora compile! Uma coisa que você deve saber, se você tentar entrar com o client que não esteja esperando valores do tipo uint16 e algum efeito for executado, vai da um erro no client, não da para jogar... Vamos baixar o client modificado. Download cliente com as seguintes configurações. Port: 7171 IP: 127.0.0.1 Version: 8.54 Clique aqui para baixar esse cliente Virus total desse client Download cliente com as seguintes configurações. Port: 7272 IP: 127.0.0.1 Version: 8.54 Clique aqui para baixar esse cliente Virus total desse client Modificações dos clientes foram feitas por mim. Reporte qualquer bug que ocorrer. Esse tutorial ensina como tirar o limite de 255 efeitos do tibia, se você não tiver mais de 255 efeitos colocados em sua source, então coloque para testar, não precisa colocar agora, e se você quiser pode colocar depois e já deixar seu client preparado para suporta mais de 255 efeitos. Não deixe de agradecer...
    1 ponto
  2. MalucoDoidao

    Servidor Naruto Izzy (By João)

    GALERA TIREI A BASE PARA MANUTENÇÂO DELA
    1 ponto
  3. dalvorsn

    [Arquivado]Plágio é crime?

    Sim, plágio é crime, mas se vão te processar por isso ai já são outros quinhentos, dificilmente na verdade. Só se tu tiver muita visibilidade a ponto de acharem que vale a pena te processar pela indenização
    1 ponto
  4. Até agora... Mapa em 70% Scripts em 40% Monsters em 99% Website em 50% Fórum em 0% items em 99% Npc's em 90%
    1 ponto
  5. nociam

    [PEDIDO] Spell "Iron Defense"

    eu já iria optar por tabelas em vez de ifs ["Iron Defense"] = {[14] = 1401,[34] = 50,[67] = 28,[163] = 136,}, nome spell --> [14] locktype do pokemon --> 1401 locktype novo local outImune = {["Camouflage"] = {[22] = 2087,[43] = 2087,},["Acid Armor"] = {[9] = 1453,[27] = 1453,},["Iron Defense"] = {[14] = 1401,[34] = 50,[67] = 28,[163] = 136,},["Minimize"] = {[397] = 1455,},["Future Sight"] = {[36] = 1446,[530] = 52,[110] = 111},}["Psychic Sight"] = {[365] = 1536},}["Heal Bell"] = {[365] = 946},}elseif isInArray({"Psychic Sight", "Heal Bell", "Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, buff) then doSetCreatureOutfit(cid, {lookType = outImune[buff][getCreatureOutfit(cid).lookType]}, -1) setPlayerStorageValue(cid, 9658783, 1) setPlayerStorageValue(cid, 625877, outImune[buff]) --alterado v1.6
    1 ponto
  6. @Josegvb, @soyjho Ok, então esqueçam o que falei antes, não precisa alterar nada em pokemon moves. Em newStatusSyst.lua troque: local outImune = { ["Camouflage"] = 2087, ["Acid Armor"] = 1453, ["Iron Defense"] = 1401, ["Minimize"] = 1455, ["Future Sight"] = 1446, ["Psychic Sight"] = 1536, ["Heal Bell"] = 946, } Por: local outImune = { ["Camouflage"] = 2087, ["Acid Armor"] = 1453, ["Iron Defense"] = 1401, -- Steelix ["Minimize"] = 1455, ["Future Sight"] = 1446, ["Psychic Sight"] = 1536, ["Heal Bell"] = 946, } local outImune2 = { -- Metang ["Iron Defense"] = 1402, -- LookType } local outImune3 = { -- Metagross ["Iron Defense"] = 22, } local outImune4 = { -- Shiny Metagross ["Iron Defense"] = 1762, } Depois, Troque: elseif isInArray({"Psychic Sight", "Heal Bell", "Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, buff) then doSetCreatureOutfit(cid, {lookType = outImune[buff]}, -1) setPlayerStorageValue(cid, 9658783, 1) setPlayerStorageValue(cid, 625877, outImune[buff]) --alterado v1.6 Por: elseif isInArray({"Psychic Sight", "Heal Bell", "Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Iron Defense2", "Minimize"}, buff) then if getCreatureName(cid) == "Metang" then doSetCreatureOutfit(cid, {lookType = outImune2[buff]}, -1) -- 2 = Metang elseif getCreatureName(cid) == "Metagross" then doSetCreatureOutfit(cid, {lookType = outImune3[buff]}, -1) -- 3 = Metagross elseif getCreatureName(cid) == "Shiny Metagross" then doSetCreatureOutfit(cid, {lookType = outImune4[buff]}, -1) -- 4 = Shiny Metagross else doSetCreatureOutfit(cid, {lookType = outImune[buff]}, -1) -- Default = Steelix end setPlayerStorageValue(cid, 9658783, 1) setPlayerStorageValue(cid, 625877, outImune[buff]) Pra adicionar mais, só seguir o modelo, os comentários estão auto-explicativos. OBS: Tem forma mais simples, mas tô sem tempo, é que eu já tinha feito isso na época do pokexlin aushusuas
    1 ponto
  7. Correto, só testar...
    1 ponto
  8. Qualquer dúvida estarei respondendo...
    1 ponto
  9. Drakopoulos

    World of Piece v2 Completo

    Está funcionando sim http://i.imgur.com/psFHIH9.gifv Para compilar o servidor eu uso o Dev-Cpp e pro client o CodeBlocks
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...