Показать сообщение отдельно
Старый 28.06.2005, 13:16   #485
Bliz@rd

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Скриптинг в Готике

Хотел создать амулет восстоновление маны(онуже расматривался в этой ветки):
Вот что я делал В папке AI\Human\TA_Human создал файл ZS_Recharger
В нём прописал
func void ZS_Recharger()
{
    B_ResetAll (self);
    B_ClearPerceptions (self);
};

func int ZS_Recharger_loop()
{
    if (Npc_GetStateTime(self) > 3)
    {
          Npc_SetStateTime (self, 0);

          if (hero.attribute[ATR_MANA] < hero.attribute[ATR_MANA_MAX])
          {
                      hero.attribute[ATR_MANA]=hero.attribute[ATR_MANA]+1;
          };

          AI_Teleport (self, Npc_GetNearestWP (hero));
         
    };

    return LOOP_CONTINUE;
};

func void ZS_Recharger_end()
{
    AI_PlayAni (self,"T_LGUARD_2_STAND");      
};
Далее в файле TA.d дописываем следующую строчку:
func void TA_Recharger      (var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint)      {TA_Min            (self,      start_h,start_m, stop_h, stop_m, ZS_Recharger,                        waypoint);};
Потом создал NPC(None_999_Recharger)
instance None_999_Recharger (Npc_Default)  
{
name                             = "";
guild                            = GIL_NONE;
npctype                          = NPCTYPE_AMBIENT;
flags                            = NPC_FLAG_IMMORTAL&#124;NPC_FLAG_GHOST;
level                            = 999;
voice                            = 0;
id                               = 999;
noFocus                          = 1;
bodyStateInterruptableOverride       = 1;

damagetype                          = DAM_EDGE;
damage [DAM_INDEX_EDGE]            = 0;


//-------- visuals --------
B_SetNpcVisual (self, MALE, "Hum_Head_Fatbald", 0, 0, ITAR_MIL_M);
Mdl_SetModelScale (self, 0.01, 0.01, 0.01);


//-------- talents --------
B_SetFightSkills (self, 0);  


//------------- ai -------------
fight_tactic    = FAI_HUMAN_COWARD;

// ------ TA anmelden ------
daily_routine    = Rtn_start_999;
};
     TA_Stand_Eating    (08,00,23,00,"NW_FARM1_OUT_03");
TA_Stand_ArmsCrossed   (23,00,08,00,"NW_FARM1_OUT_03");
};
Его везде прописал(т.е в глобалсе в статупе и в Gothic src).
Потом дописал в файле It_Amulette.d следующее:
INSTANCE  ItAm_Mana_Regener(C_Item)
{
    name                   =      NAME_Amulett;

    mainflag             =      ITEM_KAT_MAGIC;
    flags                   =      ITEM_AMULET;

    value                   =      Value_Mana_Regener;

    visual                   =      "ItAm_Strg_01.3ds";

    visual_skin       =      0;
    material             =      MAT_METAL;
    on_equip            =      Equip_ItAm_Mana_Regener;
    on_unequip            =      UnEquip_ItAm_Mana_Regener;

    wear                  =       WEAR_EFFECT;
    effect                  =      "SPELLFX_ITEMGLIMMER";

    description            = "Амулет регенерации маны";
   
   
    TEXT[5]                  = NAME_Value;
    COUNT[5]            = value;

    INV_ZBIAS                        = INVCAM_ENTF_AMULETTE_STANDARD;
   
};

FUNC VOID Equip_ItAm_Mana_Regener()
{
    Npc_ExchangeRoutine      (None_999_Recharger,"Regeneration");
};

FUNC VOID UnEquip_ItAm_Mana_Regener()
{
    Npc_ExchangeRoutine      (None_999_Recharger,"Start");
};
Но когда компелирую то прога(Vama) выдаёт 3 ошибки
1)00:14 Fault:0 U: PAR:ITEMS/IT_AMMULETTED.D:VALUE_MANA_REGENER undeclfred name (line 427)…<zParser.cpp,#447
2) 00:14 Fault:0 U: PAR:ITEMS/IT_AMMULETTED.D:NONE_999_Recharger undeclfred name (line 427)…<zParser.cpp,#447
3) 00:14 Fault:0 U: PAR:ITEMS/IT_AMMULETTED.D:NONE_999_Recharger undeclfred name (line 427)…<zParser.cpp,#447
Вроде бы всё делал как было написано кроме NPC а то если как там было написано то он выдавл ошибки.
Как их можно исправить?


Добавление от 06/28/05, в 12:51:47
Подправил непися
instance None_999_Recharger (Npc_Default)  
{
name                             = "";
guild                            = GIL_NONE;
npctype                          = NPCTYPE_AMBIENT;
flags                            = NPC_FLAG_IMMORTAL;
level                            = 999;
voice                            = 0;
id                               = 999;
noFocus                          = 1;
bodyStateInterruptableOverride       = 1;

damagetype                          = DAM_EDGE;
damage [DAM_INDEX_EDGE]            = 0;


//-------- visuals --------
B_SetNpcVisual (self, MALE, "Hum_Head_Fatbald", 0, 0, ITAR_MIL_M);
Mdl_SetModelScale (self, 0.01, 0.01, 0.01);


//-------- talents --------
B_SetFightSkills (self, 0);  


//------------- ai -------------
fight_tactic    = FAI_HUMAN_COWARD;

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


func void Rtn_Regeneration_999 ()
{
 TA_Recharger (0,00,13,00, Npc_GetNearestWP (hero));
 TA_Recharger (13,00,0,00, Npc_GetNearestWP (hero));
};

func void Rtn_start_999 ()
{
 TA_Stand_Eating    (08,00,23,00,"NW_FARM1_OUT_01");
TA_Stand_ArmsCrossed   (23,00,08,00,"NW_FARM1_OUT_01");
};
Теперь прога от Vama касательно непися ошибок не выдавала.
Теперь выдаёт только одну ошибку
00:14 Fault:0 U: PAR:ITEMS/IT_AMULETTED.D:VALUE_MANAREGENER undeclared name (line 428)…<zError.cpp,#477>
Как можно исправить эту ошибку?  


Добавление от 06/28/05, в 13:36:19
И ещё прописал омулет в Gothic src.Всё равно выдаёт ту же ошибку.
И ещё в IT_Amulette.d прописаны другие амулеты например
const int Value_Am_ProtFire = 600;А мой амулет который я вставил нужно так прописываьь если да то как?И ещё что означает эта часть
func void Rtn_Regeneration_999 ()
{
TA_Recharger (0,00,13,00, Npc_GetNearestWP (hero));
TA_Recharger (13,00,0,00, Npc_GetNearestWP (hero));
};
Я её изменил во втором случае на веппоинт.может быть из-за этого ошибка?
И вобще что я не правильно делаю?
Ответить с цитированием