Zmienna dla każdego NPC 1711 4

O temacie

Autor Liberty

Zaczęty 7.08.2019 roku

Wyświetleń 1711

Odpowiedzi 4

Liberty

Liberty

Użytkownicy
posty39
Propsy12
ProfesjaSkrypter
  • Użytkownicy
Gothic I

Witam, zrobiłem walki na arenie, rutyna działa dobrze ale mam pytanie, jak zrobić nową zmienną dla każdego NPC?
Chodzi mi o takie coś że w npc mogę dodać np.:
arenaenemy = XXX_XXX_XXX;I mógłbym użyć tego w rutynie np.:
if(self.arenaenemy)
{
enemy = Hlp_GetNPC(self.arenaenemy);
};

Próbowałem tak:
Story_Globals:
var int arenaenemy;

Kod NPC (w instancji):
arenaenemy = XXX_XXX_XXX;

Kod NPC (rutyna):
TA_ArenaFight (19,15,19,30,"OCR_ARENABATTLE_TRAIN2");

Edit: Testowałem też z attribute[1 (i innymi)] ale wtedy się wszystko buguje i NPC ma 1 siły, 1 hp, 1 many itd. więc odpada
 

bogu9821

bogu9821

Użytkownicy
posty404
Propsy185
ProfesjaProgramista
  • Użytkownicy
Gothic I

Witam, zrobiłem walki na arenie, rutyna działa dobrze ale mam pytanie, jak zrobić nową zmienną dla każdego NPC?
Chodzi mi o takie coś że w npc mogę dodać np.:
arenaenemy = XXX_XXX_XXX;I mógłbym użyć tego w rutynie np.:
if(self.arenaenemy)
{
enemy = Hlp_GetNPC(self.arenaenemy);
};

Próbowałem tak:
Story_Globals:
var int arenaenemy;

Kod NPC (w instancji):
arenaenemy = XXX_XXX_XXX;

Kod NPC (rutyna):
TA_ArenaFight (19,15,19,30,"OCR_ARENABATTLE_TRAIN2");

Edit: Testowałem też z attribute[1 (i innymi)] ale wtedy się wszystko buguje i NPC ma 1 siły, 1 hp, 1 many itd. więc odpada

Musisz użyć wolnego aivara z klasy c_npc. Wolne są od 89 do 99. Czyli na przykład npc.aivar[89] = 1;
Nowych zmiennych dla każdego npc się zrobić nie da. Ewentualnie możesz zrobić tablicę zmiennych i robiąc pętlę na liście npc uzyskać podobny efekt, ale do tego musisz użyć ikarusa/uniona. Jednakże przy uzyciu uniona możesz rozszerzyć klasy, wiec takie rozwiązanie jest zbędne.
 
while(false) Do();

Liberty

Liberty

Użytkownicy
posty39
Propsy12
ProfesjaSkrypter
  • Użytkownicy

Liberty

Zmienna dla każdego NPC
#2 2019-08-07, 18:02(Ostatnia zmiana: 2019-08-08, 15:26)
Dzięki wielkie sprawdze



Sprawdziłem ale nie działa, array-index out of range, za duże, czemu?
self.aivar[89] = SLD_729_Kharim;

Zamieniłem ten aivar na 9 i 10, nie bedzie to z niczym kolidować?

Post połączony: 2019-08-08, 15:26
Ref
 

bogu9821

bogu9821

Użytkownicy
posty404
Propsy185
ProfesjaProgramista
  • Użytkownicy
Dzięki wielkie sprawdze



Sprawdziłem ale nie działa, array-index out of range, za duże, czemu?
self.aivar[89] = SLD_729_Kharim;

Zamieniłem ten aivar na 9 i 10, nie bedzie to z niczym kolidować?

Post połączony: 2019-08-08, 15:26
Ref

Widzę, że modujesz G1.  Wolne Aivary będziesz miał od 43 do 49. Inne są już w użyciu.
 
while(false) Do();

Liberty

Liberty

Użytkownicy
posty39
Propsy12
ProfesjaSkrypter
  • Użytkownicy

Liberty

Zmienna dla każdego NPC
#4 2019-08-09, 13:30(Ostatnia zmiana: 2019-08-09, 16:48)
Dzięki wielkie, można zamknąć

Edit póki nie zamknięte, zrobiłem tarcze i wszystko działa tylko jak zrobić żeby OD RAZU po założeniu tarczy wykonało się to:
*eventSwapMesh   (6               "ZS_CROSSBOW"   "ZS_SHIELD")
Próbowałem tak:
Model ("SHIELDS")
{

MeshAndTree ("Hum_Body_Naked0.ASC" DONT_USE_MESH)

aniEnum
{
modelTag ("DEF_HIT_LIMB" "zs_RightHand")
*eventSwapMesh   (6               "ZS_CROSSBOW"   "ZS_SHIELD")
// dalszy kod
ale nie działa :|
 


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