[G1] Zbroja bandyty 1676 2

O temacie

Autor MrSzymon345

Zaczęty 21.01.2014 roku

Wyświetleń 1676

Odpowiedzi 2

MrSzymon345

MrSzymon345

Użytkownicy
posty127
Propsy16
Profesjabrak
  • Użytkownicy
Witam. Ostatnio napisałem skrypty dzięki któremu bandyci nas nie atakują gdy mamy ich zbroje. Oto skrypt:

plik C_Function.d
func int Hero_HasBanditArmor ()
{
var c_item armor;
var int armorInstance;

armor = Npc_GetEquippedArmor(hero);
armorInstance = Hlp_GetInstanceID(armor);

if ((armorInstance == BAN_ARMOR_L) ||(armorInstance == BAN_ARMOR_M) || (armorInstance == BAN_ARMOR_H))
{
return TRUE;
};
};


func int C_OtherIsToleratedEnemy(var C_NPC slf, var C_NPC oth)
{
PrintDebugNpc (PD_ZS_DETAIL, "C_OtherIsToleratedEnemy");



if (C_NpcIsHuman(slf))
{
var c_item armor;
var int armorInstance;


armor = Npc_GetEquippedArmor(oth);

if (Hlp_IsValidItem(armor))
{
armorInstance = Hlp_GetInstanceID(armor);

if (slf.npctype == NPCTYPE_ROGUE)
{
if (Hero_HasBanditArmor())
{
return TRUE;
};
};
};
};


//-------- Orkverfolger --------
if (C_NpcIsOrc(slf))
{
PrintDebugNpc (PD_ZS_DETAIL, "...'self' ist Ork!");

//---- Ulu-Mulu in der Hand ? ----
var C_ITEM weapon;
var int weaponInstance;
weapon = Npc_GetReadiedWeapon(oth);
if (Hlp_IsValidItem(weapon))
{
weaponInstance =Hlp_GetInstanceID(weapon);
PrintDebugString(PD_ZS_DETAIL, "...gezogene Waffe von 'other': ", weapon.name);
if (weaponInstance == UluMulu)
{
PrintDebugNpc(PD_ZS_DETAIL, "...true!");
return TRUE;
};
};

//---- Ulu-Mulu equipped ? ----
weapon = Npc_GetEquippedMeleeWeapon (oth);
if (Hlp_IsValidItem(weapon))
{
weaponInstance =Hlp_GetInstanceID(weapon);
PrintDebugString(PD_ZS_DETAIL, "...equippte Waffe von 'other': ", weapon.name);
if (weaponInstance == UluMulu)
{
PrintDebugNpc(PD_ZS_DETAIL, "...true!");
return TRUE;
};
};
};

PrintDebugNpc (PD_ZS_DETAIL, "...false!");
return FALSE;
};




I teraz mam pytanie, co można zrobić aby inni NPC atakowali nas gdy mamy zbroje bandyty. Myślałem żeby zrobić coś w tym pliku:

B_AssessEnemy.d
if (C_OtherIsToleratedEnemy(self, other))
{
PrintDebugNpc (PD_ZS_CHECK, "...Feind wird toleriert!" );
B_TolerateEnemy (self, other);
return;
};

Możecie mi coś poradzić? :) Nie chodzi mi o jakieś gotowe skrypty ale o wskazówkę. Dzięki z góry.
 

MajkeI

MajkeI

Użytkownicy
Front End Developer
posty698
Propsy169
Profesjabrak
  • Użytkownicy
  • Front End Developer
Myślę o czymś takim:
     if (slf.npctype == NPCTYPE_ROGUE) 
      {
        if (Hero_HasBanditArmor())
          {
          return TRUE;
          };
      }
      else
      {
      slf.npctype = NPCTYPE_ROGUE;
      };
Zakładając, że skrypt jest sprawdzany cały czas (tick tock), no i slf musi sprawdzać każdego npca.
 

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Ruffin, takie rzeczy robi się na perceptionach, nie tick tockach. Do tego przemyśl czy zdanie "slf musi sprawdzać każdego npca" ma sens.

MrSzymon, podejrzyj po prostu jak to jest zrobione w G2NK. Chodzi o perceptiony, nie pamiętam tylko dokładnie jakie.


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