skrypt odnoszący sie do zachowań danej gilddi względem hero lub danego npca 3672 8

O temacie

Autor pawbuj

Zaczęty 26.12.2009 roku

Wyświetleń 3672

Odpowiedzi 8

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
chcę stworzyć zbiór zachowań odnoszący się do npc z wyłacznie danej gildii zdeterminowany od wartości zmiennej.


nie oczekuje gotowego rozwiązania, ale naprowadzenia na właściwy trop.

próbowałem coś takiego, np.[codebox]if (self.guild == Gil_Gur)
(
Npc_SetAttitude    ( self, ATT_HOSTILE );
Npc_SetTempAttitude    ( self, HOSTILE );
 oraz
if   (Points_OC <= -10)&&(hero.guild == GIL_NONE)   
   {
   PrintScreen   ("Nie jesteś mile widziany w starym obozie!", 27,16,"FONT_OLD_20_WHITE.TGA",1);///Edit by Pawbuj
      Wld_SetGuildAttitude      (GIL_GRD, ATT_HOSTILE, GIL_NONE) ;
      Wld_SetGuildAttitude      (GIL_NONE, ATT_HOSTILE, GIL_GRD) ;
[/codebox]
ale coś nie działa, ma ktoś inny pomysł?



dodałem cos takiego, nie wiem czy dobrze:
if (C_NpcIsInFightMode   (other))|| (self.guild == GIL_GRD)
   {
      PrintDebugNpc      (PD_ZS_CHECK, "...Eindringling ist im Kampfmodus!");
      B_AssessFighter      ();
      return;
jednak nadal nie działa
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
temat wałkuje nie wiem jak długo, chce zrobić, aby w funkcji tick_tiocku można było definiować zachowanie poszczególnych npc, segregując je gildiami lub numerem id.

dałem coś takiego i ....nic. nie ma reakcji.

proszę o pomoc.[codebox]func void tiktak()
{   
   var C_NPC self;    self = Hlp_GetNpc(self);
      
   if   (Npc_GetDistToNpc (self,hero) && (self.id == 200))
   {
   PrintScreen   ("Nie jesteś mile widziany w starym obozie!", 27,16,"FONT_OLD_20_WHITE.TGA",1);///Edit by Pawbuj
      Wld_SetGuildAttitude      (GIL_GRD, ATT_HOSTILE, GIL_NONE) ;
      Wld_SetGuildAttitude      (GIL_NONE, ATT_HOSTILE, GIL_GRD) ;
      Wld_SetGuildAttitude      (GIL_STT, ATT_HOSTILE, GIL_NONE) ;
      Wld_SetGuildAttitude      (GIL_VLK, ATT_HOSTILE, GIL_NONE) ;
      Wld_SetGuildAttitude      (GIL_EBR, ATT_HOSTILE, GIL_NONE) ;
   };[/codebox]
 


pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
reparsowałem na 100%.
Adanosie, pomocy!
 

maciejG

maciejG

Użytkownicy
posty450
Propsy1
  • Użytkownicy
var C_NPC self; self = Hlp_GetNpc(self);
Po co to? O ile mi wiadomo,  self jest jak coś się wywołuje w skryptach NPC, a ticktock jest poza nimi. I Hlp_GetNpc(self); raczej nie zadziała bo jako parametr podaje się np. SLD_1900_Cośtam, a nie C_NPC.

Lepiej to zrobic z GetDistToWP i jakiś waypoint w starym obozie czy w czym tam chcesz...
 
Spoiler

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
Co dokładnie chcesz osiągnąć? Czy to ma odnosic sie tylko do bohatera?
Tick tock jest tutaj raczej zbedny.
 



pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
co chcę osiągnąć?
chcę zrobić funkcję, która będzie sprawdzała, że jeżeli zostanie spełniony warunek np.npc na widok hero  (lub inny niż hero) ma id w przedziale 1 do np. 1000 lub gidię GRD to......definiujemy, że np. zmienia się stosunek do głównego bohatera lub innego npc na hostile lub cokolwiek.
oczywicie jak zmienić stosunek to wiem i nie trzeba mi podpowiadać.
wazne, jak warunkować w funkcji id lub i gidlię innych niż hero

próbowałem cos takiego , ale niestety też nie działa[codebox]func void tiktak()
{   
   Npc_PercEnable        (self,   PERC_ASSESSDAMAGE       ,   ZS_ReactToDamage   );
   Npc_PercEnable        (self,    PERC_ASSESSMAGIC      ,   B_AssessMagic      );
   Npc_PercEnable        (self,    PERC_ASSESSSURPRISE      ,   ZS_AssessSurprise   );
   Npc_PercEnable        (self,    PERC_ASSESSENEMY      ,   B_AssessEnemy      );
   Npc_PercEnable        (self,   PERC_ASSESSFIGHTER      ,   B_AssessFighter      );
   Npc_PercEnable        (self,   PERC_ASSESSTHREAT      ,   B_AssessFighter      );
   Npc_PercEnable        (self,   PERC_ASSESSWARN         ,    B_AssessWarn       );
   Npc_PercEnable        (self,   PERC_ASSESSMURDER      ,   ZS_AssessMurder      );
   Npc_PercEnable        (self,   PERC_ASSESSDEFEAT      ,   ZS_AssessDefeat      );
   Npc_PercEnable        (self,   PERC_ASSESSFIGHTSOUND   ,   B_AssessFightSound   );
   Npc_PercEnable        (self,   PERC_CATCHTHIEF         ,   ZS_CatchThief       );
   Npc_PercEnable        (self,   PERC_ASSESSTHEFT      ,   B_AssessTheft       );
   Npc_PercEnable        (self,    PERC_ASSESSTALK         ,   B_RefuseTalk       );
   Npc_PercEnable        (self,    PERC_ASSESSENTERROOM   ,   B_AssessEnterRoom    );
   Npc_PercEnable        (self,    PERC_ASSESSUSEMOB      ,   B_AssessUseMob       );

   
   if (Npc_CanSeeNpc      (self,   hero) && (self.id > 1))// lub (self.guild == GiL_GRD)
   {
   PrintScreen   ("Nie jesteś mile widziany w starym obozie!", 27,16,"FONT_OLD_20_WHITE.TGA",1);///Edit by Pawbuj[/codebox]
 

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
Takie rzeczy sie robi przez GuildAttitudes czyli plik GUILDS.D tam zmieniasz nastawienie do siebie gildii.
 



pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
no tak, ale jak chce zmienić aby atakowali mnie npc ze starej kopalni,gdzie jest id od ... do..... to będę zmieniał wszystkim rutynę, ewentualnie ustawiła na hostile całą gildę- raczej bez sensu...

z resztą mam na myśli nie tylko atak, ale i inne zachowania np. reakcja pewnej grupy npc na hero lub innego npca na posiadanie przedmiotów, wypełnienie misji, etc.

chciałem stworzyć taki zestaw zachowań  jak w pliku b_human, gdzie jest assessenemy, assessmurder etc.

stworzyć dla wszystkich strażników dodatkowy oręż,(poprzez odpowiedni warunek) który nałożą. rozwiązań jest nieskończenie wiele.

mógłbym to zrobić rozpisując się na każdego osobno, ale jest to za pracochłonne i bez sensu, bo na pewno jest inne, bardziej eleganckie rozwiązanie.

orc cbyba nie zrozumiałeś do końca, o co mi chodzi.
w pliku guilds.d nie znajdę na to odpowiedzi.

P.S. próbowałem edycję b_assessbody, ale niestety nie udało się - sądziłem,że tak znajdę rozwiązanie.

jesli chodzi o sam atak, to zrobiłbym jak b_setroguestohostile, co innego jak mamy to przerobienia np. wszystkich npc z kopalni gomeza - kupa pracy.

tym razem trafił się temat trudniejszy niżeli " jak wstawić nowego npc" :)

właściwie to wczoraj późnym wieczorem udało mi się to zrobic, tak jak chciałem.
 


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