|
Re: Скриптинг в Готике
Попытался всё сделать сначала,вот что я делал: 1)Созал непися(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_Eating (08,00,23,00,"NW_FARM1_OUT_01"); TA_Stand_ArmsCrossed (23,00,08,00,"NW_FARM1_OUT_01"); }; Потом его прописал Глобалсе var C_Npc Recharger; и Recharger = Hlp_GetNpc(NONE_999_Recharger); Потом в статупе Wld_InsertNpc(NONE_999_Recharger,"NW_FARM1_OUT_01" ); Всё это я прописывал после Лобарта. И ещё прописал в Gothic src Story\NPC\NONE_999_Recharger.d Прописал ниже ксардаса. Потом начал вставлять амулет: Сначала зашёл 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);}; Потом зашёл в IT_Amulette.D и после этого instance ItAm_Hp_Mana_01(C_Item) { name = "Амулет просвещения"; mainflag = ITEM_KAT_MAGIC; flags = ITEM_AMULET; value = Value_Am_HpMana; visual = "ItAm_Hp_Mana_01.3ds"; visual_skin = 0; material = MAT_METAL; on_equip = Equip_ItAm_Hp_Mana_01; on_unequip = UnEquip_ItAm_Hp_Mana_01; wear = WEAR_EFFECT; effect = "SPELLFX_ITEMGLIMMER"; description = "Амулет просвещения"; text[2] = NAME_Bonus_HP; count[2] = Am_HpMana_Hp; text[3] = NAME_Bonus_Mana; count[3] = Am_HpMana_Mana; text[5] = NAME_Value; count[5] = value; inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD; }; прописал это INSTANCE ItAm_Mana_Regener(C_Item) { name = NAME_Amulett;
mainflag = ITEM_KAT_MAGIC; flags = ITEM_AMULET;
value = 100;(здесь ИЗМЕНИЛ как и сказа Tycooon)
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"); }; Потом его прописал в Gothic src После AI\Human\TA_Human\ZS_Wash_FP.d Прописал AI\Human\TA_Human\ZS_Recharger.d Потом начал компиляцию и прога от Vama выдаёт ошибку(красным это после того как я исправил value = Value_Mana_Regener; на value = 100;а раньше ошибка была синяя приведена выше) Ошибка:00:01 Fatal:-1 U: PAR:ITEMS/IT_AMULETTED.D:Suntax error INSTANCE (line 420)…<zPARSER.cpp,#599> Как можно исправить эту ошибку(вроде бы заменил Value_Mana_Regener на 100(исправил в одном месте))?Заранее спосибо.
Добавление от 06/28/05, в 20:45:12 И ещё хотел попробывать сделать точь в точь как написал Finch. 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)); }; Но не знаю после кого в Startup.d и Npc_Globals.d нужно прописывать(незнаю где находится веппоинт)Никто бы не могсказать после кого нужно прописывать в глобалсе и стаупе?
Добавление от 06/29/05, в 19:37:34 Пытался вставить просто амулет без непися(а потом просто вставит его в инвентарь NPC), вот что я делал: В папке 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);}; Ну и в конце-концов вставил в файле 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; }; Но в компиляцие выдаёт ошибку: 00:00 Fatal:-1 U: PAR:ITEMS/IT_AMYLETTED.D:Syntax error:INSTANCE(line 421)…<zParser.cpp,#599> Указывает на эту строчку name = NAME_Amulett; Что я делаю не правильно?
Я попытался вставить амулет (защита от магии 50) всё получилось Просто вставил в папку IT_Amulette.d(_decompiled\Items): INSTANCE ItAm_Prot_Fire(C_Item) { name = "Амулет из жерла вулкана";
mainflag = ITEM_KAT_MAGIC; flags = ITEM_AMULET;
value = 10000;
visual = "ItAm_Prot_Fire_01.3ds";
visual_skin = 0; material = MAT_METAL;
wear = WEAR_EFFECT; on_equip = Equip_Prot_Fire; on_unequip = UnEquip_Prot_Fire;
description = name;
TEXT[2] = "Защита от огня"; COUNT[2] = 50; TEXT[5] = NAME_Value; COUNT[5] = 10000;
INV_ZBIAS = INVCAM_ENTF_AMULETTE_STANDARD; };
FUNC VOID Equip_Prot_Fire() { self.protection [PROT_FIRE] += 50; };
FUNC VOID UnEquip_Prot_Fire() { self.protection [PROT_FIRE] -= 50; }; потом вставил его в инвентарь( CreateInvItems (self,ItAm_Prot_Fire,1)Компелирую и всё. А с омулетом востоновления маны не получается какую я делаюошибку?
|