[G2 NK] Podwójny exp za NPC'a jak w Gothic I - pytanie. 3525 2

O temacie

Autor Graveir

Zaczęty 11.09.2018 roku

Wyświetleń 3525

Odpowiedzi 2

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Hej, takie durne i szybkie pytanie. Czy istnieje jakaś funkcja/warunek, która umożliwia przyznanie expa podwójnego za NPC'a tak, jak to miało miejsce w Gothic 1? Mam na myśli sytuację, że po dobiciu postaci(po tym, jak ją pobijemy przy pomocy broni białej) przy pomocy magii lub łuku/kuszy dostajemy dodatkowy exp(przykładowo - za dobicie magią dostajemy 50 expa, a za łuk/kuszę 100)?
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
funkcji jako takiej nie ma, bo to jest chyba przecież bug Gothica 1 :D
ja bym to zrobił ręcznie: w ZS_Dead dodaj:

// other = hero, ten który zabija
// code - B_GivePlayerXP(x);

if (Npc_IsInFightMode(other, FMODE_MELEE)) {
  // code
}
else if (Npc_IsInFightMode(other, FMODE_FAR)) {
  // code
}
else if  (Npc_IsInFightMode(other, FMODE_MAGIC)) {
  // code
};
 

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
W Gothic 1 to chyba znajduje się w pliku B_GiveXP.
func void B_DeathXP()
{
PrintDebugNpc (PD_ZS_FRAME, "B_DeathXP");
PrintGlobals (PD_ZS_CHECK);

if C_NpcIsHuman(self)
&& Npc_WasInState(self, ZS_Unconscious)
{
PrintDebugNpc (PD_ZS_CHECK, "...Opfer ist bewußtloser Mensch!");
// SN: keine XP für Finishing-Move!!!
}
else
{
PrintDebugNpc (PD_ZS_CHECK, "...Opfer ist entweder nicht bewußtlos oder kein Mensch!");
B_GiveXP (self.level * XP_PER_LEVEL_DEAD);
};
};

func void B_UnconciousXP()
{
PrintDebugNpc (PD_ZS_FRAME, "B_UnconciousXP");
PrintGlobals (PD_ZS_CHECK);

//-------- Erfahrung nur beim ersten Sieg über Menschen --------
if !C_NpcIsHuman(self)
|| !self.aivar[AIV_WASDEFEATEDBYSC]
{
PrintDebugNpc (PD_ZS_CHECK, "...erster Sieg!");
B_GiveXP (self.level * XP_PER_LEVEL_DEAD); // die vollen XP beim Sieg vergeben, da finishing-Move keine XPs mehr ergibt!
};
};
Ale sprawdzę twój pomysł.
Edit: Dobra, zadziałało. Wielkie dzięki za pomoc :-)
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry