Postado Dezembro 4, 2011 13 anos Esse sistema foi postado na otland pelo usuário VirrageS Foi testado em um TFS 0.4 REV.3884 Vamos lá: ITEM.CPP Embaixo de: case ATTR_ARTICLE: { std::string article; if(!propStream.getString(article)) return ATTR_READ_ERROR; setAttribute("article", article); break; } Colocar: case ATTR_CRITICALHITCHANCE: { int32_t criticalHitChance; if(!propStream.getLong((uint32_t&)criticalHitChance)) return ATTR_READ_ERROR; setAttribute("criticalhitchance", criticalHitChance); break; } Embaixo de: bool begin = true; if(tmp) { s << " (Arm:" << tmp; begin = false; } Colocar: if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } Embaixo de: if(it.defense || it.extraDefense || (item && (item->getDefense() || item->getExtraDefense()))) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Def:" << int32_t(item ? item->getDefense() : it.defense); if(it.extraDefense || (item && item->getExtraDefense())) s << " " << std::showpos << int32_t(item ? item->getExtraDefense() : it.extraDefense) << std::noshowpos; } Colocar: if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } ITEM.H Embaixo de: ATTR_DUALWIELD = 43, Colocar: ATTR_CRITICALHITCHANCE = 44, Embaixo de: int32_t getAttack() const; Colocar: int32_t getCriticalHitChance() const; Embaixo de: inline bool Item::isScriptProtected() const { const bool* v = getBooleanAttribute("scriptprotected"); if(v) return *v; return false; } Colocar: inline int32_t Item::getCriticalHitChance() const { const int32_t* v = getIntegerAttribute("criticalhitchance"); if(v) return *v; return items[id].criticalHitChance; } ITEMS.CPP Embaixo de: attackSpeed = 0; Colocar: criticalHitChance = 0; Embaixo de: else if(tmpStrValue == "extradefense" || tmpStrValue == "extradef") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.extraDefense = intValue; } Colocar: else if(tmpStrValue == "criticalhitchance") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.criticalHitChance = intValue; } ITEMS.H TROCAR: int32_t attack, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance, POR: int32_t attack, criticalHitChance, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance, LUASCRIPT.CPP Embaixo de: setField(L, "text", item->text); Colocar: setField(L, "criticalHitChance", item->criticalHitChance); PLAYER.CPP Embaixo de: int32_t Player::getArmor() const { int32_t i = SLOT_FIRST, armor = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) armor += item->getArmor(); } if(vocation->getMultiplier(MULTIPLIER_ARMOR) != 1.0) return int32_t(armor * vocation->getMultiplier(MULTIPLIER_ARMOR)); return armor; } Colocar: int32_t Player::getCriticalHitChance() const { int32_t i = SLOT_FIRST, crit = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) crit += item->getCriticalHitChance(); } return crit; } PLAYER.H Embaixo de: virtual int32_t getArmor() const; Colocar: virtual int32_t getCriticalHitChance() const; WEAPONS.CPP Substituir todos: if(random_range(1, 100) < g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE)) Por: if(random_range(1, 100) < player->getCriticalHitChance() + g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE)) A tag para se colocar no items.xml é a seguinte: <attribute key="criticalHitChance" value="5" /> Espero que gostem! Editado Dezembro 16, 2011 13 anos por grafit (veja o histórico de edições) Att, Grafit.
Postado Dezembro 8, 2011 13 anos dando uma olhada rapida... parece ser bem funcional.. poderia por uma imagen mostrando o funcionamento. Não se comprometa, com aquilo que não pode fazer.
Postado Dezembro 16, 2011 13 anos Autor Valeu Gabriel, na verdade o primeiro era ITEM.CPP mesmo, o segundo que era ITEMS.CPP Att, Grafit.
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.