Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Tentando trazer ainda mais conteúdo para o forum, achei um código pronto muito interessante que aumenta muito o RPG do servidor.

E um sistema tirado dos jogos da Bethesda como Skyrim e Fallout. Essa modificação faz com o que personagem com a tenha capacidade de carregar infinita, mais ao chegar determinado valor o personagem começa andar mais devagar.

 

tEES4-M.png

Vamos ao código:

Em config.lua

Abaixo de:

playerFollowExhaust = 0
Adicione:

capacityOverload = 0.75
Em configmanager.cpp

Abaixo de:

m_confNumber[FOLLOW_EXHAUST] = getGlobalNumber("playerFollowExhaust", 2000);
Adicione:

m_confDouble[CAPACITY_OVERLOAD] = getGlobalDouble("capacityOverload", 0.75);
Em configmanager.h

Abaixo de:

FORMULA_MAGIC,
Adicione:

CAPACITY_OVERLOAD,
Em player.cpp

Substitua:

windowTextId = nextExAction = 0;
Por:

windowTextId = nextExAction = capacityOverload = 0;
Substitua:

void Player::updateInventoryWeight()
Por: 

void Player::updateInventoryWeight()
{
inventoryWeight = 0.00;
if(hasFlag(PlayerFlag_HasInfiniteCapacity)
|| !g_config.getBool(ConfigManager::USE_CAPACITY))
return;

for(int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i)
{
if(Item* item = getInventoryItem((slots_t)i))
inventoryWeight += item->getWeight();
}

if (inventoryWeight >= capacity && !capacityOverload)
{
capacityOverload = (int32_t)(getSpeed() * g_config.getDouble(ConfigManager::CAPACITY_OVERLOAD));
g_game.changeSpeed(this, -capacityOverload);
}
else if (inventoryWeight < capacity && capacityOverload)
{
g_game.changeSpeed(this, capacityOverload);
capacityOverload = 0;
}
}
Substitua:

bool Player::hasCapacity(const Item*, uint32_t) const
Por:

bool Player::hasCapacity(const Item*, uint32_t) const
{
return true;
}
Substitua:

void Player::onThink(uint32_t interval)
Por: 

void Player::onThink(uint32_t interval)
{
Creature::onThink(interval);
int64_t timeNow = OTSYS_TIME();
if(timeNow - lastPing >= 5000)
{
if (capacityOverload)
{
g_game.addMagicEffect(getPosition(), MAGIC_EFFECT_POFF);
sendCancel("Your capacity is overloaded!");
}

lastPing = timeNow;
if(hasClient())
client->sendPing();
else if(g_config.getBool(ConfigManager::STOP_ATTACK_AT_EXIT))
setAttackedCreature(NULL);
}

if((timeNow - lastPong) >= 60000 && !getTile()->hasFlag(TILESTATE_NOLOGOUT)
&& !isConnecting && !pzLocked && !hasCondition(CONDITION_INFIGHT))
{
if(hasClient())
client->logout(true, true);
else if(g_creatureEvents->playerLogout(this, false))
g_game.removeCreature(this, true);
}

messageTicks += interval;
if(messageTicks >= 1500)
{
messageTicks = 0;
addMessageBuffer();
}


if(lastMail && lastMail < (uint64_t)(OTSYS_TIME() + g_config.getNumber(ConfigManager::MAIL_ATTEMPTS_FADE)))
mailAttempts = lastMail = 0;
}
Em player.h

Abaixo de:

int32_t shieldBlockCount;
Adicione:

int32_t capacityOverload;
Créditos:

Code by: sn3ejk - OTLand

Tradução by: MatheusEnjoy

  • 2 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo