Ir para conteúdo
Entre para seguir isso  
MatheusEnjoy

Capacidade de Sobrecargada

Recommended Posts

MatheusEnjoy    9
MatheusEnjoy

arhPioO.png

Nome: Capacity Overload
Versão: 1.0
Código: sn3ejk
Forum Origem: OTLand
Versão: Todos TFS
Descrição: 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;
Capacidade de Sobrecargada

Compartilhar este post


Link para o post
Lordfire    110
Lordfire

Adoro essa função :D Fallout 3 é um dos melhores jogos que já joguei.

 

O que exatamente seria esse número 0.75?

Compartilhar este post


Link para o post
Rhyon    23
Rhyon

Bem interessante esse sistema, pode ser útil para os servidores.

Compartilhar este post


Link para o post
MatheusEnjoy    9
MatheusEnjoy

Adoro essa função :D Fallout 3 é um dos melhores jogos que já joguei.

 

O que exatamente seria esse número 0.75?

75% da velocidade normal.

Compartilhar este post


Link para o post
gpedro    47
gpedro

bastante dahora para servidor com extremo mmorpg.

Compartilhar este post


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

    Nenhum usuário registrado visualizando esta página.

×