Nie widzialem tu takiego skryptu wiec postanowilem go napisac. Chodzi w nim o to ze gdy masz zalozony ten ring to dostajesz o np 20% wiecej expa za potwry niz normalnie a wiec tak:
Zaczynamy
W items.h w strukturze Abilities pod manaTicks = 0;dodajemymoreExp = 0;Dalej podint16_t absorbPercentAll;dodajemyuint16_t moreExp;Przechodzimy do items.cpp, znajdujemy else if(strcasecmp(strValue.c_str(), "runeSpellName") == 0){
if(readXMLString(itemAttributesNode, "value", strValue)){
it.runeSpellName = strValue;
}
}i dodajemy pod spodem
else if(strcasecmp(strValue.c_str(), "moreExp") == 0){
if(readXMLInteger(itemAttributesNode, "value", intValue)){
it.abilities.moreExp = intValue;
}
}Przechodzimy teraz do player.cpp
Znajdujemy definicję funkcji void Player:

nGainExperience(int64_t gainExp)i między { i }znajdujemyCreature:

nGainExperience(gainExp);i przed tym dodajemy to Item* item = Player::getInventoryItem(SLOT_RING);
if(item){
const ItemType& it = Item::items[item->getID()];
gainExp += (gainExp * it.abilities.moreExp)/100;
}Następnie Przebudowujemy kod (ctrl+F11 w devcpp).
Ok, gotowy, teraz tylko w items.xml dodajemy parametr <attribute key="moreExp" value="50"/> do ringa który ma dodawać %expa. W value oczywiście wpisujemy ile % expa więcej ma dostawać gracz. Czyli jeśli zostawimy 50 to przy exprate 10x bez ringa za rata dostaniemy 50 expa a z 75. Proste? xD
Testowałem na b-foxie 8.1 ale bezproblemowo będzie działać na innych silnikach (co do protokołu nie wiem).
Ofc 100% by me.
Pozdrawiam