korzonek93
Advanced User
- Dołączył
- Grudzień 14, 2008
- Posty
- 151
- Liczba reakcji
- 1
Kod jest m?j, Masterpall na otsoft to ja
. Skorzysta?em z paru kod?w i po??czy?em je w jedno i powsta? Perfect Amulet.
Wygl?da on tak:
Opis: Osoba nosz?ca ten amulet po ?mierci nie traci do?wiadczenia, ani ekwipunku, dzia?a tylko dla pacc, zwi?ksza szyko?? chodzenia, redukuje obra?enia i zwi?ksza ataki magiczne, i ma kilka ?adunk?w
No to do dzie?a.
W player.cpp znajd?:
i dodaj tam:
Potem poszukaj:
i dodaj:
Nast?pnie znajd?:
I dodaj:
Teraz w luascript.cpp pod:
Dodaj:
W luascript.h pod:
Dodaj:
W const76.h Pod:
Dodaj
I w configu:
Ok jedziemy dalej
W player.cpp znajd?:
I dodaj:
Do parametr?w dodaj:
W configu:
Ok dalej idziemy:
W luascript.cpp pod:
Dodaj:
W game.cpp pod:
Dodaj:
W lua script.h pod:
Dodaj:
I w configu:
Potem
w data/items/items.xml:
W Player.cpp pod:
dodaj:
Pod:
Dodaj:
Zmie? to:
Na to:
W player.h pod:
Dodaj (jak masz ju? to, to nie dodawaj):
--------------------
A jak chcesz ?eby by? dla pacc to zmie? to:
Na to:
-----------------
I na koniec:
W game.cpp pod:
Dodaj:
Dodatkowe Informacje
Kod testowany na Armia 6.6.6 i YurOTS 0.9.4f

Wygl?da on tak:

Opis: Osoba nosz?ca ten amulet po ?mierci nie traci do?wiadczenia, ani ekwipunku, dzia?a tylko dla pacc, zwi?ksza szyko?? chodzenia, redukuje obra?enia i zwi?ksza ataki magiczne, i ma kilka ?adunk?w
No to do dzie?a.
W player.cpp znajd?:
Kod:
removeItemInventory(SLOT_RING);
client->sendSkills(); // TODO: send only if it was skill ring
}
}
bool timeRingNow = (items[SLOT_RING] && items[SLOT_RING]->getID() == ITEM_TIME_RING_IN_USE);
if (timeRing != timeRingNow)
{
timeRing = timeRingNow;
setNormalSpeed();
hasteTicks = 0;
sendChangeSpeed(this);
sendIcons();
}
Kod:
if(items[SLOT_NECKLACE] && items[SLOT_NECKLACE]->getID() == ITEM_PERFECT_AMULET)
{
mana += min(g_config.getGlobalNumber("amuletMana", 1), manamax - mana);
health += min(g_config.getGlobalNumber("amuletHealth", 1), healthmax - health);
}
Kod:
#ifdef YUR_PREMIUM_PROMOTION
if (promoted)
{
if(healthTick < promotedGainHealthVector[vocation][0])
return false;
Kod:
else if (healthTick < (promotedGainHealthVector[vocation][0] - ((promotedGainHealthVector[vocation][0] * 25) / 100)) && items[SLOT_NECKLACE] && (items[SLOT_NECKLACE]->getID()!= ITEM_PERFECT_AMULET || items[SLOT_NECKLACE]->getID() != ITEM_PERFECT_AMULET))
return false;
Kod:
#endif //YUR_PREMIUM_PROMOTION
{
if(manaTick < gainManaVector[vocation][0])
return false;
Kod:
else if (manaTick < (gainManaVector[vocation][0] - ((gainManaVector[vocation][0] * 25) / 100)) && items[SLOT_NECKLACE] && (items[SLOT_NECKLACE]->getID()!= ITEM_PERFECT_AMULET || items[SLOT_NECKLACE]->getID() != ITEM_PERFECT_AMULET))
return false;
Kod:
#ifdef YUR_MULTIPLIERS
EXP_MUL = getGlobalNumber("expmul",1);
EXP_MUL_PVP = getGlobalNumber("expmulpvp",1);
HEALTH_TICK_MUL = getGlobalNumber("healthtickmul",1);
MANA_TICK_MUL = getGlobalNumber("manatickmul",1);
Kod:
AMULETMANA = getGlobalNumber("amuletMana",1);
AMULETHEALTH = getGlobalNumber("amuletHealth",1);
Kod:
#ifdef YUR_MULTIPLIERS
exp_t EXP_MUL;
exp_t EXP_MUL_PVP;
int HEALTH_TICK_MUL;
int MANA_TICK_MUL;
int CAP_GAIN[5];
int MANA_GAIN[5];
int HP_GAIN[5];
int WEAPON_MUL[5];
int SHIELD_MUL[5];
int DIST_MUL[5];
int MANA_MUL[5];
Kod:
int AMULETMANA;
int AMULETHEALTH;
Kod:
ITEM_MIGHT_RING = 2164,
Kod:
ITEM_PERFECT_AMULET = 2131,
Kod:
-- Ustawienia PERFECT AMULETU
amuletHealth = "100"
amuletMana="100"
W player.cpp znajd?:
Kod:
void Player::checkRing(int thinkTics)
{
if (items[SLOT_RING] && items[SLOT_RING]->getTime() > 0) // eat time from ring
{
items[SLOT_RING]->useTime(thinkTics);
if (items[SLOT_RING]->getTime() <= 0)
{
removeItemInventory(SLOT_RING);
client->sendSkills(); // TODO: send only if it was skill ring
}
}
Kod:
#ifdef _VIRTELI_WH_
//CODE BY VIRTELIO(ADI411)
if(items[SLOT_NECKLACE] && items[SLOT_NECKLACE]->getID() == ITEM_PERFECT_AMULET){
g_game.changeSpeed(this->getID(), this->getNormalSpeed()*(g_config.getGlobalNumber("speedAMULET", 0)));
sendIcons();
} else{
g_game.changeSpeed(this->getID(), this->getNormalSpeed());
}
#endif
Kod:
-D_VIRTELI_WH_
Kod:
speedAMULET = 100
W luascript.cpp pod:
Kod:
MANA_INFERNO = atoi(getGlobalStringField("wandmana", 5, "13").c_str());
Kod:
PERFECT_AMULET = getGlobalNumber("perfectamulet",2);
Kod:
#ifdef YUR_DRAINS
if (me->attackType & ATTACK_MANADRAIN)
{
manaDamage = std::min(damage, targetCreature->mana);
targetCreature->drainMana(manaDamage);
damage = 0;
}
else
#endif //YUR_DRAINS
Kod:
if(attackPlayer && attackPlayer->getItem(SLOT_NECKLACE) && attackPlayer->getItem(SLOT_NECKLACE)->getID() == ITEM_PERFECT_AMULET){
double newdamage = damage*g_config.PERFECT_AMULET/100.0;
damage += (int)newdamage;
}
Kod:
int MANA_INFERNO;
Kod:
int PERFECT_AMULET;
Kod:
-- O ile % zwiekszone beda obrazenia przy noszeniu Perfect Amulet?
perfectamulet = 10
Potem
w data/items/items.xml:
Kod:
<item id="2131" charges="100"/> //tutaj zmieniamy ile ma mie? u?y?
Kod:
if (items[SLOT_NECKLACE] && items[SLOT_NECKLACE]->getID() == ITEM_AOL)
{
removeItemInventory(SLOT_NECKLACE);
return;
}
Kod:
if (items[SLOT_NECKLACE] && items[SLOT_NECKLACE]->getCharges() > 0)
{
if (items[SLOT_NECKLACE]->getID() == ITEM_PERFECT_AMULET)
{
items[SLOT_NECKLACE]->useCharge();
aol = true;
}
if (items[SLOT_NECKLACE]->getCharges() <= 0)
{
removeItemInventory(SLOT_NECKLACE);
}
return;
}
Kod:
long lostMana = 0;
Kod:
if(aol)
{
return;
}
Kod:
experience -= getLostExperience();
Kod:
if(!aol)
{
experience -= getLostExperience();
}
else
{
aol = false;
}
Kod:
bool gainHealthTick();
Kod:
bool aol;
A jak chcesz ?eby by? dla pacc to zmie? to:
Kod:
if (items[SLOT_NECKLACE] && items[SLOT_NECKLACE]->getCharges() > 0)
{
if (items[SLOT_NECKLACE]->getID() == ITEM_PERFECT_AMULET ){
items[SLOT_NECKLACE]->useCharge();
aol = true;
}
if (items[SLOT_NECKLACE]->getCharges() <= 0){
removeItemInventory(SLOT_NECKLACE);
}
return;
}
Kod:
if (items[SLOT_NECKLACE] && items[SLOT_NECKLACE]->getCharges() > 0)
{
if (items[SLOT_NECKLACE]->getID() == ITEM_PERFECT_AMULET && isPremium()){
items[SLOT_NECKLACE]->useCharge();
aol = true;
}
if (items[SLOT_NECKLACE]->getCharges() <= 0){
removeItemInventory(SLOT_NECKLACE);
}
return;
I na koniec:
W game.cpp pod:
Kod:
if (ring->getID() == ITEM_MIGHT_RING)
{
newDamage *= 0.9;
ring->useCharge();
}
Kod:
if (necklace)
{
if(necklace->getID() == ITEM_PERFECT_AMULET && ((atype & ATTACK_MANADRAIN) || (atype & ATTACK_LIFEDRAIN) || (atype & ATTACK_ENERGY) || (atype & ATTACK_FIRE) || (atype & ATTACK_POISON) || (atype & ATTACK_PHYSICAL)))
{
newDamage *= 0.94;
}
}
Dodatkowe Informacje
Kod testowany na Armia 6.6.6 i YurOTS 0.9.4f