Dlaczego jeden Npc używa czaru 5613 13

O temacie

Autor Toworish

Zaczęty 3.04.2013 roku

Wyświetleń 5613

Odpowiedzi 13

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh

Toworish

Dlaczego jeden Npc używa czaru
2013-04-03, 21:30(Ostatnia zmiana: 2013-04-03, 21:31)
Siema, cóż pytanie brzmi dlaczego ten Npc:

INSTANCE Aka_145_itachi (Npc_Default)
{
// ------ NSC ------
name = "Itachi";
guild = GIL_Aka;
id = 145;
voice = 14;
flags       = 0;
npctype = NPCTYPE_MAIN;

// ------ AIVARS ------
aivar[AIV_ToughGuy] = TRUE;
aivar[AIV_ToughGuyNewsOverride] = TRUE;
aivar[AIV_IGNORE_Murder] = TRUE;
aivar[AIV_IGNORE_Theft] = TRUE;
aivar[AIV_IGNORE_Sheepkiller] = TRUE;
aivar[AIV_IgnoresArmor] = TRUE;

// ------ Attribute ------
B_SetAttributesToChapter (self, 6);

// ------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_MASTER;

// ------ Equippte Waffen ------
EquipItem (self, Towo_Kapelusz);

// ------ Inventory ------
//B_CreateAmbientInv (self);


// ------ visuals ------
B_SetNpcVisual (self, MALE, "Hum_Head_FatBald",Face_N_Itachi , BodyTex_N, Towo_Szata_Akatsuki);
Mdl_SetModelFatness (self, 0);
Mdl_ApplyOverlayMds (self, "Humans_Mage.mds");

// ------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);

// ------ Kampf-Talente ------
B_SetFightSkills (self, 30);

aivar[AIV_MagicUser] = MAGIC_ALWAYS;

// ------ TA anmelden ------
daily_routine = Rtn_PreStart_145;
};

FUNC VOID Rtn_PreStart_145 ()
{
TA_Sit_Throne (08,00,0,00,"ITACHI");
    TA_Sleep (20,00,08,00,"ITACHI");
};
Używa czarów choć niema wpisanych run w ekwipunek

i

Dlaczego Ten Npc:
INSTANCE None_190_klon (Npc_Default)
{
// ------ NSC ------
name = "Klon";
guild = GIL_None;
id = 190;
voice = 14;
flags       = 0;
npctype = NPCTYPE_MAIN;

// ------ AIVARS ------
aivar[AIV_ToughGuy] = TRUE;
aivar[AIV_ToughGuyNewsOverride] = TRUE;
aivar[AIV_IGNORE_Murder] = TRUE;
aivar[AIV_IGNORE_Theft] = TRUE;
aivar[AIV_IGNORE_Sheepkiller] = TRUE;
aivar[AIV_IgnoresArmor] = TRUE;

// ------ Attribute ------
B_SetAttributesToChapter (self, 6);

// ------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_MASTER;

// ------ Equippte Waffen ------
//EquipItem (self, ItMw_Miecz_Zabuzy);
EquipItem (self, ItRu_Whirlwind);
EquipItem (self, ItRu_ChargeFireball);
EquipItem (self, ItRu_Waterfist);


// ------ Inventory ------
//B_CreateAmbientInv (self);


// ------ visuals ------
Mdl_SetVisual (self,"HUMANS.MDS");
// ------ Visual ------ "body_Mesh", bodyTex SkinColor headMesh, faceTex, teethTex, armorInstance
Mdl_SetVisualBody (self, "hum_body_Naked0", 9, 0, "Hum_Head_Pony", FACE_N_Player, 0, Plaszcz);

// ------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);

// ------ Kampf-Talente ------
B_SetFightSkills (self, 30);

aivar[AIV_MagicUser] = MAGIC_ALWAYS;

// ------ TA anmelden ------
start_aistate = ZS_MM_Rtn_Summoned;
};
Ich nie używa choć ma je w ekwipunku

Pytanie to kieruję głównie w stronę osób takich jak: Avallach, Adanos, Sawik, EdekSumo, RafalBudzis i innych którzy mogą coś na ten temat powiedzieć xD
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
    aivar[AIV_MagicUser] = MAGIC_ALWAYS;To.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Z pierwszego NPC wywal
aivar[AIV_MagicUser] = MAGIC_ALWAYS;bo angielski jest trudna mowa i nie wie co to znaczyć ??

Drugiemu zmień rutynę
start_aistate = ZS_MM_Rtn_Summoned;
Rutyny z MM odnoszą się do potworów wiec nie dziwne ze potwór nie używa czarów ;d

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Hmm ale to jest przyzwaniec i musi mieć tą rutynę, co prawda to nie fałsz z anglika zawsze spoko słabo

Hmm racja po usunięciu aivar[AIV_MagicUser] = MAGIC_ALWAYS; Pierwszy npc nie wali magią ale czy nie da się aby ten drugi nią walił?

Nie wiem napisać jakiś aiwar dla monsterów czy coś XD
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Rutyny z MM odnoszą się do potworów wiec nie dziwne ze potwór nie używa czarów ;d
Smok. Muszę coś dodać? Używa runy kula ognia.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Dobra wszystko fajnie ale czemu w takim razie gdy przeteleportuję sie do tego drugiego npc za pomocą klawisz "O" i włączę mu jeden z tych czarów które ma w ekwipunku i wrócę do Hero to tamten npc używa tej runy, zrobiłem go właśnie tak żeby nie miał gildii "GIL_ZOMBIE" tylko none i podążał za hero
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Rutyny z MM odnoszą się do potworów wiec nie dziwne ze potwór nie używa czarów ;d
Smok. Muszę coś dodać? Używa runy kula ognia.
Ur-Shak ork z G1 miał gildie ludzi NONE ;) To że smok jest potworem nie znaczy ze nie może być człowiekiem  :lol:   Muszę coś dodać?

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel

Sawik
Moderator działu

Dlaczego jeden Npc używa czaru
#7 2013-04-03, 22:49(Ostatnia zmiana: 2013-04-03, 22:58)
To że smok jest potworem nie znaczy ze nie może być człowiekiem  :lol:   Muszę coś dodać?
To jest ogólnie kwestia animacji, bo zarówno potwory jak i ludzie są dziećmi klasy C_Npc.
Orkowie w G1 i G2 są jako potwory (gildia powyżej GIL_SEPARATOR_HUMAN) a używają czarów :D
Ur-Shak ork z G1 miał gildie ludzi NONE ;)
... by mógł z nami rozmawiać :D


Toworish - Tego klona daj jako normalnego ludzia, z rutyną TA_Follow_Player.



EDIT: Down, znów się jebłem :< Wracam do blendera :<
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
To jest ogólnie kwestia animacji, bo zarówno potwory jak i ludzie są dziećmi klasy C_Npc.
Potwory jak i ludzie nie są klasami wiec nie mogą być dziećmi :)  Są po prostu obiektami klasy C_Npc ;)

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Toworish - Tego klona daj jako normalnego ludzia, z rutyną TA_Follow_Player.
Wtedy będzie to trochę nie najlepiej gdyż npc nie będzie zdychał gdy kliknę na niego, plus to że rutyna nie działa gdy przywołuję npc, ona chyba działałaby dopiero po użyciu jej w dialogu gdyż określa się w niej waypoint xD

Ogólnie to napiszę sobie nową rutynę i wrócimy do tego później, chciałbym zapytać nie zakładając nowego tematu czy dałoby radę w jakichś sposób zrobić taki system czarów, czyli że npc używa najpierw jednego czaru a potem drugiego, np w zależności od tego ile mu zostało many ?

@Down Avallah

Spoko dzięki nie wygląda to na bardzo trudne więc myślę że dam jakoś radę nie spamując nikomu na gg ;p  "Pewnie za chwilę napiszę nowy temat z pytaniem co tu jest źle :P"
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel

Sawik
Moderator działu

Dlaczego jeden Npc używa czaru
#10 2013-04-05, 20:49(Ostatnia zmiana: 2013-04-05, 20:53)
PERC_ASSESSTALK perception taki. :ok:
Edit: TO odnośnie drugiego paragrafu
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Dlaczego jeden Npc używa czaru
#11 2013-04-05, 21:04(Ostatnia zmiana: 2013-04-05, 21:04)
Ogólnie to napiszę sobie nową rutynę i wrócimy do tego później, chciałbym zapytać nie zakładając nowego tematu czy dałoby radę w jakichś sposób zrobić taki system czarów, czyli że npc używa najpierw jednego czaru a potem drugiego, np w zależności od tego ile mu zostało many ?
Tak, AI programujesz dowolnie, to zwykłe skrypty. Jedyne czego potrzebujesz to lista funkcji zewnętrznych i umiejętność programowania.

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Hmm System czarów sobie jakoś ogarnąłem, ale jednak mam problem z rutyną doszedłem do tego że w rutynie ZS_MM_Rtn_Summoned największy problem przed używaniem czarów stanowi
B_MM_AssessEnemy Gdy zamieniłem je na B_AssessEnemy To postacie trochę używały czarów nie dałby ktoś rady zajrzeć do tych dwóch skryptów i powiedzieć mi czy dałoby się jakoś coś pozamieniać żeby dodać do B_MM_AssessEnemy możliwość używania czarów?

Rutyna TA_Follow_Player zadziałała gdy użyłem jej tak start_aistate = ZS_Follow_Klon czyli wywołałem od razu zs'a ale ona mnie nie rajcuję myślałem że jak zrobię nową rutynę mieszając tamte dwie ze sobą to będzie dobrze i wtedy właśnie doszedłem do tego B_ASSESSENEMY co jest lipne bo wtedy przywołana postać zachowuję się lipnie w kierunku do mnie, ja uderzę kogoś a przywolaniec mnie atakuje  :[

B_MM_AssessEnemy:

Spoiler
// **************************************************
// B_MM_AssessEnemy
// ----------------
// Monster nehmen andere Monster und Humans NUR wahr,
// wenn sie ATT_HOSTILE gesetzt haben
// (oder wenn sie oder ein Freund getroffen werden)
// Beutetiere nehmen Jäger über PERC_ASSESSWARN wahr
// --------------------------------------------------
// Orcs greifen direkt an
// **************************************************

func void B_MM_AssessEnemy ()
{
// EXIT IF...

// ------- Drache greift nicht an, wenn SC LaberAmulett hat ------
if (self.guild == GIL_DRAGON)
&& (Npc_HasItems (hero, ItMi_InnosEye_Mis) >= 1)
{
return;
};

// ------- OVERRIDE für menschliche Enemies ------
if ((self.aivar[AIV_NoFightParker] == TRUE) //werden nie angegriffen und greifen auch selbst nicht an.
|| (other.aivar[AIV_NoFightParker] == TRUE))
{
return;
};

// ------- OVERRIDE für menschliche Enemies ------
if (self.aivar[AIV_EnemyOverride] == TRUE) //Joly: für Inubis, Skelette in der Krypta und ä.
&& (other.guild < GIL_SEPERATOR_HUM)
{
return;
};

// ------- TESTMODE: Levelinspektor wird ignoriert ------
var C_NPC PCL; PCL = Hlp_GetNpc(PC_Levelinspektor);
if (Hlp_GetInstanceID(other) == Hlp_GetInstanceID(PCL))
{
return;
};

// ------- Mag-Golem-Lares-Hack ------------


// ------ HACK: Orks nicht in die Burg ------

// ------ SC/NSC im Dialog ignorieren ------
if (other.aivar[AIV_INVINCIBLE] == TRUE)
{
return;
};

// ------ Opfer im Wasser und ich will nicht ins Wasser ------
if (C_BodyStateContains(other,BS_SWIM) || C_BodyStateContains(other,BS_DIVE))
&& (self.aivar[AIV_MM_FollowInWater] == FALSE)
{
return;
};

// ------- Monster sollen sich zu Tode stürzen, etc. ------
if (Npc_GetHeightToNpc(self, other) > PERC_DIST_HEIGHT)
{
return;
};

// ------ Spieler ist in ein Monster verwandelt ------
// ACHTUNG: NSCs haben noch Perm_Attitude zu verwandeltem Player, die Guild-Attitude overridet (d.h. sie sind i.d.R. neutral), weswegen AssessEnemy nicht greift
if (Npc_IsPlayer (other))
&& (other.guild > GIL_SEPERATOR_HUM)
{
if (Wld_GetGuildAttitude(self.guild, other.guild) != ATT_HOSTILE)
{
return;
};
};

// ------ Monster können nach HINTEN nicht so weit riechen ------
// --------------------------------------------------------------
// ------ wenn ich weit riechen kann ------
if (self.senses_range > PERC_DIST_MONSTER_ACTIVE_MAX)
{
// ------ und Feind weit weg ist ------
if (Npc_GetDistToNpc (self, other) > PERC_DIST_MONSTER_ACTIVE_MAX)
{
// ------ und Feind hinter mir ist ------
if (!Npc_CanSeeNpc(self, other))
{
return;
};
};
};

// ------ wenn man sich an mich anschleichen kann ------
if (self.guild == GIL_ORC)
|| (self.guild == GIL_FRIENDLY_ORC)
{
// ------ und Feind schleicht ------
if (C_BodyStateContains (other, BS_SNEAK))
|| (C_BodyStateContains (other, BS_STAND))
{
// ------ und Feind hinter mir ist ------
if (!Npc_CanSeeNpc(self, other))
{
return;
};
};
};

// ------ other hinter Wand ------
if (!Npc_CanSeeNpcFreeLOS(self,other))
{
return;
};

// ------ Ich bin ein SUMMONED Monster ------
if (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
// ------ NpcType_Friend ignorieren ------
if (other.npctype == NPCTYPE_FRIEND)
{
return;
};

// ------ sonst Enemy IMMER angreifen ------
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Attack, 0, );
return;
};

// ------ Monster greift direkt an ------
if (self.aivar[AIV_MM_ThreatenBeforeAttack] == FALSE)
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Attack, 0, );
return;
};

// ------ in ZS_MM_EatBody - fressendes Monster ignoriert bzw. vertreibt Enemy ------
if (Npc_IsInState (self, ZS_MM_EatBody))
{
// ------ Enemy kommt in die AttackRange (nah) ------
if (Npc_GetDistToNpc(self, other) <= FIGHT_DIST_MONSTER_ATTACKRANGE) //Stoerenfried ist zu nah an body
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Attack, 0, );
return;
};

return;
};

// ------- in ZS_MM_Hunt - wenn in Attack-Range angreifen ------
if (Npc_IsInState (self, ZS_MM_Hunt))
{
if (Npc_GetDistToNpc(self, other) <= FIGHT_DIST_MONSTER_ATTACKRANGE)
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self,other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Attack, 0, );
return;
}
else
{
return;
};
};

// ------ Jäger greift Beute immer direkt an ------
if (C_PredatorFoundPrey(self, other))
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self,other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Hunt, 0, );
return;
};

// ------ Beute flieht vor Jäger (wenn in Droh-Reichweite (Abfrage s.o.) ------
if (C_PredatorFoundPrey(other, self))
{
if (!Npc_IsInState (other, ZS_MM_Hunt))
&& (Npc_GetDistToNpc (self, other) <= FIGHT_DIST_MONSTER_FLEE)
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self,other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Flee, 0, );
return;
}
else
{
return;
};
};


// FUNC

// ------ Feind bedrohen & wenn zu nah: angeifen ------
Npc_ClearAIQueue (self);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_ThreatenEnemy, 0, );
return;
};

B_AssessEnemy:

Spoiler
// ********************************************************************************
// B_AssessEnemy
// -------------
// Wenn NSC einen aNSC (oder Monster) sieht(!), zu dem er GILDEN(!)-Att_Hostile hat
// Hier wird davon ausgegangen,dass other auf JEDEN FALL ein Enemy ist!
// NSC geht in ZS_Attack (dort wird auf evtl. Flucht gecheckt)
// Reichweite: PERC_DIST_ACTIVE_MAX
// AssessEnemy wird NACH AssessPlayer gecheckt
// ********************************************************************************

func int B_AssessEnemy()
{
// EXIT IF...

// ------- TESTMODE: Levelinspektor wird ignoriert ------
var C_NPC PCL; PCL = Hlp_GetNpc(PC_Levelinspektor);
if (Hlp_GetInstanceID(other) == Hlp_GetInstanceID(PCL))
{
return FALSE;
};

//ADDON>
// ------- NoFightParker NPC kloppt sich nur mit Monstern oder dem Player, wird auch nie angegriffen ------
if ((Hlp_GetInstanceID(other) != Hlp_GetInstanceID(hero))
&& (other.guild < GIL_SEPERATOR_HUM)
&& ( (self.aivar[AIV_NoFightParker] == TRUE)
|| (other.aivar[AIV_NoFightParker] == TRUE)))
|| ((other.guild > GIL_SEPERATOR_HUM) && (other.aivar[AIV_NoFightParker] == TRUE))//Monster mit AIV_NoFightParker = TRUE werden auch ignoriert
{
return FALSE;
};
//ADDON<

// ------ Gegner im Wasser ------
if (C_BodyStateContains(other,BS_SWIM) || C_BodyStateContains(other,BS_DIVE))
&& (self.aivar[AIV_MM_FollowInWater] == FALSE)
{
return FALSE;
};

// ------- Burgzinnenwachen sollen sich nicht zu Tode stürzen, etc. ------
if (Npc_GetHeightToNpc(self, other) > PERC_DIST_HEIGHT)
{
return FALSE;
};

// ------- für Party-NSCs -------
if (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
if (Npc_GetDistToNpc (self, other) > 1500) //Sollen nicht so weit weg angreifen
{
return FALSE;
};

if (!Npc_CanSeeNpc (self, other))
{
return FALSE;
};
};

// ------- Verkleidete Banditen -----------
if (C_PlayerisFakeBandit(self,other))
&& (self.guild == GIL_AKA)
{
return FALSE;
};

/*// ------- Mag-Golem-Lares-Hack ------------
var C_NPC MGO; MGO = Hlp_GetNpc(MagicGolem);
var C_NPC LAR; LAR = Hlp_GetNpc(VLK_449_Lares);

if  (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(LAR))
&&  (Hlp_GetInstanceID(other) == Hlp_GetInstanceID(MGO))
{
return FALSE;
};*/

// ------- OVERRIDE für Enemies, die noch vorher quatschen sollen ------
if ( (self.aivar[AIV_EnemyOverride] == TRUE) || (other.aivar[AIV_EnemyOverride] == TRUE) )
&& (other.guild < GIL_SEPERATOR_HUM)
{
return FALSE;
};

// ------- Sicherheitsabfrage (B_AssessEnemy wird auch von anderen Funktionen aufgerufen, nicht nur über Wahrnehmung) ------
if (Npc_GetAttitude (self, other) != ATT_HOSTILE)
{
return FALSE;
};

if (C_NpcIsGateGuard(self))
{
return FALSE;
};

// ------ Npctype_Friend ignoriert den Spieler-Enemy ------
if ( Npc_IsPlayer(other) && (self.npctype == NPCTYPE_FRIEND) )
{
return FALSE;
};

// ------ ich bin nicht GILDEN-Hostile zu other ------
if (Wld_GetGuildAttitude(self.guild, other.guild) != ATT_HOSTILE)
{
// ------ ABER ich bin temp_hostile (d.h. hab gerade gegen den Spieler gekämpft) ------
if (Npc_GetAttitude (self, other) == ATT_HOSTILE)
// -------------------------
// && Npc_IsPlayer(other) - auskommentiert, weil ich NUR zum Player Temp_Att haben kann ------
// ------ NICHT direkt nach ZS-Attack-Abbruch reagieren ------
&& ( (Npc_GetStateTime(self) > 2) || Npc_IsInState(self, ZS_ObservePlayer) )
// ------ Kampf nur fortsetzen, wenn Spieler näher als 10m ------
&& (Npc_GetDistToNpc(self,other) <= PERC_DIST_INTERMEDIAT)
{
B_Attack (self, other, self.aivar[AIV_LastPlayerAR], 0);
return TRUE;
}
else
{
return FALSE;
};
};


// FUNC

B_Attack (self, other, AR_GuildEnemy, 0);
return TRUE;
};

   
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Hmm to wyżej to troszkę idioctwo, załapałem że wystarczy w pliku B_MM_AssessEnemy Zmienić ZS_MM_Attack na ZS_Attack Jednak przywołana postać wtedy atakuję czarami tylko wrogą gildię Bandytów która u mnie aktualnie nazywa się Akatsuki Czyli np ja uderzę klona to on mnie biję z pięści i to samo jeśli uderzę byle jakiego NPC z przyjacielską gildią, zaś jeśli klon zobaczy kogoś z gildią akatsuki to automatycznie wali w niego magią i gdy go wykończy to zostaje mu włączony czar i automatycznie wali z magi w każdego kto go zaatakuje, moje pytanie brzmi czy nie da się jakoś przerobić tego ZS_Attack tak aby walił magią nie zależnie od gildii ale tylko tak jak w normalnym przypadku że ja kogoś uderzę to klon sie na niego nie rzuca z pięściami tylko wali z magii?
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.


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