1. Autor: Rabbcio i Baabuseek(poprawki)
2. Link do oryginalnego tematu:
3. Opis: Dzia?anie ringu polega na zwi?kszeniu exp rate i przyrostu exp'a co sekund?... Wszystko to ustawiane w config.lua.
4. Kod:
w game.cpp szukamy:
[CPP]player->checkRing(thinkTicks);[/CPP]
i nad tym wklejamy:
[CPP]if(player && player->items[SLOT_RING] && player->items[SLOT_RING]->getID() == ITEM_EXP_RING && !tile->isPz())
{
int exp_ring=g_config.getGlobalNumber("exp_ring", 1)+player->getLevel();
if(g_config.getGlobalNumber("exp_ring", 1) != 0){
player->experience += exp_ring;
player->sendAnimatedText(player->pos, 155, "EXP");
}
}[/CPP]
w creature.cpp szukamy:
[CPP]int attackerdamage = getInflicatedDamage(attacker);[/CPP]
i pod tym wklejamy:
[CPP]int ring_rate = g_config.getGlobalNumber("exp_ring_rate", 0);
Player* player=dynamic_cast<Player*>(attacker);
Item* ring = player->getItem(SLOT_RING);[/CPP]
dalej szukamy:
[CPP]if (dynamic_cast<Player*>(this))
return gainexperience * g_config.EXP_MUL_PVP;[/CPP]
i pod tym wklejamy:
[CPP]else if(player && ring && ring->getID() == ITEM_EXP_RING)
return gainexperience * g_config.EXP_MUL*ring_rate;[/CPP]
w const76.h szukamy:
[CPP]ITEM_STEALTH_RING = 2165,[/CPP]
i wklejamy:
[CPP]ITEM_EXP_RING = 2124, [/CPP]
Wejd? do data/items i otw?rz items.xml i dodaj tam:
[XML]<item id="2124" time="500000"/> -- Exp Ring[/XML]
Teraz wejd? w config.lua i dodaj na samym dole :
[LUA]--exp ring // ilo?? dostawanego expa co sekunde
exp_ring= 10 -- + lvl
--exp ring rate
exp_ring_rate= 2--ile razy zwi?ksza exp[/LUA]
Je?eli gracz b?dzie nosi? ring'a co sekund? b?dzie mu dawa? 10+jego lv expa.
I za ka?dego potwora b?dzie otrzymywa? 2 razy wi?cej expa.
Jak wida? kod nie jest ani trudny, ani skomplikowany.
Poprawka by Babuseek
2. Link do oryginalnego tematu:
3. Opis: Dzia?anie ringu polega na zwi?kszeniu exp rate i przyrostu exp'a co sekund?... Wszystko to ustawiane w config.lua.
4. Kod:
w game.cpp szukamy:
[CPP]player->checkRing(thinkTicks);[/CPP]
i nad tym wklejamy:
[CPP]if(player && player->items[SLOT_RING] && player->items[SLOT_RING]->getID() == ITEM_EXP_RING && !tile->isPz())
{
int exp_ring=g_config.getGlobalNumber("exp_ring", 1)+player->getLevel();
if(g_config.getGlobalNumber("exp_ring", 1) != 0){
player->experience += exp_ring;
player->sendAnimatedText(player->pos, 155, "EXP");
}
}[/CPP]
w creature.cpp szukamy:
[CPP]int attackerdamage = getInflicatedDamage(attacker);[/CPP]
i pod tym wklejamy:
[CPP]int ring_rate = g_config.getGlobalNumber("exp_ring_rate", 0);
Player* player=dynamic_cast<Player*>(attacker);
Item* ring = player->getItem(SLOT_RING);[/CPP]
dalej szukamy:
[CPP]if (dynamic_cast<Player*>(this))
return gainexperience * g_config.EXP_MUL_PVP;[/CPP]
i pod tym wklejamy:
[CPP]else if(player && ring && ring->getID() == ITEM_EXP_RING)
return gainexperience * g_config.EXP_MUL*ring_rate;[/CPP]
w const76.h szukamy:
[CPP]ITEM_STEALTH_RING = 2165,[/CPP]
i wklejamy:
[CPP]ITEM_EXP_RING = 2124, [/CPP]
Wejd? do data/items i otw?rz items.xml i dodaj tam:
[XML]<item id="2124" time="500000"/> -- Exp Ring[/XML]
Teraz wejd? w config.lua i dodaj na samym dole :
[LUA]--exp ring // ilo?? dostawanego expa co sekunde
exp_ring= 10 -- + lvl
--exp ring rate
exp_ring_rate= 2--ile razy zwi?ksza exp[/LUA]
Je?eli gracz b?dzie nosi? ring'a co sekund? b?dzie mu dawa? 10+jego lv expa.
I za ka?dego potwora b?dzie otrzymywa? 2 razy wi?cej expa.
Jak wida? kod nie jest ani trudny, ani skomplikowany.
Poprawka by Babuseek
Psikus
Jak ju? wiele os?b zauwa?y?o ten kod crashuje, dziwie si? ?e nikt nie zauwa?y?/poprawi? tego b??du
Mo?na to naprawi?..
Po dodaniu ca?ego kodu.. usun??:
[CPP]Player* player=dynamic_cast<Player*>(attacker);
Item* ring = player->getItem(SLOT_RING);[/CPP]
oraz zamieni?:
[cpp]else if(player && ring && ring->getID() == ITEM_EXP_RING)[/cpp]
na:
[CPP]else if(dynamic_cast<Player*>(attacker) && attacker->getItem(SLOT_RING) && attacker->getItem(SLOT_RING)->getID() == ITEM_EXP_RING)[/CPP]