|
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|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)); }; Я её изменил во втором случае на веппоинт.может быть из-за этого ошибка? И вобще что я не правильно делаю?
|