• logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

Perfect Amulet

Status
Zamknięty.

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:
25kq7io.gif

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();
}
i dodaj tam:
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);
}
Potem poszukaj:
Kod:
#ifdef YUR_PREMIUM_PROMOTION
if (promoted)
{
if(healthTick < promotedGainHealthVector[vocation][0])
return false;
i dodaj:
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;
Nast?pnie znajd?:
Kod:
#endif //YUR_PREMIUM_PROMOTION
{
if(manaTick < gainManaVector[vocation][0])
return false;
I dodaj:
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;
Teraz w luascript.cpp pod:
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);
Dodaj:
Kod:
AMULETMANA = getGlobalNumber("amuletMana",1);
AMULETHEALTH = getGlobalNumber("amuletHealth",1);
W luascript.h pod:
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];
Dodaj:
Kod:
int AMULETMANA;
int AMULETHEALTH;
W const76.h Pod:
Kod:
ITEM_MIGHT_RING = 2164,
Dodaj
Kod:
ITEM_PERFECT_AMULET = 2131,
I w configu:
Kod:
-- Ustawienia PERFECT AMULETU
amuletHealth = "100"
amuletMana="100"
Ok jedziemy dalej
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
        }
    }
I dodaj:
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
Do parametr?w dodaj:
Kod:
-D_VIRTELI_WH_
W configu:
Kod:
speedAMULET = 100
Ok dalej idziemy:
W luascript.cpp pod:
Kod:
MANA_INFERNO = atoi(getGlobalStringField("wandmana", 5, "13").c_str());
Dodaj:
Kod:
PERFECT_AMULET = getGlobalNumber("perfectamulet",2);
W game.cpp pod:
Kod:
#ifdef YUR_DRAINS
if (me->attackType & ATTACK_MANADRAIN)
{
manaDamage = std::min(damage, targetCreature->mana);
targetCreature->drainMana(manaDamage);
damage = 0;
}
else
#endif //YUR_DRAINS
Dodaj:
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;
}
W lua script.h pod:
Kod:
int MANA_INFERNO;
Dodaj:
Kod:
int PERFECT_AMULET;
I w configu:
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?
W Player.cpp pod:
Kod:
if (items[SLOT_NECKLACE] && items[SLOT_NECKLACE]->getID() == ITEM_AOL) 
{ 
removeItemInventory(SLOT_NECKLACE); 
return; 
}
dodaj:
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;
}
Pod:
Kod:
long lostMana = 0;
Dodaj:
Kod:
if(aol)
{ 
return; 
}
Zmie? to:
Kod:
experience -= getLostExperience();
Na to:
Kod:
if(!aol)
{ 
experience -= getLostExperience(); 
} 
else
{ 
aol = false; 
}
W player.h pod:
Kod:
bool gainHealthTick();
Dodaj (jak masz ju? to, to nie dodawaj):
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;
}
Na to:
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();
		}
Dodaj:
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


 
Odp: Perfect Amulet

Taki kodzik to si? przyda na wy?udzenie kasy na pacc. xd
Nie ?artuje kod mo?e by? 8/10. :>
 
Odp: Perfect Amulet

Cos mi niedziala bo nieda sie zalozyc amuletu na Siebie ;/
 
Odp: Perfect Amulet

#up

Da sie zalozyc jedynie gdy masz PACC. Zobaczy czy postac go ma.

#topic

Fajny amulet, tak jak napisal xzaron, dobry na wyludzenie kasy za pacc ^^.
Szkoda tylko rzeczy trzeba powklejac.
Gratulacje, dobra robota !
 
Odp: Perfect Amulet

Amulet fajny :) Wida?, ?e si? postara?e?. Amulet posiada kilka na prawd? przydatnych funkcji. Amulet oceniam na 9/10.
Pozdrawiam
 
Odp: Perfect Amulet

hmm czyzby ktos z ekipy apo udostepnil Ci go ? moze Ty im go zrobiles ? :O
 
Status
Zamknięty.
Do góry