Показать сообщение отдельно
Старый 02.07.2005, 12:49   #507
Bliz@rd

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

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

Я опять всё пробывал сделать заново:
1)в 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_Guard_Hammer(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_Guar d_Hammer,waypoint);
};
прописал это
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_rech arger,waypoint);
};
И прописал в IT_Amulette после этого
instance ItAm_Dex_Strg_01(C_Item)
{
     name = "Амулет мощи";
     mainflag = ITEM_KAT_MAGIC;
     flags = ITEM_AMULET;
     value = Value_Am_DexStrg;
     visual = "ItAm_Dex_Strg_01.3ds";
     visual_skin = 0;
     material = MAT_METAL;
     on_equip = Equip_ItAm_Dex_Strg_01;
     on_unequip = UnEquip_ItAm_Dex_Strg_01;
     wear = WEAR_EFFECT;
     effect = "SPELLFX_ITEMGLIMMER";
     description = "Амулет мощи";
     text[2] = NAME_Bonus_Dex;
     count[2] = Am_DexStrg_Dex;
     text[3] = NAME_Bonus_Str;
     count[3] = Am_DexStrg_Strg;
     text[5] = NAME_Value;
     count[5] = value;
     inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD;
};


func void Equip_ItAm_Dex_Strg_01()
{
     Npc_ChangeAttribute(self,ATR_DEXTERITY,Am_DexStrg _Dex);
     Npc_ChangeAttribute(self,ATR_STRENGTH,Am_DexStrg_ Strg);
};

func void UnEquip_ItAm_Dex_Strg_01()
{
     Npc_ChangeAttribute(self,ATR_DEXTERITY,-Am_DexStrg_Dex);
     Npc_ChangeAttribute(self,ATR_STRENGTH,-Am_DexStrg_Strg);
};
вставил это
INSTANCE  ItAm_Mana_Regener(C_Item)
{
  name                   =      NAME_Amulett;

  mainflag             =      ITEM_KAT_MAGIC;
  flags                   =      ITEM_AMULET;

  value                   =      100;

  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");
};
потто создал непися(NONE_999_Recharger) вот его содержимое:
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_WP (0,00,13,00, Npc_GetNearestWP (hero));
 TA_Stand_WP (13,00,0,00, Npc_GetNearestWP (hero));
};
Потом прописал его в статупе после этого
Wld_InsertNpc(BAU_950_Lobart,"NW_FARM1_OUT_01");
Прописал это
Wld_InsertNpc      (None_999_Recharger,Npc_GetNearestWP (hero));
Потом амуле прописал в Gothic src
После этого
AI\Human\TA_Human\ZS_Wash_FP.d
Прописал это
AI\Human\TA_Human\ZS_Recharger.d
И прописал непися после
После этого
Story\NPC\NONE_100_Xardas.d
Прописал в это
Story\NPC\NONE_999_Recharger.d
Потом в PC_Hero.d прописал в самом начале амулет
CreateInvItems(self, ItAm_Mana_Regener,1);
Вот как это выглядит  
instance PC_Hero(Npc_Default)
{
     name[0] = "Я";
     guild = GIL_NONE;
     id = 0;
     voice = 15;
     level = 0;
     npcType = npctype_main;
     bodyStateInterruptableOverride = TRUE;
     exp = 0;
     exp_next = 500;
     lp = 0;
     attribute[ATR_STRENGTH] = 10;
     attribute[ATR_DEXTERITY] = 10;
     attribute[ATR_MANA_MAX] = 10;
     attribute[ATR_MANA] = 10;
     attribute[ATR_HITPOINTS_MAX] = 40;
     attribute[ATR_HITPOINTS] = 40;
     Mdl_SetVisual(self,"HUMANS.MDS");
     Mdl_SetVisualBody(self,"hum_body_Naked0",9,0,"Hum _Head_Pony",Face_N_Player,0,NO_ARMOR);
CreateInvItems(self, ItAm_Mana_Regener,1);
     B_SetFightSkills(self,10);
};
Закомпелировал.Вставил оушник и датник в игру.начал игру.поболтал с Ксардосом
Взял из сондука магию огненный шар стрельнул,одел амулет а она всёравно не восстанавливается.Что я опять делаю не правильно?  

Ответить с цитированием