Forum po¶więcone powstawaniu Belxena OTS
Ide± tego skryptu jest zwiększenie expa otrzymywanego przez gracza o jaki¶ procent podczas noszenia specjalnego pier¶cienia. Tzn. je¶li masz założony ring dostajesz 20% expa więcej. Nie widziałem takiego kodu (możliwe że istnieje) więc go wam napisze xD
Zaczynamy
W items.h w strukturze Abilities pod
Kod:
manaTicks = 0;
dodajemy
Kod:
moreExp = 0;
Dalej pod
Kod:
int16_t absorbPercentAll;
dodajemy
Kod:
uint16_t moreExp;
Przechodzimy do items.cpp, znajdujemy
Kod:
else if(strcasecmp(strValue.c_str(), "runeSpellName") == 0){
if(readXMLString(itemAttributesNode, "value", strValue)){
it.runeSpellName = strValue;
}
}
i dodajemy pod spodem
Kod:
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
Kod:
void Player::onGainExperience(int64_t gainExp)
i między
Kod:
{ i }
znajdujemy
Kod:
Creature::onGainExperience(gainExp);
i przed tym dodajemy to
Kod:
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, silnik praktycznie gotowy, teraz tylko w items.xml dodajemy atrybut
Kod:
<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
Offline