aivary i ich zastosowanie 227 6

O temacie

Autor pawbuj

Zaczęty 6.01.2017 roku

Wyświetleń 227

Odpowiedzi 6

pawbuj

pawbuj

Użytkownicy
posty1279
Propsy88
ProfesjaSkrypter
  • Użytkownicy
czy może ktoś przybliżyć zastosowanie aivarów w praktyce, ich tworzenie, edycję. nie było solidnego tutorialu na ten temat.
 
Gothic 1 UpdatePack fixmod 0.1 wkrótce!

Splash

Splash

Użytkownicy
And i said...
posty3536
Propsy2529
ProfesjaSkrypter
  • Użytkownicy
  • And i said...
Aivary to tablica zmiennych (w G1 50- a w G2 100-elementowa)  służących do "określania" npc. Wykorzystuje się je głównie do sterowania sztuczną inteligencją, jak na przykład czas przez jaki potwór będzie gonić przeciwnika, który przed nim ucieka. Zastosowań jest sporo, ale w twórcy pozostawili zaledwie kilka wolnych aivarów (artifical inteligence variable).
 

pawbuj

pawbuj

Użytkownicy
posty1279
Propsy88
ProfesjaSkrypter
  • Użytkownicy
rozumiem, że są hardcodowane? jak mogę, gdzie i kiedy je stosować?

tu są te najważniejsze z g1. //-------- Kennungen der AI-Variablen --------
const int AIV_WANTEDITEM = 0;
const int AIV_PCISSTRONGER = 1;
const int AIV_BEENATTACKED = 2;
const int AIV_HIGHWAYMEN = 3;
const int AIV_HAS_ERPRESSED = 4; // MH: 0 = Nein, 1 = SC hat gezahlt, 2 = SC wollte sich nicht erpressen lassen, es kam zum Kampf
const int AIV_BEGGAR = 5;
const int AIV_OBSERVEINTRUDER = 6;
const int AIV_FINDABLE = 7; // MH: Für Info_FindNPC
const int AIV_PLUNDERED = 8; // wird gesetzt sobald der Körper geplündert wurde und gelöscht, wenn der NSC ohnmächtig/tot wird
const int AIV_WARNTARGET = 9;
const int AIV_LASTHITBYRANGEDWEAPON = 10; // SN: Merkt sich, ob der letzte erlittene Schaden durch eine Fernkampfwaffe/Magie verursacht wurde. Wird für einen intelligenten Abbruch des ZS_Attack benötigt.
const int AIV_HASBEENDEFEATEDINPORTALROOM = 11;
const int AIV_HANGAROUNDSTATUS = 12;
const int AIV_TRIGGER3  = 13;
const int AIV_GUARDMEMORY = 14;
const int AIV_GUARDITERATOR = 15;
const int AIV_FIGHTSPEACHFLAG = 16;
const int   AIV_ITEMSTATUS  = 17;
const int   AIV_ITEMFREQ  = 18;
const int   AIV_WASDEFEATEDBYSC = 19;
const int   AIV_HASDEFEATEDSC = 20;
const int   AIV_ISLOOKING = 21;
const int   AIV_IMPORTANT = 22;
const int   AIV_MOVINGMOB = 23;
 
Gothic 1 UpdatePack fixmod 0.1 wkrótce!

Splash

Splash

Użytkownicy
And i said...
posty3536
Propsy2529
ProfesjaSkrypter
  • Użytkownicy
  • And i said...
Cytuj
rozumiem, że są hardcodowane?
Nic tu nie jest hardcodowane. Nie można tylko zmieniać rozmiaru tej tablicy w skryptach, bo spowoduje to niezgodność z enginową klasą oCNpc.
Cytuj
jak mogę, gdzie i kiedy je stosować?
Notepad++ -> Szukaj -> Szukaj w plikach -> *nazwa aivara* -> Znajdź wszystkie
 

pawbuj

pawbuj

Użytkownicy
posty1279
Propsy88
ProfesjaSkrypter
  • Użytkownicy
ok, na przykład jak to możemy rozumieć

if ((Npc_GetStateTime(self)>=self.aivar[AIV_ITEMFREQ]) && Hlp_Random(1) == 1)
{
AI_PlayAni (self,"T_RICE_RANDOM_1");
Npc_SetStateTime(self,0);

self.aivar[AIV_ITEMFREQ]=(Hlp_Random(5)+5);
 
Gothic 1 UpdatePack fixmod 0.1 wkrótce!

inż. Avallach

inż. Avallach

Administrator
Czego pragniesz?
posty7363
Propsy4668
Nagrody
ProfesjaProgramista
  • Administrator
  • Czego pragniesz?
Z tego co pamiętam, w przeciwieństwie do większości klasy C_Npc, aivary w ogóle nie są czytane przez silnik. Wszystkie ich użycia są w skryptach, więc tak naprawdę wszystko możesz na ich temat sprawdzić sam.

Lehona

Lehona

Użytkownicy
posty195
Propsy182
  • Użytkownicy
I think there are a few AIVars the engine interacts with, although only AIV_INVINCIBLE springs to my mind. But yeah, like 99% of it is in the scripts, just search through them :)
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.


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