Opatentowałem sposób na zakładanie większej ilości pierścieni, oraz określony przez nas limit założonych pierścieni. W dodatku jest to wszystko na podstawowych skryptach! Nic tylko brać!
Edytujemy wszystkie pierścienie. W instancji
każdego pierścienia musimy ustawić flagę:
flags = ITEM_THROW;
W ten oto sposób możemy zakładać wszystkie pierścienie jeden za drugim w nieskończoność.
Teraz czas na limit pierścieni.
Pokażę na przykładzie pierścienia:
itri_prot_fire_01Resztę pierścieni sami sobie dodajcie XD Dodanie nowych pierścieni jest bardzo proste. Później pokażę jak to zrobić.
Na początek tworzymy nowy plik, do którego wklejamy poniższy skrypt. W Gothic.src wpisać ten plik przed itemami.
const int MaxEquippedRings = 10; //Maksymalna liczba założonych pierścieni
var int ring_prot_fire_01; //Zmienna pierścienia (JEDNA ZMIENNA DLA JEDNEGO PIERŚCIENIA!)
func int EquippedRings()
{
return (ring_prot_fire_01);
};
func void EquipRings (var c_npc slf, var int itm, var int amount)
{
if(amount == 1)
{
EquipItem(slf, itm);
}
else if(amount == 2)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 3)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 4)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 5)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 6)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 7)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 8)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 9)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount >= 10)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
CreateInvItems(slf, itm, (amount - 10));
};
};
Poniższy skrypt dodajemy na sam początek funkcji on_equip:
if (EquippedRings() == MaxEquippedRings)
{
var int AllRings; AllRings = Npc_HasItems(self, itri_prot_fire_01);
var int EquippedRings; EquippedRings = ring_prot_fire_01;
Npc_RemoveInvItems(self, itri_prot_fire_01, AllRings);
if(AllRings > EquippedRings)
{
CreateInvItems(self, itri_prot_fire_01, (AllRings-EquippedRings));
};
EquipRings (self, itri_prot_fire_01, EquippedRings);
}
else
{
ring_prot_fire_01 += 1;
};
Do on_unequip dodajemy:
ring_prot_fire_01 -= 1;
W ten sposób można zakładać maksymalnie 10 pierścieni o instancji
itri_prot_fire_01.
=========================
Dodawanie nowych pierścieni
=========================
Otwieramy nasz nowy plik:
var int ring_prot_fire_01;
var int ring_prot_fire_02; //Dodajemy nową zmiennąfunc int EquippedRings()
{
return (ring_prot_fire_01
+ ring_prot_fire_02);
//Wpisujemy nową zmienną tutaj};
Teraz przechodzimy do pliku z pierścieniami. Kopiujemy skrypt z on_equip z pierwszego pierścienia i wklejamy do funkcji on_equip drugiego pierścienia.
Zmieniamy zmienną pierścienia na nową zmienną.Zmieniamy instancję pierścienia na instancję nowego pierścienia.
func void equip_itri_prot_fire_02()
{
if (EquippedRings() == MaxEquippedRings)
{
var int AllRings; AllRings = Npc_HasItems(self,
itri_prot_fire_02);
var int EquippedRings; EquippedRings =
ring_prot_fire_02;
Npc_RemoveInvItems(self,
itri_prot_fire_02, AllRings);
if(AllRings > EquippedRings)
{
CreateInvItems(self,
itri_prot_fire_02, (AllRings-EquippedRings));
};
EquipRings (self,
itri_prot_fire_02, EquippedRings);
}
else
{
ring_prot_fire_02 += 1;
};
self.protection[PROT_FIRE] += RI_PROTFIRE02;
};
func void unequip_itri_prot_fire_02()
{
ring_prot_fire_02 -= 1;
self.protection[PROT_FIRE] -= RI_PROTFIRE02;
};
GOTOWE! Teraz wystarczy tylko dodać resztę pierścieni z gry
=================================
Maksymalna liczba założonych pierścieni
=================================
Żeby zmienić liczbę pierścieni, które można założyć, trzeba zmienić liczbę w stałej i skrypt. Pokażę na przykładzie liczby 12.
const int MaxEquippedRings =
12;
Funkcja EquipRings.
func void EquipRings (var c_npc slf, var int itm, var int amount)
{
if(amount == 1)
{
EquipItem(slf, itm);
}
else if(amount == 2)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 3)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 4)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 5)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 6)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 7)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 8)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 9)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 10)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount == 11)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
}
else if(amount >= 12)
{
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
EquipItem(slf, itm);
CreateInvItems(slf, itm, (amount - 12));
};
};
Gotowe, to wszystko. Teraz flaga ITEM_RING nie jest używana i można ją zastąpić na przykład kolczykami, które będzie można założyć tylko 2, bądź użyć tego jako dułale*