Postado Abril 21, 2014 11 anos 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. Vamos ao código: Em config.lua Abaixo de: playerFollowExhaust = 0Adicione: capacityOverload = 0.75Em configmanager.cppAbaixo de: m_confNumber[FOLLOW_EXHAUST] = getGlobalNumber("playerFollowExhaust", 2000); Adicione: m_confDouble[CAPACITY_OVERLOAD] = getGlobalDouble("capacityOverload", 0.75); Em configmanager.hAbaixo de: FORMULA_MAGIC,Adicione: CAPACITY_OVERLOAD,Em player.cppSubstitua: 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) constPor: 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.hAbaixo de: int32_t shieldBlockCount;Adicione: int32_t capacityOverload;Créditos:Code by: sn3ejk - OTLand Tradução by: MatheusEnjoy http://www.matheusvieira.info/
Postado Abril 21, 2014 11 anos Ótimo código amigo, obrigado por compartilhar conosco! STYLLER OT 2022
Postado Julho 12, 2014 10 anos Boa Cara! System: Arch Linux + i3WM Language Programmer: C#, PHP e ruby. Text Editor: Vim
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.