Lista warunków i funcki 3220 9

O temacie

Autor Góral Żywiec

Zaczęty 19.01.2014 roku

Wyświetleń 3220

Odpowiedzi 9

Góral Żywiec

Góral Żywiec

Użytkownicy
Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
posty153
Propsy42
Profesjabrak
  • Użytkownicy
  • Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
Mam pytanie szukam od dłuszego czasu na forum wątku listy warunków i funkci o to mi chodzi żę jest wiele warunków i funkcji który jeszcze nie znam i moje pytanie przymi ile jest ich rodzaji i czy na forum gdześ jest zapisana lista bym mógł ją spokojnie obejżeć. ? Wiem wiem jest wiele napisanych warunków na forum ale czy jest jedne ze wszstkimi.

Bardzo proszę o odpowedz:

Pozdrawiam
 

szpaqszpaq

szpaqszpaq

Użytkownicy
posty33
Propsy6
ProfesjaGracz
  • Użytkownicy
Jak uruchomisz sobie Gothic Sourcer to masz taką ładną zakładkę Class View i tam widzisz wszystkie Internal Functions. Zacznij od tego.
 
Oi

Splash

Splash

Moderator
posty4211
Propsy3412
ProfesjaNierób
  • Moderator
Dobra to jadziem.

Zacznijmy od pliku Externals, który zawiera najczęściej używane funkcje. Znajduje się on w Scripts\Content\AI\AI_Intern. Funkcje nie są nigdzie ukryte. Wystarczy przeszukać skrypty.

Teraz trochę opowiem o warunkach. W warunkach można umieszczać funkcje, które zaczynają się tak : "Func Int", zmienne, stałe, aivary.

Warto zaopatrzeć się w Notepad ++, który może wyszukać wiersz w plikach. Przyda się jeśli będziesz chciał znaleźć jakąś funkcję zgadując jej nazwę lub nie wiesz gdzie ona jest.

Przykładowy warunek :
Cytuj
if (Npc_HasReadiedWeapon (self))
{
Tu możesz wpisać np. funkcję, zmienną lub co innego.
Np. Print ("Masz wyciągniętą broń");
};
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
To nie do końca tak jak piszesz. "Warunek" jest jeden, po prostu "if (...) { ... }". To po prostu wykonanie bloku kodu jeśli podana wartość jest równoważna true (niezerowa). Zarówno kod zwracający tą wartość jak i ten do wykonania może być dowolny. Nie musi to nawet być funkcja. Z tego powodu nie da się stworzyć "listy warunków".

Funkcji są dwa rodzaje. Pierwszy to funkcje zewnętrzne i ich lista rzeczywiście istnieje: http://themodders.org/index.php?topic=84.msg1015362#msg1015362 . Są to te funkcje które są zdefiniowane w silniku i które bezpośrednio robią coś ze światem gry lub jakimiś informacjami. Nie da się dodawać nowych bez specjalnych narzędzi (jak gTools).
Drugi rodzaj to funkcje skryptowe. One same w sobie nic nie robią - działają całkowicie w oparciu o funkcje zewnętrzne. Można tworzyć ich dowolną ilość. Bardzo dużo jest gotowych, ale nie ma sensu robić ich kompletnej listy, bo większość nie nadaje się do używania poza tym jednym miejscem do którego zostały stworzone. Do tego wszystko co robią da się równie dobrze napisać samemu. Dlatego takich które rzeczywiście się przydają jest niewiele. Jedną z tych które pamiętam jest 
func int C_BodyStateContains (var C_NPC slf, var int bodystate)Można próbować zrobić ich listę, ale opierałaby się tylko i wyłącznie na subiektywnym wyczuciu czy dana funkcja jest przydatna (bo jak napisałem lista wszystkich byłaby totalnie bezużyteczna). Trzeba by przy niej bardzo wyraźnie zaznaczyć że chodzi o oryginalne funkcje skryptowe, nie zewnętrzne. Do tego siłą rzeczy nie obejmowałaby tych których nie ma w gotowych skryptach, a które można napisać samemu lub pobrać - a tych może być bardzo wiele, jak ta: http://themodders.org/index.php?topic=20123.0

Góral Żywiec

Góral Żywiec

Użytkownicy
Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
posty153
Propsy42
Profesjabrak
  • Użytkownicy
  • Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
Dzięki panowie jest tu wiele funkcji chociaż opisanych po niemiecku ale są.

Mam jeszcze jedno pytanko chodzi o warunki :)

if - To jest warunek rozpoczynający sie
&& _ plus kilka warunków
II - Muszisz mieć jeden waruken spełniony
!- blokada warunków
Ale tego nie czeja:

Else

i

Else if

Mógłby mi ktoś wytłumaczyć szczegółowo (FUNC INT) i return.

A najwięcej to kmine o co biega z tymi warunkami podczas rozmowy.

Bardzo prosze o wttłumaczenie mi tego jeśli komuś się chce.
 
   
   

 

Splash

Splash

Moderator
posty4211
Propsy3412
ProfesjaNierób
  • Moderator
&& - dodatkowy warunek
| | - można by powiedzieć, że to warunek "lub" :lol2:
np.
if (coś)  ma zostać spełniony ten warunek
|| (coś 2)  lub ten
{
co tylko tu chcesz
};

! - używa się go jako "nie" (nie umiem zbytnio tego wyjaśnić o tej porze)
np.
if !(Npc_HasReadiedWeapon (hero)) - sprawdza czy nie masz wyciągniętej broni. Gdyby nie było wykrzyknika, sprawdzałoby czy masz wyciągniętą broń.

drugi przykład :
if (zmienna != 1) - jeśli wartość zmiennej nie jest równa 1

Else - z ang. na polski oznacza "w przeciwnym razie". Czyli jeśli warunek nie zostanie spełniony.

np.
if (zmienna == 1)
{
Print ("Warunek jest spełniany");
}
else <- w przeciwnym razie
{
Print ("Warunek nie jest spełniany");
};

Else if - w przeciwnym razie, ale jeśli drugi warunek jest spełniany.

np.
if (zmienna == 1)
{
Print ("Warunek jest spełniany");
}
else if (hero.attribute[ATR_STRENGTH] > 10) <- napis "Warunek nie jest spełniany" pojawi się jeśli bohater ma więcej niż 10 pkt siły.
{
Print ("Warunek nie jest spełniany");
};

 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Cytuj
Dzięki panowie jest tu wiele funkcji chociaż opisanych po niemiecku ale są.

Mam jeszcze jedno pytanko chodzi o warunki

if - To jest warunek rozpoczynający sie
&& _ plus kilka warunków
II - Muszisz mieć jeden waruken spełniony
!- blokada warunków
Ale tego nie czeja:

Else

i

Else if

Mógłby mi ktoś wytłumaczyć szczegółowo (FUNC INT) i return.

A najwięcej to kmine o co biega z tymi warunkami podczas rozmowy.

Bardzo prosze o wttłumaczenie mi tego jeśli komuś się chce.

   
   

if - słowo kluczowe zapowiadające wartość do sprawdzenia i blok do wykonania jeśli jest ona prawdziwa
&& - operator oznaczający "i", jak w zdaniu "Jasio ma rękę i nogę"
|| - operator oznaczający "lub", jak w zdaniu "Jasio ma rękę lub nogę, ale nie wiadomo czy obie na raz"
! - operator oznaczający "nie ...", jak w zdaniu "Jeśli Jasio nie ma nogi, to nie chodzi"
else - słowo kluczowe zapowiadające blok do wykonania jeśli warunek wykonania poprzedniego bloku miał wartość fałszywą
else if - jak else, ale samo posiada dodatkowy warunek

func - słowo kluczowe zapowiadające definicję funkcji
int - typ, w kontekście "func int" typ zwracany przez daną funkcję. Int to typ liczbowy całkowity, np 12.
return - słowo kluczowe zapowiadające wartość którą funkcja ma zwrócić zarazem kończąc swoje działanie.

Nie rozumiem co masz na myśli przez "warunki podczas rozmowy". "Podczas" może być jakaś czynność. "Warunek" to konstrukcja w kodzie, nie czynność.

Góral Żywiec

Góral Żywiec

Użytkownicy
Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
posty153
Propsy42
Profesjabrak
  • Użytkownicy
  • Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
Chodzi mi że poczas dialogu są warunki podziw się na ten skrypt alvalach który pożyczyłem od Thepoziokaz
FUNC VOID Info_Korth_EnterCamp_Info(){   
   B_FullStop (hero);
   AI_DrawWeapon (self);
   AI_GotoNpc(self,other);
   AI_Output (self, other,"Info_EnterCamp_11_00"); //Czego tu szukasz włóczęgo?! I lepiej żebyś miał dobry powód!
   
   if (FindHunter==LOG_SUCCESS)
      {   
         AI_RemoveWeapon (self);
         AI_Output (self, other,"Info_Korth_EnterCamp_11_09"); //Słyszałem, że pomogłeś jednemu z naszych i to zupełnie bezinteresownie. To bardzo rzadka cecha wśród tutejszych szumowin.
         B_GiveXP(XP*5);
         AI_Output (self, other,"Info_Korth_EnterCamp_11_10"); //Większość ze skazańców poderżnęłaby gardło własnej matce, gdyby dostali za to choć trochę rudy.
         
         if (DiegoHelp<=LOG_RUNNING)
         {
            AI_Output (self, other,"Info_Korth_EnterCamp_11_11"); //Możesz wejść do obozu. Tylko lepiej żeby ci się nic nie przykleiło do rączek. Dla złodziei mamy tylko jedną karę. I uwierz mi, że śmierć jest jej bezbolesnym epitafium...
            AI_Output (self, other,"Info_Korth_EnterCamp_11_12"); //Jak chcesz się dowiedzieć czegoś więcej to pogadaj z Servinem. Może pozostali też będą chcieli zamienić z tobą słówko. Pogadaj z Angharem, to nasz kowal. Ma chyba jakiś problem.
            AI_Output (other, self,"Info_Korth_EnterCamp_15_17"); //Dzięki...
            AI_Output (self, other,"Info_Korth_EnterCamp_11_18"); //Dobra, już dobra. Przestań psuć powietrze i spadaj. Mam ważniejsze sprawy na głowie niż pogaduchy.
         };
         NPC_ExchangeRoutine (self,"start");
         Log_CreateTopic   (P_OHCamp, LOG_MISSION);
         Log_SetTopicStatus   (P_OHCamp, LOG_RUNNING);
         if (DiegoHelp!=LOG_RUNNING)
         {
            B_LogEntry      (P_OHCamp, "W końcu odnalazłem tych tajemniczych odludków. Trafienie na to zadupie mało nie kosztowało mnie życia. Pełno tutaj dzikich zwierząt. Korth, który jest tutaj strażnikiem wysłał mnie do jakiegoś Servina, żebym z nim pogadał o przesyłce dla Diego. Mówił też żebym zamienił słówko z jakimś Angharem.");
         };
         Kyro_1 = 5;
         AngharHelp=LOG_RUNNING;
         OHCamp=LOG_RUNNING;
         //AI_StopProcessInfos   (self);
      }
      else
      if (DiegoHelp!=LOG_RUNNING)
      {
         AI_Output (other, self,"Info_Korth_EnterCamp_15_13"); //Ja tylko...
         AI_Output (self, other,"Info_Korth_EnterCamp_11_14"); //Nikt nie będzie się tutaj pałętał bez powodu! Sam tego chciałeś łachmyto...
         AI_StopProcessInfos   (self);
         Npc_SetPermAttitude   (self, ATT_HOSTILE);
         Npc_SetTarget (self,other);
         AI_StartState (self,ZS_ATTACK,1,"");
      };
     
   if (DiegoHelp==LOG_RUNNING)
   {   
      B_GiveXP(XP*2);
      AI_Output (other, self,"Info_Korth_EnterCamp_15_01"); //Przysyła mnie Diego. Mam dla niego odebrać jakąś przesyłkę. Nic więcej nie wiem...
      AI_RemoveWeapon (self);
      AI_Output (self, other,"Info_Korth_EnterCamp_11_02"); //Trzeba było tak od razu mówić. Jak masz odebrać coś dla Diega, to idź do Servina, on jest naszym kwatermistrzem.
      AI_Output (self, other,"Info_Korth_EnterCamp_11_03"); //Tylko żeby cię rączki nie świerzbiły. Jak zobaczę, że coś kradniesz, to obetnę ci wszystkie pięć członków. Jasne?
      AI_Output (other, self,"Info_Korth_EnterCamp_15_04"); //Jak słońce.
   /*   if (Kyro_rec == 2)
      {
      Kyro_1 = 5;
      AI_Output (self, other,"Info_Korth_EnterCamp_15_05"); //Kyro wspomniał mi, że mu pomogłeś. Pewnie zrobiłeś to tylko po to żeby zarobić.
      AI_Output (self, other,"Info_Korth_EnterCamp_15_06"); //Ale to nie zmienia faktu, że pomogłeś jednemu z nas. Dobrze zrobiłeś.
      };
      if (Kyro_rec == 1)
      {
      Kyro_1 = 5;
      };*/
      AI_Output (self, other,"Info_Korth_EnterCamp_11_07"); //A teraz spadaj, bo zasłaniasz mi widok. Idź pogadaj z Servinem i lepiej żebyś nic nie kombinował...
      AI_Output (self, other,"Info_Korth_EnterCamp_11_08"); //Aha. Jak już tu jesteś, to zagadaj też do Anghara. On ci powie o co chodzi.
      NPC_ExchangeRoutine (self,"start");
      Log_CreateTopic   (P_OHCamp, LOG_MISSION);
      Log_SetTopicStatus   (P_OHCamp, LOG_RUNNING);
      B_LogEntry      (P_OHCamp, "W końcu odnalazłem tych tajemniczych odludków, o których mówił Diego.  Trafienie na to zadupie mało nie kosztowało mnie życia. Pełno tutaj dzikich zwierząt. Korth, który jest tutaj strażnikiem wysłał mnie do jakiegoś Servina, żebym z nim pogadał o przesyłce dla Diego. Mówił też żebym zamienił słówko z jakimś Angharem.");
      AngharHelp=LOG_RUNNING;
      OHCamp=LOG_RUNNING;
      //AI_StopProcessInfos   (self);
   }
   else
   if (FindHunter!=LOG_SUCCESS)
      {
         AI_Output (other, self,"Info_Korth_EnterCamp_15_13"); //Ja tylko...
         AI_Output (self, other,"Info_Korth_EnterCamp_11_14"); //Nikt nie będzie się tutaj pałętał bez powodu! Sam tego chciałeś łachmyto...
         AI_StopProcessInfos   (self);
         Npc_SetPermAttitude   (self, ATT_HOSTILE);
         Npc_SetTarget (self,other);
         AI_StartState (self,ZS_ATTACK,1,"");
      };
     
      /*if (FindHunter!=LOG_SUCCESS) && (DiegoHelp!=LOG_RUNNING)
      {
         AI_Output (other, self,"Info_Korth_EnterCamp_15_13"); //Ja tylko...
         AI_Output (self, other,"Info_Korth_EnterCamp_11_14"); //Nikt nie będzie się tutaj pałętał bez powodu! Sam tego chciałeś łachmyto...
         AI_StopProcessInfos   (self);
         Npc_SetPermAttitude   (self, ATT_HOSTILE);
         Npc_SetTarget (self,other);
         AI_StartState (self,ZS_ATTACK,1,"");
      };*/
   
   AI_StopProcessInfos   (self);
   
};
 


Góral Żywiec

Góral Żywiec

Użytkownicy
Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
posty153
Propsy42
Profesjabrak
  • Użytkownicy
  • Krew odporna na mrozy,chłody,wiatry i lód "Błkitna krew"
Ok  coś mnie oświeciło dziękuje za wytrwałośc i tłumaczenie temat do zamknięca. Jescze raz dziękuje :) 
 


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