W tym tutorialu nauczymy się manipulować obrażeniami. Jest to ogólny opis, jak zmienić obrażenia w Gothic 2 NK, z naciskiem na miecze srebrne i stalowe.
Zanim przejdziemy do samych skryptów, potrzeba nam
Ikarusa i LeGo.
Gdy już pobraliśmy Ikarusa i LeGo potrzebujemy
tego skryptu.
Teraz, gdy już mamy ten skrypt (wklejamy go do Startup.d na samą górę - przed innymi funkcjami, lub gdzieś indziej) zabieramy się za zabawę. Jedyne, co nas będzie interesować to
func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg) {
// Diese Funktion anpassen, wenn ihr den Schaden verändern wollt! 'dmg' ist der von Gothic berechnete Schaden.
return dmg;
};
Dodajemy przed
return dmg; takie coś:
var c_npc slf; slf = _^(attackerptr); // atakujący
var c_npc oth; oth = _^(victimPtr); // ofiara
var C_Item EQWeapon; EQWeapon = Npc_GetReadiedWeapon(slf); // broń wyciągnięta
Zajmujemy się teraz samą funckją zadawania obrażeń, posłużę się bronią
ItMw_2H_Special_04 - Duże magiczne ostrze na smoki.
Teraz piszemy sam warunek:
if (Hlp_IsItem(EQWeapon, ItMw_2H_Special_04))
{
if (oth.guild > GIL_SEPERATOR_HUM)
{
dmg = oth.attribute[ATR_HITPOINTS_MAX];//tutaj piszemy formułkę, ja napisałem coś z dupy
};
};
Ale, ale, ale! Nie będzie obrażeń krytycznych. Co na to poradzić? Ano, nic szczególnie trudnego.
Robimy zmienną:
var int CritChances; CritChances = r_Max(100);
Sama zmienna będzie losowała liczby od 1 do 100 (w zasadzie powinno być 101, ale większej różnicy to nie robi)
Jeśli komuś się nie podoba
r_Max, może użyć
Hlp_Random, tyle, że
Hlp_Random losuje od 0.
Dodajemy
if (CritChances<=slf.hitchance[2]) // w [] wpisujemy 1, jeśli to broń jednoręczna, a 2, jeśli dwu-, w moim przypadku 2
{
dmg = dmg*2;//tutaj mnożymyobrażenia przy krytycznym uderzeniu
};
zaraz po naszej formułce dmg = ...; jeśli chcemy obrażenia krytyczne.
Na koniec wpisujemy InitDamage(); pod LegoInit w Startup.d
Info:
Jeśli mamy dużo takich broni (srebrnych/stalowych) możemy użyć zmiennej (w klasie C_Item)
string nameID i wpisać tam "Srebrny" jeśli jest to miecz srebrny, lub "Stalowy" jeśli jest to miecz stalowy i zastąpić
if (Hlp_IsItem(EQWeapon, ItMw_2H_Special_04))
tym
if (Hlp_StrCmp(EQWeapon.nameID, "Srebrny"))
lub
if (Hlp_StrCmp(EQWeapon.nameID, "Stalowy"))
UWAGA!!!:Obrażenia w Gothic 2 NK są zapisywane następująco:
bez krytycznych obrażeń:
damage = (weaponDamage + strength - armor - 1)/10a krytyczne następująco:
damage = (weaponDamage + strength - armor)Adnotacja: ten skrypt służy do ogólnego manipulowania obrażeniami w Gothic.
Jesli Ci pomogłem, liczę na

.
Jakiekolwiek uwagi proszę kierować w komentarze.
Jeśli użyjesz skryptu w swoim modzie, nie musisz uwzględniać tam mnie (to by było głupie, lol).
Zabraniam kopiowania tutoriala. Pozwalam tylko i wyłącznie na posyłanie linku do tego tematu.