Ir para conteúdo
Blue Silver

Passando um OTServ 8.54 para 8.60

Recommended Posts

Blue Silver    1
Blue Silver

Sources: 0.3.6pl1

- Download aqui.

Créditos: Tauku, Cykotitan, Holix, Chev, fireelement e Blue Silver.

 

resources.h

 

Procure por:

 

#define CLIENT_VERSION_MIN 854
#define CLIENT_VERSION_MAX 854
#define CLIENT_VERSION_STRING "Only clients with protocol 8.54 are allowed!"

#define STATUS_SERVER_NAME "TheForgottenServer"
#define STATUS_SERVER_VERSION "0.3.6"
#define STATUS_SERVER_CODENAME "Crying Damson"
#define STATUS_SERVER_PROTOCOL "8.54"
 

Mude para:

 


#define CLIENT_VERSION_MIN 860
#define CLIENT_VERSION_MAX 860
#define CLIENT_VERSION_STRING "Only clients with protocol 8.60 are allowed!"

#define STATUS_SERVER_NAME "TheForgottenServer"
#define STATUS_SERVER_VERSION "0.3.6"
#define STATUS_SERVER_CODENAME "Crying Damson"
#define STATUS_SERVER_PROTOCOL "8.60"

 

itemloader.h

 

Procure por:

 

CLIENT_VERSION_854 = 16
 

Mude para:

 

CLIENT_VERSION_854 = 16,
CLIENT_VERSION_855 = 17,
CLIENT_VERSION_856 = 18,
CLIENT_VERSION_857 = 19,
CLIENT_VERSION_860 = 20
 

items.cpp

 

Procure por:

 

else if(Items::dwMinorVersion != CLIENT_VERSION_854)
 

Mude para:

 

else if(Items::dwMinorVersion != 19)
 

protocolgame.cpp

 

Procure por:

 

void ProtocolGame::parseAttack(NetworkMessage& msg)
{
uint32_t creatureId = msg.GetU32();
       addGameTask(&Game::playerSetAttackedCreature, player->getID(), creatureId);
}
 

Mude para:

 

void ProtocolGame::parseAttack(NetworkMessage& msg)
{
       uint32_t creatureId = msg.GetU32();
       msg.GetU32();
       msg.GetU32();
       addGameTask(&Game::playerSetAttackedCreature, player->getID(), creatureId);
}
 

Procure por:

 

void ProtocolGame::sendCancelTarget()
{
   NetworkMessage_ptr msg = getOutputBuffer();
   if(msg)
   {
       TRACK_MESSAGE(msg);
       msg->AddByte(0xA3);
   }
}
 

Mude para:

 

void ProtocolGame::sendCancelTarget()
{
   NetworkMessage_ptr msg = getOutputBuffer();
   if(msg)
   {
       TRACK_MESSAGE(msg);
       msg->AddByte(0xA3);
       msg->AddU32(0);
   }
}
 

spells.cpp

 

Procure por:

 

g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getCharges()) - 1));
 

Mude para:

 

g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getItemCount()) - 1));
 

tools.cpp

 

Procure por:

 

{"insects", MAGIC_EFFECT_INSECTS}
 

Mude para:

 

{"insects", MAGIC_EFFECT_INSECTS},
{"dragonhead", MAGIC_EFFECT_DRAGONHEAD}
 

const.h

 

Procure por:

 

MAGIC_EFFECT_INSECTS            = 0x44, //68
MAGIC_EFFECT_LAST               = MAGIC_EFFECT_INSECTS,
 

Mude para:

 

MAGIC_EFFECT_INSECTS            = 0x44, //68,
MAGIC_EFFECT_DRAGONHEAD         = 0x45, //69
MAGIC_EFFECT_LAST               = MAGIC_EFFECT_DRAGONHEAD,
 

game.cpp

 

Procure por:

 

void Game::showHotkeyUseMessage(Player* player, Item* item)
{
       int32_t subType = -1;
       if(item->hasSubType() && !item->hasCharges())
               subType = item->getSubType();

       const ItemType& it = Item::items[item->getID()];
       uint32_t count = player->__getItemTypeCount(item->getID(), subType, false);

       char buffer[40 + it.name.size()];
       if(count == 1)
               sprintf(buffer, "Using the last %s...", it.name.c_str());
       else
               sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str());

       player->sendTextMessage(MSG_INFO_DESCR, buffer);
}
 

Mude para:

 

void Game::showHotkeyUseMessage(Player* player, Item* item)
{
       const ItemType& it = Item::items[item->getID()];
       uint32_t count = player->__getItemTypeCount(item->getID(), -1);

       char buffer[40 + it.name.size()];
       if(count == 1)
               sprintf(buffer, "Using the last %s...", it.name.c_str());
       else
               sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str());

       player->sendTextMessage(MSG_INFO_DESCR, buffer);
}
 

data/actions/scripts/liquids/potions.lua

 

Delete tudo e coloque isso:

 

local config = {
   removeOnUse = "no",
   usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
   splashable = "no",
   range = -1,
   realAnimation = "no", -- make text effect visible only for players in range 1x1
   multiplier = {
       health = 1.0,
       mana = 1.0
   }
}

config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)

local POTIONS = {
   [8704] = {empty = 7636, splash = 42, health = {50, 100}}, -- small health potion
   [7618] = {empty = 7636, splash = 42, health = {100, 200}}, -- health potion
   [7588] = {empty = 7634, splash = 42, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion
   [7591] = {empty = 7635, splash = 42, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
   [8473] = {empty = 7635, splash = 42, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion

   [7620] = {empty = 7636, splash = 47, mana = {70, 130}}, -- mana potion
   [7589] = {empty = 7634, splash = 47, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
   [7590] = {empty = 7635, splash = 47, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion

   [8472] = {empty = 7635, splash = 43, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion
}

local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))

function onUse(cid, item, fromPosition, itemEx, toPosition)
   local potion = POTIONS[item.itemid]
   if(not potion) then
       return false
   end

   if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then
       if(not config.splashable) then
           return false
       end

       if(toPosition.x == CONTAINER_POSITION) then
           toPosition = getThingPosition(item.uid)
       end

       doDecayItem(doCreateItem(POOL, potion.splash, toPosition))
       doRemoveItem(item.uid, 1)
       if(not potion.empty or config.removeOnUse) then
           return true
       end

       if(fromPosition.x ~= CONTAINER_POSITION) then
           doCreateItem(potion.empty, fromPosition)
       else
           doPlayerAddItem(cid, potion.empty, 1)
       end

       return true
   end

   if(hasCondition(cid, CONDITION_EXHAUST)) then
       doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
       return true
   end

   if(((potion.level and getPlayerLevel(itemEx.uid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(itemEx.uid)))) and
       not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))
   then
       doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
       return true
   end

   if(config.range > 0 and cid ~= itemEx.uid and getDistanceBetween(getThingPosition(cid), getThingPosition(itemEx.uid)) > config.range) then
       return false
   end

   local health = potion.health
   if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.multiplier.health))) then
       return false
   end

   local mana = potion.mana
   if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.multiplier.mana))) then
       return false
   end

   doSendMagicEffect(getThingPosition(itemEx.uid), CONST_ME_MAGIC_BLUE)
   if(not config.realAnimation) then
       doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
   else
       for i, tid in ipairs(getSpectators(getThingPosition(itemEx.uid), 1, 1)) do
           if(isPlayer(tid)) then
               doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
           end
       end
   end

   doAddCondition(cid, exhaust)
   doRemoveItem(item.uid, 1)
   if(not potion.empty or config.removeOnUse) then
       return true
   end

   if(fromPosition.x ~= CONTAINER_POSITION) then
       doCreateItem(potion.empty, fromPosition)
   else
       doPlayerAddItem(cid, potion.empty, 1)
   end

   return true
end
 

data/lib/000-constant.lua

 

Procure por:

 

maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335}
femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336}
 

Mude para:

 

maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335, 367}
femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336, 366}
 

data/xml/outfit.xml

 

Delete tudo e coloque isso:

 

<?xml version="1.0"?>
<outfits>
<outfit id="1">
<list gender="0" lookType="136" name="Citizen"/>
<list gender="1" lookType="128" name="Citizen"/>
</outfit>

<outfit id="2">
<list gender="0" lookType="137" name="Hunter"/>
<list gender="1" lookType="129" name="Hunter"/>
</outfit>

<outfit id="3">
<list gender="0" lookType="138" name="Mage"/>
<list gender="1" lookType="130" name="Mage"/>
</outfit>

<outfit id="4">
<list gender="0" lookType="139" name="Knight"/>
<list gender="1" lookType="131" name="Knight"/>
</outfit>

<outfit id="5" premium="yes">
<list gender="0" lookType="140" name="Noblewoman"/>
<list gender="1" lookType="132" name="Nobleman"/>
</outfit>

<outfit id="6" premium="yes">
<list gender="0" lookType="141" name="Summoner"/>
<list gender="1" lookType="133" name="Summoner"/>
</outfit>

<outfit id="7" premium="yes">
<list gender="0" lookType="142" name="Warrior"/>
<list gender="1" lookType="134" name="Warrior"/>
</outfit>

<outfit id="8" premium="yes">
<list gender="0" lookType="147" name="Barbarian"/>
<list gender="1" lookType="143" name="Barbarian"/>
</outfit>

<outfit id="9" premium="yes">
<list gender="0" lookType="148" name="Druid"/>
<list gender="1" lookType="144" name="Druid"/>
</outfit>

<outfit id="10" premium="yes">
<list gender="0" lookType="149" name="Wizard"/>
<list gender="1" lookType="145" name="Wizard"/>
</outfit>

<outfit id="11" premium="yes">
<list gender="0" lookType="150" name="Oriental"/>
<list gender="1" lookType="146" name="Oriental"/>
</outfit>

<outfit id="12" premium="yes">
<list gender="0" lookType="155" name="Pirate"/>
<list gender="1" lookType="151" name="Pirate"/>
</outfit>

<outfit id="13" premium="yes">
<list gender="0" lookType="156" name="Assassin"/>
<list gender="1" lookType="152" name="Assassin"/>
</outfit>

<outfit id="14" premium="yes">
<list gender="0" lookType="157" name="Beggar"/>
<list gender="1" lookType="153" name="Beggar"/>
</outfit>

<outfit id="15" premium="yes">
<list gender="0" lookType="158" name="Shaman"/>
<list gender="1" lookType="154" name="Shaman"/>
</outfit>

<outfit id="16" premium="yes">
<list gender="0" lookType="252" name="Norsewoman"/>
<list gender="1" lookType="251" name="Norseman"/>
</outfit>

<outfit id="17" premium="yes">
<list gender="0" lookType="269" name="Nightmare"/>
<list gender="1" lookType="268" name="Nightmare"/>
</outfit>

<outfit id="18" premium="yes">
<list gender="0" lookType="270" name="Jester"/>
<list gender="1" lookType="273" name="Jester"/>
</outfit>

<outfit id="19" premium="yes">
<list gender="0" lookType="279" name="Brotherhood"/>
<list gender="1" lookType="278" name="Brotherhood"/>
</outfit>

<outfit id="20" premium="yes">
<list gender="0" lookType="288" name="Demonhunter"/>
<list gender="1" lookType="289" name="Demonhunter"/>
</outfit>

<outfit id="21" premium="yes">
<list gender="0" lookType="324" name="Yalaharian"/>
<list gender="1" lookType="325" name="Yalaharian"/>
</outfit>

<outfit id="22" premium="yes">
<list gender="0" lookType="336" name="Warmaster"/>
<list gender="1" lookType="335" name="Warmaster"/>
</outfit>

<outfit id="23" default="0">
<list gender="0" lookType="329" name="Wife"/>
<list gender="1" lookType="328" name="Husband"/>
</outfit>

<outfit id="24" premium="yes">
<list gender="0" lookType="366" name="Wayfarer"/>
<list gender="1" lookType="367" name="Wayfarer"/>
</outfit>
</outfits> 
 

data/items/items.xml

 

Deleta essa linha de todas as runas (apenas das runas):

 

<attribute key="charges" value="X" />
 

Compartilhar este post


Link para o post
Vader    0
Vader

Down (sources): https://otland.net/threads/8-54-the-forgotten-server-0-3-6pl1-crying-damson.59924/

Scan (sources): http://www.virustotal.com/file-scan/report.html?id=33fa35fa5da93469d7df6cae1bad9f0a297f5fdb84844dab4640c7ead6152e44-1284333980#

 

Com certeza irá ajudar muito gente que queira atualizar seu servidor sem ter nenhum problema.

Obrigado pela contribuição.

 

Aprovado.

Compartilhar este post


Link para o post
kelvinvictor    0
kelvinvictor

Tudo bem eu consegui fazer isso nos arquivos que vc disponibilizou para download, mais na pasta do meu ot eu não encontro a maioria desses arquivos (resources.h e entre outros) é para me colocar esse arquivos que vc disponibilizou (ja editado por me) na pasta do meu otserver?

 

Por favor responda e diga como eu posso fazer isso

Compartilhar este post


Link para o post
tadeumatos2    0
tadeumatos2

Qual programa eu uso pra compilar o projeto tou usando o Microsoft C++ Visual Studio, mais ta dando erro. Eu teenho que usar Dev-C++ éé?

Compartilhar este post


Link para o post
Henke Rula    4
Henke Rula

Parabens pelo topico. Ja ajuda mt gente.

Porem o Follow Target ainda é um pequeno problema nos servers 8.60.

 

Xdd

Compartilhar este post


Link para o post
Delvire    0
Delvire
Qual programa eu uso pra compilar o projeto tou usando o Microsoft C++ Visual Studio, mais ta dando erro. Eu teenho que usar Dev-C++ éé?

 

Um usuário da Otfans disponibilizou um Dev-C++ com todas as livrarias necessárias pra compilar o Ot, é só dar uma pesquisada

Compartilhar este post


Link para o post
Asould Acalaylaa    5
Asould Acalaylaa

Po, legal, muita gente não sabe.

Mas eu ainda prefiro baixar um OT 8.6 e transferir arquivo por arquivo pro novo server (monsters, npcs, actions...).

É mais fácil, acho, e já vem com todas as features 8.6. :)

Compartilhar este post


Link para o post
Krovitch    0
Krovitch

Não tem nenhuma feature 8.6, pode cre, nem items nem auto-stack.

 

Só o 0.4_SVN que tem o auto-stack.

 

----

 

O follow ja foi fixado a muito tempo e tem ai no tópico.

Compartilhar este post


Link para o post
notle.com    2
notle.com

link quebrado

Compartilhar este post


Link para o post
Jhony Michael    0
Jhony Michael

tem Como Passa Um 8.10 Pra 8.54?

Compartilhar este post


Link para o post
GOD TY    0
GOD TY

link quebrado, ajeita aeeee.

Compartilhar este post


Link para o post
Dudu BonD    0
Dudu BonD

tranquilo !

Compartilhar este post


Link para o post
hallanehallex    0
hallanehallex

irei testar

Compartilhar este post


Link para o post
Majesty    1755
Majesty

Link de download corrigido.

Compartilhar este post


Link para o post
hallanehallex    0
hallanehallex

@Blue Silver amigo, poe quando quando tento entrar no meu client 8.54 ele apresenta o seguinte erro >> Only clients with protocol 8.60 are allowed << mais ai altero a versão do meu client, spr e dat para 8.60  e tento entrar no meu servidor (recém modificado para 8.60) e aparece o seguinte erro >> Only clients with protocol 8.54 are allowed << ai fica foda de saber o real problema pq se eu tento entrar em 8.54 ele pedi 8.60 se eu tento entrar em 8.54 ele pedi 8.60

OBS: Ja alterei a versão do mapa para 8.60

Compartilhar este post


Link para o post
Majesty    1755
Majesty
Em 29/12/2017 em 17:39, hallanehallex disse:

@Blue Silver amigo, poe quando quando tento entrar no meu client 8.54 ele apresenta o seguinte erro >> Only clients with protocol 8.60 are allowed << mais ai altero a versão do meu client, spr e dat para 8.60  e tento entrar no meu servidor (recém modificado para 8.60) e aparece o seguinte erro >> Only clients with protocol 8.54 are allowed << ai fica foda de saber o real problema pq se eu tento entrar em 8.54 ele pedi 8.60 se eu tento entrar em 8.54 ele pedi 8.60

OBS: Ja alterei a versão do mapa para 8.60

Encontrei o TFS 0.3.6 postado pelo usuário Printer da OTland para a versão 8.6. Veja se consegue atualizar os seus arquivos diretamente neste servidor:

https://otland.net/threads/8-60-the-forgotten-server-0-3-6-crying-damson-v8.147913/

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×