Re: Уроки скриптологии
2basilio58:<br>
Цитата:
|
Re: Уроки скриптологии
//--------------------------------------<br>// Свиток вызова Кваходрона<br>//--------------------------------------<br>INSTANCE ItWr_Addon_SUMMONANCIENTGHOST(C_ITEM)<br>{ * <br> * *name * * * * * *= * "Вызвать 'Кваходрона'";<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * "ItWr_Scroll_01.3DS"; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * UseSummonAncientGhost; * * *// использовать<br> * *scemeName * * * = * "MAP";<br> * *description * * = * name; * * * * * * * * * * * // Вызвать 'Кваходрона'<br> * *Text[0] * * * * = * "С этим свитком можно вызвать Кваходрона.";<br>};<br><br>// Прочитать<br>func void UseSummonAncientGhost()<br>{<br> * *// если Кваходрон не вызван<br> * *if(SC_SummonedAncientGhost == FALSE)<br> * *{<br> * * * *// ГГ говорит себе (SVM фраза) "Игхориал торул. Явись мне, Кваходрон, старый вождь касты воителей!"<br> * * * *B_Say(self,self,"$ADDON_SUMMONANCIENTGHOST&q uot;);<br> * * * *// если ГГ находится не далее 10м от нужного места<br> * * * *if(Npc_GetDistToWP(self,"ADW_ANCIENTGHOST&qu ot;) < 1000)<br> * * * *{<br> * * * * * *// появляется Кваходрон<br> * * * * * *Wld_InsertNpc(NONE_ADDON_111_Quarhodron,"ADW _ANCIENTGHOST");<br> * * * * * *// визуальные и звуковые эффекты<br> * * * * * *Wld_PlayEffect("spellFX_Maya_Ghost",NON E_ADDON_111_Quarhodron,NONE_ADDON_111_Quarhodron,0 ,0,0,FALSE);<br> * * * * * *Wld_PlayEffect("SPELLFX_LIGHTSTAR_WHITE" ;,NONE_ADDON_111_Quarhodron,NONE_ADDON_111_Quarhod ron,0,0,0,FALSE);<br> * * * * * *Snd_Play("MFX_GhostVoice");<br> * * * * * *Snd_Play("MFX_Firestorm_Cast");<br> * * * * * *Snd_Play("MFX_Lightning_Origin");<br> * * * * * *// Кваходрон вызван<br> * * * * * *SC_SummonedAncientGhost = TRUE;<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// ГГ говорит себе (SVM фраза) "Ммм... Здесь не функционирует."<br> * * * * * *B_Say(self,self,"$ADDON_ANCIENTGHOST_NOTNEAR ");<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Карта Забытой долины Строителей<br>//--------------------------------------<br>INSTANCE ItWr_Map_AddonWorld(C_Item)<br>{<br> * *name * * * * * *= "Забытая долина Строителей"; *<br> * *mainflag * * * *= ITEM_KAT_DOCS; * * * * * * * *// документ<br> * *flags * * * * * = ITEM_MISSION ¦ ITEM_MULTI; * *// квестовый + складируемый<br> * *value * * * * * = 250; * * * * * * * * * * * * *// 250<br> * *visual * * * * *= "ItWr_Map_01.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *scemeName * * * = "MAP";<br> * *on_state[0] * * = Use_Map_AddonWorld; * * * * * // использовать<br> * *description * * = name; * * * * * * * * * * * * // "Забытая долина Строителей"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 250<br>};<br><br>// Смотреть<br>func void Use_Map_AddonWorld ()<br>{<br> * *var int Document;<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сохранить ссылку на документ для просмотра "горячей" клавишей<br> * * * *B_SetPlayerMap(ItWr_Map_AddonWorld);<br> * *};<br> * *Document = Doc_CreateMap();<br> * *Doc_SetPages * * * *(Document,1);<br> * *Doc_SetPage * * * * (Document,0,"Map_AddonWorld.tga",TRUE);< br> * *// задать уровень мира для просмотра<br> * *Doc_SetLevel * * * *(Document,"Addon\AddonWorld.zen");<br> * *// установить координаты уровня<br> * *Doc_SetLevelCoords *(Document,-47783,36300,43949,-32300);<br> * *Doc_Show * * * * * *(Document);<br>};<br><br>
|
Re: Уроки скриптологии
* *15. Книги описания рун аддона.<br><br>Файл IT_Addon_WrittenRunemaker.d<br><br>//*************************<br>// Книги описания рун аддона<br>//*************************<br><br>//--------------------------------------<br>// Книга рун Магов воды (1 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDW_CIRC1 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Круг Воды";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_04.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун водных магов (1 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Runemaking_KDW_CIRC1_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов воды (2 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDW_CIRC2 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Воды II";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_04.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун водных магов (2 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Runemaking_KDW_CIRC2_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов воды (3 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDW_CIRC3 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Воды III";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_04.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун водных магов (3 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Runemaking_KDW_CIRC3_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов воды (4 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDW_CIRC4 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Воды VI";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_04.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун водных магов (4 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Runemaking_KDW_CIRC4_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов воды (5 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDW_CIRC5 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Воды V";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_04.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун водных магов (5 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Runemaking_KDW_CIRC5_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов воды (6 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDW_CIRC6 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Воды VI";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_04.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун водных магов (6 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Runemaking_KDW_CIRC6_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов огня (1 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDF_CIRC1 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Огня I";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_03.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун огненных магов (1 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Bookstand_Kreise_01_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов огня (2 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDF_CIRC2 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Огня II";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_03.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун огненных магов (2 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Bookstand_Kreise_02_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов огня (3 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDF_CIRC3 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Огня III";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_03.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун огненных магов (3 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Bookstand_Kreise_03_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов огня (4 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDF_CIRC4 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Огня IV";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_03.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун огненных магов (4 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Bookstand_Kreise_04_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов огня (5 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDF_CIRC5 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Огня V";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_03.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун огненных магов (5 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Bookstand_Kreise_05_S1; // прочитать<br>};<br><br>//--------------------------------------<br>// Книга рун Магов огня (6 круг)<br>//--------------------------------------<br>INSTANCE ITWR_Addon_Runemaking_KDF_CIRC6 (C_ITEM)<br>{<br> * *name * * * * * * * *= * "Книга рун Огня VI";<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * "ItWr_Book_02_03.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * "MAP";<br> * *description * * * * = * "Книга рун огненных магов (6 круг)";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 100<br> * *on_state[0] * * * * = * Use_Bookstand_Kreise_06_S1; // прочитать<br>};<br><br><br> * *15a. Функции использования Книг рун Магов Воды.<br><br>Файл ..\Story\Dialog_Mobsis\BookstandKDW_Addon.d<br><br >//--------------------------------------<br>// Прочитать книгу рун Магов воды (1 круг)<br>//--------------------------------------<br>func void Use_Runemaking_KDW_CIRC1_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *// получить ссылку на ГГ<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *// если self есть ГГ<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"Круг Воды");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"Руны Воды и для их изготовления необходимые ингридиенты ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Смерч");<br> * * * *Doc_PrintLine * (nDocID,0,"Крыло кровавого шершня");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Ледяное копье");<br> * * * *Doc_PrintLine * (nDocID,0,"Ледяной кварц");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Гейзер");<br> * * * *Doc_PrintLine * (nDocID,0,"Аквамарин");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Шторм");<br> * * * *Doc_PrintLine * (nDocID,0,"Ледяной кварц");<br> * * * *Doc_PrintLine * (nDocID,0,"Крыло кровавого шершня");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Кулак воды");<br> * * * *Doc_PrintLine * (nDocID,0,"Аквамарин");<br> * * * *Doc_PrintLine * (nDocID,0,"Горный хрусталь");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. ");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Только если эти условия выполнены он может приступить к изготовлению руны.");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов воды (2 круг)<br>//--------------------------------------<br>func void Use_Runemaking_KDW_CIRC2_S1()<br>{<br> * *Use_Runemaking_KDW_CIRC1_S1();<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов воды (3 круг)<br>//--------------------------------------<br>func void Use_Runemaking_KDW_CIRC3_S1()<br>{<br> * *Use_Runemaking_KDW_CIRC1_S1();<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов воды (4 круг)<br>//--------------------------------------<br>func void Use_Runemaking_KDW_CIRC4_S1()<br>{<br> * *Use_Runemaking_KDW_CIRC1_S1();<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов воды (5 круг)<br>//--------------------------------------<br>func void Use_Runemaking_KDW_CIRC5_S1()<br>{<br> * *Use_Runemaking_KDW_CIRC1_S1();<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов воды (6 круг)<br>//--------------------------------------<br>func void Use_Runemaking_KDW_CIRC6_S1()<br>{<br> * *Use_Runemaking_KDW_CIRC1_S1();<br>};<br><br><br> * *15б. Функции использования Книг рун Магов Огня.<br><br>Файл ..\Story\Dialog_Mobsis\BookstandKloster.d<br><br>//--------------------------------------<br>// (не используется)<br>//--------------------------------------<br>func void Use_Bookstand_Rune_01_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"Страница 1");<br> * * * *Doc_PrintLine * (nDocID,0,"Рунический камень");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"Страница 2");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// (не используется)<br>//--------------------------------------<br>func void Use_Bookstand_Rune_02_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"Страница 1");<br> * * * *Doc_PrintLine * (nDocID,0,"Руны и их ингредиенты ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"Страница 2");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// (не используется)<br>//--------------------------------------<br>func void Use_Bookstand_Innos_01_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"Страница 1");<br> * * * *Doc_PrintLine * (nDocID,0,"Учитель Иннос");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"Страница 2");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// (не используется)<br>//--------------------------------------<br>func void Use_Bookstand_Innos_02_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"Страница 1");<br> * * * *Doc_PrintLine * (nDocID,0,"Приказы Инноса ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"Страница 2");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов огня (1 круг)<br>//--------------------------------------<br>func void Use_Bookstand_Kreise_01_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"DER ERSTE KREIS");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"Руны первого Круга и необходимые для их изготовления ингредиенты: ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Свет");<br> * * * *Doc_PrintLine * (nDocID,0,"Золотая монета");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Огненная стрела ");<br> * * * *Doc_PrintLine * (nDocID,0,"Сера");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Малая молния");<br> * * * *Doc_PrintLine * (nDocID,0,"Горный хрусталь");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Скелет гоблина");<br> * * * *Doc_PrintLine * (nDocID,0,"Кость гоблина");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Лечить легкое ранение");<br> * * * *Doc_PrintLine * (nDocID,0,"Лечебное растение ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. ");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Только если эти условия выполнены он может приступить к изготовлению руны.");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов огня (2 круг)<br>//--------------------------------------<br>func void Use_Bookstand_Kreise_02_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"DER ZWEITE KREIS");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"Руны второго Круга и необходимые для их изготовления ингредиенты: ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Огненный шар");<br> * * * *Doc_PrintLine * (nDocID,0,"Смола");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Ледяная стрела");<br> * * * *Doc_PrintLine * (nDocID,0,"Кварц");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Вызвать волка");<br> * * * *Doc_PrintLine * (nDocID,0,"Шкура волка");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Порыв ветра");<br> * * * *Doc_PrintLine * (nDocID,0,"Уголь");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Сон");<br> * * * *Doc_PrintLine * (nDocID,0,"Болотник");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. ");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Только если эти условия выполнены он может приступить к изготовлению руны.");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br><br>...продолжение следует
|
Re: Уроки скриптологии
//--------------------------------------<br>// Прочитать книгу рун Магов огня (3 круг)<br>//--------------------------------------<br>func void Use_Bookstand_Kreise_03_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"DER DRITTE KREIS");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"Руны третьего Круга и необходимые для их изготовления ингредиенты: ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Лечить среднее ранение ");<br> * * * *Doc_PrintLine * (nDocID,0,"Лечебная трава ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Малая огненная буря ");<br> * * * *Doc_PrintLine * (nDocID,0,"Смола");<br> * * * *Doc_PrintLine * (nDocID,0,"Сера");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Вызвать скелет");<br> * * * *Doc_PrintLine * (nDocID,0,"Кость скелета");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Страх");<br> * * * *Doc_PrintLine * (nDocID,0,"Черный жемчуг");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Ледяная глыба ");<br> * * * *Doc_PrintLine * (nDocID,0,"Кварц");<br> * * * *Doc_PrintLine * (nDocID,0,"Аквамарин");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Шаровая молния ");<br> * * * *Doc_PrintLine * (nDocID,0,"Горный хрусталь");<br> * * * *Doc_PrintLine * (nDocID,0,"Сера");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"Огненный шар");<br> * * * *Doc_PrintLine * (nDocID,0,"Смола");<br> * * * *Doc_PrintLine * (nDocID,0,"Сера");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. ");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Только если эти условия выполнены он может приступить к изготовлению руны.");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов огня (4 круг)<br>//--------------------------------------<br>func void Use_Bookstand_Kreise_04_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"DER VIERTE KREIS");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"Руны четвертого Круга и необходимые для их изготовления ингредиенты: ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Большой огненный шар");<br> * * * *Doc_PrintLine * (nDocID,0,"Сера");<br> * * * *Doc_PrintLine * (nDocID,0,"Смола");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Удар молнии ");<br> * * * *Doc_PrintLine * (nDocID,0,"Горный хрусталь");<br> * * * *Doc_PrintLine * (nDocID,0,"Кварц");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Вызвать голема");<br> * * * *Doc_PrintLine * (nDocID,0,"Сердце каменного голема");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Уничтожить нежить");<br> * * * *Doc_PrintLine * (nDocID,0,"Святая вода");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. ");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Только если эти условия выполнены он может приступить к изготовлению руны.");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов огня (5 круг)<br>//--------------------------------------<br>func void Use_Bookstand_Kreise_05_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"DER FЬNFTE KREIS");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"Руны пятого Круга и необходимые для их изготовления ингредиенты: ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Ледяная волна ");<br> * * * *Doc_PrintLine * (nDocID,0,"Кварц");<br> * * * *Doc_PrintLine * (nDocID,0,"Аквамарин");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Большая огненная буря ");<br> * * * *Doc_PrintLine * (nDocID,0,"Сера");<br> * * * *Doc_PrintLine * (nDocID,0,"Огненный язык");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Вызвать демона");<br> * * * *Doc_PrintLine * (nDocID,0,"Сердце демона");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Лечить сильное ранение ");<br> * * * *Doc_PrintLine * (nDocID,0,"Лечебный корень");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. ");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Только если эти условия выполнены он может приступить к изготовлению руны.");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// Прочитать книгу рун Магов огня (6 круг)<br>//--------------------------------------<br>func void Use_Bookstand_Kreise_06_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"DER SECHSTE KREIS");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"Руны шестого Круга и необходимые для их изготовления ингредиенты: ");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Огненный дождь");<br> * * * *Doc_PrintLine * (nDocID,0,"Смола");<br> * * * *Doc_PrintLine * (nDocID,0,"Сера");<br> * * * *Doc_PrintLine * (nDocID,0,"Огненный язык");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Дым смерти");<br> * * * *Doc_PrintLine * (nDocID,0,"Уголь");<br> * * * *Doc_PrintLine * (nDocID,0,"Черный жемчуг");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Волна смерти ");<br> * * * *Doc_PrintLine * (nDocID,0,"Кость скелета");<br> * * * *Doc_PrintLine * (nDocID,0,"Черный жемчуг");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLine * (nDocID,0,"Армия мрака");<br> * * * *Doc_PrintLine * (nDocID,0,"Кость скелета");<br> * * * *Doc_PrintLine * (nDocID,0,"Черный жемчуг");<br> * * * *Doc_PrintLine * (nDocID,0,"Сердце каменного голема");<br> * * * *Doc_PrintLine * (nDocID,0,"Сердце демона");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"Уменьшить монстра");<br> * * * *Doc_PrintLine * (nDocID,1,"Кость гоблина");<br> * * * *Doc_PrintLine * (nDocID,1,"Клык тролля");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. ");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"Только если эти условия выполнены он может приступить к изготовлению руны.");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>//--------------------------------------<br>// (не используется)<br>//--------------------------------------<br>func void Use_Bookstand_Rules_01_S1()<br>{<br> * *var C_Npc her;<br> * *var int nDocID;<br> * *her = Hlp_GetNpc(PC_Hero);<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))<br> * *{<br> * * * *nDocID = Doc_Create();<br> * * * *Doc_SetPages * *(nDocID,2);<br> * * * *Doc_SetPage * * (nDocID,0,"Book_Mage_L.tga",0);<br> * * * *Doc_SetPage * * (nDocID,1,"Book_Mage_R.tga",0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,"Страница 1");<br> * * * *Doc_PrintLine * (nDocID,0,"Правила");<br> * * * *Doc_PrintLine * (nDocID,0,"");<br> * * * *Doc_PrintLines *(nDocID,0,"");<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,"Страница 2");<br> * * * *Doc_PrintLine * (nDocID,1,"");<br> * * * *Doc_PrintLines *(nDocID,1,"");<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>
|
Re: Уроки скриптологии
* *16. Амулеты основной игры.<br><br>Файл IT_Amulette.d<br><br>//*************************<br>// Амулеты основной игры<br>//*************************<br><br>// амулет Огня<br>const int Value_Am_ProtFire * * = 600; * * * * *// стоимость<br>const int Am_ProtFire * * * * * = 10; * * * * * // бонус защиты от огня<br>// амулет Брони<br>const int Value_Am_ProtEdge * * = 800; * * * * *// стоимость<br>const int Am_ProtEdge * * * * * = 10; * * * * * // бонус защиты от оружия<br>// амулет Силы духа<br>const int Value_Am_ProtMage * * = 700; * * * * *// стоимость<br>const int Am_ProtMage * * * * * = 10; * * * * * // бонус защиты от магии<br>// амулет Дубовой кожи<br>const int Value_Am_ProtPoint * *= 500; * * * * *// стоимость<br>const int Am_ProtPoint * * * * *= 10; * * * * * // бонус защиты от стрел<br>// амулет Рудной кожи<br>const int Value_Am_ProtTotal * *= 1000; * * * * // стоимость<br>const int Am_TProtFire * * * * *= 8; * * * * * *// бонус защиты от огня<br>const int AM_TProtEdge * * * * *= 8; * * * * * *// бонус защиты от оружия<br>const int Am_TProtMage * * * * *= 8; * * * * * *// бонус защиты от магии<br>const int Am_TProtPoint * * * * = 8; * * * * * *// бонус защиты от стрел<br>// амулет Ловкости<br>const int Value_Am_Dex * * * * *= 1000; * * * * // стоимость<br>const int Am_Dex * * * * * * * *= 10; * * * * * // бонус к ловкости<br>// амулет Магии<br>const int Value_Am_Mana * * * * = 1000; * * * * // стоимость<br>const int Am_Mana * * * * * * * = 10; * * * * * // бонус к мане<br>// амулет Силы<br>const int Value_Am_Strg * * * * = 1000; * * * * // стоимость<br>const int Am_Strg * * * * * * * = 10; * * * * * // бонус к силе<br>// амулет Жизни<br>const int Value_Am_Hp * * * * * = 400; * * * * *// стоимость<br>const int Am_Hp * * * * * * * * = 40; * * * * * // бонус к здоровью<br>// амулет Озарения<br>const int Value_Am_HpMana * * * = 1300; * * * * // стоимость<br>const int Am_HpMana_Hp * * * * *= 30; * * * * * // бонус к здоровью<br>const int Am_HpMana_Mana * * * *= 10; * * * * * // бонус к мане<br>// амулет Власти<br>const int Value_Am_DexStrg * * *= 1600; * * * * // стоимость<br>const int Am_DexStrg_Dex * * * *= 8; * * * * * *// бонус к ловкости<br>const int Am_DexStrg_Strg * * * = 8; * * * * * *// бонус к силе<br><br>//--------------------------------------<br>// Амулет Огня<br>//--------------------------------------<br>INSTANCE ItAm_Prot_Fire_01(C_Item)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtFire; * * * * * *// 600<br> * *visual * * * * *= "ItAm_Prot_Fire_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Prot_Fire_01; * * *// одеть<br> * *on_unequip * * *= UnEquip_ItAm_Prot_Fire_01; * *// снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет огня";<br> * *TEXT[2] * * * * = NAME_Prot_Fire; * * * * * * * // "Защита от огня:"<br> * *COUNT[2] * * * *= Am_ProtFire; * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 600<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br> * *<br>};<br><br>// Одеть<br>func void Equip_ItAm_Prot_Fire_01()<br>{<br> * *// защита от огня += 10<br> * *self.protection[PROT_FIRE] += Am_ProtFire;<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Prot_Fire_01()<br>{<br> * *// защита от огня -= 10<br> * *self.protection[PROT_FIRE] -= Am_ProtFire;<br>};<br><br>//--------------------------------------<br>// Амулет Брони<br>//--------------------------------------<br>INSTANCE *ItAm_Prot_Edge_01(C_Item)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtEdge; * * * * * *// 800<br> * *visual * * * * *= "ItAm_Prot_Edge_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Prot_Edge_01; * * *// одеть<br> * *on_unequip * * *= UnEquip_ItAm_Prot_Edge_01; * *// снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет брони";<br> * *TEXT[2] * * * * = NAME_Prot_Edge; * * * * * * * // "Защита от оружия:"<br> * *COUNT[2] * * * *= Am_ProtEdge; * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 800<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Prot_Edge_01()<br>{<br> * *// защита от острого оружия += 10<br> * *self.protection[PROT_EDGE] += Am_ProtEdge;<br> * *// защита от тупого оружия += 10<br> * *self.protection[PROT_BLUNT] += Am_ProtEdge;<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Prot_Edge_01()<br>{<br> * *// защита от острого оружия -= 10<br> * *self.protection[PROT_EDGE] -= Am_ProtEdge;<br> * *// защита от тупого оружия -= 10<br> * *self.protection[PROT_BLUNT] -= Am_ProtEdge;<br>};<br><br>//--------------------------------------<br>// Амулет Дубовой кожи<br>//--------------------------------------<br>INSTANCE *ItAm_Prot_Point_01(C_ITEM)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtPoint; * * * * * // 500<br> * *visual * * * * *= "ItAm_Prot_Point_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Prot_Point_01; * * // одеть<br> * *on_unequip * * *= UnEquip_ItAm_Prot_Point_01; * // снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет дубовой кожи";<br> * *TEXT[2] * * * * = NAME_Prot_Point; * * * * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * *= Am_ProtPoint; * * * * * * * * // 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 500<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Prot_Point_01()<br>{<br> * *// защита от стрел += 10<br> * *self.protection[PROT_POINT] += Am_ProtPoint;<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Prot_Point_01()<br>{<br> * *// защита от стрел -= 10<br> * *self.protection[PROT_POINT] -= Am_ProtPoint;<br>};<br><br>//--------------------------------------<br>// Амулет Силы духа<br>//--------------------------------------<br>INSTANCE *ItAm_Prot_Mage_01(C_ITEM)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtMage; * * * * * *// 700<br> * *visual * * * * *= "ItAm_Prot_Mage_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Prot_Mage_01; * * *// одеть<br> * *on_unequip * * *= UnEquip_ItAm_Prot_Mage_01; * *// снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет силы духа";<br> * *TEXT[2] * * * * = NAME_Prot_Magic; * * * * * * *// "Защита от магии:"<br> * *COUNT[2] * * * *= Am_ProtMage; * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 700<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Prot_Mage_01()<br>{<br> * *// защита от магии += 10<br> * *self.protection[PROT_MAGIC] += Am_ProtMage;<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Prot_Mage_01()<br>{<br> * *// защита от магии -= 10<br> * *self.protection[PROT_MAGIC] -= Am_ProtMage;<br>};<br><br>//--------------------------------------<br>// Амулет Рудной кожи<br>//--------------------------------------<br>INSTANCE *ItAm_Prot_Total_01(C_ITEM)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtTotal; * * * * * // 1000<br> * *visual * * * * *= "ItAm_Prot_Total_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_Value_Am_ProtTotal; * * // одеть<br> * *on_unequip * * *= UnEquip_Value_Am_ProtTotal; * // снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет рудной кожи";<br> * *TEXT[1] * * * * = NAME_Prot_Fire; * * * * * * * // "Защита от огня:"<br> * *COUNT[1] * * * *= AM_TProtFire; * * * * * * * * // 8<br> * *TEXT[2] * * * * = NAME_Prot_Magic; * * * * * * *// "Защита от магии:"<br> * *COUNT[2] * * * *= AM_TProtMage; * * * * * * * * // 8<br> * *TEXT[3] * * * * = NAME_Prot_Point; * * * * * * *// "Защита от стрел:"<br> * *COUNT[3] * * * *= AM_TProtPoint; * * * * * * * *// 8<br> * *TEXT[4] * * * * = NAME_Prot_Edge; * * * * * * * // "Защита от оружия:"<br> * *COUNT[4] * * * *= AM_TProtEdge; * * * * * * * * // 8<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 1000<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_Value_Am_ProtTotal()<br>{<br> * *// увеличить всю защиту ( += 8 )<br> * *self.protection[PROT_EDGE] * += AM_TProtEdge;<br> * *self.protection[PROT_BLUNT] *+= AM_TProtEdge;<br> * *self.protection[PROT_POINT] *+= AM_TProtPoint;<br> * *self.protection[PROT_FIRE] * += AM_TProtFire;<br> * *self.protection[PROT_MAGIC] *+= AM_TProtMage;<br>};<br><br>// Снять<br>func void UnEquip_Value_Am_ProtTotal()<br>{<br> * *// уменьшить всю защиту ( -= 8 )<br> * *self.protection[PROT_EDGE] * -= *AM_TProtEdge;<br> * *self.protection[PROT_BLUNT] *-= *AM_TProtEdge;<br> * *self.protection[PROT_POINT] *-= *AM_TProtPoint;<br> * *self.protection[PROT_FIRE] * -= *AM_TProtFire;<br> * *self.protection[PROT_MAGIC] *-= *AM_TProtMage;<br>};<br><br>//--------------------------------------<br>// Амулет Ловкости<br>//--------------------------------------<br>INSTANCE *ItAm_Dex_01(C_Item)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Dex; * * * * * * * * // 1000<br> * *visual * * * * *= "ItAm_Dex_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Dex_01; * * * * * *// одеть<br> * *on_unequip * * *= UnEquip_ItAm_Dex_01; * * * * *// снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет ловкости";<br> * *TEXT[2] * * * * = NAME_Bonus_Dex; * * * * * * * // "Прибавка к ловкости:"<br> * *COUNT[2] * * * *= Am_Dex; * * * * * * * * * * * // 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 1000<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Dex_01()<br>{<br> * *// ловкость += 10<br> * *Npc_ChangeAttribute(self,ATR_DEXTERITY,+Am_Dex);< br>};<br><br>// Снять<br>func void UnEquip_ItAm_Dex_01()<br>{<br> * *// ловкость -= 10<br> * *Npc_ChangeAttribute(self,ATR_DEXTERITY,-Am_Dex);<br>};<br><br>//--------------------------------------<br>// Амулет Силы<br>//--------------------------------------<br>INSTANCE *ItAm_Strg_01(C_Item)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Strg; * * * * * * * *// 1000<br> * *visual * * * * *= "ItAm_Strg_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Strg_01; * * * * * // одеть<br> * *on_unequip * * *= UnEquip_ItAm_Strg_01; * * * * // снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет силы";<br> * *TEXT[2] * * * * = NAME_Bonus_Str; * * * * * * * // "Прибавка к силе:"<br> * *COUNT[2] * * * *= Am_Strg; * * * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 1000<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Strg_01()<br>{<br> * *// сила += 10<br> * *Npc_ChangeAttribute(self,ATR_STRENGTH,+Am_Strg);< br>};<br><br>// Снять<br>func void UnEquip_ItAm_Strg_01()<br>{<br> * *// сила -= 10<br> * *Npc_ChangeAttribute(self,ATR_STRENGTH,-Am_Strg);<br>};<br><br>//--------------------------------------<br>// Амулет Жизни<br>//--------------------------------------<br>INSTANCE *ItAm_Hp_01(C_Item)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Hp; * * * * * * * * *// 400<br> * *visual * * * * *= "ItAm_Hp_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Hp_01; * * * * * * // одеть<br> * *on_unequip * * *= UnEquip_ItAm_Hp_01; * * * * * // снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет жизни";<br> * *TEXT[2] * * * * = NAME_Bonus_HP; * * * * * * * *// "Прибавка к жизни:"<br> * *COUNT[2] * * * *= Am_Hp; * * * * * * * * * * * *// 40<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Hp_01()<br>{<br> * *// макс. жизнь += 40<br> * *self.attribute[ATR_HITPOINTS_MAX] = self.attribute[ATR_HITPOINTS_MAX] + Am_Hp;<br> * *// жизнь += 40<br> * *self.attribute[ATR_HITPOINTS] = self.attribute[ATR_HITPOINTS] + Am_Hp;<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Hp_01()<br>{<br> * *// макс. жизнь -= 40<br> * *self.attribute[ATR_HITPOINTS_MAX] = self.attribute[ATR_HITPOINTS_MAX] - Am_Hp;<br> * *// если жизнь > 42<br> * *if(self.attribute[ATR_HITPOINTS] > (Am_Hp + 2))<br> * *{<br> * * * *// жизнь -= 40<br> * * * *self.attribute[ATR_HITPOINTS] = self.attribute[ATR_HITPOINTS] - Am_Hp;<br> * *}<br> * *else<br> * *{<br> * * * *// жизнь = 2<br> * * * *self.attribute[ATR_HITPOINTS] = 2;<br> * *};<br>};<br><br>//--------------------------------------<br>// Амулет Магии<br>//--------------------------------------<br>INSTANCE *ItAm_Mana_01(C_Item)<br>{<br> * *name * * * * * *= NAME_Amulett; * * * * * * * * // "Амулет"<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Mana; * * * * * * * *// 1000<br> * *visual * * * * *= "ItAm_Mana_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Mana_01; * * * * * // одеть<br> * *on_unequip * * *= UnEquip_ItAm_Mana_01; * * * * // снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет магии";<br> * *TEXT[2] * * * * = NAME_Bonus_Mana; * * * * * * *// "Прибавка к мане:"<br> * *COUNT[2] * * * *= Am_Mana; * * * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 1000<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Mana_01()<br>{<br> * *// макс. мана += 10<br> * *self.attribute[ATR_MANA_MAX] = self.attribute[ATR_MANA_MAX] + Am_Mana;<br> * *// мана += 10<br> * *self.attribute[ATR_MANA] = self.attribute[ATR_MANA] + Am_Mana;<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Mana_01()<br>{<br> * *// макс. мана += 10<br> * *self.attribute[ATR_MANA_MAX] = self.attribute[ATR_MANA_MAX] - Am_Mana;<br> * *// если мана > 10<br> * *if(self.attribute[ATR_MANA] > (Am_Mana))<br> * *{<br> * * * *// мана -= 10<br> * * * *self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - Am_Mana;<br> * *}<br> * *else<br> * *{<br> * * * *// мана = 0<br> * * * *self.attribute[ATR_MANA] = 0;<br> * *}; *<br>};<br><br>//--------------------------------------<br>// Амулет Власти<br>//--------------------------------------<br>INSTANCE *ItAm_Dex_Strg_01(C_Item)<br>{<br> * *name * * * * * *= "Амулет власти";<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_DexStrg; * * * * * * // 1600<br> * *visual * * * * *= "ItAm_Dex_Strg_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Dex_Strg_01; * * * // одеть<br> * *on_unequip * * *= UnEquip_ItAm_Dex_Strg_01; * * // снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет власти";<br> * *TEXT[2] * * * * = NAME_Bonus_Dex; * * * * * * * // "Прибавка к ловкости:"<br> * *COUNT[2] * * * *= Am_DexStrg_Dex; * * * * * * * // 8<br> * *TEXT[3] * * * * = NAME_Bonus_Str; * * * * * * * // "Прибавка к силе:"<br> * *COUNT[3] * * * *= Am_DexStrg_Strg; * * * * * * *// 8<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 1600<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Dex_Strg_01()<br>{<br> * *// ловкость += 8<br> * *Npc_ChangeAttribute(self,ATR_DEXTERITY,+Am_DexStr g_Dex);<br> * *// сила += 8<br> * *Npc_ChangeAttribute(self,ATR_STRENGTH,+Am_DexStrg _Strg);<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Dex_Strg_01()<br>{<br> * *// ловкость -= 8<br> * *Npc_ChangeAttribute(self,ATR_DEXTERITY,-Am_DexStrg_Dex);<br> * *// сила -= 8<br> * *Npc_ChangeAttribute(self,ATR_STRENGTH,-Am_DexStrg_Strg);<br>};<br><br>//--------------------------------------<br>// Амулет Озарения<br>//--------------------------------------<br>INSTANCE *ItAm_Hp_Mana_01(C_Item)<br>{<br> * *name * * * * * *= "Амулет озарения";<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_HpMana; * * * * * * *// 1300<br> * *visual * * * * *= "ItAm_Hp_Mana_01.3ds";<br> * *visual_skin * * = 0;<br> * *material * * * *= MAT_METAL; * * * * * * * * * *// металл<br> * *on_equip * * * *= Equip_ItAm_Hp_Mana_01; * * * *// одеть<br> * *on_unequip * * *= UnEquip_ItAm_Hp_Mana_01; * * *// снять<br> * *wear * * * * * *= WEAR_EFFECT;<br> * *effect * * * * *= "SPELLFX_ITEMGLIMMER"; <br> * *description * * = "Амулет озарения";<br> * *TEXT[2] * * * * = NAME_Bonus_HP; * * * * * * * *// "Прибавка к жизни:"<br> * *COUNT[2] * * * *= Am_HpMana_Hp; * * * * * * * * // 30<br> * *TEXT[3] * * * * = NAME_Bonus_Mana; * * * * * * *// "Прибавка к мане:"<br> * *COUNT[3] * * * *= Am_HpMana_Mana; * * * * * * * // 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 1300<br> * *INV_ZBIAS * * * = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>// Одеть<br>func void Equip_ItAm_Hp_Mana_01()<br>{<br> * *// жизнь += 30<br> * *self.attribute[ATR_HITPOINTS] = self.attribute[ATR_HITPOINTS] + Am_HpMana_Hp;<br> * *// макс. жизнь += 30<br> * *self.attribute[ATR_HITPOINTS_MAX] = self.attribute[ATR_HITPOINTS_MAX] + Am_HpMana_Hp;<br> * *// мана += 10<br> * *self.attribute[ATR_MANA] = self.attribute[ATR_MANA] + Am_HpMana_Mana;<br> * *// макс.мана += 10<br> * *self.attribute[ATR_MANA_MAX] = self.attribute[ATR_MANA_MAX] + Am_HpMana_Mana;<br>};<br><br>// Снять<br>func void UnEquip_ItAm_Hp_Mana_01()<br>{<br> * *// макс. мана -= 10<br> * *self.attribute[ATR_MANA_MAX] = self.attribute[ATR_MANA_MAX] - Am_HpMana_Mana;<br> * *// макс. жизнь -= 30<br> * *self.attribute[ATR_HITPOINTS_MAX] = self.attribute[ATR_HITPOINTS_MAX] - Am_HpMana_Hp;<br> * *// если жизнь > 31<br> * *if(self.attribute[ATR_HITPOINTS] > Am_HpMana_Hp + 1)<br> * *{<br> * * * *// жизнь -= 30<br> * * * *self.attribute[ATR_HITPOINTS] = self.attribute[ATR_HITPOINTS] - Am_HpMana_Hp;<br> * *}<br> * *else<br> * *{<br> * * * *// жизнь = 2<br> * * * *self.attribute[ATR_HITPOINTS] = 2;<br> * *};<br> * *// если мана >= 10<br> * *if(self.attribute[ATR_MANA] >= Am_HpMana_Mana)<br> * *{<br> * * * *// мана -= 10<br> * * * *self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - Am_HpMana_Mana;<br> * *}<br> * *else<br> * *{<br> * * * *// мана = 0<br> * * * *self.attribute[ATR_MANA] = 0;<br> * *};<br>};<br><br>
|
Re: Уроки скриптологии
* *17. Охотничьи трофеи.<br><br>Файл IT_AnimalTrophy.d<br><br>//*************************<br>// Охотничьи трофеи<br>//*************************<br><br>// стоимость<br>const int * Value_BCKopf * * * * * * * *= * 50; * * // голова богомола<br>const int * Value_Meatbugflesh * * * * *= * 10; * * // мясо мясного жука<br>const int * Value_SheepFur * * * * * * *= * 10; * * // шкура овцы<br>const int * Value_WolfFur * * * * * * * = * 10; * * // шкура волка<br>const int * Value_BugMandibles * * * * *= * 15; * * // жвало полевого жука<br>const int * Value_Claw * * * * * * * * *= * 15; * * // когти<br>const int * Value_LurkerClaw * * * * * *= * 15; * * // когти шныга<br>const int * Value_Teeth * * * * * * * * = * 15; * * // зубы<br>const int * Value_CrawlerMandibles * * *= * 15; * * // жвало ползуна<br>const int * Value_Wing * * * * * * * * *= * 20; * * // крыло<br>const int * Value_Sting * * * * * * * * = * 25; * * // жало<br>const int * Value_ReptileSkin * * * * * = * 25; * * // кожа рептилии<br>const int * Value_WargFur * * * * * * * = * 25; * * // шкура варга<br>const int * Value_DrgSnapperHorn * * * *= * 100; * *// рог остера<br>const int * Value_CrawlerPlate * * * * *= * 50; * * // панцирь ползуна<br>const int * Value_ShadowFur * * * * * * = * 250; * *// шкура мракориса<br>const int * Value_SharkSkin * * * * * * = * 200; * *// кожа болотожора<br>const int * Value_TrollFur * * * * * * *= * 300; * *// шкура тролля<br>const int * Value_WaranFiretongue * * * = * 300; * *// огненный язык<br>const int * Value_ShadowHorn * * * * * *= * 300; * *// рог мракориса<br>const int * Value_SharkTeeth * * * * * *= * 300; * *// зубы болотожора<br>const int * Value_TrollTooth * * * * * *= * 300; * *// клык тролля<br>const int * Value_TrollBlackFur * * * * = * 350; * *// шкура черного тролля<br>const int * Value_GoblinBone * * * * * *= * 10; * * // кость гоблина<br>const int * Value_SkeletonBone * * * * *= * 10; * * // кость скелета<br>const int * Value_DemonHeart * * * * * *= * 300; * *// сердце демона<br>const int * Value_StoneGolemHeart * * * = * 300; * *// сердце каменного голема<br>const int * Value_FireGolemHeart * * * *= * 300; * *// сердце огненного голема<br>const int * Value_IceGolemHeart * * * * = * 300; * *// сердце ледяного голема<br>const int * Value_UndeadDragonSoulStone = * 400; * *// каменная душа дракона нежити<br>const int * Value_IcedragonHeart * * * *= * 400; * *// сердце ледяного дракона<br>const int * Value_FiredragonHeart * * * = * 400; * *// сердце огненного дракона<br>const int * Value_SwampdragonHeart * * *= * 400; * *// сердце болотного дракона<br>const int * Value_RockdragonHeart * * * = * 400; * *// сердце каменного дракона<br>const int * Value_DragonBlood * * * * * = * 200; * *// кровь дракона<br>const int * Value_DragonScale * * * * * = * 200; * *// чешуя дракона<br>const int * Value_Keilerfur * * * * * * = * *15; * *// шкура кабана<br><br>//--------------------------------------<br>// Голова богомола<br>//--------------------------------------<br>INSTANCE ItAt_Addon_BCKopf(C_Item)<br>{<br> * *name * * * * * *= "Kopf"; * * * * * * * * * * * // (не переведено)<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_BCKopf; * * * * * * * * // 50<br> * *visual * * * * *= "ItAt_Blattcrawler_01.3DS"; <br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = "Голова богомола";<br> * *TEXT[0] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 50<br>};<br><br>//--------------------------------------<br>// Мясо мясного жука<br>//--------------------------------------<br>INSTANCE ItAt_Meatbugflesh(C_Item)<br>{<br> * *name * * * * * *= "Мясо мясного жука";<br> * *mainflag * * * *= ITEM_KAT_FOOD; * * * * * * * *// еда<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Meatbugflesh; * * * * * // 10<br> * *visual * * * * *= "ItAt_Meatbugflesh.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *scemeName * * * = "FOODHUGE";<br> * *on_state[0] * * = Use_Meatbugflesh; * * * * * * // использовать<br> * *description * * = name; * * * * * * * * * * * * // "Мясо мясного жука"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = NAME_Bonus_HP; * * * * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * *= 10; * * * * * * * * * * * * * // 10<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>// Использовать<br>func void Use_Meatbugflesh()<br>{<br> * *// жизнь += 10<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,10);<br>}; <br><br>//--------------------------------------<br>// Шкура овцы<br>//--------------------------------------<br>INSTANCE ItAt_SheepFur(C_Item)<br>{<br> * *name * * * * * *= "Шкура овцы";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SheepFur; * * * * * * * // 10<br> * *visual * * * * *= "ItAt_SheepFur.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Шкура овцы"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Шкура волка<br>//--------------------------------------<br>INSTANCE ItAt_WolfFur(C_Item)<br>{<br> * *name * * * * * *= "Шкура волка";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_WolfFur; * * * * * * * *// 10<br> * *visual * * * * *= "ItAt_WolfFur.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Шкура волка"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Жвало полевого жука<br>//--------------------------------------<br>INSTANCE ItAt_BugMandibles(C_Item)<br>{<br> * *name * * * * * *= "Жвало полевого жука";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_BugMandibles; * * * * * // 15<br> * *visual * * * * *= "ItAt_BugMandibles.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Жвало полевого жука"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Когти<br>//--------------------------------------<br>INSTANCE ItAt_Claw(C_Item)<br>{<br> * *name * * * * * *= "Когти";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Claw; * * * * * * * * * // 15<br> * *visual * * * * *= "ItAt_Claw.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Когти"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Когти шныга<br>//--------------------------------------<br>INSTANCE ItAt_LurkerClaw(C_Item)<br>{<br> * *name * * * * * *= "Когти шныга";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_LurkerClaw; * * * * * * // 15<br> * *visual * * * * *= "ItAt_LurkerClaw.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Когти шныга"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Зубы<br>//--------------------------------------<br>INSTANCE ItAt_Teeth(C_Item)<br>{<br> * *name * * * * * *= "Зубы";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Teeth; * * * * * * * * *// 15<br> * *visual * * * * *= "ItAt_Teeth.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Зубы"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Жвало ползуна<br>//--------------------------------------<br>INSTANCE ItAt_CrawlerMandibles(C_Item)<br>{<br> * *name * * * * * *= "Жвало ползуна";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_CrawlerMandibles; * * * // 15<br> * *visual * * * * *= "ItAt_CrawlerMandibles.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *scemeName * * * = "FOOD";<br> * *on_state[0] * * = Use_Mandibles; * * * * * * * *// использовать<br> * *description * * = name; * * * * * * * * * * * * // "Жвало ползуна"<br> * *TEXT[0] * * * * = "В этом жвале содержится особенный ";<br> * *TEXT[1] * * * * = "сок, который обладает действием";<br> * *TEXT[2] * * * * = "восстанавливать магическую энергию.";<br> * *TEXT[3] * * * * = "Со временем прекращает действовать.";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>// Использовать<br>func void Use_Mandibles()<br>{<br> * *// если съедено менее 10 жвал<br> * *if(Mandibles_Bonus <= 9)<br> * *{<br> * * * *// восстановить ману до максимальной<br> * * * *Npc_ChangeAttribute(self,ATR_MANA,self.attribute[ATR_MANA_MAX]);<br> * * * *// кол-во съеденных жвал ++<br> * * * *Mandibles_Bonus = (Mandibles_Bonus + 1);<br> * *}<br> * *else<br> * *{<br> * * * *// вывод на экран - "Этот сок больше не действует."<br> * * * *PrintScreen(PRINT_Mandibles,-1,YPOS_LEVELUP,FONT_ScreenSmall,2);<br> * *};<br>};<br><br>//--------------------------------------<br>// Крыло<br>//--------------------------------------<br>INSTANCE ItAt_Wing(C_Item)<br>{<br> * *name * * * * * *= "Flьgel";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Wing; * * * * * * * * * // 20<br> * *visual * * * * *= "ItAt_Wing.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Крыло"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 20<br>};<br><br>//--------------------------------------<br>// Жало<br>//--------------------------------------<br>INSTANCE ItAt_Sting(C_Item)<br>{<br> * *name * * * * * *= "Жало";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Sting; * * * * * * * * *// 25<br> * *scemeName * * * = "FOOD";<br> * *on_state[0] * * = Use_Sting; * * * * * * * * * *// использовать<br> * *visual * * * * *= "ItAt_Sting.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Жало"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "Жало";<br> * *TEXT[2] * * * * = "содержит ядовитый сок";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 25<br>};<br><br>// Использовать<br>func void Use_Sting()<br>{<br> * *// если ГГ умеет получать лечебный сок<br> * *if(Knows_Bloodfly == TRUE)<br> * *{<br> * * * *// если съедено менее 11 жал<br> * * * *if(Bloodfly_Bonus <= 10)<br> * * * *{<br> * * * * * *// восстановить жизнь до максимальной<br> * * * * * *Npc_ChangeAttribute(self,ATR_HITPOINTS,self.attri bute[ATR_HITPOINTS_MAX]);<br> * * * * * *// вывод на экран - "Полностью вылечен"<br> * * * * * *Print(PRINT_FullyHealed);<br> * * * * * *// кол-во съеденных жал ++<br> * * * * * *Bloodfly_Bonus = (Bloodfly_Bonus+1);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// вывод на экран "Этот сок больше не действует."<br> * * * * * *Print(PRINT_Mandibles);<br> * * * *};<br> * *}<br> * *else<br> * *{<br> * * * *// вывод на экран "На вкус горький и ядовитый"<br> * * * *Print(PRINT_Bloodfly);<br> * * * *// если жизнь > 1<br> * * * *if(self.attribute[ATR_HITPOINTS] > 1) <br> * * * *{<br> * * * * * *// жизнь -= 1<br> * * * * * *self.attribute[ATR_HITPOINTS] = (self.attribute[ATR_HITPOINTS] - 1);<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Кожа рептилии<br>//--------------------------------------<br>INSTANCE itat_LurkerSkin(C_Item)<br>{<br> * *name * * * * * *= "Кожа рептилии";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_ReptileSkin; * * * * * *// 25<br> * *visual * * * * *= "ItAt_LurkerSkin.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = "Кожа рептилии";<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 25<br>};<br><br>//--------------------------------------<br>// Шкура варга<br>//--------------------------------------<br>INSTANCE ItAt_WargFur(C_Item)<br>{<br> * *name * * * * * *= "Шкура варга";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_WargFur; * * * * * * * *// 25<br> * *visual * * * * *= "ItAt_WargFur.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Шкура варга"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 25<br>};<br><br>//--------------------------------------<br>// Шкура кабана<br>//--------------------------------------<br>INSTANCE ItAt_Addon_KeilerFur(C_Item)<br>{<br> * *name * * * * * *= "Шкура кабана";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_KeilerFur; * * * * * * *// 15<br> * *visual * * * * *= "ItAt_WargFur.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Шкура кабана"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Рог остера<br>//--------------------------------------<br>INSTANCE ItAt_DrgSnapperHorn(C_Item)<br>{<br> * *name * * * * * *= "Рог остера";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_DrgSnapperHorn; * * * * // 100<br> * *visual * * * * *= "ItAt_DrgSnapperHorn.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Рог остера"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 100<br>};<br><br>//--------------------------------------<br>// Панцирь ползуна<br>//--------------------------------------<br>INSTANCE ItAt_CrawlerPlate(C_Item)<br>{<br> * *name * * * * * *= "Панцирь ползуна";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_CrawlerPlate; * * * * * // 50<br> * *visual * * * * *= "ItAt_CrawlerPlate.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Панцирь ползуна"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 50<br>};<br><br>//--------------------------------------<br>// Шкура мракориса<br>//--------------------------------------<br>INSTANCE ItAt_ShadowFur(C_Item)<br>{<br> * *name * * * * * *= "Шкура мракориса";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_ShadowFur; * * * * * * *// 250<br> * *visual * * * * *= "ItAt_ShadowFur.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Шкура мракориса"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 250<br>};<br><br>//--------------------------------------<br>// Кожа болотожора<br>//--------------------------------------<br>INSTANCE ItAt_SharkSkin(C_Item)<br>{<br> * *name * * * * * *= "Кожа болотожора";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SharkSkin; * * * * * * *// 200<br> * *visual * * * * *= "ItAt_SharkSkin.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Кожа болотожора"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 200<br>};<br><br>//--------------------------------------<br>// Шкура тролля<br>//--------------------------------------<br>INSTANCE ItAt_TrollFur(C_Item)<br>{<br> * *name * * * * * *= "Шкура тролля";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_TrollFur; * * * * * * * // 300<br> * *visual * * * * *= "ItAt_TrollFur.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Шкура тролля"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Шкура черного тролля<br>//--------------------------------------<br>INSTANCE ItAt_TrollBlackFur(C_Item)<br>{<br> * *name * * * * * *= "Шкура черного тролля";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_TrollBlackFur; * * * * *// 350<br> * *visual * * * * *= "ItAt_TrollFur.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Шкура черного тролля"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 350<br>};<br><br>//--------------------------------------<br>// Огненный язык<br>//--------------------------------------<br>INSTANCE ItAt_WaranFiretongue(C_Item)<br>{<br> * *name * * * * * *= "Огненный язык";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_WaranFiretongue; * * * *// 300<br> * *visual * * * * *= "ItAt_WaranFiretongue.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Огненный язык"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Рог мракориса<br>//--------------------------------------<br>INSTANCE ItAt_ShadowHorn(C_Item)<br>{<br> * *name * * * * * *= "Рог мракориса";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_ShadowHorn; * * * * * * // 300<br> * *visual * * * * *= "ItAt_ShadowHorn.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Рог мракориса"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Зубы болотожора<br>//--------------------------------------<br>INSTANCE ItAt_SharkTeeth(C_Item)<br>{<br> * *name * * * * * *= "Зубы болотожора";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SharkTeeth; * * * * * * // 300<br> * *visual * * * * *= "ItAt_SharkTeeth.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Зубы болотожора"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Клык тролля<br>//--------------------------------------<br>INSTANCE ItAt_TrollTooth(C_Item)<br>{<br> * *name * * * * * *= "Клык тролля";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_TrollTooth; * * * * * * // 300<br> * *visual * * * * *= "ItAt_TrollTooth.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Клык тролля"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br> * *INV_ZBIAS * * * = INVCAM_ENTF_RING_STANDARD;<br>};<br><br>...продолжение следует
|
Re: Уроки скриптологии
//--------------------------------------<br>// Сердце каменного голема<br>//--------------------------------------<br>INSTANCE ItAt_StoneGolemHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце каменного голема";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_StoneGolemHeart; * * * *// 300<br> * *visual * * * * *= "ItAt_StoneGolemHeart.3DS";<br> * *material * * * *= MAT_STONE; * * * * * * * * * *// камень<br> * *description * * = name; * * * * * * * * * * * * // "Сердце каменного голема"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = ""; <br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Сердце огненного голема<br>//--------------------------------------<br>INSTANCE ItAt_FireGolemHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце огненного голема";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_FireGolemHeart; * * * * // 300<br> * *visual * * * * *= "ItAt_FireGolemHeart.3DS";<br> * *material * * * *= MAT_STONE; * * * * * * * * * *// камень<br> * *description * * = name; * * * * * * * * * * * * // "Сердце огненного голема"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = ""; <br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Сердце ледяного голема<br>//--------------------------------------<br>INSTANCE ItAt_IceGolemHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце ледяного голема";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_IceGolemHeart; * * * * *// 300<br> * *visual * * * * *= "ItAt_IceGolemHeart.3DS";<br> * *material * * * *= MAT_STONE; * * * * * * * * * *// камень<br> * *description * * = name; * * * * * * * * * * * * // "Сердце ледяного голема"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Кость гоблина<br>//--------------------------------------<br>INSTANCE ItAt_GoblinBone(C_Item)<br>{<br> * *name * * * * * *= "Кость гоблина";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_GoblinBone; * * * * * * // 10<br> * *visual * * * * *= "ItAt_GoblinBone.3DS";<br> * *material * * * *= MAT_WOOD; * * * * * * * * * * // дерево<br> * *description * * = name; * * * * * * * * * * * * // "Кость гоблина"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Кость скелета<br>//--------------------------------------<br>INSTANCE ItAt_SkeletonBone(C_Item)<br>{<br> * *name * * * * * *= "Кость скелета";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SkeletonBone; * * * * * // 10<br> * *visual * * * * *= "ItAt_SkeletonBone.3DS";<br> * *material * * * *= MAT_WOOD; * * * * * * * * * * // дерево<br> * *description * * = name; * * * * * * * * * * * * // "Кость скелета"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Сердце демона<br>//--------------------------------------<br>INSTANCE ItAt_DemonHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце демона";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_DemonHeart; * * * * * * // 300<br> * *visual * * * * *= "ItAt_DemonHeart.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Сердце демона"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Каменная душа дракона нежити<br>//--------------------------------------<br>INSTANCE ItAt_UndeadDragonSoulStone(C_Item)<br>{<br> * *name * * * * * *= "Каменная душа дракона нежити";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_UndeadDragonSoulStone; *// 400<br> * *visual * * * * *= "ItAt_UndeadDragonSoulStone.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Каменная душа дракона нежити"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br> * *INV_ZBIAS * * * = INVCAM_ENTF_MISC_STANDARD;<br>};<br><br>//--------------------------------------<br>// Сердце ледяного дракона<br>//--------------------------------------<br>INSTANCE ItAt_IcedragonHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце ледяного дракона";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_IcedragonHeart; * * * * // 400<br> * *visual * * * * *= "ItAt_IcedragonHeart.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Сердце ледяного дракона"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Сердце каменного дракона<br>//--------------------------------------<br>INSTANCE ItAt_RockdragonHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце каменного дракона";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_RockdragonHeart; * * * *// 400<br> * *visual * * * * *= "ItAt_RockdragonHeart.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Сердце каменного дракона"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Сердце болотного дракона<br>//--------------------------------------<br>INSTANCE ItAt_SwampdragonHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце болотного дракона";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_SwampdragonHeart; * * * // 400<br> * *visual * * * * *= "ItAt_SwampdragonHeart.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Сердце болотного дракона"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Сердце огненного дракона<br>//--------------------------------------<br>INSTANCE ItAt_FiredragonHeart(C_Item)<br>{<br> * *name * * * * * *= "Сердце огненного дракона";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_FiredragonHeart; * * * *// 400<br> * *visual * * * * *= "ItAt_FiredragonHeart.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Сердце огненного дракона"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Кровь дракона<br>//--------------------------------------<br>INSTANCE ItAt_DragonBlood(C_Item)<br>{<br> * *name * * * * * *= "Кровь дракона";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_DragonBlood; * * * * * *// 200<br> * *visual * * * * *= "ItAt_DragonBlood.3DS";<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // "Кровь дракона"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 200<br> * *INV_ZBIAS * * * = INVCAM_ENTF_MISC_STANDARD;<br>};<br><br>//--------------------------------------<br>// Чешуя дракона<br>//--------------------------------------<br>INSTANCE ItAt_DragonScale(C_Item)<br>{<br> * *name * * * * * *= "Чешуя дракона";<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_DragonScale; * * * * * *// 200<br> * *visual * * * * *= "ItAt_DragonScale.3DS";<br> * *material * * * *= MAT_STONE ; * * * * * * * * * // камень<br> * *description * * = name; * * * * * * * * * * * * // "Чешуя дракона"<br> * *TEXT[0] * * * * = "";<br> * *TEXT[1] * * * * = "";<br> * *TEXT[2] * * * * = "";<br> * *TEXT[3] * * * * = "";<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // "Ценность:"<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 200<br>};<br><br>
|
Re: Уроки скриптологии
2Pa:<br>Прослойки уже не обязательны, файлы идут длинные.<br><br> * *18. Броня основной игры.<br><br>Файл IT_Armor.d<br><br>//*************************<br>// Броня основной игры<br>//*************************<br><br>// стоимость<br>const int VALUE_ITAR_Governor * = 1100; * * * * // Накидка городского советника<br>const int VALUE_ITAR_Judge * * *= 0; * * * * * *// Одежда судьи<br>const int VALUE_ITAR_Smith * * *= 0; * * * * * *// Одежда кузнеца<br>const int VALUE_ITAR_Barkeeper *= 0; * * * * * *// Одежда трактирщика<br>const int VALUE_ITAR_Vlk_L * * *= 120; * * * * *// Одежда горожанина (бедная)<br>const int VALUE_ITAR_Vlk_M * * *= 120; * * * * *// Одежда горожанина (скромная)<br>const int VALUE_ITAR_Vlk_H * * *= 120; * * * * *// Одежда горожанина (богатая)<br>const int VALUE_ITAR_VlkBabe_L *= 0; * * * * * *// Одежда горожанки (бедная)<br>const int VALUE_ITAR_VlkBabe_M *= 0; * * * * * *// Одежда горожанки (скромная)<br>const int VALUE_ITAR_VlkBabe_H *= 0; * * * * * *// Одежда горожанки (богатая)<br>const int VALUE_ITAR_MIL_L * * *= 600; * * * * *// Легкие доспехи ополчения<br>const int VALUE_ITAR_MIL_M * * *= 2500; * * * * // Тяжелые доспехи ополчения<br>const int VALUE_ITAR_PAL_M * * *= 5000; * * * * // Доспехи паладина<br>const int VALUE_ITAR_PAL_H * * *= 20000; * * * *// Доспехи паладина (тяжелые)<br>const int VALUE_ITAR_Bau_L * * *= 80; * * * * * // Одежда крестьянина (бедная)<br>const int VALUE_ITAR_Bau_M * * *= 100; * * * * *// Одежда крестьянина (скромная)<br>const int VALUE_ITAR_BauBabe_L *= 0; * * * * * *// Гордость крестьянки (бедная)<br>const int VALUE_ITAR_BauBabe_M *= 0; * * * * * *// Гордость крестьянки (скромная)<br>const int VALUE_ITAR_SLD_L * * *= 500; * * * * *// Легкие доспехи наемника<br>const int VALUE_ITAR_SLD_M * * *= 1000; * * * * // Средние доспехи наемника<br>const int VALUE_ITAR_SLD_H * * *= 2500; * * * * // Тяжелые доспехи наемника<br>const int VALUE_ITAR_DJG_Crawler= 1500; * * * * // Доспехи из панцирей ползунов<br>const int VALUE_ITAR_NOV_L * * *= 280; * * * * *// Роба послушника<br>const int VALUE_ITAR_KDF_L * * *= 500; * * * * *// Роба мага огня<br>const int VALUE_ITAR_KDF_H * * *= 3000; * * * * // Тяжелая роба огня<br>const int VALUE_ITAR_Leather_L *= 250; * * * * *// Кожаные доспехи<br>const int VALUE_ITAR_BDT_M * * *= 550; * * * * *// Средняя бандитская кольчуга<br>const int VALUE_ITAR_BDT_H * * *= 2100; * * * * // Тяжелая бандитская кольчуга<br>const int VALUE_ITAR_DJG_L * * *= 3000; * * * * // Легкие доспехи охотника на драконов<br>const int VALUE_ITAR_DJG_M * * *= 12000; * * * *// Средние доспехи охотника на драконов<br>const int VALUE_ITAR_DJG_H * * *= 20000; * * * *// Тяжелые доспехи охотника на драконов<br>const int VALUE_ITAR_DJG_Babe * = 0; * * * * * *// Кольчуга охотницы за драконами<br>const int VALUE_ITAR_XARDAS * * = 15000; * * * *// Роба темных сил<br>const int VALUE_ITAR_LESTER * * = 300; * * * * *// Роба Лестера<br>const int VALUE_ITAR_DIEGO * * *= 450; * * * * *// Кольчуга Диего<br>const int VALUE_ITAR_CorAngar * = 600; * * * * *// Кольчуга Кор Ангара<br>const int VALUE_ITAR_Dementor * = 500; * * * * *// Темная накидка<br>const int VALUE_ITAR_KDW_H * * *= 450; * * * * *// Роба мага воды<br>const int VALUE_ITAR_Prisoner * = 10; * * * * * // Одежда заключенного<br><br>//--------------------------------------<br>// Накидка городского советника<br>//--------------------------------------<br>INSTANCE ITAR_Governor (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Накидка городского советника";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 40;<br> * *protection[PROT_BLUNT] *= * 40;<br> * *protection[PROT_POINT] *= * 40;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_Governor; * *// 1100<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Governor.3ds";<br> * *visual_change * * * * * = * "Armor_Governor.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Накидка городского советника"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 40<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 40<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 1100<br>};<br><br>//--------------------------------------<br>// Одежда судьи<br>//--------------------------------------<br>INSTANCE ITAR_JUDGE (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда судьи";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_JUDGE; * * * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Governor.3DS";<br> * *visual_change * * * * * = * "Armor_Judge.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда судьи"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда кузнеца<br>//--------------------------------------<br>INSTANCE ITAR_SMITH (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда кузнеца";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 15;<br> * *protection[PROT_BLUNT] *= * 15;<br> * *protection[PROT_POINT] *= * 15;<br> * *protection[PROT_FIRE] * = * 5;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_SMITH; * * * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Smith.3DS";<br> * *visual_change * * * * * = * "Armor_Smith.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда кузнеца"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 15<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 15<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 5<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда трактирщика<br>//--------------------------------------<br>INSTANCE ITAR_BARKEEPER (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда трактирщика";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_BARKEEPER; * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Wirt.3DS";<br> * *visual_change * * * * * = * "Armor_Barkeeper.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда трактирщика"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда горожанина (бедная)<br>//--------------------------------------<br>INSTANCE ITAR_VLK_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда горожанина";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_VLK_L; * * * // 120<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLK_L.3DS";<br> * *visual_change * * * * * = * "Armor_Vlk_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда горожанина"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 120<br>};<br><br>//--------------------------------------<br>// Одежда горожанина (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_VLK_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда горожанина";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_VLK_M; * * * // 120<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLK_M.3DS";<br> * *visual_change * * * * * = * "Armor_Vlk_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда горожанина"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 120<br>};<br><br>//--------------------------------------<br>// Одежда горожанина (богатая)<br>//--------------------------------------<br>INSTANCE ITAR_VLK_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда горожанина";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_VLK_H; * * * // 120<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLK_H.3DS";<br> * *visual_change * * * * * = * "Armor_Vlk_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда горожанина"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 120<br>};<br><br>//--------------------------------------<br>// Одежда горожанки (бедная)<br>//--------------------------------------<br>instance ITAR_VlkBabe_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда горожанки";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_VlkBabe_L; * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLKBabe.3DS";<br> * *visual_change * * * * * = * "Armor_VlkBabe_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда горожанки"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда горожанки (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_VlkBabe_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда горожанки";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_VlkBabe_M; * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLKBabe.3DS";<br> * *visual_change * * * * * = * "Armor_VlkBabe_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда горожанки"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда горожанки (богатая)<br>//--------------------------------------<br>INSTANCE ITAR_VlkBabe_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда горожанки";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_VlkBabe_H; * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLKBabe.3DS";<br> * *visual_change * * * * * = * "Armor_VlkBabe_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда горожанки"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Легкие доспехи ополчения<br>//--------------------------------------<br>INSTANCE ITAR_MIL_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Легкие доспехи ополчения";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 40;<br> * *protection[PROT_BLUNT] *= * 40;<br> * *protection[PROT_POINT] *= * 40;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_MIL_L; * * * // 600<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_MIL_L.3DS";<br> * *visual_change * * * * * = * "Armor_Mil_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_MIL_L; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_MIL_L; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Легкие доспехи ополчения"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 40<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 40<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 600<br>};<br><br>// Одеть<br>func void Equip_ITAR_MIL_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одеты Доспехи ополчения<br> * * * *MILArmor_Equipped = TRUE;<br> * * * *// если одет Пояс милиции<br> * * * *if(MIL01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *};<br>};<br><br>// Снять<br>func void UnEquip_ITAR_MIL_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сняты Доспехи ополчения<br> * * * *MILArmor_Equipped = FALSE;<br> * * * *// если одет Пояс милиции<br> * * * *if(MIL01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *};<br>};<br><br>...продолжение следует
|
Re: Уроки скриптологии
//--------------------------------------<br>// Тяжелые доспехи ополчения<br>//--------------------------------------<br>INSTANCE ITAR_MIL_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Тяжелые доспехи ополчения";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 70;<br> * *protection[PROT_BLUNT] *= * 70;<br> * *protection[PROT_POINT] *= * 70;<br> * *protection[PROT_FIRE] * = * 10;<br> * *protection[PROT_MAGIC] *= * 10;<br> * *value * * * * * * * * * = * VALUE_ITAR_MIL_M; * * * // 2500<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_MIL_M.3DS";<br> * *visual_change * * * * * = * "Armor_MIL_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_MIL_M; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_MIL_M; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Тяжелые доспехи ополчения"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 70<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 70<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 10<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 10<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 2500<br>};<br><br>// Одеть<br>func void Equip_ITAR_MIL_M()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одеты Доспехи ополчения<br> * * * *MILArmor_Equipped = TRUE;<br> * * * *// если одет Пояс милиции<br> * * * *if(MIL01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *};<br>};<br><br>// Снять<br>func void UnEquip_ITAR_MIL_M()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сняты Доспехи ополчения<br> * * * *MILArmor_Equipped = FALSE;<br> * * * *// если одет Пояс милиции<br> * * * *if(MIL01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Доспехи паладина<br>//--------------------------------------<br>INSTANCE ITAR_PAL_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Доспехи паладина";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 100;<br> * *protection[PROT_BLUNT] *= * 100;<br> * *protection[PROT_POINT] *= * 100;<br> * *protection[PROT_FIRE] * = * 50;<br> * *protection[PROT_MAGIC] *= * 25;<br> * *value * * * * * * * * * = * VALUE_ITAR_PAL_M; * * * // 5000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Pal_M.3ds";<br> * *visual_change * * * * * = * "Armor_Pal_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_METAL; * * * * * * *// металл<br> * *description * * * * * * = * name; * * * * * * * * * // "Доспехи паладина"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 25<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 5000<br>};<br><br>//--------------------------------------<br>// Доспехи паладина (тяжелые)<br>//--------------------------------------<br>INSTANCE ITAR_PAL_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Доспехи паладина";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 150;<br> * *protection[PROT_BLUNT] *= * 150;<br> * *protection[PROT_POINT] *= * 150;<br> * *protection[PROT_FIRE] * = * 100;<br> * *protection[PROT_MAGIC] *= * 50;<br> * *value * * * * * * * * * = * VALUE_ITAR_PAL_H; * * * // 20000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Pal_H.3ds";<br> * *visual_change * * * * * = * "Armor_Pal_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_METAL; * * * * * * *// металл<br> * *description * * * * * * = * name; * * * * * * * * * // "Доспехи паладина"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 150<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 150<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 100<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 20000<br>};<br><br>//--------------------------------------<br>// Одежда крестьянина (бедная)<br>//--------------------------------------<br>INSTANCE ITAR_BAU_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда крестьянина";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 15;<br> * *protection[PROT_BLUNT] *= * 15;<br> * *protection[PROT_POINT] *= * 15;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_BAU_L; * * * // 80<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Bau_L.3DS";<br> * *visual_change * * * * * = * "Armor_Bau_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда крестьянина"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 15<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 15<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 80<br>};<br><br>//--------------------------------------<br>// Одежда крестьянина (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_BAU_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда крестьянина";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 15;<br> * *protection[PROT_BLUNT] *= * 15;<br> * *protection[PROT_POINT] *= * 15;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_BAU_M; * * * // 100<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Bau_M.3ds";<br> * *visual_change * * * * * = * "Armor_Bau_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда крестьянина"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 15<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 15<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 100<br>};<br><br>//--------------------------------------<br>// Гордость крестьянки (бедная)<br>//--------------------------------------<br>INSTANCE ITAR_BauBabe_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Гордость крестьянки";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_BauBabe_L; * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLKBabe.3DS";<br> * *visual_change * * * * * = * "Armor_BauBabe_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Гордость крестьянки"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Гордость крестьянки (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_BauBabe_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Гордость крестьянки" ;<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 10;<br> * *protection[PROT_BLUNT] *= * 10;<br> * *protection[PROT_POINT] *= * 10;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_BauBabe_M; * // 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_VLKBabe.3DS";<br> * *visual_change * * * * * = * "Armor_BauBabe_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Гордость крестьянки"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Легкие доспехи наемника<br>//--------------------------------------<br>INSTANCE ITAR_SLD_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Легкие доспехи наемника";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 30;<br> * *protection[PROT_BLUNT] *= * 30;<br> * *protection[PROT_POINT] *= * 30;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_SLD_L; * * * // 500<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Sld_L.3ds";<br> * *visual_change * * * * * = * "Armor_Sld_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_SLD_L; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_SLD_L; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Легкие доспехи наемника"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 30<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 30<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 500<br>};<br><br>// Одеть<br>func void Equip_ITAR_SLD_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одеты Доспехи наемника<br> * * * *SLDArmor_Equipped = TRUE;<br> * * * *// если одет Пояс наемника<br> * * * *if(SLD01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *}; * * * * *<br>};<br><br>// Снять<br>func void UnEquip_ITAR_SLD_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сняты Доспехи наемника<br> * * * *SLDArmor_Equipped = FALSE;<br> * * * *// если одет Пояс наемника<br> * * * *if(SLD01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Средние доспехи наемника<br>//--------------------------------------<br>INSTANCE ITAR_SLD_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Средние доспехи наемника";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 50;<br> * *protection[PROT_BLUNT] *= * 50;<br> * *protection[PROT_POINT] *= * 50;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 5;<br> * *value * * * * * * * * * = * VALUE_ITAR_SLD_M; * * * // 1000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Sld_M.3ds";<br> * *visual_change * * * * * = * "Armor_Sld_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_SLD_M; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_SLD_M; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Средние доспехи наемника"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 50<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 50<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 5<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 1000<br>};<br><br>// Одеть<br>func void Equip_ITAR_SLD_M()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одеты Доспехи наемника<br> * * * *SLDArmor_Equipped = TRUE;<br> * * * *// если одет Пояс наемника<br> * * * *if(SLD01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *}; * * * * *<br>};<br><br>// Снять<br>func void UnEquip_ITAR_SLD_M()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сняты Доспехи наемника<br> * * * *SLDArmor_Equipped = FALSE;<br> * * * *// если одет Пояс наемника<br> * * * *if(SLD01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *}; * * * * *<br>};<br><br>//--------------------------------------<br>// Тяжелые доспехи наемника<br>//--------------------------------------<br>INSTANCE ITAR_SLD_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Тяжелые доспехи наемника";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 80;<br> * *protection[PROT_BLUNT] *= * 80;<br> * *protection[PROT_POINT] *= * 80;<br> * *protection[PROT_FIRE] * = * 5;<br> * *protection[PROT_MAGIC] *= * 10;<br> * *value * * * * * * * * * = * VALUE_ITAR_SLD_H; * * * // 2500<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Sld_H.3ds";<br> * *visual_change * * * * * = * "Armor_Sld_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_SLD_H; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_SLD_H; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Тяжелые доспехи наемника"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 80<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 80<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 5<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 10<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 2500<br>};<br><br>// Одеть<br>func void Equip_ITAR_SLD_H()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одеты Доспехи наемника<br> * * * *SLDArmor_Equipped = TRUE;<br> * * * *// если одет Пояс наемника<br> * * * *if(SLD01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *}; * * * * *<br>};<br><br>// Снять<br>func void UnEquip_ITAR_SLD_H()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сняты Доспехи наемника<br> * * * *SLDArmor_Equipped = FALSE;<br> * * * *// если одет Пояс наемника<br> * * * *if(SLD01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *}; * * * * *<br>};<br><br>...продолжение следует
|
Re: Уроки скриптологии
//--------------------------------------<br>// Доспехи из панцирей ползунов<br>//--------------------------------------<br>INSTANCE ITAR_DJG_Crawler (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Доспехи из панцирей ползунов";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 70;<br> * *protection[PROT_BLUNT] *= * 70;<br> * *protection[PROT_POINT] *= * 70;<br> * *protection[PROT_FIRE] * = * 15;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_DJG_Crawler; // 1500<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Djg_Crawler.3ds";<br> * *visual_change * * * * * = * "Armor_Djg_Crawler.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_DJG_Crawler; // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_DJG_Crawler; * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Доспехи из панцирей ползунов"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 70<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 70<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 15<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 1500<br>};<br><br>// Одеть<br>func void Equip_ITAR_DJG_Crawler()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одеты Доспехи из панцирей ползунов<br> * * * *MCArmor_Equipped = TRUE;<br> * * * *// если одет Ремень из панцирей ползунов<br> * * * *if(MC_Equipped == TRUE) <br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *}; * * * * *<br>};<br><br>// Снять<br>func void UnEquip_ITAR_DJG_Crawler()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сняты Доспехи из панцирей ползунов<br> * * * *MCArmor_Equipped = FALSE;<br> * * * *// если одет Ремень из панцирей ползунов<br> * * * *if(MC_Equipped == TRUE) <br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *}; * * * * *<br>};<br><br>//--------------------------------------<br>// Легкие доспехи охотника на драконов<br>//--------------------------------------<br>INSTANCE ITAR_DJG_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Легкие доспехи охотника на драконов";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 100;<br> * *protection[PROT_BLUNT] *= * 100;<br> * *protection[PROT_POINT] *= * 100;<br> * *protection[PROT_FIRE] * = * 50;<br> * *protection[PROT_MAGIC] *= * 25;<br> * *value * * * * * * * * * = * VALUE_ITAR_DJG_L; * * * // 3000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Djg_L.3ds";<br> * *visual_change * * * * * = * "Armor_Djg_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Легкие доспехи охотника на драконов"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 25<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 3000<br>};<br><br>//--------------------------------------<br>// Средние доспехи охотника на драконов<br>//--------------------------------------<br>INSTANCE ITAR_DJG_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Средние доспехи охотника на драконов";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 120;<br> * *protection[PROT_BLUNT] *= * 120;<br> * *protection[PROT_POINT] *= * 120;<br> * *protection[PROT_FIRE] * = * 75;<br> * *protection[PROT_MAGIC] *= * 35;<br> * *value * * * * * * * * * = * VALUE_ITAR_DJG_M; * * * // 12000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Djg_M.3ds";<br> * *visual_change * * * * * = * "Armor_Djg_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Средние доспехи охотника на драконов"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 120<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 120<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 75<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 35<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 12000<br>};<br><br>//--------------------------------------<br>// Тяжелые доспехи охотника на драконов<br>//--------------------------------------<br>INSTANCE ITAR_DJG_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Тяжелые доспехи охотника на драконов";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 150;<br> * *protection[PROT_BLUNT] *= * 150;<br> * *protection[PROT_POINT] *= * 150;<br> * *protection[PROT_FIRE] * = * 100;<br> * *protection[PROT_MAGIC] *= * 50;<br> * *value * * * * * * * * * = * VALUE_ITAR_DJG_H; * * * // 20000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Djg_H.3ds";<br> * *visual_change * * * * * = * "Armor_Djg_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Тяжелые доспехи охотника на драконов"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 150<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 150<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 100<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 20000<br>};<br><br>//--------------------------------------<br>// Кольчуга охотницы за драконами<br>//--------------------------------------<br>INSTANCE ITAR_DJG_BABE (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Кольчуга охотницы за драконами";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 60;<br> * *protection[PROT_BLUNT] *= * 60;<br> * *protection[PROT_POINT] *= * 60;<br> * *protection[PROT_FIRE] * = * 30;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_DJG_BABE; * *// 0<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Djg_L.3DS";<br> * *visual_change * * * * * = * "Armor_Djg_Babe.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Кольчуга охотницы за драконами"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 60<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 60<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 30<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Роба послушника<br>//--------------------------------------<br>INSTANCE ITAR_NOV_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Роба послушника";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 25;<br> * *protection[PROT_BLUNT] *= * 25;<br> * *protection[PROT_POINT] *= * 25;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 10;<br> * *value * * * * * * * * * = * VALUE_ITAR_NOV_L; * * * // 280<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Nov_L.3ds";<br> * *visual_change * * * * * = * "Armor_Nov_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_NOV_L; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_NOV_L; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Роба послушника"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 25<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 25<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 10<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 280<br>};<br><br>// Одеть<br>func void Equip_ITAR_NOV_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одета Роба послушника<br> * * * *NOVArmor_Equipped = TRUE;<br> * * * *// если одет Ремень готовности<br> * * * *if(NOV01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *};<br>};<br><br>// Снять<br>func void UnEquip_ITAR_NOV_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// снята Роба послушника<br> * * * *NOVArmor_Equipped = FALSE;<br> * * * *// если одет Ремень готовности<br> * * * *if(NOV01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *};<br> * *<br>};<br><br>//--------------------------------------<br>// Роба мага огня<br>//--------------------------------------<br>INSTANCE ITAR_KDF_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Роба мага огня";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 40;<br> * *protection[PROT_BLUNT] *= * 40;<br> * *protection[PROT_POINT] *= * 40;<br> * *protection[PROT_FIRE] * = * 20;<br> * *protection[PROT_MAGIC] *= * 20;<br> * *value * * * * * * * * * = * VALUE_ITAR_KDF_L; * * * // 500<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_KdF_L.3ds";<br> * *visual_change * * * * * = * "Armor_Kdf_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_KDF_L; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_KDF_L; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Роба мага огня"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 40<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 40<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 20<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 20<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 500<br>};<br><br>// Одеть<br>func void Equip_ITAR_KDF_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одета Роба мага огня<br> * * * *KDFArmor_Equipped = TRUE;<br> * * * *// если одет Ремень огня<br> * * * *if(KDF01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *};<br>};<br><br>// Снять<br>func void UnEquip_ITAR_KDF_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// снята Роба мага огня<br> * * * *KDFArmor_Equipped = FALSE;<br> * * * *// если одет Ремень огня<br> * * * *if(KDF01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Тяжелая роба огня<br>//--------------------------------------<br>INSTANCE ITAR_KDF_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Тяжелая роба огня";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 100;<br> * *protection[PROT_BLUNT] *= * 100;<br> * *protection[PROT_POINT] *= * 100;<br> * *protection[PROT_FIRE] * = * 50;<br> * *protection[PROT_MAGIC] *= * 50;<br> * *value * * * * * * * * * = * VALUE_ITAR_KDF_H; * * * // 3000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_KdF_H.3ds";<br> * *visual_change * * * * * = * "Armor_Kdf_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_KDF_H; * * * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_KDF_H; * * // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Тяжелая роба огня"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 3000<br>};<br><br>// Одеть<br>func void Equip_ITAR_KDF_H()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одета Роба мага огня<br> * * * *KDFArmor_Equipped = TRUE;<br> * * * *// если одет Ремень огня<br> * * * *if(KDF01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *};<br>};<br><br>// Снять<br>func void UnEquip_ITAR_KDF_H()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// снята Роба мага огня<br> * * * *KDFArmor_Equipped = FALSE;<br> * * * *// если одет Ремень огня<br> * * * *if(KDF01_Equipped == TRUE)<br> * * * *{ * <br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Кожаные доспехи<br>//--------------------------------------<br>INSTANCE ITAR_Leather_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Кожаные доспехи";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 25;<br> * *protection[PROT_BLUNT] *= * 25;<br> * *protection[PROT_POINT] *= * 20;<br> * *protection[PROT_FIRE] * = * *5;<br> * *protection[PROT_MAGIC] *= * *0;<br> * *value * * * * * * * * * = * VALUE_ITAR_Leather_L; * // 250<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Leather_L.3ds";<br> * *visual_change * * * * * = * "Armor_Leather_L.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *on_equip * * * * * * * *= * Equip_ITAR_Leather_L; * // одеть<br> * *on_unequip * * * * * * *= * UnEquip_ITAR_Leather_L; // снять<br> * *description * * * * * * = * name; * * * * * * * * * // "Кожаные доспехи"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 25<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 25<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 5<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 250<br>};<br><br>// Одеть<br>func void Equip_ITAR_Leather_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// одеты Кожаные доспехи<br> * * * *LeatherArmor_Equipped = TRUE; * <br> * * * *// если одет Кожаный ремень<br> * * * *if(Leather01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *+= BA_Bonus01; *// защита от острого оружия += 5<br> * * * * * *self.protection[PROT_BLUNT] += BA_Bonus01; *// защита от тупого оружия += 5<br> * * * * * *self.protection[PROT_POINT] += BA_Bonus01; *// защита от стрел += 5<br> * * * * * *self.protection[PROT_MAGIC] += BA_Bonus01; *// защита от магии += 5<br> * * * * * *self.protection[PROT_FIRE] *+= BA_Bonus01; *// защита от огня += 5<br> * * * *};<br> * *};<br>};<br><br>// Снять<br>func void UnEquip_ITAR_Leather_L()<br>{<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// сняты Кожаные доспехи<br> * * * *LeatherArmor_Equipped = FALSE; *<br> * * * *// если одет Кожаный ремень<br> * * * *if(Leather01_Equipped == TRUE)<br> * * * *{<br> * * * * * *self.protection[PROT_EDGE] *-= BA_Bonus01; *// защита от острого оружия -= 5<br> * * * * * *self.protection[PROT_BLUNT] -= BA_Bonus01; *// защита от тупого оружия -= 5<br> * * * * * *self.protection[PROT_POINT] -= BA_Bonus01; *// защита от стрел -= 5<br> * * * * * *self.protection[PROT_MAGIC] -= BA_Bonus01; *// защита от магии -= 5<br> * * * * * *self.protection[PROT_FIRE] *-= BA_Bonus01; *// защита от огня -= 5<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Средняя бандитская кольчуга<br>//--------------------------------------<br>INSTANCE ITAR_BDT_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Средняя бандитская кольчуга";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 35;<br> * *protection[PROT_BLUNT] *= * 35;<br> * *protection[PROT_POINT] *= * 35;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_BDT_M; * * * // 550<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Bdt_M.3ds";<br> * *visual_change * * * * * = * "Armor_Bdt_M.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Средняя бандитская кольчуга"<br> * *TEXT[0] * * * * * * * * = * PRINT_Addon_BDTArmor; * // "Кто носит эту кольчугу, принадлежит к бандитам"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 35<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 35<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 550<br>};<br><br>...продолжение следует
|
Re: Уроки скриптологии
//--------------------------------------<br>// Тяжелая бандитская кольчуга<br>//--------------------------------------<br>INSTANCE ITAR_BDT_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Тяжелая бандитская кольчуга";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 50;<br> * *protection[PROT_BLUNT] *= * 50;<br> * *protection[PROT_POINT] *= * 50;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_BDT_H; * * * // 2100<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Bdt_H.3ds";<br> * *visual_change * * * * * = * "Armor_Bdt_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Тяжелая бандитская кольчуга"<br> * *TEXT[0] * * * * * * * * = * PRINT_Addon_BDTArmor; * // "Кто носит эту кольчугу, принадлежит к бандитам"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 50<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 50<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 2100<br>};<br><br>//--------------------------------------<br>// Роба темных сил<br>//--------------------------------------<br>INSTANCE ITAR_XARDAS (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Роба темных сил";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 100;<br> * *protection[PROT_BLUNT] *= * 100;<br> * *protection[PROT_POINT] *= * 100;<br> * *protection[PROT_FIRE] * = * 50;<br> * *protection[PROT_MAGIC] *= * 50;<br> * *value * * * * * * * * * = * VALUE_ITAR_XARDAS; * * *// 15000<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Xardas.3ds";<br> * *visual_change * * * * * = * "Armor_Xardas.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Роба темных сил"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 15000<br>};<br><br>//--------------------------------------<br>// Роба Лестера<br>//--------------------------------------<br>INSTANCE ITAR_LESTER (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Lesters Robe";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 25;<br> * *protection[PROT_BLUNT] *= * 25;<br> * *protection[PROT_POINT] *= * 25;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_LESTER; * * *// 300<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Lester.3ds";<br> * *visual_change * * * * * = * "Armor_Lester.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Роба Лестера"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 25<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 25<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Кольчуга Диего<br>//--------------------------------------<br>INSTANCE ITAR_Diego (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Кольчуга Диего";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 30;<br> * *protection[PROT_BLUNT] *= * 30;<br> * *protection[PROT_POINT] *= * 30;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_Diego; * * * // 450<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Diego.3ds";<br> * *visual_change * * * * * = * "Armor_Diego.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Кольчуга Диего"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 30<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 30<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 450<br>};<br><br>//--------------------------------------<br>// Кольчуга Кор Ангара<br>//--------------------------------------<br>INSTANCE ITAR_CorAngar (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Кольчуга Кор Ангара";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 100;<br> * *protection[PROT_BLUNT] *= * 100;<br> * *protection[PROT_POINT] *= * 100;<br> * *protection[PROT_FIRE] * = * 50;<br> * *protection[PROT_MAGIC] *= * 25;<br> * *value * * * * * * * * * = * VALUE_ITAR_CorAngar; * *// 600<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_CorAngar.3ds";<br> * *visual_change * * * * * = * "Armor_CorAngar.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Кольчуга Кор Ангара"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 25<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 600<br>};<br><br>//--------------------------------------<br>// Темная накидка<br>//--------------------------------------<br>INSTANCE ITAR_Dementor (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Темная накидка";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 130;<br> * *protection[PROT_BLUNT] *= * 130;<br> * *protection[PROT_POINT] *= * 130;<br> * *protection[PROT_FIRE] * = * 65;<br> * *protection[PROT_MAGIC] *= * 65;<br> * *value * * * * * * * * * = * VALUE_ITAR_Dementor; * *// 500<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Xardas.3ds";<br> * *visual_change * * * * * = * "Armor_Dementor.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Темная накидка"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 130<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 130<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 65<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 65<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 500<br>};<br><br>//--------------------------------------<br>// Роба мага воды<br>//--------------------------------------<br>INSTANCE ITAR_KDW_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Роба мага воды";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 100;<br> * *protection[PROT_BLUNT] *= * 100;<br> * *protection[PROT_POINT] *= * 100;<br> * *protection[PROT_FIRE] * = * 50;<br> * *protection[PROT_MAGIC] *= * 50;<br> * *value * * * * * * * * * = * VALUE_ITAR_KDW_H; * * * // 450<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_KdW_H.3ds";<br> * *visual_change * * * * * = * "Armor_KdW_H.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Роба мага воды"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 450<br>};<br><br>//--------------------------------------<br>// Одежда заключенного<br>//--------------------------------------<br>instance ITAR_Prisoner (C_Item)<br>{<br> * *name * * * * * * * * * *= * "Одежда заключенного";<br> * *mainflag * * * * * * * *= * ITEM_KAT_ARMOR; * * * * // броня<br> * *flags * * * * * * * * * = * 0;<br> * *protection[PROT_EDGE] * = * 20;<br> * *protection[PROT_BLUNT] *= * 20;<br> * *protection[PROT_POINT] *= * 20;<br> * *protection[PROT_FIRE] * = * 0;<br> * *protection[PROT_MAGIC] *= * 0;<br> * *value * * * * * * * * * = * VALUE_ITAR_Prisoner; * *// 10<br> * *wear * * * * * * * * * *= * WEAR_TORSO;<br> * *visual * * * * * * * * *= * "ItAr_Prisoner.3ds";<br> * *visual_change * * * * * = * "Armor_Prisoner.asc";<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // "Одежда заключенного"<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // "Защита от оружия:"<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 20<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// "Защита от стрел:"<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 20<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // "Защита от огня:"<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// "Защита от магии:"<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 10<br>};<br><br><br> * *19. Поддельное письмо.<br><br>Файл IT_FakeScroll.d<br><br>//--------------------------------------<br>// Поддельное письмо<br>//--------------------------------------<br>INSTANCE Fakescroll(C_Item)<br>{ * <br> * *name * * * * * * * *= "Письмо";<br> * *mainflag * * * * * *= ITEM_KAT_DOCS; * * * *// документ<br> * *flags * * * * * * * = ITEM_MISSION; * * * * // квестовый<br> * *hp * * * * * * * * *= 5;<br> * *hp_max * * * * * * *= 5;<br> * *weight * * * * * * *= 1;<br> * *value * * * * * * * = 0;<br> * *visual * * * * * * *= "Fakescroll.3ds";<br> * *material * * * * * *= MAT_LEATHER; * * * * *// кожа<br> * *scemeName * * * * * = "MAPSEALED"; *<br> * *description * * * * = name; * * * * * * * * // "Письмо"<br> * *TEXT[5] * * * * * * = NAME_Value; * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= value; * * * * * * * *// 0<br>};<br><br>
|
Re: Уроки скриптологии
* *20. Продукты питания основной игры.<br><br>Файл IT_Food.d<br><br>//*************************<br>// Продукты питания основной игры<br>//*************************<br><br>// Яблоко<br>const int * Value_Apple * * = * 8; * * *// стоимость<br>const int * HP_Apple * * * *= * 3; * * *// бонус к жизни<br>// Сыр<br>const int * Value_Cheese * *= * 30; * * // стоимость<br>const int * HP_Cheese * * * = * 15; * * // бонус к жизни<br>// Ветчина<br>const int * Value_Bacon * * = * 50; * * // стоимость<br>const int * HP_Bacon * * * *= * 20; * * // бонус к жизни<br>// Хлеб<br>const int * Value_Bread * * = * 20; * * // стоимость<br>const int * HP_Bread * * * *= * 10; * * // бонус к жизни<br>// Рыба<br>const int * Value_Fish * * *= * 15; * * // стоимость<br>const int * HP_Fish * * * * = * 5; * * *// бонус к жизни<br>// Сырое мясо<br>const int * Value_Rawmeat * = * 3; * * *// стоимость<br>const int * HP_RawMeat * * *= * 6; * * *// бонус к жизни<br>// Жареное мясо<br>const int * Value_Meat * * *= * 6; * * *// стоимость<br>const int * HP_Meat * * * * = * 12; * * // бонус к жизни<br>// Обед<br>const int * Value_Stew * * *= * 8; * * *// стоимость<br>const int * HP_Stew * * * * = * 20; * * // бонус к жизни<br>// Рыбный суп<br>const int * Value_FishSoup *= * 20; * * // стоимость<br>const int * HP_FishSoup * * = * 10; * * // бонус к жизни<br>// Колбаса<br>const int * Value_Sausage * = * 30; * * // стоимость<br>const int * HP_Sausage * * *= * 12; * * // бонус к жизни<br>// Мед<br>const int * Value_Honey * * = * 30; * * // стоимость<br>const int * HP_Honey * * * *= * 12; * * // бонус к жизни<br>// Вода<br>const int * Value_Water * * = * 10; * * // стоимость<br>const int * HP_Water * * * *= * 8; * * *// бонус к жизни<br>// Пиво<br>const int * Value_Beer * * *= * 20; * * // стоимость<br>const int * HP_Beer * * * * = * 3; * * *// бонус к жизни<br>const int * Mana_Beer * * * = * 1; * * *// бонус к мане<br>// Самогон<br>const int * Value_Booze * * = * 15; * * // стоимость<br>const int * HP_Booze * * * *= * 4; * * *// бонус к жизни<br>const int * Mana_Booze * * *= * 1; * * *// бонус к мане<br>// Вино<br>const int * Value_Wine * * *= * 20; * * // стоимость<br>const int * HP_Wine * * * * = * 2; * * *// бонус к жизни<br>const int * Mana_Wine * * * = * 1; * * *// бонус к мане<br>// Молоко<br>const int * Value_Milk * * *= * 15; * * // стоимость<br>const int * HP_Milk * * * * = * 5; * * *// бонус к жизни<br>const int * Mana_Milk * * * = * 1; * * *// бонус к мане<br><br>//--------------------------------------<br>// Яблоко<br>//--------------------------------------<br>INSTANCE ItFo_Apple (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Яблоко";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Apple; * * * * * *// 8<br> * *visual * * * * * * *= * "ItFo_Apple.3DS";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "FOOD";<br> * *on_state[0] * * * * = * Use_Apple; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Яблоко"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Apple; * * * * * * * // 3<br> * *TEXT[3] * * * * * * = * "Свежее яблоко";<br> * *TEXT[4] * * * * * * = * "мягкое и сочное";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Apple; * * * * * *// 8<br><br>};<br><br>// Использовать<br>func void Use_Apple()<br>{<br> * *// жизнь += 3<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Apple); <br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer (self))<br> * *{<br> * * * *// кол-во съеденных яблок<br> * * * *Apple_Bonus = Apple_Bonus + 1;<br> * * * *// если съедено 7 яблок<br> * * * *if(Apple_Bonus == 7) *<br> * * * *{<br> * * * * * *// вывод текста "Ты чувствуешь себя посвежевшим"<br> * * * * * *Print(PRINT_Eat1);<br> * * * *};<br> * * * *// если съедено 15 яблок<br> * * * *if(Apple_Bonus == 15) *<br> * * * *{<br> * * * * * *// вывод текста "На вкус сочное и свежее"<br> * * * * * *Print(PRINT_Eat2);<br> * * * *};<br> * * * *// если съедено 25 яблок<br> * * * *if(Apple_Bonus == 25) *<br> * * * *{<br> * * * * * *// вывод текста "Ты чувствуешь себя здоровым и сильным!"<br> * * * * * *Print(PRINT_Eat3);<br> * * * * * *// сила += 1<br> * * * * * *B_RaiseAttribute(self,ATR_STRENGTH,1);<br> * * * * * *Snd_Play("LevelUp");<br> * * * * * *// сброс счетчика яблок<br> * * * * * *Apple_Bonus = 0;<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Сыр<br>//--------------------------------------<br>INSTANCE ItFo_Cheese (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Сыр";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Cheese; * * * * * // 30<br> * *visual * * * * * * *= * "ItFo_Cheese.3DS";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "FOODHUGE";<br> * *on_state[0] * * * * = * Use_Cheese; * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Сыр"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Cheese; * * * * * * *// 15<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Cheese; * * * * * // 30<br>};<br><br>// Использовать<br>func void Use_Cheese()<br>{<br> * *// жизнь += 15<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Cheese) ;<br>};<br><br>//--------------------------------------<br>// Ветчина<br>//--------------------------------------<br>INSTANCE ItFo_Bacon (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Ветчина";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Bacon; * * * * * *// 50<br> * *visual * * * * * * *= * "ItFo_Bacon.3ds";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "FOODHUGE";<br> * *on_state[0] * * * * = * Use_Bacon; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Ветчина"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Bacon; * * * * * * * // 20<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Bacon; * * * * * *// 50<br>};<br><br>// Использовать<br>func void Use_Bacon()<br>{<br> * *// жизнь += 20<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Bacon); <br>};<br><br>//--------------------------------------<br>// Хлеб<br>//--------------------------------------<br>INSTANCE ItFo_Bread (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Хлеб";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Bread; * * * * * *// 20<br> * *visual * * * * * * *= * "ItFo_Bread.3DS";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "FOODHUGE";<br> * *on_state[0] * * * * = * Use_Bread; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Хлеб"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Bread; * * * * * * * // 10<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Bread; * * * * * *// 20<br><br>};<br><br>// Использовать<br>func void Use_Bread()<br>{<br> * *// жизнь += 10<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Bread); <br>};<br><br>//--------------------------------------<br>// Рыба<br>//--------------------------------------<br>INSTANCE ItFo_Fish (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Рыба";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Fish; * * * * * * // 15<br> * *visual * * * * * * *= * "ItFo_Fish.3DS";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "FOODHUGE";<br> * *on_state[0] * * * * = * Use_Fish; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Рыба"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Fish; * * * * * * * *// 5<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Fish; * * * * * * // 15<br>};<br><br>// Использовать<br>func void Use_Fish()<br>{<br> * *// жизнь += 5<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Fish);< br>};<br><br>//--------------------------------------<br>// Сырое мясо<br>//--------------------------------------<br>INSTANCE ItFoMuttonRaw (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Сырое мясо";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_RawMeat; * * * * *// 3<br> * *visual * * * * * * *= * "ItFoMuttonRaw.3DS";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "MEAT";<br> * *on_state[0] * * * * = * Use_RawMeat; * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Сырое мясо"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_RawMeat; * * * * * * // 6<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_RawMeat; * * * * *// 3<br>};<br><br>// Использовать<br>func void Use_RawMeat()<br>{<br> * *// жизнь += 6<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_RawMeat );<br>};<br><br>//--------------------------------------<br>// Жареное мясо<br>//--------------------------------------<br>INSTANCE ItFoMutton (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Жареное мясо";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Meat; * * * * * * // 6<br> * *visual * * * * * * *= * "ItFoMutton.3DS";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "MEAT";<br> * *on_state[0] * * * * = * Use_Meat; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Жареное мясо"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Meat; * * * * * * * *// 12<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Meat; * * * * * * // 6<br>};<br><br>// Использовать<br>func void Use_Meat()<br>{<br> * *// жизнь += 12<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Meat);< br>};<br><br>//--------------------------------------<br>// Обед<br>//--------------------------------------<br>INSTANCE ItFo_Stew (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Обед";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Stew; * * * * * * // 8<br> * *visual * * * * * * *= * "ItFo_Stew.3ds";<br> * *material * * * * * *= * MAT_WOOD; * * * * * * * // дерево<br> * *scemeName * * * * * = * "RICE";<br> * *on_state[0] * * * * = * Use_Stew; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Обед"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Stew; * * * * * * * *// 20<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Stew; * * * * * * // 8<br>};<br><br>// Использовать<br>func void Use_Stew()<br>{<br> * *// жизнь += 20<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Stew);< br>};<br><br>//--------------------------------------<br>// Обед Теклы<br>//--------------------------------------<br>INSTANCE ItFo_XPStew (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Обед Теклы";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Stew; * * * * * * // 8<br> * *visual * * * * * * *= * "ItFo_Stew.3ds";<br> * *material * * * * * *= * MAT_WOOD; * * * * * * * // дерево<br> * *scemeName * * * * * = * "RICE";<br> * *on_state[0] * * * * = * Use_XPStew; * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Обед Теклы"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Stew; * * * * * * * *// 20<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Str; * * * * // "Прибавка к силе:"<br> * *COUNT[2] * * * * * *= * 1; * * * * * * * * * * *// 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Stew; * * * * * * // 8<br>};<br><br>// Использовать<br>func void Use_XPStew()<br>{<br> * *// жизнь += 20<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Stew);< br> * *Snd_Play("LevelUp");<br> * *// сила += 1<br> * *B_RaiseAttribute(self,ATR_STRENGTH,1);<br>};<br>< br>//--------------------------------------<br>// Пиво Корагона<br>//--------------------------------------<br>INSTANCE ItFo_CoragonsBeer (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Пиво";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Beer; * * * * * * // 20<br> * *visual * * * * * * *= * "ItFo_Beer.3DS";<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * "POTIONFAST";<br> * *on_state[0] * * * * = * Use_CoragonsBeerBeer; * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Пиво"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Beer; * * * * * * * *// 3<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// "Прибавка к мане:"<br> * *COUNT[2] * * * * * *= * Mana_Beer; * * * * * * *// 1<br> * *TEXT[4] * * * * * * = * "Специальное пиво Корагона"; * * * *<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Beer; * * * * * * // 20<br><br>};<br><br>// Использовать<br>func void Use_CoragonsBeerBeer()<br>{<br> * *// макс. мана += 1<br> * *B_RaiseAttribute(self,ATR_MANA_MAX,Mana_Beer);<br > * *// мана += 1<br> * *Npc_ChangeAttribute(self,ATR_MANA,Mana_Beer);<br> * *// макс. жизнь += 3<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS_MAX,HP_Bee r);<br> * *// жизнь += 3<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Beer);< br> * *var string concatText;<br> * *// сформировать строку "Жизнь + 3"<br> * *concatText = ConcatStrings(PRINT_Learnhitpoints_MAX,IntToString (HP_Beer));<br> * *// вывод на экран<br> * *PrintScreen(concatText,55,-1,FONT_Screen,2);<br>};<br><br>//--------------------------------------<br>// Рыбный суп<br>//--------------------------------------<br>INSTANCE ItFo_FishSoup (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Рыбный суп";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_FishSoup; * * * * // 20<br> * *visual * * * * * * *= * "ItFo_FishSoup.3ds";<br> * *material * * * * * *= * MAT_WOOD; * * * * * * * // дерево<br> * *scemeName * * * * * = * "RICE";<br> * *on_state[0] * * * * = * Use_FishSoup; * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Рыбный суп"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_FishSoup; * * * * * *// 10<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_FishSoup; * * * * // 20<br><br>};<br><br>// Использовать<br>func void Use_FishSoup()<br>{<br> * *// жизнь += 10<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_FishSou p);<br>};<br><br>//--------------------------------------<br>// Колбаса<br>//--------------------------------------<br>INSTANCE ItFo_Sausage (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Колбаса";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Sausage; * * * * *// 30<br> * *visual * * * * * * *= * "ItFo_Sausage.3DS";<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * "FOODHUGE";<br> * *on_state[0] * * * * = * Use_Sausage; * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Колбаса"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Sausage; * * * * * * // 12<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Sausage; * * * * *// 30<br>};<br><br>// Использовать<br>func void Use_Sausage()<br>{<br> * *// жизнь += 12<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Sausage );<br>};<br><br>//--------------------------------------<br>// Мед<br>//--------------------------------------<br>INSTANCE ItFo_Honey (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Мед";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Honey; * * * * * *// 30<br> * *visual * * * * * * *= * "ItFo_Honey.3DS";<br> * *material * * * * * *= * MAT_STONE; * * * * * * *// камень<br> * *scemeName * * * * * = * "FOODHUGE";<br> * *on_state[0] * * * * = * Use_Honey; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Мед"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Honey; * * * * * * * // 12<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Honey; * * * * * *// 30<br>};<br><br>// Использовать<br>func void Use_Honey()<br>{<br> * *// жизнь += 12<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Honey); <br>};<br><br>//--------------------------------------<br>// Вода<br>//--------------------------------------<br>INSTANCE ItFo_Water (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Вода";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Water; * * * * * *// 10<br> * *visual * * * * * * *= * "ItFo_Water.3ds";<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * "POTION";<br> * *on_state[0] * * * * = * Use_Water; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Вода"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Water; * * * * * * * // 8<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Water; * * * * * *// 10<br><br>};<br><br>// Использовать<br>func void Use_Water()<br>{<br> * *// жизнь += 8<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Water); <br>};<br><br>//--------------------------------------<br>// Пиво<br>//--------------------------------------<br>INSTANCE ItFo_Beer (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Пиво";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Beer; * * * * * * // 20<br> * *visual * * * * * * *= * "ItFo_Beer.3DS";<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * "POTIONFAST";<br> * *on_state[0] * * * * = * Use_Beer; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Пиво"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Beer; * * * * * * * *// 3<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// "Прибавка к мане:"<br> * *COUNT[2] * * * * * *= * Mana_Beer; * * * * * * *// 1<br> * *TEXT[4] * * * * * * = * "Темный паладин";<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Beer; * * * * * * // 20<br><br>};<br><br>// Использовать<br>func void Use_Beer()<br>{<br> * *// жизнь += 3<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Beer);< br> * *// мана += 1<br> * *Npc_ChangeAttribute(self,ATR_MANA,Mana_Beer); * *<br>};<br><br>//--------------------------------------<br>// Самогон<br>//--------------------------------------<br>INSTANCE ItFo_Booze (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Самогон";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Booze; * * * * * *// 15<br> * *visual * * * * * * *= * "ItFo_Booze.3DS";<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * "POTION";<br> * *on_state[0] * * * * = * Use_Booze; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // "Самогон"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Booze; * * * * * * * // 4<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// "Прибавка к мане:"<br> * *COUNT[2] * * * * * *= * Mana_Booze; * * * * * * // 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Booze; * * * * * *// 15<br>};<br><br>// Использовать<br>func void Use_Booze()<br>{<br> * *// жизнь += 4<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Booze); <br> * *// мана += 1<br> * *Npc_ChangeAttribute(self,ATR_MANA,Mana_Booze); * <br>};<br><br>//--------------------------------------<br>// Вино<br>//--------------------------------------<br>INSTANCE ItFo_Wine (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Вино";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Wine; * * * * * * // 20<br> * *visual * * * * * * *= * "ItFo_Wine.3DS";<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * "POTION";<br> * *on_state[0] * * * * = * Use_Wine; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Вино"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Wine; * * * * * * * *// 2<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// "Прибавка к мане:"<br> * *COUNT[2] * * * * * *= * Mana_Wine; * * * * * * *// 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Wine; * * * * * * // 20<br>};<br><br>// Использовать<br>func void Use_Wine()<br>{<br> * *// жизнь += 2<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Wine);< br> * *// мана += 1<br> * *Npc_ChangeAttribute(self,ATR_MANA,Mana_Wine); * *<br>};<br><br>//--------------------------------------<br>// Молоко<br>//--------------------------------------<br>INSTANCE ItFo_Milk (C_Item)<br>{ * <br> * *name * * * * * * * *= * "Молоко";<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Milk; * * * * * * // 15<br> * *visual * * * * * * *= * "ItFo_Milk.3DS";<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * "POTION";<br> * *on_state[0] * * * * = * Use_Milk; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // "Молоко"<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// "Прибавка к жизни:"<br> * *COUNT[1] * * * * * *= * HP_Milk; * * * * * * * *// 5<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// "Прибавка к мане:"<br> * *COUNT[2] * * * * * *= * Mana_Milk; * * * * * * *// 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // "Ценность:"<br> * *COUNT[5] * * * * * *= * Value_Milk; * * * * * * // 15<br>};<br><br>// Использовать<br>func void Use_Milk()<br>{<br> * *// жизнь += 5<br> * *Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Milk);< br> * *// мана += 1<br> * *Npc_ChangeAttribute(self,ATR_MANA,Mana_Milk); * *<br>};<br><br>
|
Re: Уроки скриптологии
Спасибо всем, кому не безразличен этот труд, постараюсь учесть ваши пожелания. Конечно, каждому хочется получить общую картину по скриптам как можно скорее, но увы, я не разработчик серии игр Готика, для меня, как и для вас, очень много непонятных вещей, особенно это касается связи скриптов с миром Готики (программируется Спейсером), так что будем разбираться постепенно. Многие повторяющиеся блоки скриптов буду проходить конспектно, у кого есть желание, может их подробно закомментировать и предложить на общее внимание. Вот многоуважаемый Pa написал:
Цитата:
|
Re: Уроки скриптологии
* *22. Оружие ближнего радиуса поражения.<br><br>Файл IT_MeleeWeapons.d<br><br>Для самостоятельного изучения.<br>Значения параметров стоимости оружия, наносимого повреждения, радиуса поражения, условий применения находятся в файле Tuning_Melee_Weapons.d<br>Функции одеть, снять оружия, которое изменяет навыки владения им, расположены в файлах Einhand_EquipBonus.d и Zweihand_EquipBonus.d соответственно для одноручного и двуручного оружия.<br>Все эти файлы также подробно рассматривать не будем.<br><br> * *23. Различные предметы основной игры.<br><br>Файл IT_Misk.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br><br> * *24. Растения основной игры.<br><br>Файл IT_Plants.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br><br> * *25. Напитки основной игры.<br><br>Файл IT_Potions.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br>Можно обратить внимание на функцию void UseItPo_MegaDrink() использования напитка "Эмбарла Фиргасто", которая повышает силу или ловкость, смотря что лучше развито, в обмен на всю ману.<br><br> * *26. Оружие дальнего радиуса поражения.<br><br>Файл IT_RangedWeapons.d<br><br>Для самостоятельного изучения.<br>Значения параметров стоимости оружия, наносимого повреждения, условий применения находятся в файле Tuning_Ranged_Weapons.d<br>Этот файл также подробно рассматривать не будем.<br><br> * *27. Кольца основной игры.<br><br>Файл IT_Ringe.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br><br> * *28. Руны основной игры.<br><br>Файл IT_Runen.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br><br> * *29. Свитки заклинаний основной игры.<br><br>Файл IT_Scrolls.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br><br> * *30. Предметы с секретами.<br><br>Файл IT_Secrets.d<br><br>Для самостоятельного изучения.<br>При использовании любого предмета этой категории в нем можно найти кое-что полезное.<br><br> * *31. Факела.<br><br>Файл IT_Torch.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br><br> * *32. Книги и карты основной игры.<br><br>Файл IT_Written.d<br><br>Для самостоятельного изучения.<br>Ничего особенного, на чем надо заострить внимание в нем нет.<br><br> * *33. Квестовые предметы 1 Главы.<br><br>Файл IT_MissionItems_1.d<br><br>Для самостоятельного изучения.<br>Интересного много, но не с точки скриптологии.<br><br> * *34. Квестовые предметы 2 Главы.<br><br>Файл IT_MissionItems_2.d<br><br>Для самостоятельного изучения.<br>Интересного много, но не с точки скриптологии.<br><br> * *35. Квестовые предметы 3 Главы.<br><br>Файл IT_MissionItems_3.d<br><br>Для самостоятельного изучения.<br>Интересного много, но не с точки скриптологии.<br>Стоит обратить внимание, что заряженный "Глаз Инноса" дает очень хорошие бонусы к любой защите.<br>Замечание: не переведены имена одержимых.<br><br> * *36. Квестовые предметы 4 Главы.<br><br>Файл IT_MissionItems_4.d<br><br>Для самостоятельного изучения.<br>Интересного много, но не с точки скриптологии.<br><br> * *37. Квестовые предметы 5 Главы.<br><br>Файл IT_MissionItems_5.d<br><br>Для самостоятельного изучения.<br>Интересного много, но не с точки скриптологии.<br><br> * *38. Квестовые предметы 6 Главы.<br><br>Файл IT_MissionItems_6.d<br><br>Для самостоятельного изучения.<br>Интересного много, но не с точки скриптологии.<br><br> * *39. Квестовые предметы аддона.<br><br>Файл IT_MissionItems_Addon.d<br><br>Для самостоятельного изучения.<br>Интересного много, но не с точки скриптологии.<br><br> * *40. Параметры "Когтя Белиара".<br><br>Файл IT_Tuning_Addon_BeliarsWeapons.d<br><br>Здесь приведены значения параметров стоимости оружия, наносимого повреждения и вероятности дополнительного урона.<br>Для самостоятельного изучения.<br><br>P.S. Если у кого есть желание, можете подробно закомментировать эти файлы и выложить в теме.
|
Re: Уроки скриптологии
10. Вспомогательные В_ функции.<br><br>Директория размещения файлов функций - B_Content<br><br> * *1. Функции, связанные с пиратами из лагеря.<br><br>Файл B_Addon_PiratesGoHome.d<br><br>// Пираты, члены партии ГГ, его покидают и идут в лагерь<br>func void B_Addon_PiratesGoHome()<br>{<br> * *// Скип не является компаньоном ГГ<br> * *Skip.aivar[AIV_PARTYMEMBER] = FALSE;<br> * *// Мэтт не является компаньоном ГГ<br> * *Matt.aivar[AIV_PARTYMEMBER] = FALSE;<br> * *// Брэндон не является компаньоном ГГ<br> * *Brandon.aivar[AIV_PARTYMEMBER] = FALSE;<br> * *// Пират, жарящий мясо (id = 1364), не является компаньоном ГГ<br> * *RoastPirate.aivar[AIV_PARTYMEMBER] = FALSE;<br> * *// Сидящий на скамье пират (id = 1363) не является компаньоном ГГ<br> * *BenchPirate.aivar[AIV_PARTYMEMBER] = FALSE;<br> * *// Аллигатор Джек не является компаньоном ГГ<br> * *AlligatorJack.aivar[AIV_PARTYMEMBER] = FALSE;<br> * *// Пираты продолжают выполнять свой распорядок дня<br> * *B_StartOtherRoutine(Skip,"START");<br> * *B_StartOtherRoutine(Matt,"START");<br> * *B_StartOtherRoutine(Brandon,"START");<b r> * *B_StartOtherRoutine(RoastPirate,"START" ); <br> * *B_StartOtherRoutine(BenchPirate,"START" );<br> * *B_StartOtherRoutine(AlligatorJack,"START&quo t;);<br>};<br><br>// Насколько далеко от лагеря пираты могут сопровождать ГГ<br>// ------------------------------------------------<br>// Возвращаемое значение:<br>// TRUE - пират должен покинуть ГГ, FALSE - пират сопровождает ГГ.<br>func int C_GregsPiratesTooFar()<br>{<br> * *// если расстояние (в см) от ГГ до указанных точек менее заданного<br> * *if (Npc_GetDistToWP(hero,"ADW_CANYON_MINE1_09&qu ot;) < 3000)<br> * *¦¦ (Npc_GetDistToWP(hero,"ADW_CANYON_MINE2_04&qu ot;) < 2000)<br> * *¦¦ (Npc_GetDistToWP(hero,"ADW_CANYON_LIBRARY_04& quot;) < 2000)<br> * *¦¦ (Npc_GetDistToWP(hero,"ADW_CANYON_PATH_TO_BAN DITS_25") < 6000)<br> * *¦¦ (Npc_GetDistToWP(hero,"ADW_PIRATECAMP_WAY_16& quot;) < 8000)<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *return FALSE;<br>};<br><br>// Сколько пиратов сопровождают ГГ<br>// ------------------------------------------------<br>// Возвращаемое значение: кол-во пиратов<br>func int C_HowManyPiratesInParty()<br>{<br> * *return <br> * *(<br> * * * *Skip.aivar[AIV_PARTYMEMBER]<br> * * * *+ Matt.aivar[AIV_PARTYMEMBER]<br> * * * *+ Brandon.aivar[AIV_PARTYMEMBER]<br> * * * *+ RoastPirate.aivar[AIV_PARTYMEMBER]<br> * * * *+ BenchPirate.aivar[AIV_PARTYMEMBER]<br> * * * *+ AlligatorJack.aivar[AIV_PARTYMEMBER]<br> * *);<br>};<br><br>// Пираты согласны идти с ГГ на зачистку каньона<br>func void B_Addon_PiratesFollowAgain() <br>{<br> * *// если ГГ ближе 40м от берега залива<br> * *if(Npc_GetDistToWP(hero,"STRAND") < 4000)<br> * *{<br> * * * *return;<br> * *};<br> * *// если с ГГ уже есть пираты<br> * *if(C_HowManyPiratesInParty() != 0)<br> * *{<br> * * * *return;<br> * *};<br> * *// если расстояние между ГГ и Скипом < 20м и Скип живой и self не Скип<br> * *if(Npc_GetDistToNpc(hero,Skip) <= 2000) && (!Npc_IsDead(Skip)) && (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(Skip))<br> * *{<br> * * * *// Скип становится членом партии ГГ<br> * * * *Skip.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *// очистка очереди AI состояний Скипа<br> * * * *Npc_ClearAIQueue(Skip);<br> * * * *// Скип следует за ГГ<br> * * * *B_StartOtherRoutine(Skip,"FOLLOW");<br> * *};<br> * *// аналогично и с другими пиратами<br> * *if(Npc_GetDistToNpc(hero,Matt) <= 2000) && (!Npc_IsDead(Matt)) && (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(Matt))<br> * *{<br> * * * *Matt.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(Matt);<br> * * * *B_StartOtherRoutine(Matt,"FOLLOW");<br> * *};<br> * *if(Npc_GetDistToNpc(hero,Brandon) <= 2000) && (!Npc_IsDead(Brandon)) && (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(Brandon))<br> * *{<br> * * * *Brandon.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(Brandon);<br> * * * *B_StartOtherRoutine(Brandon,"FOLLOW");< br> * *};<br> * *if(Npc_GetDistToNpc(hero,RoastPirate) <= 2000) && (!Npc_IsDead(RoastPirate)) && (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(RoastPirate))<br> * *{<br> * * * *RoastPirate.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(RoastPirate);<br> * * * *B_StartOtherRoutine(RoastPirate,"FOLLOW" ;);<br> * *};<br> * *if(Npc_GetDistToNpc(hero,BenchPirate) <= 2000) && (!Npc_IsDead(BenchPirate)) && (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(BenchPirate))<br> * *{<br> * * * *BenchPirate.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(BenchPirate);<br> * * * *B_StartOtherRoutine(BenchPirate,"FOLLOW" ;);<br> * *};<br> * *if(Npc_GetDistToNpc(hero,AlligatorJack) <= 2000) && (!Npc_IsDead(AlligatorJack)) && (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(AlligatorJack))<br> * *{<br> * * * *AlligatorJack.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(AlligatorJack);<br> * * * *B_StartOtherRoutine(AlligatorJack,"FOLLOW&qu ot;);<br> * *};<br>};<br><br>// Освобождена ли башня около Лагеря пиратов от бандитов<br>// ------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_TowerBanditsDead()<br>{<br> * *// получить ссылки на бандитов в башне<br> * *var C_NPC TowerBandit1;<br> * *Towerbandit1 = Hlp_GetNpc(BDT_10100_Addon_Towerbandit);<br> * *var C_NPC TowerBandit2;<br> * *Towerbandit2 = Hlp_GetNpc(BDT_10101_Addon_Towerbandit);<br> * *var C_NPC TowerBandit3;<br> * *Towerbandit3 = Hlp_GetNpc(BDT_10102_Addon_Towerbandit);<br> * *// если все три бандита мертвы<br> * *if(Npc_IsDead(TowerBandit1) && Npc_IsDead(TowerBandit2) && Npc_IsDead(TowerBandit3))<br> * *{<br> * * * *return TRUE;<br> * * * *// башня освобождена от бандитов (Внимание ОШИБКА: данную строку необходимо перенести на одну вверх, иначе топик по освобождению башни не будет закрыт)<br> * * * *TowerBanditsDead = TRUE;<br> * *}<br> * *else<br> * *{<br> * * * *return FALSE;<br> * *};<br>};<br><br><br> * *2. Функции, связанные с карманной кражей.<br><br>Файл B_Beclauen.d<br><br>// other - ГГ, self - НПС<br><br>// Проверяется возможность карманной кражи у НПС<br>// ------------------------------------------------<br>// Аргумент: TheftDex - требуемая ловкость для открытия диалога воровства, TheftGold - сколько денег можно украсть<br>// Возвращаемое значение: TRUE - кража возможна, FALSE - нет<br>func int C_Beklauen(var int TheftDex,var int TheftGold)<br>{ * <br> * *// если ГГ обучен карманной краже<br> * *if (Npc_GetTalentSkill(other,NPC_TALENT_PICKPOCKET) == TRUE)<br> * *// и НПС не обворован ГГ <br> * *&& (self.aivar[AIV_PlayerHasPickedMyPocket] == FALSE)<br> * *// и ГГ имеет требуемую ловкость (ловкость ГГ должна быть более (TheftDex-10))<br> * *&& (other.attribute[ATR_DEXTERITY] >= (TheftDex - Theftdiff))<br> * *// и НПС не одержим <br> * *&& (NpcObsessedByDMT == FALSE)<br> * *{<br> * * * *// если НПС в состоянии диалога<br> * * * *if(Npc_IsInState(self,ZS_Talk))<br> * * * *{<br> * * * * * *// задать уровень ловкости, требуемый для успешного воровства<br> * * * * * *if(TheftDex <= 20)<br> * * * * * *{<br> * * * * * * * *TheftDexGlob = 10;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *TheftDexGlob = TheftDex;<br> * * * * * *};<br> * * * * * *// задать кол-во украденных денег<br> * * * * * *TheftGoldGlob = TheftGold;<br> * * * *};<br> * * * *return TRUE;<br> * *};<br> * *return FALSE; * // Добавлено мной для исключения возможной ошибки.<br>}; *<br> * *<br>// Функция карманной кражи<br>func void B_Beklauen()<br>{ * <br> * *// если ГГ имеет требуемую ловкость<br> * *if(other.attribute[ATR_DEXTERITY] >= TheftDexGlob)<br> * *{<br> * * * *// ГГ получет заданное кол-во денег<br> * * * *B_GiveInvItems(self,other,ItMi_Gold,TheftGoldGlob );<br> * * * *// установка флага, что НПС обворован ГГ<br> * * * *self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE;<br> * * * *// получение экспы за воровство<br> * * * *B_GiveThiefXP();<br> * * * *// звуковое сопровождение<br> * * * *Snd_Play("Geldbeutel");<br> * *}<br> * *else<br> * *{<br> * * * *// фиксация неудачной кражи<br> * * * *B_ResetThiefLevel();<br> * * * *// прекратить диалог (т.е. кражу)<br> * * * *AI_StopProcessInfos(self);<br> * * * *// НПС атакует вора<br> * * * *B_Attack(self,other,AR_Theft,1);<br> * *};<br>}; *<br><br><br> * *3. Функция реакции на повреждение "Когтем Белиара".<br><br>Файл B_BeliarsWeaponSpecialDamage.d<br><br>// ************************************************** **************<br>// Функция реакции на повреждение "Когтем Белиара"<br>// ************************************************** **************<br>// Аргументы: oth - нападающий, slf - жертва<br><br>var int RavenBlitz; // кол-во молний, созданных Равеном <br><br>func void B_BeliarsWeaponSpecialDamage(var C_NPC oth,var C_NPC slf)<br>{<br> * *// если Равен жертва<br> * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Raven))<br> * *{<br> * * * *// эффект "Гнев Белиара" исходит от Равена<br> * * * *Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE& quot;,slf,slf,0,0,0,FALSE);<br> * * * *// если молний не было<br> * * * *if(RavenBlitz <= 0)<br> * * * *{<br> * * * * * *// эффект "Гнев Белиара" падает на ГГ<br> * * * * * *Wld_PlayEffect("spellFX_BELIARSRAGE",ot h,oth,0,0,0,FALSE);<br> * * * * * *// магическое повреждение ГГ на 50 пунктов<br> * * * * * *B_MagicHurtNpc(slf,oth,50);<br> * * * * * *// кол-во молний ++<br> * * * * * *RavenBlitz += 1;<br> * * * *}<br> * * * *// если ударов молнией >= 3<br> * * * *else if(RavenBlitz >= 3) <br> * * * *{<br> * * * * * *var int RavenRandy;<br> * * * * * *RavenRandy = Hlp_Random(3);<br> * * * * * *// Примечание: непонятное условие, будет выполняться всегда<br> * * * * * *if(RavenRandy <= 50)<br> * * * * * *{<br> * * * * * * * *// сброс на 0<br> * * * * * * * *RavenBlitz = 0;<br> * * * * * *};<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *RavenBlitz += 1;<br> * * * *};<br> * * * *// результат такой, каждая третья молния, созданная Равеном, поражает ГГ<br> * *}<br> * *// если нападающий ГГ<br> * *else if(Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(hero))<br> * *{<br> * * * *var int DamageRandy;<br> * * * *// вероятность дополнительного повреждения<br> * * * *DamageRandy = Hlp_Random(100);<br> * * * *// если ГГ вооружен "Когтем Белиара" и вероятность <= шанса доп. повреждения<br> * * * *if(C_ScHasReadiedBeliarsWeapon()) && (DamageRandy <= BeliarDamageChance) <br> * * * *{<br> * * * * * *// если жертва Дракон нежить<br> * * * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD)<br> * * * * * *{<br> * * * * * * * *// эффект "Гнев Белиара" падает на ГГ<br> * * * * * * * *Wld_PlayEffect("spellFX_BELIARSRAGE",ot h,oth,0,0,0,FALSE);<br> * * * * * * * *// ГГ получает 100 пунктов урона<br> * * * * * * * *B_MagicHurtNpc(slf,oth,100); <br> * * * * * *}<br> * * * * * *// если жертва уязвима<br> * * * * * *else if(slf.flags != NPC_FLAG_IMMORTAL)<br> * * * * * *{<br> * * * * * * * *// эффект "Гнев Белиара" падает на жертву<br> * * * * * * * *Wld_PlayEffect("spellFX_BELIARSRAGE",sl f,slf,0,0,0,FALSE);<br> * * * * * * * *// жертва получает 100 пунктов урона<br> * * * * * * * *B_MagicHurtNpc(oth,slf,100); * * * * * *<br> * * * * * *};<br> * * * * * *// эффект "Гнев Белиара" исходит от ГГ<br> * * * * * *Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE& quot;,hero,hero,0,0,0,FALSE);<br> * * * *};<br> * * * *// если ГГ вооружен "Когтем Белиара" и вероятность <= 50 (удар без повреждения)<br> * * * *if(C_ScHasReadiedBeliarsWeapon()) && (DamageRandy <= 50)<br> * * * *{<br> * * * * * *// эффект "Гнев Белиара" исходит от ГГ<br> * * * * * *Wld_PlayEffect("spellFX_BELIARSRAGE_COLLIDE& quot;,hero,hero,0,0,0,FALSE);<br> * * * *};<br> * *};<br>};<br><br>
|
Re: Уроки скриптологии
* *4. Капитан приглашает команду на корабль перед отплытием на Ирдорат.<br><br>Файл B_CaptainCallsAllOnBoard.d<br><br>// ************************************************** **************<br>// Капитан приглашает команду на корабль перед отплытием на Ирдорат<br>// ************************************************** **************<br>// Аргумент: Captain - капитан<br><br>func void B_CaptainCallsAllOnBoard(var C_NPC Captain)<br>{ * <br> * *// ГГ отдает капитану "Морскую карту к острову Ирдорат"<br> * *B_GiveInvItems(hero,Captain,ItWr_Seamap_Irdorath, 1);<br> * *// в инвентаре капитана появляется "Ключ от каюты капитана"<br> * *CreateInvItems(Captain,ItKe_Ship_Levelchange_MIS, 1);<br> * *// капитан передает ключ ГГ (other в диалоге)<br> * *B_GiveInvItems(Captain,other,ItKe_Ship_Levelchang e_MIS,1);<br> * *// капитан идет на корабль<br> * *B_StartOtherRoutine(Captain,"AllOnBoard" ;);<br> * *// если Ли завербован, он идет на корабль<br> * *if(Lee_IsOnBoard == LOG_SUCCESS) * * * *{B_StartOtherRoutine(Lee,"Ship");};<br> * *// если Мильтон завербован, он идет на корабль<br> * *if(MiltenNW_IsOnBoard == LOG_SUCCESS) * {B_StartOtherRoutine(MiltenNW,"Ship");}; <br> * *// если Лестер завербован, он идет на корабль<br> * *if(Lester_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Lester,"Ship");};<b r> * *// если Горн завербован, он идет на корабль<br> * *if(Gorn_IsOnBoard == LOG_SUCCESS) * * * {B_StartOtherRoutine(GornNW_nach_DJG,"Ship&qu ot;);};<br> * *// если Марио завербован, он идет на корабль<br> * *if(Mario_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(Mario,"Ship");};<b r> * *// если Вольф завербован, он идет на корабль<br> * *if(Wolf_IsOnBoard == LOG_SUCCESS) * * * {B_StartOtherRoutine(SLD_Wolf,"Ship");}; <br> * *// если Ларес завербован, он идет на корабль<br> * *if(Lares_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(Lares,"Ship");};<b r> * *// если Беннет завербован, он идет на корабль<br> * *if(Bennet_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Bennet,"Ship");};<b r> * *// если Диего завербован, он идет на корабль<br> * *if(Diego_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(DiegoNW,"Ship");}; <br> * *// если Бифф завербован, он идет на корабль<br> * *if(Biff_IsOnBoard == LOG_SUCCESS) * * * {B_StartOtherRoutine(Biff_NW,"Ship");};< br> * *// если Ватрас завербован, он идет на корабль<br> * *if(Vatras_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Vatras,"Ship");};<b r> * *// если Кор Ангар завербован, он идет на корабль<br> * *if(Angar_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(Angar_NW,"Ship");} ;<br> * *// если Гирион завербован, он идет на корабль<br> * *if(Girion_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Girion,"Ship");};<b r> * *// флаг начала 6 главы<br> * *MIS_ReadyforChapter6 = TRUE;<br>};<br><br><br> * *5. Всё ли готово для отплытия на Ирдорат?<br><br>Файл B_CaptainConditions.d<br><br>// ************************************************** **************<br>// Всё ли готово для отплытия на Ирдорат?<br>// ************************************************** **************<br>// Аргумент: Captain - капитан<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br><br>func int B_CaptainConditions(var C_NPC Captain)<br>{<br> * *// если Глава 5<br> * *if (Kapitel == 5)<br> * *// и капитан найден<br> * *&& (SCGotCaptain == TRUE)<br> * *// и ГГ имеет "Морскую карту к острову Ирдорат"<br> * *&& (Npc_HasItems(hero,ItWr_Seamap_Irdorath))<br> * *// и кол-во завербованных для похода >= 5 <br> * *&& (crewmember_Count >= Min_Crew)<br> * *// и капитан находится не далее 20м от корабля<br> * *&& (Npc_GetDistToWP(Captain,"NW_WAITFOR_SHIP_CAP TAIN") < 2000)<br> * *// и команда может подниматься на корабль или охрана корабля убита (2 охранника)<br> * *&& ((MIS_ShipIsFree == TRUE) ¦¦ ((Npc_IsDead(Schiffswache_212)) && (Npc_IsDead(Schiffswache_213)))) * * * * <br> * *{<br> * * * *// установка флага команда может подниматься на корабль<br> * * * *MIS_ShipIsFree = TRUE;<br> * * * *return TRUE;<br> * *};<br> * *return FALSE;<br>};<br><br><br> * *6. Функции квеста по зачистке каньона от Расчленителей.<br><br>Файл B_CountCanyonRazor.d<br><br>// Все ли Расчленители в каньоне убиты?<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br><br>func int C_AllCanyonRazorDead()<br>{<br> * *// если Грег вернулся в Яркендар<br> * *if (GregIsBack == TRUE)<br> * *// и 10 Расчленителей убито<br> * *&& Npc_IsDead(CanyonRazor01)<br> * *&& Npc_IsDead(CanyonRazor02)<br> * *&& Npc_IsDead(CanyonRazor03)<br> * *&& Npc_IsDead(CanyonRazor04)<br> * *&& Npc_IsDead(CanyonRazor05)<br> * *&& Npc_IsDead(CanyonRazor06)<br> * *&& Npc_IsDead(CanyonRazor07)<br> * *&& Npc_IsDead(CanyonRazor08 )<br> * *&& Npc_IsDead(CanyonRazor09)<br> * *&& Npc_IsDead(CanyonRazor10)<br> * *{<br> * * * *return TRUE;<br> * *}<br> * *return FALSE;<br>};<br><br>// Действительно ли убит Расчленитель из каньона?<br>// ----------------------------------------------------------------<br>// Аргумент: slf - убитый НПС<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br><br>func int C_IAmCanyonRazor(var C_NPC slf)<br>{<br> * *// получить ссылки на Расчленителей из каньона<br> * *var C_NPC RAZ01; * *RAZ01 = Hlp_GetNpc(CANYONRAZOR01); <br> * *var C_NPC RAZ02; * *RAZ02 = Hlp_GetNpc(CANYONRAZOR02);<br> * *var C_NPC RAZ03; * *RAZ03 = Hlp_GetNpc(CANYONRAZOR03);<br> * *var C_NPC RAZ04; * *RAZ04 = Hlp_GetNpc(CANYONRAZOR04);<br> * *var C_NPC RAZ05; * *RAZ05 = Hlp_GetNpc(CANYONRAZOR05);<br> * *var C_NPC RAZ06; * *RAZ06 = Hlp_GetNpc(CANYONRAZOR06);<br> * *var C_NPC RAZ07; * *RAZ07 = Hlp_GetNpc(CANYONRAZOR07);<br> * *var C_NPC RAZ08; * *RAZ08 = Hlp_GetNpc(CANYONRAZOR08 );<br> * *var C_NPC RAZ09; * *RAZ09 = Hlp_GetNpc(CANYONRAZOR09);<br> * *var C_NPC RAZ10; * *RAZ10 = Hlp_GetNpc(CANYONRAZOR10);<br> * *// если убитый НПС является одним из Расчленителей каньона<br> * *if ((Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ01))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ02))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ03))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ04))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ05))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ06))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ07))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ08 ))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ09))<br> * *¦¦ *(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(RAZ10)))<br> * *{<br> * * * *return TRUE;<br> * *}<br> * *return FALSE;<br>};<br><br>// Вывод информации об убитых Расчленителях<br>func void B_CountCanyonRazor()<br>{<br> * *var string CanyonRazorText;<br> * *var string CanyonRazorLeft;<br> * *// "10 - кол-во убитых Расчленителей"<br> * *CanyonRazorLeft = IntToString(10 - CanyonRazorBodyCount);<br> * *// CanyonRazorLeft + "глорх(-а, -ов) осталось"<br> * *CanyonRazorText = ConcatStrings(CanyonRazorLeft,PRINT_Addon_CanyonRa zorsLeft);<br> * *// вывод строки на экран<br> * *AI_PrintScreen(CanyonRazorText,-1,YPOS_GOLDGIVEN,FONT_ScreenSmall,2);<br>};<br><br><br> * *7. Функция подсчета убитых драконов.<br><br>Файл B_DragonKillCounter.d<br><br>// ************************************************** **************<br>// Функция подсчета убитых драконов (вообще-то действия выполняемые после убийства НПС)<br>// ************************************************** **************<br>// Аргумент: current_dragon - убитый НПС<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: нет, тип функции должен быть исправлен на void<br><br>var int SwapDragnIsDead;<br>var int RckDragnIsDead; <br>var int FreDragnIsDead; * * <br>var int IcDragnIsDead; *<br><br>func int B_DragonKillCounter(var C_NPC current_dragon)<br>{<br> * *var C_NPC Ravn;<br> * *// получить ссылку на Равена<br> * *Ravn = Hlp_GetNpc(BDT_1090_Addon_Raven);<br> * *// если Равен убит<br> * *if((Hlp_GetInstanceID(current_dragon)) == (Hlp_GetInstanceID(Ravn)))<br> * *{<br> * * * *// если флаг убийства Равена не установлен<br> * * * *if(RavenIsDead == FALSE)<br> * * * *{<br> * * * * * *// видео "Смерть Равена"<br> * * * * * *PlayVideoEx("EXTRO_RAVEN.BIK",TRUE,FALS E);<br> * * * * * *// установить флаг<br> * * * * * *RavenIsDead = TRUE;<br> * * * * * *// убрать Миксира из Яркендара<br> * * * * * *B_RemoveNpc(Myxir_ADW);<br> * * * *};<br> * *};<br> * *// если убит дракон<br> * *if(current_dragon.guild == GIL_DRAGON) * <br> * *{<br> * * * *// получить ссылки на 4 драконов Миненталя<br> * * * *var C_NPC SwapDragn; * *SwapDragn * = Hlp_GetNpc(Dragon_Swamp);<br> * * * *var C_NPC RckDragn; * * RckDragn * *= Hlp_GetNpc(Dragon_Rock); <br> * * * *var C_NPC FreDragn; * * FreDragn * *= Hlp_GetNpc(Dragon_Fire); <br> * * * *var C_NPC IcDragn; * * *IcDragn * * = Hlp_GetNpc(Dragon_Ice); *<br> * * * *// если убит Болотный дракон и флаг его убийства не установлен<br> * * * *if((Hlp_GetInstanceID(current_dragon) == Hlp_GetInstanceID(SwapDragn)) && (SwapDragnIsDead == FALSE))<br> * * * *{<br> * * * * * *// счетчик убитых драконов ++<br> * * * * * *MIS_KilledDragons = (MIS_KilledDragons + 1);<br> * * * * * *// установит флаг убийства дракона<br> * * * * * *SwapDragnIsDead = TRUE;<br> * * * *};<br> * * * *// Каменный дракон<br> * * * *if((Hlp_GetInstanceID(current_dragon) == Hlp_GetInstanceID (RckDragn)) && (RckDragnIsDead == FALSE))<br> * * * *{<br> * * * * * *MIS_KilledDragons = (MIS_KilledDragons + 1);<br> * * * * * *RckDragnIsDead = TRUE;<br> * * * *};<br> * * * *// Огненный дракон<br> * * * *if((Hlp_GetInstanceID(current_dragon) == Hlp_GetInstanceID (FreDragn)) && (FreDragnIsDead == FALSE))<br> * * * *{<br> * * * * * *MIS_KilledDragons = (MIS_KilledDragons + 1);<br> * * * * * *FreDragnIsDead = TRUE;<br> * * * *};<br> * * * *// Ледяной дракон<br> * * * *if((Hlp_GetInstanceID (current_dragon) == Hlp_GetInstanceID (IcDragn)) && (IcDragnIsDead == FALSE))<br> * * * *{<br> * * * * * *MIS_KilledDragons = (MIS_KilledDragons + 1);<br> * * * * * *IcDragnIsDead = TRUE;<br> * * * *};<br> * *};<br> * *// если убито 4 дракона<br> * *if(MIS_KilledDragons == 4)<br> * *{<br> * * * *// установит флаг - ГГ убил всех драконов<br> * * * *MIS_AllDragonsDead = TRUE;<br> * * * *// если Бифф член партии ГГ и Бифф жив<br> * * * *if((DJG_BiffParty == TRUE) && (Npc_IsDead(Biff) == FALSE))<br> * * * *{<br> * * * * * *// установить флаг - Бифф поощряет ГГ за убийство драконов<br> * * * * * *DJG_BiffSurvivedLastDragon = TRUE;<br> * * * *};<br> * *};<br> * *// если убит Дракон нежить<br> * *if(current_dragon.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD)<br> * *{<br> * * * *// установить флаг убийства последнего дракона<br> * * * *UndeadDragonIsDead = TRUE;<br> * * * *// создать в дневнике тему "Назад к кораблю"<br> * * * *Log_CreateTopic(TOPIC_BackToShip,LOG_MISSION);<br > * * * *// установить статус темы - выполнение<br> * * * *Log_SetTopicStatus(TOPIC_BackToShip,LOG_RUNNING); <br> * * * *// запись в теме "Враг побежден и теперь я больше не буду гнить под скалами. Я ухожу отсюда обратно на корабль."<br> * * * *B_LogEntry(TOPIC_BackToShip,PRINT_DragKillCount); <br> * * * *// телепортация ГГ на корабль<br> * * * *AI_Teleport(hero,"UNDEAD_ENDTELEPORT"); *<br> * * * *// если ГГ Милиционер или Паладин<br> * * * *if((hero.guild == GIL_MIL) ¦¦ (hero.guild == GIL_PAL))<br> * * * *{<br> * * * * * *// ролик убийства дракона Паладином<br> * * * * * *PlayVideoEx ("EXTRO_PAL.BIK",TRUE,FALSE);<br> * * * *}<br> * * * *// если ГГ Наемник или Охотник на драконов<br> * * * *else if((hero.guild == GIL_SLD) ¦¦ (hero.guild == GIL_DJG))<br> * * * *{<br> * * * * * *// ролик убийства дракона Охотником на драконов<br> * * * * * *PlayVideoEx("EXTRO_DJG.BIK",TRUE,FALSE) ;<br> * * * *}<br> * * * *else // ГГ Маг Огня<br> * * * *{<br> * * * * * *// ролик убийства дракона Магом Огня<br> * * * * * *PlayVideoEx ("EXTRO_KDF.BIK",TRUE,FALSE);<br> * * * *};<br> * *};<br>};<br><br><br> * *8. Финальное видео (конец игры).<br><br>Файл B_ExtroAVI.d<br><br>// ************************************************** **************<br>// Финальное видео (конец игры)<br>// ************************************************** **************<br><br>func void B_Extro_Avi()<br>{<br> * *// если Диего жив и Горн жив<br> * *if((Npc_IsDead(PC_Thief_DI) == FALSE) && (Npc_IsDead(PC_Fighter_DI) == FALSE))<br> * *{<br> * * * *// установить флаг - друзья живы<br> * * * *DiegAndGornAreOnboard = TRUE;<br> * *};<br> * *// серия финальных роликов<br> * *PlayVideo("Extro_Xardas.BIK"); * <br> * *PlayVideo("Credits_Extro.BIK"); <br> * *PlayVideo("Credits2.BIK"); *<br> * *// если друзья живы<br> * *if(DiegAndGornAreOnboard == TRUE)<br> * *{<br> * * * *// ещё один ролик<br> * * * *PlayVideo("Extro_AllesWirdGut.BIK"); * *<br> * *};<br> * *// GAME OVER<br> * *ExitSession();<br>};<br><br>
|
Re: Уроки скриптологии
* *9. Функция реакции на повреждение для призраков.<br><br>Файл B_GhostSpecialDamage.d<br><br>// ************************************************** **************<br>// Функция реакции на повреждение для призраков<br>// ************************************************** **************<br>// Аргументы: oth - нападающий, slf - жертва<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: нет, тип функции должен быть исправлен на void<br><br>func int B_GhostSpecialDamage(var C_NPC oth,var C_NPC slf)<br>{<br> * *var C_NPC Quarho;<br> * *// получить ссылку на Куарходрона<br> * *Quarho = Hlp_GetNpc(NONE_ADDON_111_Quarhodron);<br> * *var C_NPC Rhadem;<br> * *// получить ссылку на Радемеса<br> * *Rhadem = Hlp_GetNpc(NONE_ADDON_112_Rhademes);<br> * *var C_NPC her;<br> * *// получить ссылку на ГГ<br> * *her = Hlp_GetNpc(PC_HERO);<br> * *// если жертва Куарходрона или Радемес (Примечание: self необходимо заменить на slf, иначе возможна ошибка)<br> * *if ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Quarho))<br> * *¦¦ (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Rhadem)))<br> * *{<br> * * * *// эффект "Гнев Белиара" падает на нападающего<br> * * * *Wld_PlayEffect("spellFX_BELIARSRAGE",ot h,oth,0,0,0,FALSE);<br> * * * *// если нападающий не бессмертен<br> * * * *if(oth.flags != NPC_FLAG_IMMORTAL)<br> * * * *{<br> * * * * * *// если нападающий не ГГ<br> * * * * * *if(Hlp_GetInstanceID(oth) != Hlp_GetInstanceID(her))<br> * * * * * *{<br> * * * * * * * *// убить нападающего<br> * * * * * * * *Npc_ChangeAttribute(oth,ATR_HITPOINTS,-oth.attribute[ATR_HITPOINTS_MAX]);<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *// счетчик предупреждений ++<br> * * * * * * * *GhostAttackWarn = (GhostAttackWarn + 1);<br> * * * * * * * *// если менее 3 предупреждений<br> * * * * * * * *if(GhostAttackWarn < 3)<br> * * * * * * * *{<br> * * * * * * * * * *// жизнь нападающего уменьшается наполовину<br> * * * * * * * * * *oth.attribute[ATR_HITPOINTS] = (oth.attribute[ATR_HITPOINTS]/2);<br> * * * * * * * *}<br> * * * * * * * *else // 3 предупреждения<br> * * * * * * * *{<br> * * * * * * * * * *// если нападающий ГГ (Примечание: лишнее, уже проверялось<br> * * * * * * * * * *if(Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(her))<br> * * * * * * * * * *{<br> * * * * * * * * * * * *// жизнь ГГ = 0<br> * * * * * * * * * * * *oth.attribute[ATR_HITPOINTS] = 0;<br> * * * * * * * * * * * *// анимация смерти ГГ<br> * * * * * * * * * * * *AI_PlayAni(oth,"T_DEAD");<br> * * * * * * * * * *};<br> * * * * * * * *};<br> * * * * * *};<br> * * * *};<br> * * * *return FALSE; * // убрать, функция ничего не возвращает<br> * *};<br>};<br><br><br> * *10. Функции подсчета экспы за карманную кражу.<br><br>Файл B_GiveThiefXP.d<br><br>var int VictimCount; * * * *// кол-во успешно обворованных<br>var int VictimLevel; * * * *// уровень обворованных<br>var int ThiefLevel; * * * * // уровень воровства<br>const int ThiefXP = 50; * * // базовая экспа за воровство<br><br>// Начислить экспу за карманную кражу (удачная попытка)<br>func void B_GiveThiefXP()<br>{<br> * *// кол-во обворованных ++<br> * *VictimCount = (VictimCount + 1);<br> * *// если уровень 0 * <br> * *if(VictimLevel == 0)<br> * *{<br> * * * *// уровень обворованных = 2<br> * * * *VictimLevel = 2;<br> * *};<br> * *// если кол-во обворованных >= уровня обворованных<br> * *if(VictimCount >= VictimLevel)<br> * *{<br> * * * *// расчет добавочной экспы за воровство<br> * * * *ThiefLevel = (ThiefLevel + 1);<br> * * * *VictimLevel =(VictimCount + ThiefLevel);<br> * *};<br> * *// начислить экспу<br> * *B_GivePlayerXP(ThiefXP + (ThiefLevel * 10)); *<br>};<br>// Примечание: На форуме писалось, что начисляемая экспа за воровство зависит от главы, формула же говорит, что не зависит.<br>// У кого есть желание могут составить расчет экспы в зависимости от кол-ва удачно и неудачно обворованных.<br><br>// Неудачная попытка воровства<br>func void B_ResetThiefLevel()<br>{<br> * *// если кол-во обворованных >= уровня воровства<br> * *if(VictimCount > ThiefLevel)<br> * *{<br> * * * *// счетчик успешно обворованных --<br> * * * *VictimCount = (VictimCount - 1); <br> * *};<br>};<br><br><br> * *11. Грег идет убивать Декстера.<br><br>Файл B_GiveThiefXP.d<br><br>// ************************************************** **************<br>// Грег идет убивать Декстера<br>// ************************************************** **************<br><br>// self - Грег или Декстер или иной НПС, т.к. функция вызывается из разных мест<br><br>var int B_Greg_ComesToDexter_OneTime; * // флаг одноразового выполнения действия<br><br>func void B_Greg_ComesToDexter()<br>{<br> * *// если self Декстер<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Dexter))<br> * *{<br> * * * *// если флаг сброшен<br> * * * *if(B_Greg_ComesToDexter_OneTime == FALSE)<br> * * * *{<br> * * * * * *// у Декстера появился враг<br> * * * * * *dexter.aivar[AIV_EnemyOverride] = FALSE;<br> * * * * * *// Грег находится у Декстера<br> * * * * * *GregLocation = Greg_Dexter;<br> * * * * * *// Грег идет к Декстеру<br> * * * * * *B_StartOtherRoutine(Greg_NW,"Dexter"); // Внимание: В одной из версий датника слово "Dexter" переведено на русский язык - грубейшая ошибка, Грег к Декстеру не пойдет!<br> * * * * * *// установить флаг<br> * * * * * *B_Greg_ComesToDexter_OneTime = TRUE;<br> * * * *};<br> * *};<br>};<br><br><br> * *12. Жужжание Ищущего огонька.<br><br>Файл B_IrrlichtBeep.d<br><br>// ************************************************** **************<br>// Жужжание Ищущего огонька<br>// ************************************************** **************<br><br>func void B_IrrlichtBeep()<br>{<br> * *// вывод текста и озвучки<br> * *AI_Output(self,other,"DIA_Wisp_15_00"); //(зумм)<br>};<br><br><br> * *13. Блеяние овцы Лизели.<br><br>Файл B_LieselMaeh.d<br><br>// ************************************************** **************<br>// Блеяние овцы Лизели<br>// ************************************************** **************<br><br>func void B_LieselMaeh()<br>{<br> * *// вывод текста и озвучки<br> * *AI_Output(self,other,"DIA_Liesel_15_00" ); * //Mееееее!<br>};<br><br><br> * *14. Несчастный случай с Малкомом в Яркендаре.<br><br>Файл B_MalcomExident.d<br><br>// ************************************************** **************<br>// Несчастный случай с Малкомом в Яркендаре<br>// ************************************************** **************<br><br>func void B_MalcomExident()<br>{<br> * *// ГГ не знает, что Малком мертв<br> * *if(Malcom_Accident == FALSE)<br> * *{<br> * * * *// если Малком жив<br> * * * *if(!Npc_IsDead(Malcom))<br> * * * *{<br> * * * * * *// телепортация Малкома в пещеру<br> * * * * * *AI_Teleport(Malcom,"ADW_PIRATECAMP_SECRETCAV E_02");<br> * * * * * *// Малком спит в пещере<br> * * * * * *B_StartOtherRoutine(Malcom,"Start");<br > * * * * * *// убить Малкома<br> * * * * * *Npc_ChangeAttribute(Malcom,ATR_HITPOINTS,-Malcom.attribute[ATR_HITPOINTS_MAX]);<br> * * * * * *// тепортировать в пещеру ???<br> * * * * * *AI_Teleport(Malcom,"ADW_PIRATECAMP_SECRETCAV E_02");<br> * * * * * *// несчастный случай произошел<br> * * * * * *Malcom_Accident = TRUE;<br> * * * * * *// если Оуэн жив<br> * * * * * *if(!Npc_IsDead(Owen))<br> * * * * * *{<br> * * * * * * * *// Оуэн сидит у костра в лагере пиратов<br> * * * * * * * *B_StartOtherRoutine(Owen,"Start");<br> * * * * * *};<br> * * * *};<br> * *};<br>};<br><br><br> * *15. ГГ находит кое-что спрятанное в предмете.<br><br>Файл B_PlayerFindItem.d<br><br>// ************************************************** **************<br>// ГГ находит кое-что спрятанное в предмете<br>// ************************************************** **************<br>// Аргументы: itm - содержимое предмета, amount - кол-во найденного<br><br>// self - НПС вскрывающий предмет<br>// item - предмет контейнер<br><br>func void B_PlayerFindItem(var int itm,var int amount)<br>{<br> * *// если предмет вскрывает ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// создать в инвентаре ГГ найденные предметы<br> * * * *CreateInvItems(self,itm,amount);<br> * * * *var string ConcatText;<br> * * * *var string itemname;<br> * * * *// имя контейнера<br> * * * *itemname = item.name;<br> * * * *// если контейнер содержит деньги<br> * * * *if(itm == ItMi_Gold)<br> * * * *{<br> * * * * * *// amount + " золотых принято"<br> * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_GoldErhalt en);<br> * * * * * *// вывод на экран<br> * * * * * *Print(concatText);<br> * * * * * *// звон денег<br> * * * * * *Snd_Play("Geldbeutel");<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// если найден 1 предмет<br> * * * * * *if(amount == 1)<br> * * * * * *{<br> * * * * * * * *// itemname + " получают"<br> * * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_erhalten);<br> * * * * * * * *// вывод<br> * * * * * * * *Print(concatText);<br> * * * * * * * *<br> * * * * * *} * <br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *// amount + "предметов принято"<br> * * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsErhal ten);<br> * * * * * * * *// += " ("<br> * * * * * * * *concatText = ConcatStrings(concatText," (");<br> * * * * * * * *// += itemname<br> * * * * * * * *concatText = ConcatStrings(concatText,itemname);<br> * * * * * * * *// += ")"<br> * * * * * * * *concatText = ConcatStrings(concatText,")");<br> * * * * * * * *// вывод<br> * * * * * * * *Print(concatText);<br> * * * * * *}; <br> * * * *};<br> * *};<br>}; <br><br><br> * *16. Функции собрания Кольца Воды в таверне Орлана.<br><br>Файл B_RangerMeeting.d<br><br>// Сделать члена Кольца Воды готовым к собранию<br>// ----------------------------------------------------------------<br>// Аргумент: Ranger - НПС<br>func void B_MakeRangerReadyForMeeting(VAR C_NPC Ranger) <br>{<br> * *// создать в инвентаре Разорванную кольчугу<br> * *CreateInvItems(Ranger,ITAR_Fake_RANGER,1);<br> * *// снять старые доспехи<br> * *AI_UnequipArmor(Ranger);<br> * *// одеть кольчугу<br> * *AI_EquipArmor(Ranger,ITAR_Fake_RANGER);<br> * *// стать другом ГГ<br> * *Ranger.npctype = NPCTYPE_FRIEND;<br>};<br><br>// Член Кольца Воды покидает собрание<br>// ----------------------------------------------------------------<br>// Аргумент: Ranger - НПС<br>func void B_MakeRangerReadyToLeaveMeeting(VAR C_NPC Ranger) <br>{<br> * *// снять кольчугу<br> * *AI_UnequipArmor(Ranger);<br> * *// если НПС имеет Кольчуга "Кольца Воды", то удалить её<br> * *Npc_RemoveInvItems(Ranger,ITAR_RANGER_Addon,Npc_H asItems(Ranger,ITAR_RANGE<br>R_Addon));<br> * *// если НПС имеет Разорванную кольчугу, то удалить её<br> * *Npc_RemoveInvItems(Ranger,ITAR_Fake_RANGER,Npc_Ha sItems(Ranger,ITAR_Fake_R<br>ANGER));<br> * *// одеть лучшую броню<br> * *AI_EquipBestArmor(Ranger);<br>};<br><br>// Все участники готовятся к собранию<br>func void B_MakeRangerReadyForMeetingALL()<br>{<br> * *B_MakeRangerReadyForMeeting(Martin); * *// Мартин<br> * *B_MakeRangerReadyForMeeting(Lares); * * // Ларес<br> * *B_MakeRangerReadyForMeeting(Cord); * * *// Корд<br> * *B_MakeRangerReadyForMeeting(Gaan); * * *// Гаан<br> * *B_MakeRangerReadyForMeeting(Orlan); * * // Орлан<br> * *B_MakeRangerReadyForMeeting(Cavalorn); *// Ковалорн<br>};<br><br>// Все участники покидают собрание<br>func void B_MakeRangerReadyToLeaveMeetingALL()<br>{<br> * *B_MakeRangerReadyToLeaveMeeting(Martin);<br> * *B_MakeRangerReadyToLeaveMeeting(Lares);<br> * *B_MakeRangerReadyToLeaveMeeting(Cord);<br> * *B_MakeRangerReadyToLeaveMeeting(Gaan);<br> * *B_MakeRangerReadyToLeaveMeeting(Orlan);<br> * *B_MakeRangerReadyToLeaveMeeting(Cavalorn);<br>};< br><br>// Орлан дает команду идти всем в таверну<br>func void B_Addon_Orlan_RangersReadyForComing()<br>{<br> * *// если недостающий орнамент у паладинов получен<br> * *if(MIS_Addon_Cavalorn_GetOrnamentFromPAL != 0)<br> * *{<br> * * * *// Ковалорн идет в таверну<br> * * * *B_StartOtherRoutine(Cavalorn,"PreRangerMeeti ng");<br> * *};<br> * *// Мартин идет в таверну<br> * *B_StartOtherRoutine(Martin,"PreRangerMeeting "); <br> * *// Ларес идет в таверну<br> * *B_StartOtherRoutine(Lares,"PreRangerMeeting& quot;); * * * * *<br> * *// Корд идет в таверну<br> * *B_StartOtherRoutine(Cord,"PreRangerMeeting&q uot;); * * * <br> * *// Гаан идет в таверну<br> * *B_StartOtherRoutine(Gaan,"PreRangerMeeting&q uot;); * * * * * <br>};<br><br>// Сбор всех в таверне у стола<br>func void B_Addon_Orlan_ComingRanger()<br>{<br> * *if(MIS_Addon_Cavalorn_GetOrnamentFromPAL != 0)<br> * *{<br> * * * *B_StartOtherRoutine(Cavalorn,"RangerMeeting& quot;); * * *<br> * *};<br> * *B_StartOtherRoutine(Martin, "RangerMeeting"); * * * * * <br> * *B_StartOtherRoutine(Lares,"RangerMeeting&quo t;); * * * * <br> * *B_StartOtherRoutine(Cord,"RangerMeeting" ;); * * * * *<br> * *B_StartOtherRoutine(Gaan,"RangerMeeting" ;); * * * * *<br> * *B_StartOtherRoutine(Orlan,"RangerMeeting&quo t;);<br> * *// собрание началось<br> * *RangerMeetingRunning = LOG_RUNNING;<br>};<br><br>// Ларес заканчивает диалог<br>func void B_RangerMeetingParking()<br>{<br> * *// если недостающий орнамент у паладинов получен<br> * *if(MIS_Addon_Cavalorn_GetOrnamentFromPAL != 0)<br> * *{<br> * * * *// Ковалорн идет в город сидеть на скамье<br> * * * *B_StartOtherRoutine(Cavalorn,"Stadt");< br> * *};<br> * *// Орлан идет за прилавок<br> * *B_StartOtherRoutine(Orlan,"START"); <br> * *// Ларес должен обратиться к ГГ<br> * *Lares_HaltsMaul = TRUE;<br> * *// просто стоит у стола<br> * *B_StartOtherRoutine(Lares,"Parking"); * * * * * * * <br> * *// Корд стоит у стола<br> * *B_StartOtherRoutine(Cord,"Parking");<br > * *// тут написана какая-то фигня, надо просто оставить те строки, против которых стоит //++, остальные удалить<br> * *if((Gaan.aivar[AIV_TalkedToPlayer] == FALSE))<br> * *{<br> * * * *// Гаан остается у стола<br> * * * *B_StartOtherRoutine(Gaan,"Parking"); * *//++<br> * *}<br> * *else<br> * *{<br> * * * *B_StartOtherRoutine(Gaan,"Parking"); * * * * * * * * * *<br> * *};<br> * *if(MIS_Addon_Martin_GetRangar == 0)<br> * *{<br> * * * *// Мартин остается у стола<br> * * * *B_StartOtherRoutine(Martin,"Parking"); *//++<br> * *}<br> * *else<br> * *{<br> * * * *B_StartOtherRoutine(Martin,"Parking");< br> * *};<br>};<br><br>// Ватрас заканчивает диалог<br>func void B_SchlussMitRangerMeeting()<br>{<br> * *// *** НПС возвращаются на свои места до собрания ***<br> * *// если недостающий орнамент у паладинов получен<br> * *if(MIS_Addon_Cavalorn_GetOrnamentFromPAL != 0)<br> * *{<br> * * * *// Ковалорн идет в город сидеть на скамье<br> * * * *B_StartOtherRoutine(Cavalorn,"Stadt"); * * * * *<br> * *};<br> * *// Ларес идет в гавань<br> * *B_StartOtherRoutine(Lares,"Start");<br> * *// Корд идет продолжать свои тренировки с мечом<br> * *B_StartOtherRoutine(Cord,"Start");<br> * *// если ГГ не говорил с Гааном<br> * *if(Gaan.aivar[AIV_TalkedToPlayer] == FALSE)<br> * *{<br> * * * *// Гаан идет туда, где родился<br> * * * *B_StartOtherRoutine(Gaan,"PreStart");<b r> * *}<br> * *else<br> * *{<br> * * * *// Гаан идет к снепперу<br> * * * *B_StartOtherRoutine(Gaan,"Start"); * * * * * * * * *<br> * *};<br> * *// если вор для Мартина не пойман<br> * *if(MIS_Addon_Martin_GetRangar == 0)<br> * *{<br> * * * *// идет в порт<br> * * * *B_StartOtherRoutine(Martin,"PreStart"); <br> * *}<br> * *else<br> * *{<br> * * * *// идет в порт или таверну в порту, в зависимости от времени<br> * * * *B_StartOtherRoutine(Martin,"Start");<br > * *};<br> * *// Орлан идет за прилавок<br> * *B_StartOtherRoutine (Orlan,"Start"); * *<br> * *// Ларес к ГГ не обратится<br> * *Lares_HaltsMaul = LOG_OBSOLETE;<br>};<br><br><br> * *17. Удалить призрака из игры.<br><br>Файл B_RemoveQuarhodron.d<br><br>// ************************************************** **************<br>// Удалить призрака из игры<br>// ************************************************** **************<br>// Возвращаемое значение: нет, тип функции должен быть исправлен на void<br><br>var int B_RemoveQuarhodron_OneTime; * * // флаг удаления Кваходрона<br>var int B_RemoveRhademes_OneTime; * * * // флаг удаления Радемеса<br><br>func int B_RemoveGhost()<br>{<br> * *// если ГГ узнаёт от Кваходрона о Камерах Аданоса<br> * *if(Ghost_SCKnowsHow2GetInAdanosTempel == TRUE)<br> * *{ * <br> * * * *// если ГГ вызвал Кваходрона и Кваходрон не удален<br> * * * *if(SC_SummonedAncientGhost == TRUE) && (B_RemoveQuarhodron_OneTime == FALSE)<br> * * * *{<br> * * * * * *// телепортировать на кладбище<br> * * * * * *AI_Teleport(NONE_ADDON_111_Quarhodron,"TOT&q uot;);<br> * * * * * *// удалить Кваходрона<br> * * * * * *B_RemoveNpc(NONE_ADDON_111_Quarhodron);<br> * * * * * *// музычка<br> * * * * * *Snd_Play("MFX_GhostVoice"); <br> * * * * * *Snd_Play("MFX_Firestorm_Cast");<br> * * * * * *// установить флаг удаления<br> * * * * * *B_RemoveQuarhodron_OneTime = TRUE;<br> * * * * * *// сброс счетчика предупреждений<br> * * * * * *GhostAttackWarn = 0;<br> * * * *};<br> * *};<br> * *// если Радемес был вставлен в игру (сработал триггер)<br> * *if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTim e == TRUE)<br> * *{<br> * * * *// если ГГ одолел Радемеса и Радемес не удален<br> * * * *if(SC_TookRhademesTrap == TRUE) && (B_RemoveRhademes_OneTime == FALSE)<br> * * * *{<br> * * * * * *// телепортировать на кладбище<br> * * * * * *AI_Teleport(NONE_ADDON_112_Rhademes,"TOT&quo t;);<br> * * * * * *// удалить Радемеса<br> * * * * * *B_RemoveNpc(NONE_ADDON_112_Rhademes);<br> * * * * * *// если ГГ слышал последние слова Радемеса<br> * * * * * *if(SC_TalkedToRhademAfter == TRUE)<br> * * * * * *{<br> * * * * * * * *// музычка<br> * * * * * * * *Snd_Play("MFX_GhostVoice"); <br> * * * * * * * *Snd_Play("MFX_Firestorm_Cast"); <br> * * * * * *};<br> * * * * * *// установить флаг удаления<br> * * * * * *B_RemoveRhademes_OneTime = TRUE;<br> * * * * * *// сброс счетчика предупреждений<br> * * * * * *GhostAttackWarn = 0;<br> * * * *};<br> * *};<br>}; * * * * * * * * * * * * * <br><br>
|
Re: Уроки скриптологии
2Vam:<br>
Цитата:
|
Re: Уроки скриптологии
* *18. Функции, связанные с оружием Белиара.<br><br>Файл B_ScHasBeliarsWeapon.d<br><br>// Имеет ли ГГ руны Белиара?<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_SCHasBeliarsRune()<br>{<br> * *// если ГГ имеет<br> * *if (Npc_HasItems(hero,ItRu_BeliarsRage) * * == TRUE) * *// Ярость Белиара<br> * *¦¦ (Npc_HasItems(hero,ItRu_SuckEnergy) * * *== TRUE) * *// или Украсть энергию<br> * *¦¦ (Npc_HasItems(hero,ItRu_GreenTentacle) * == TRUE) * *// или Зеленые щупальца<br> * *¦¦ (Npc_HasItems(hero,ItRu_Swarm) * * * * * == TRUE) * *// или Рой<br> * *¦¦ (Npc_HasItems(hero,ItRu_Skull) * * * * * == TRUE) * *// или Крик мертвых<br> * *¦¦ (Npc_HasItems(hero,ItRu_SummonZombie) * *== TRUE) * *// или Создать зомби<br> * *¦¦ (Npc_HasItems(hero,ItRu_SummonGuardian) *== TRUE) * *// или Создать стража<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *return FALSE;<br>};<br><br>// Имеет ли ГГ оружие Белиара?<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_ScHasBeliarsWeapon()<br>{ * <br> * *// если ГГ имеет один из одноручников<br> * *if (Npc_HasItems(hero,ItMw_BeliarWeapon_Raven)<br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_01) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_02) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_03) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_04) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_05) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_06) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_07) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_08) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_09) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_10) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_11) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_12) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_13) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_14) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_15) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_16) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_17) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_18) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_19) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_1H_20) <br> * *// или один из двуручников<br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_01) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_02) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_03) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_04) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_05) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_06) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_07) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_08) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_09) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_10) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_11) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_12) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_13) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_14) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_15) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_16) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_17) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_18) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_19) <br> * *¦¦ Npc_HasItems(hero,ItMw_BeliarWeapon_2H_20)<br> * *// или руны Белиара<br> * *¦¦ C_ScHasBeliarsRune())<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *return FALSE;<br>}; *<br><br>// Является ли оружие ГГ оружием Белиара?<br>// ----------------------------------------------------------------<br>// Аргумент: Weap - проверяемый предмет<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_IsItemBeliarsWeapon(var C_ITEM Weap)<br>{ * <br> * *// если предмет является одним из одноручников<br> * *if (Hlp_IsItem(Weap,ItMw_BeliarWeapon_Raven) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_01) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_02) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_03) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_04) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_05) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_06) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_07) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_08) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_09) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_10) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_11) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_12) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_13) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_14) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_15) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_16) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_17) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_18) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_19) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_1H_20) == TRUE)<br> * *// или одним из двуручников<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_01) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_02) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_03) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_04) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_05) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_06) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_07) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_08) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_09) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_10) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_11) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_12) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_13) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_14) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_15) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_16) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_17) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_18) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_19) == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItMw_BeliarWeapon_2H_20) == TRUE)<br> * *// или одной из рун Белиара<br> * *¦¦ (Hlp_IsItem(Weap,ItRu_BeliarsRage) * * * *== TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItRu_SuckEnergy) * * * * == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItRu_GreenTentacle) * * *== TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItRu_Swarm) * * * * * * *== TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItRu_Skull) * * * * * * *== TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItRu_SummonZombie) * * * == TRUE)<br> * *¦¦ (Hlp_IsItem(Weap,ItRu_SummonGuardian) * * == TRUE)<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *return FALSE;<br>}; *<br><br>// Является ли оружие ГГ дальнего радиуса повреждения оружием Белиара?<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_ScHasReadiedBeliarsWeapon()<br>{ * <br> * *var C_ITEM ReadyWeap;<br> * *// получить ссылку на оружие дальнего радиуса поражения, которым экипирован ГГ<br> * *ReadyWeap = Npc_GetReadiedWeapon(hero);<br> * *// если это оружие Белиара<br> * *if(C_IsItemBeliarsWeapon(ReadyWeap))<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *return FALSE;<br>};<br><br>// Является ли оружие ГГ ближнего радиуса повреждения оружием Белиара?<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_ScHasEquippedBeliarsWeapon()<br>{ * <br> * *var C_ITEM EquipWeap;<br> * *// получить ссылку на оружие ближнего радиуса поражения, которым экипирован ГГ<br> * *EquipWeap = Npc_GetEquippedMeleeWeapon(hero);<br> * *// если это оружие Белиара<br> * *if(C_IsItemBeliarsWeapon(EquipWeap))<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *<br> * *return FALSE; //DEFAULT<br>};<br><br>// Удалить оружие Белиара из инвентаря ГГ<br>func void B_ClearBeliarsWeapon ()<br>{ * <br> * *// если ГГ имеет один из одноручников, то удалить его<br> * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_Raven,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_Raven));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_01,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_01));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_02,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_02));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_03,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_03));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_04,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_04));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_05,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_05));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_06,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_06));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_07,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_07));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_08,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_08));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_09,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_09));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_10,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_10));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_11,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_11));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_12,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_12));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_13,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_13));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_14,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_14));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_15,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_15));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_16,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_16));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_17,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_17));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_18,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_18));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_19,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_19));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_1H_20,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_1H_20));<br > * *// если ГГ имеет один из двуручников, то удалить его<br> * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_01,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_01));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_02,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_02));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_03,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_03));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_04,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_04));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_05,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_05));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_06,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_06));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_07,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_07));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_08,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_08));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_09,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_09));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_10,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_10));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_11,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_11));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_12,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_12));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_13,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_13));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_14,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_14));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_15,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_15));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_16,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_16));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_17,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_17));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_18,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_18));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_19,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_19));<br > * *Npc_RemoveInvItems(hero,ItMw_BeliarWeapon_2H_20,N pc_HasItems(hero,ItMw_BeliarWe<br>apon_2H_20));<br > * *// если ГГ имеет одну из рун Белиара, то удалить её<br> * *Npc_RemoveInvItems(hero,ItRu_BeliarsRage * * * ,Npc_HasItems(hero,ItRu_BeliarsRage));<br> * *Npc_RemoveInvItems(hero,ItRu_SuckEnergy * * * *,Npc_HasItems(hero,ItRu_SuckEnergy));<br> * *Npc_RemoveInvItems(hero,ItRu_GreenTentacle * * ,Npc_HasItems(hero,ItRu_GreenTentacle));<br> * *Npc_RemoveInvItems(hero,ItRu_Swarm * * * * * * ,Npc_HasItems(hero,ItRu_Swarm));<br> * *Npc_RemoveInvItems(hero,ItRu_Skull * * * * * * ,Npc_HasItems(hero,ItRu_Skull));<br> * *Npc_RemoveInvItems(hero,ItRu_SummonZombie * * *,Npc_HasItems(hero,ItRu_SummonZombie));<br> * *Npc_RemoveInvItems(hero,ItRu_SummonGuardian * *,Npc_HasItems(hero,ItRu_SummonGuardian));<br>}; *<br><br>var int BeliarWeapCurrentLvL; * * * // текущий уровень оружия Белиара<br>var int BeliarWeapNextLvL; * * * * *// следующий уровень оружия Белиара<br>var int BeliarNextDamageChance; * * // следующая вероятность повреждения<br> * * * * * * * <br>// Можно ли улучшить оружие Белиара?<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_ScCanUpgrateBeliarsWeapon()<br>{<br> * *var int herolvl;<br> * *// получить уровень ГГ<br> * *herolvl = hero.level;<br> * *// если ГГ маг Огня<br> * *if(hero.guild == GIL_KDF)<br> * *{<br> * * * *// в зависимости от круга магии ГГ устанавливается следующий уровень оружия Белиара<br> * * * *if * * *(Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) >= 5) { BeliarWeapNextLvL = 5; }<br> * * * *else if (Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 4) { BeliarWeapNextLvL = 4; }<br> * * * *else if (Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 3) { BeliarWeapNextLvL = 3; }<br> * * * *else if (Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 2) { BeliarWeapNextLvL = 2; }<br> * * * *else if (Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) <= 1) { BeliarWeapNextLvL = 1; };<br> * * * *return TRUE;<br> * *}<br> * *else<br> * *{ * <br> * * * *// в зависимости от уровня ГГ устанвливается следующий уровень оружия Белиара и соответствующая вероятность повреждения<br> * * * *if * * *(herolvl > 46) *{ BeliarWeapNextLvL = 20; BeliarNextDamageChance = BeliarDamageChance_20; } <br> * * * *else if (herolvl > 44) *{ BeliarWeapNextLvL = 19; BeliarNextDamageChance = BeliarDamageChance_19; }<br> * * * *else if (herolvl > 42) *{ BeliarWeapNextLvL = 18; BeliarNextDamageChance = BeliarDamageChance_18; }<br> * * * *else if (herolvl > 40) *{ BeliarWeapNextLvL = 17; BeliarNextDamageChance = BeliarDamageChance_17; }<br> * * * *else if (herolvl > 38) *{ BeliarWeapNextLvL = 16; BeliarNextDamageChance = BeliarDamageChance_16; }<br> * * * *else if (herolvl > 36) *{ BeliarWeapNextLvL = 15; BeliarNextDamageChance = BeliarDamageChance_15; }<br> * * * *else if (herolvl > 34) *{ BeliarWeapNextLvL = 14; BeliarNextDamageChance = BeliarDamageChance_14; }<br> * * * *else if (herolvl > 32) *{ BeliarWeapNextLvL = 13; BeliarNextDamageChance = BeliarDamageChance_13; }<br> * * * *else if (herolvl > 30) *{ BeliarWeapNextLvL = 12; BeliarNextDamageChance = BeliarDamageChance_12; }<br> * * * *else if (herolvl > 28) *{ BeliarWeapNextLvL = 11; BeliarNextDamageChance = BeliarDamageChance_11; }<br> * * * *else if (herolvl > 26) *{ BeliarWeapNextLvL = 10; BeliarNextDamageChance = BeliarDamageChance_10; }<br> * * * *else if (herolvl > 24) *{ BeliarWeapNextLvL = 9; *BeliarNextDamageChance = BeliarDamageChance_09; }<br> * * * *else if (herolvl > 22) *{ BeliarWeapNextLvL = 8; *BeliarNextDamageChance = BeliarDamageChance_08; }<br> * * * *else if (herolvl > 20) *{ BeliarWeapNextLvL = 7; *BeliarNextDamageChance = BeliarDamageChance_07; }<br> * * * *else if (herolvl > 18) *{ BeliarWeapNextLvL = 6; *BeliarNextDamageChance = BeliarDamageChance_06; }<br> * * * *else if (herolvl > 16) *{ BeliarWeapNextLvL = 5; *BeliarNextDamageChance = BeliarDamageChance_05; }<br> * * * *else if (herolvl > 14) *{ BeliarWeapNextLvL = 4; *BeliarNextDamageChance = BeliarDamageChance_04; }<br> * * * *else if (herolvl > 12) *{ BeliarWeapNextLvL = 3; *BeliarNextDamageChance = BeliarDamageChance_03; }<br> * * * *else if (herolvl > 10) *{ BeliarWeapNextLvL = 2; *BeliarNextDamageChance = BeliarDamageChance_02; }<br> * * * *else if (herolvl <= 10) { BeliarWeapNextLvL = 1; *BeliarNextDamageChance = BeliarDamageChance_01; };<br> * *};<br> * *// если текущий уровень оружия < найденного<br> * *if(BeliarWeapCurrentLvL < BeliarWeapNextLvL)<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *return FALSE; * * * // Примечание: добавлено мной<br>};<br><br>// Функция улучшения оружия Белиара<br>func void B_UpgrateBeliarsWeapon()<br>{<br> * *var int BeliarsTribute;<br> * *var string concatText;<br> * *// расчет кол-ва отбираемой жизни<br> * *BeliarsTribute = ((BeliarWeapNextLvL - BeliarWeapCurrentLvL) * 5);<br> * *// уменьших макс. жизнь ГГ<br> * *hero.attribute[ATR_HITPOINTS_MAX] = (hero.attribute[ATR_HITPOINTS_MAX] - BeliarsTribute);<br> * *// если жизнь уменьшена<br> * *if(BeliarsTribute > 0)<br> * *{<br> * * * *// создать строку "Жизненная энергия -" кол-во едениц жизни<br> * * * *concatText = ConcatStrings(PRINT_Beliarshitpoints_MAX,IntToStri ng(BeliarsTribute));<br> * * * *// вывод на экран<br> * * * *PrintScreen(concatText,-1,-1,FONT_Screen,4);<br> * *};<br> * *// установить текущие шанс доп. повреждения и уровень оружия<br> * *BeliarDamageChance = BeliarNextDamageChance;<br> * *BeliarWeapCurrentLvL = BeliarWeapNextLvL;<br> * *// если ГГ маг Огня<br> * *if(hero.guild == GIL_KDF)<br> * *{<br> * * * *// очистить диалог улучшения рун<br> * * * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br> * * * *// создать диалог улучшения рун (записать пункты выбора в зависимости от текущего уровня оружия)<br> * * * *if(BeliarWeapCurrentLvL >= 1) * <br> * * * *{<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_GreenTentacle,PС_Pra<br>yShrine_UPGRATEB ELIARSWEAPON_GreenTentacle);<br> * * * *};<br> * * * *if(BeliarWeapCurrentLvL >= 2) <br> * * * *{<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_SuckEnergy,PC_P<br>rayShrine_UPGRATEBELI ARSWEAPON_SuckEnergy);<br> * * * * * *<br> * * * *};<br> * * * *if(BeliarWeapCurrentLvL >= 3) <br> * * * *{<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_SummonGuardian,<br>PC_PrayShrine_UPGRATE BELIARSWEAPON_NAME_SPL_SummonGuardian);<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_BeliarsRage,PC_<br>PrayShrine_UPGRATEBEL IARSWEAPON_BeliarsRage);<br> * * * *};<br> * * * *if(BeliarWeapCurrentLvL >= 4) <br> * * * *{<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_Swarm,PC_PraySh<br>rine_UPGRATEBELIARSWE APON_Swarm);<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_summonZombie,PC<br>_PrayShrine_UPGRATEBE LIARSWEAPON_summonZombie);<br> * * * *};<br> * * * *if(BeliarWeapCurrentLvL >= 5) <br> * * * *{<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_Skull,PC_PraySh<br>rine_UPGRATEBELIARSWE APON_SPL_Skull);<br> * * * *};<br> * *}<br> * *else<br> * *{<br> * * * *// если у ГГ более развит одноручник<br> * * * *if((hero.HitChance[NPC_TALENT_1H]) > (hero.HitChance[NPC_TALENT_2H]))<br> * * * *{<br> * * * * * *// создать в инвентаре ГГ одноручник в зависимости от текущего уровня оружия<br> * * * * * *if * * (BeliarWeapCurrentLvL <= 1) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_01); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 2) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_02); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 3) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_03); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 4) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_04); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 5) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_05); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 6) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_06); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 7) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_07); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 8) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_08); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 9) *{ CreateInvItem(hero,ItMw_BeliarWeapon_1H_09); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 10) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_10); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 11) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_11); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 12) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_12); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 13) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_13); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 14) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_14); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 15) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_15); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 16) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_16); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 17) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_17); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 18) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_18); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 19) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_19); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 20) { CreateInvItem(hero,ItMw_BeliarWeapon_1H_20); };<br> * * * * * *// визуальный эффект улучшения меча (Примечание: правильнее здесь и далее все self заменить на hero)<br> * * * * * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE);<br> * * * * * *// музычка<br> * * * * * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * * * * * *// оружие улучшено<br> * * * * * *BeliarsWeaponUpgrated = TRUE;<br> * * * *}<br> * * * *else // иначе двуручник<br> * * * *{<br> * * * * * *// создать в инвентаре ГГ двуручник в зависимости от текущего уровня оружия<br> * * * * * *if * * (BeliarWeapCurrentLvL <= 1) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_01); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 2) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_02); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 3) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_03); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 4) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_04); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 5) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_05); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 6) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_06); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 7) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_07); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 8) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_08); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 9) *{ CreateInvItem(hero,ItMw_BeliarWeapon_2H_09); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 10) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_10); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 11) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_11); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 12) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_12); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 13) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_13); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 14) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_14); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 15) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_15); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 16) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_16); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 17) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_17); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 18) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_18); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 19) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_19); }<br> * * * * * *else if(BeliarWeapCurrentLvL == 20) { CreateInvItem(hero,ItMw_BeliarWeapon_2H_20); };<br> * * * * * *// визуальный эффект улучшения меча<br> * * * * * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE); * * *<br> * * * * * *// музычка<br> * * * * * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * * * * * *// оружие улучшено<br> * * * * * *BeliarsWeaponUpgrated = TRUE;<br> * * * *};<br> * *};<br>};<br><br>...продолжение следует<br>
|
Re: Уроки скриптологии
// Создать руну Зеленые щупальца (для остальных рун аналогично)<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_GreenTentacle() <br>{<br> * *// создать в инвентаре ГГ<br> * *CreateInvItem(hero,ItRu_GreenTentacle);<br> * *// визуальный эффект<br> * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE);<br> * *// вывод текста "Белиар дарит тебе другое заклинание"<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *// музычка<br> * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * *// оружие улучшено<br> * *BeliarsWeaponUpgrated = TRUE;<br> * *// удвалить этот пункт выбора меню<br> * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br>};<br><br>// Создать руну Украсть энергию<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_SuckEnergy ()<br>{<br> * *CreateInvItem(hero,ItRu_SuckEnergy);<br> * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * * * <br> * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * *BeliarsWeaponUpgrated = TRUE;<br> * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br>};<br><br>// Создать руну Создать стража<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_NAME_SPL_Summon Guardian()<br>{<br> * *CreateInvItem(hero,ItRu_SummonGuardian);<br> * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * * * <br> * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * *BeliarsWeaponUpgrated = TRUE;<br> * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br>};<br><br>// Создать руну Ярость Белиара<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_BeliarsRage()<b r>{<br> * *CreateInvItem(hero,ItRu_BeliarsRage);<br> * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE); *<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * *BeliarsWeaponUpgrated = TRUE;<br> * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br>};<br><br>// Создать руну Рой<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_Swarm()<br>{<br > * *CreateInvItem(hero,ItRu_Swarm);<br> * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * *BeliarsWeaponUpgrated = TRUE;<br> * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br>};<br><br>// Создать руну Создать зомби<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_summonZombie()< br>{<br> * *CreateInvItem(hero,ItRu_SummonZombie);<br> * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * *BeliarsWeaponUpgrated = TRUE;<br> * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br>};<br><br>// Создать руну Крик мертвых<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_SPL_Skull()<br> {<br> * *CreateInvItem(hero,ItRu_Skull);<br> * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrat e",self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play("CS_Prayer_WaveOfInsanity");<b r> * *BeliarsWeaponUpgrated = TRUE;<br> * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON);<br>};<br><br><br> * *19. Функции, связанные с одержимостью ГГ.<br><br>Файл B_ScObsession.d<br><br>var int SC_IsObsessed; * * * * *// ГГ страдает одержимостью (TRUE)<br>var int SC_ObsessionCounter; * *// счетчик кол-ва проклятий ГГ<br><br>// Устранить состояние одержимости НПС<br>// ----------------------------------------------------------------<br>// Аргумент: heiler - НПС<br>func void B_ClearSCObsession(var C_NPC heiler) *<br>{<br> * *// если НПС не ГГ<br> * *if(Hlp_GetInstanceID(heiler) != Hlp_GetInstanceID(hero))<br> * *{<br> * * * *// закончить диалог<br> * * * *AI_StopProcessInfos(heiler);<br> * *};<br> * *// одержимость снята<br> * *SC_IsObsessed = FALSE;<br> * *// сброс счетчика проклятий<br> * *SC_ObsessionCounter = 0;<br> * *// вывод текста "Ты чувствуешь себя освобожденным!"<br> * *PrintScreen(PRINT_ClearSCObsession,-1,-1,FONT_Screen,3);<br>};<br><br>// Установить состояние одержимости НПС<br>// ----------------------------------------------------------------<br>// Аргумент: dementor - НПС<br>func void B_SCIsObsessed(var C_NPC dementor) * *<br>{<br> * *// если НПС не ГГ<br> * *if(Hlp_GetInstanceID(dementor) != Hlp_GetInstanceID(hero))<br> * *{<br> * * * *// закончить диалог<br> * * * *AI_StopProcessInfos(dementor);<br> * *};<br> * *// если ГГ не имеет амулета Зов Души<br> * *if(Npc_HasItems(hero,ItAm_Prot_BlackEye_Mis) == FALSE)<br> * *{<br> * * * *// если счетчик проклятий >= 2<br> * * * *if(SC_ObsessionCounter >= 2)<br> * * * *{<br> * * * * * *// установить одержимость<br> * * * * * *SC_IsObsessed = TRUE;<br> * * * * * *// вывод текста "Чувство одержимости преследует тебя!"<br> * * * * * *PrintScreen(PRINT_SCIsObsessed,-1,-1,FONT_Screen,2);<br> * * * *};<br> * * * *// счетчик проклятий ++<br> * * * *SC_ObsessionCounter = SC_ObsessionCounter + 1;<br> * *};<br>};<br><br><br> * *20. Функции кладоискателя.<br><br>Файл B_ScUsesRake.d<br><br>var int RAKEPLACE[50]; * * * * * * * * *// массив флагов клад выкопан (TRUE)<br>const int Greg_FirstSecret *= 1; * * * *// индекс первого клада<br>const int RAKE_BUDDEL_DIST_MAX = 300; * // (не используется)<br>const int RAKE_BUDDEL_DIST_MIN = 200; * // макс. расстояние до клада, на каком можно копать<br><br>// ГГ нашел закопанное сокровище<br>// ----------------------------------------------------------------<br>// Аргумент: itm - найденный предмет<br>func void RakeTreasureSuccess(var C_ITEM itm)<br>{<br> * *// визуальный эффект на предмете<br> * *Wld_PlayEffect("spellFX_ItemAusbuddeln" ,itm,itm,0,0,0,FALSE);<br> * *// ГГ говорит сам себе (SVM фраза) "нашел сокровища"<br> * *B_Say_Overlay(self,self,"$FOUNDTREASURE" ;);<br> * *// получить экспу (50 * номер Главы)<br> * *B_GivePlayerXP(XP_Ambient);<br>};<br><br>// Не используется, можно удалить<br>func void B_SCUsesRake(var C_NPC slf)<br>{<br>};<br><br>// Добыть сокровище<br>// ----------------------------------------------------------------<br>// Данная функция повешена в Спейсере на объект oCMobInter и вызывается после ударов ГГ киркой по красному кресту<br>func void B_SCGetTreasure_S1()<br>{<br> * *// клад выкопал ГГ<br> * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(hero))<br> * *{<br> * * * *// если ГГ находится не далее 2м от нужной точки и клад в данной точке не выкопан<br> * * * *if((Npc_GetDistToWP(hero,"NW_BIGFARM_LAKE_CA VE_07") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[Greg_FirstSecret] == FALSE))<br> * * * *{<br> * * * * * *// выкопать предмет<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket25,"NW_BIGFARM _LAKE_CAVE_07");<br> * * * * * *// установить флаг клад выкопан<br> * * * * * *RAKEPLACE[Greg_FirstSecret] = TRUE;<br> * * * * * *// получить экспу<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket25);<br> * * * * * *var C_ITEM GregsArmor;<br> * * * * * *// получить ссылку на одежду Грега<br> * * * * * *GregsArmor = Npc_GetEquippedArmor(Greg_NW);<br> * * * * * *// если это не "Одежда капитана"<br> * * * * * *if(Hlp_IsItem(GregsArmor,ITAR_PIR_H_Addon) == FALSE)<br> * * * * * *{<br> * * * * * * * *// экипировать Грега Одеждой капитана<br> * * * * * * * *AI_EquipArmor(Greg_NW,ITAR_PIR_H_Addon); * *<br> * * * * * *};<br> * * * *}<br> * * * *// если ГГ находится не далее 2м от нужной точки и клад в данной точке не выкопан<br> * * * *else if((Npc_GetDistToWP(hero,"NW_LAKE_GREG_TREASU RE_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[2] == FALSE))<br> * * * *{<br> * * * * * *// выкопать предмет<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket100,"NW_LAKE_G REG_TREASURE_01");<br> * * * * * *// установить флаг клад выкопан<br> * * * * * *RAKEPLACE[2] = TRUE;<br> * * * * * *// получить экспу<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket100);<br> * * * *}<br> * * * *// для всех остальных кладов аналогично<br> * * * *else if((Npc_GetDistToWP(hero,"NW_FARM3_GREGTREASU RE_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[3] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_GoldCup,"NW_FARM3_GREGTR EASURE_01");<br> * * * * * *RAKEPLACE[3] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItMi_GoldCup);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"NW_FARM3_MOUNTAINLA KE_MONSTER_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[4] == FALSE))<br> * * * *{ * <br> * * * * * *Wld_InsertItem(ItMi_SilverChalice,"NW_FARM3_ MOUNTAINLAKE_MONSTER_01");<br> * * * * * *RAKEPLACE[4] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItMi_SilverChalice);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"NW_BIGMILL_FARM3_01 ") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[5] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItAm_Prot_Point_01,"NW_BIGMIL L_FARM3_01");<br> * * * * * *RAKEPLACE[5] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItAm_Prot_Point_01);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPL ACE_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[12] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon," ADW_ENTRANCE_RAKEPLACE_01");<br> * * * * * *RAKEPLACE[12] = TRUE;<br> * * * * * *Wld_InsertItem(ItMi_SilverChalice,"ADW_ENTRA NCE_RAKEPLACE_01");<br> * * * * * *RakeTreasureSuccess(ItMi_SilverChalice);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPL ACE_02") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[13] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItWr_DexStonePlate1_Addon,"AD W_ENTRANCE_RAKEPLACE_02");<br> * * * * * *RAKEPLACE[13] = TRUE;<br> * * * * * *Wld_InsertItem(ItMi_GoldCup,"ADW_ENTRANCE_RA KEPLACE_02"); * * * * * * * * * * * * * * * * * * * *<br> * * * * * *RakeTreasureSuccess(ItMi_GoldCup);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPL ACE_03") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[14] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItPo_Perm_Health,"ADW_ENTRANC E_RAKEPLACE_03");<br> * * * * * *RAKEPLACE[14] = TRUE;<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket100,"ADW_ENTRA NCE_RAKEPLACE_03"); * * * * * * * * * * * * * * * * * * * * <br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket100);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPL ACE_04") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[15] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_SilverRing,"ADW_ENTRANCE _RAKEPLACE_04");<br> * * * * * *RAKEPLACE[15] = TRUE;<br> * * * * * *Wld_InsertItem(ItMw_Schwert4,"ADW_ENTRANCE_R AKEPLACE_04");<br> * * * * * *RakeTreasureSuccess(ItMw_Schwert4);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_GREGTREA SURE_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[16] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket100,"ADW_VALLE Y_GREGTREASURE_01");<br> * * * * * *RAKEPLACE[16] = TRUE;<br> * * * * * *Wld_InsertItem(ItPo_Health_02,"ADW_VALLEY_GR EGTREASURE_01");<br> * * * * * *Wld_InsertItem(ItPo_Mana_03,"ADW_VALLEY_GREG TREASURE_01");<br> * * * * * *RakeTreasureSuccess(ItPo_Mana_03);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_RAKEPLAC E_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[17] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItPo_Mana_Addon_04,"ADW_VALLE Y_RAKEPLACE_01");<br> * * * * * *RAKEPLACE[17] = TRUE;<br> * * * * * *Wld_InsertItem(ItPo_Speed,"ADW_VALLEY_RAKEPL ACE_01");<br> * * * * * *Wld_InsertItem(ItPo_Mana_02,"ADW_VALLEY_RAKE PLACE_01");<br> * * * * * *RakeTreasureSuccess(ItPo_Mana_02);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_RAKEPLAC E_02") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[18] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItPo_Health_Addon_04,"ADW_VAL LEY_RAKEPLACE_02");<br> * * * * * *RAKEPLACE[18] = TRUE;<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon," ADW_VALLEY_RAKEPLACE_02");<br> * * * * * *Wld_InsertItem(ItSe_LockpickFisch,"ADW_VALLE Y_RAKEPLACE_02");<br> * * * * * *RakeTreasureSuccess(ItSe_LockpickFisch);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_RAKEPLAC E_03") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[19] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSc_Firerain,"ADW_VALLEY_RAK EPLACE_03");<br> * * * * * *RAKEPLACE[19] = TRUE;<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket50,"ADW_VALLEY _RAKEPLACE_03");<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon," ADW_VALLEY_RAKEPLACE_03");<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket50);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAK EPLACE_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[20] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_Honigtabak,"ADW_BANDITSC AMP_RAKEPLACE_01");<br> * * * * * *RAKEPLACE[20] = TRUE;<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon," ADW_BANDITSCAMP_RAKEPLACE_01");<br> * * * * * *Wld_InsertItem(ItAm_Addon_MANA,"ADW_BANDITSC AMP_RAKEPLACE_01");<br> * * * * * *RakeTreasureSuccess(ItAm_Addon_MANA);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAK EPLACE_02") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[21] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSc_SumGobSkel,"ADW_BANDITSC AMP_RAKEPLACE_02");<br> * * * * * *RAKEPLACE[21] = TRUE;<br> * * * * * *Wld_InsertItem(ItPo_Mana_03,"ADW_BANDITSCAMP _RAKEPLACE_02");<br> * * * * * *RakeTreasureSuccess(ItPo_Mana_03);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAK EPLACE_03") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[22] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSc_TrfShadowbeast,"ADW_BAND ITSCAMP_RAKEPLACE_03");<br> * * * * * *RAKEPLACE[22] = TRUE;<br> * * * * * *Wld_InsertItem(ItSc_LightHeal,"ADW_BANDITSCA MP_RAKEPLACE_03");<br> * * * * * *RakeTreasureSuccess(ItSc_LightHeal);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAK EPLACE_04") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[23] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon," ADW_BANDITSCAMP_RAKEPLACE_04");<br> * * * * * *RAKEPLACE[23] = TRUE;<br> * * * * * *Wld_InsertItem(ItRi_HP_01,"ADW_BANDITSCAMP_R AKEPLACE_04");<br> * * * * * *RakeTreasureSuccess(ItRi_HP_01);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_MINE1_11 ") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[24] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSE_Addon_FrancisChest,"ADW_ CANYON_MINE1_11");<br> * * * * * *RAKEPLACE[24] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItSE_Addon_FrancisChest);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLAC E_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[25] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_RuneBlank,"ADW_CANYON_RA KEPLACE_01");<br> * * * * * *RAKEPLACE[25] = TRUE;<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket25,"ADW_CANYON _RAKEPLACE_01");<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket25);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLAC E_02") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[26] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_Nugget,"ADW_CANYON_RAKEP LACE_02");<br> * * * * * *RAKEPLACE[26] = TRUE;<br> * * * * * *Wld_InsertItem(ItSc_LightningFlash,"ADW_CANY ON_RAKEPLACE_02");<br> * * * * * *Wld_InsertItem(ItSc_ChargeFireBall,"ADW_CANY ON_RAKEPLACE_02");<br> * * * * * *RakeTreasureSuccess(ItSc_ChargeFireBall);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLAC E_03") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[27] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket25,"ADW_CANYON _RAKEPLACE_03");<br> * * * * * *RAKEPLACE[27] = TRUE;<br> * * * * * *Wld_InsertItem(ItWr_ManaStonePlate1_Addon,"A DW_CANYON_RAKEPLACE_03");<br> * * * * * *Wld_InsertItem(ItMi_Pitch,"ADW_CANYON_RAKEPL ACE_03");<br> * * * * * *RakeTreasureSuccess(ItMi_Pitch);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLAC E_04") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[28] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_SilverRing,"ADW_CANYON_R AKEPLACE_04");<br> * * * * * *RAKEPLACE[28] = TRUE;<br> * * * * * *Wld_InsertItem(ItMi_Sulfur,"ADW_CANYON_RAKEP LACE_04");<br> * * * * * *Wld_InsertItem(ItWr_TwoHStonePlate1_Addon,"A DW_CANYON_RAKEPLACE_04");<br> * * * * * *RakeTreasureSuccess(ItWr_TwoHStonePlate1_Addon);< br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLAC E_05") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[29] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_GoldRing,"ADW_CANYON_RAK EPLACE_05");<br> * * * * * *RAKEPLACE[29] = TRUE;<br> * * * * * *Wld_InsertItem(ItAt_DragonBlood,"ADW_CANYON_ RAKEPLACE_05");<br> * * * * * *RakeTreasureSuccess(ItAt_DragonBlood);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,"ADW_PIRATECAMP_GREG TREASURE_KOMPASS") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[30] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMI_Addon_Kompass_Mis,"ADW_P IRATECAMP_GREGTREASURE_KOMPASS");<br> * * * * * *RAKEPLACE[30] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItMI_Addon_Kompass_Mis);<br> * * * *};<br> * *}; *<br>};<br><br><br> * *21. Увеличить нывык по добыче золота.<br><br>Файл B_Upgrade_Hero_Hack.d<br><br>// ************************************************** **************<br>// Увеличить нывык по добыче золота<br>// ************************************************** **************<br>// Аргумент: Wert - пункты увеличения навыка<br>func void B_Upgrade_Hero_HackChance(var int Wert)<br>{<br> * *var string concatText;<br> * *// "Повысил знание о добыче золота (+ " *+ Wert<br> * *concatText = ConcatStrings(PRINT_ADDON_HACKCHANCE,IntToString(W ert));<br> * *// текст += ")"<br> * *concatText = ConcatStrings(concatText,")");<br> * *PrintScreen(concatText,-1,34,FONT_ScreenSmall,2);<br> * *// увеличить навык по добыче золота<br> * *Hero_HackChance = (Hero_HackChance + Wert);<br> * *// музычка<br> * *Snd_Play("Geldbeutel");<br>};<br><br><br> * *22. Известен ли один из шнапсов?<br><br>Файл B_Addon_Knows_Schnaps.d<br><br>// ************************************************** **************<br>// Известен ли один из шнапсов?<br>// ************************************************** **************<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>// Примечание: данная функция не используется, можно удалить<br>func int C_Addon_Knows_Schnaps()<br>{<br> * * <br> * *if (Knows_LousHammer == TRUE)<br> * *¦¦ (Knows_RuebenSchnaps == TRUE)<br> * *¦¦ (Knows_VinoSchnaps == TRUE) * * *<br> * *¦¦ (Knows_PiratenSchnaps == TRUE)<br> * *¦¦ (Knows_Magierschnaps == TRUE) <br> * *¦¦ (Knows_Sumpfkrautschnaps == TRUE)<br> * *{<br> * * * *return TRUE;<br> * *}<br> * *return FALSE;<br>};<br><br><br> * *23. Функции получения бонусов артефактных предметов.<br><br>Файл C_ArtefactValues.d<br><br>// Данные функции возвращают бонус одетых предметов в зависимости от одетого набора:<br>// Амулет, Амулет + Кольцо, два Кольца, Амулет + два Кольца<br><br>// Получить бонус к жизни<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: бонус<br>func int C_HP_ArtefaktValue()<br>{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <br> * *var int HP_Artefakt_Value;<br> * *// бонус = 0<br> * *HP_Artefakt_Value = 0;<br> * *// если одет амулет<br> * *if(HP_Amulett_Equipped == TRUE) * * * * <br> * *{<br> * * * *// если одето одно кольцо<br> * * * *if(HP_Ring_1_Equipped == TRUE) * * * * *<br> * * * *{<br> * * * * * *// если одето второе кольцо<br> * * * * * *if(HP_Ring_2_Equipped == TRUE)<br> * * * * * *{<br> * * * * * * * *// если визуальных эффектов не было<br> * * * * * * * *if(HP_Artefakt_Effekt == FALSE)<br> * * * * * * * *{<br> * * * * * * * * * *// выдать эффект<br> * * * * * * * * * *Wld_PlayEffect("SPELLFX_LIGHTSTAR_WHITE" ;,self,self,0,0,0,FALSE);<br> * * * * * * * * * *// музычка<br> * * * * * * * * * *Snd_Play("MFX_LIGHT_CAST");<br> * * * * * * * * * *// установить флаг одноразовости эффекта<br> * * * * * * * * * *HP_Artefakt_Effekt = TRUE;<br> * * * * * * * *};<br> * * * * * * * *// задать бонус = 250<br> * * * * * * * *HP_Artefakt_Value = HP_Amulett_Artefakt_Bonus;<br> * * * * * *}<br> * * * * * *else // амулет + кольцо<br> * * * * * *{<br> * * * * * * * *// задать бонус = 150<br> * * * * * * * *HP_Artefakt_Value = HP_Amulett_EinRing_Bonus;<br> * * * * * *};<br> * * * *}<br> * * * *// если одето второе кольцо<br> * * * *else if(HP_Ring_2_Equipped == TRUE)<br> * * * *{<br> * * * * * *// задать бонус = 150<br> * * * * * *HP_Artefakt_Value = HP_Amulett_EinRing_Bonus;<br> * * * *}<br> * * * *else // амулет<br> * * * *{<br> * * * * * *// задать бонус = 50<br> * * * * * *HP_Artefakt_Value = HP_Amulett_Solo_Bonus;<br> * * * *};<br> * *}<br> * *// если одето одно кольцо<br> * *else if(HP_Ring_1_Equipped == TRUE)<br> * *{<br> * * * *// если одето второе кольцо<br> * * * *if (HP_Ring_2_Equipped == TRUE)<br> * * * *{<br> * * * * * *// задать бонус = 100<br> * * * * * *HP_Artefakt_Value = HP_Ring_Double_Bonus;<br> * * * *}<br> * * * *else // кольцо<br> * * * *{<br> * * * * * *// задать бонус = 30<br> * * * * * *HP_Artefakt_Value = HP_Ring_Solo_Bonus;<br> * * * *};<br> * *}<br> * *// если одето второе кольцо<br> * *else if(HP_Ring_2_Equipped == TRUE)<br> * *{<br> * * * *// задать бонус = 30<br> * * * *HP_Artefakt_Value = HP_Ring_Solo_Bonus;<br> * *};<br> * *return HP_Artefakt_Value;<br>};<br><br>// Получить бонус к магии (аналогично предыдущей)<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: бонус<br>func int C_MA_ArtefaktValue()<br>{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <br> * *var int MA_Artefakt_Value; * * * * * * * * * * * * * * *<br> * *MA_Artefakt_Value = 0; * * * * * * * * * * * * * * * * *<br> * *if(MA_Amulett_Equipped == TRUE) * * * * <br> * *{ * * * * * * * * * * * * * * * * * * * <br> * * * *if(MA_Ring_1_Equipped == TRUE) * * * * *<br> * * * *{<br> * * * * * *if(MA_Ring_2_Equipped == TRUE)<br> * * * * * *{<br> * * * * * * * *if(MA_Artefakt_Effekt == FALSE)<br> * * * * * * * *{<br> * * * * * * * * * *Wld_PlayEffect("SPELLFX_LIGHTSTAR_WHITE" ;,self,self,0,0,0,FALSE);<br> * * * * * * * * * *Snd_Play("MFX_LIGHT_CAST");<br> * * * * * * * * * *MA_Artefakt_Effekt = TRUE;<br> * * * * * * * *};<br> * * * * * * * *MA_Artefakt_Value = MA_Amulett_Artefakt_Bonus;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *MA_Artefakt_Value = MA_Amulett_EinRing_Bonus;<br> * * * * * *};<br> * * * *}<br> * * * *else if(MA_Ring_2_Equipped == TRUE)<br> * * * *{<br> * * * * * *MA_Artefakt_Value = MA_Amulett_EinRing_Bonus;<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *MA_Artefakt_Value = MA_Amulett_Solo_Bonus;<br> * * * *};<br> * *}<br> * *else if(MA_Ring_1_Equipped == TRUE)<br> * *{<br> * * * *if(MA_Ring_2_Equipped == TRUE)<br> * * * *{<br> * * * * * *MA_Artefakt_Value = MA_Ring_Double_Bonus;<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *MA_Artefakt_Value = MA_Ring_Solo_Bonus;<br> * * * *};<br> * *}<br> * *else if(MA_Ring_2_Equipped == TRUE)<br> * *{<br> * * * *MA_Artefakt_Value = MA_Ring_Solo_Bonus;<br> * *};<br> * *return MA_Artefakt_Value;<br>};<br><br>// Получить бонус к сиде (аналогично предыдущей)<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: бонус<br>func int C_STR_ArtefaktValue()<br>{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <br> * *var int STR_Artefakt_Value; * * * * * * * * * * * * * * * * <br> * *STR_Artefakt_Value = 0; * * * * * * * * * * * * * * * * * * <br> * *if(STR_Amulett_Equipped == TRUE) * * * *<br> * *{ * * * * * * * * * * * * * * * * * * * <br> * * * *if(STR_Ring_1_Equipped == TRUE) * * * * <br> * * * *{<br> * * * * * *if(STR_Ring_2_Equipped == TRUE)<br> * * * * * *{<br> * * * * * * * *if(STR_Artefakt_Effekt == FALSE)<br> * * * * * * * *{<br> * * * * * * * * * *Wld_PlayEffect("SPELLFX_LIGHTSTAR_WHITE" ;,self,self,0,0,0,FALSE);<br> * * * * * * * * * *Snd_Play("MFX_LIGHT_CAST");<br> * * * * * * * * * *STR_Artefakt_Effekt = TRUE;<br> * * * * * * * *};<br> * * * * * * * *STR_Artefakt_Value = STR_Amulett_Artefakt_Bonus;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *STR_Artefakt_Value = STR_Amulett_EinRing_Bonus;<br> * * * * * *};<br> * * * *}<br> * * * *else if(STR_Ring_2_Equipped == TRUE)<br> * * * *{<br> * * * * * *STR_Artefakt_Value = STR_Amulett_EinRing_Bonus;<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *STR_Artefakt_Value = STR_Amulett_Solo_Bonus;<br> * * * *};<br> * *}<br> * *else if(STR_Ring_1_Equipped == TRUE)<br> * *{<br> * * * *if(STR_Ring_2_Equipped == TRUE)<br> * * * *{<br> * * * * * *STR_Artefakt_Value = STR_Ring_Double_Bonus;<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *STR_Artefakt_Value = STR_Ring_Solo_Bonus;<br> * * * *};<br> * *}<br> * *else if(STR_Ring_2_Equipped == TRUE)<br> * *{<br> * * * *STR_Artefakt_Value = STR_Ring_Solo_Bonus;<br> * *};<br> * *return STR_Artefakt_Value;<br>};<br><br>
|
Re: Уроки скриптологии
2Killer-XXX:<br>
Цитата:
|
Re: Уроки скриптологии
PFX система (Эффекты излучаемых частиц).<br><br>1. Вступление.<br><br>Эффекты излучаемых частиц (ParticleFX), далее PFX, которые может производить система Готики, задаются набором параметров. Определение эффектов и их параметров выполняется в Daedalus скриптах. Рассмотрим эти файлы:<br>_WORK\DATA\SCRIPTS\SYSTEM\ParticleFX.src – исходный файл для компиляции всех файлов PFX системы.<br>_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\ParticleFX.d – декларация класса C_PARTICLEFX.<br>_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\PfxInst.d – содержит определения общих инстанций PFX системы.<br>_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\PfxInstMagic.d - содержит определения инстанций магических заклинаний *PFX системы.<br>_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\PfxInstEngine.d - содержит определения инстанций ядра PFX системы. Они не должны изменяться!<br>PFX эффекты могут вызываться также из .MDS файлов и синхронизироваться с анимациями. Смотри для этого соответствующую документацию.<br>Что можно сказать про быстродействие, то оно прямо зависит от произведённого кол-ва частиц и удаления их от камеры. Чем больше эти параметры, тем ниже быстродействие, причем оно в большей степени зависит от удаленности частиц от камеры.<br>Активизация следующих особенностей PFX эффектов значительно уменьшает быстродействие:<br>- Столкновения частиц<br>- Пометки поверхности<br>- Остаточный след<br><br>2. Параметры PFX эффектов.<br><br> * * *Параметры как правило редактируются Спейсером, но могут также изменяться в файлах скриптов. В этой статье рассматриваются более 40 параметров PFX эффектов. Имена параметров, их типы, задаваемые значения и примеры значений для каждой группы параметров сведены в таблицу. Параметры, имена которых оканчиваются на _S, являются строковыми переменными и инициализируются одним или несколькими значениями, заключенными в кавычки и разделёнными пробелом. Если кол-во значений ошибочно, то берутся значения, стоящие в списке первыми, также допустимо не инициализировать строковую переменную.<br> * * *Значение BOOL указывает, что параметр может принимать значение истина (1 или TRUE) или ложь (0 или FALSE). Значение VEC указывает, что параметр является вектором размерности n из реальных чисел. Значение ANGLE указывает, что параметр является углом и его значение задается в градусах. Значение FOR указывает ссылку на систему отсчета, действительными системами отсчета являются World (мир) и Object (объект), причем PFX эффекты для объекта значительно снижают быстродействие и должны использоваться только в том случае, если это действительно необходимо.<br><br>2.1. Излучение - Временные параметры * <br><br><br>Тип * * * * *Параметр * * * * *Значение * *Пример<br>VAR FLOAT * *ppsValue; * * * * * * * * * * 64<br>VAR STRING * ppsScaleKeys_S; * * * * * * * "1 0.2 0 16 0.1"<br>VAR INT * * *ppsIsLooping; * * BOOL * * * *1<br>VAR INT * * *ppsIsSmooth; * * *BOOL * * * *0<br>VAR FLOAT * *ppsFPS; * * * * * * * * * * * 0.5<br>VAR STRING * ppsCreateEm_S; * * * * * * * *???<br>VAR FLOAT * *ppsCreateEmDelay; * * * * * * ???<br><br> Pps в имени переменной означает кол-во частиц в секунду (particles per second). Эти параметры управляют временным поведением излучаемых частиц. Параметр ppsValue *определяет кол-во излучаемых частиц в секунду. Периоды времени излучения задаются параметром ppsScaleKeys_S. Если ScaleKeys задан, то будет воспроизведен список этих ключей с определенной скоростью (ppsFPS), причем будет выполнена интерполяция (сглаживание) между отдельными ключами, если ppsIsSmooth установлен. Если установлен параметр ppsIsLooping, список будет излучаться циклически, иначе список будет излучен один раз и эффект закончится как только исчезнут последние частицы. Фактически в секунду излучается кол-во частиц определенное формулой ppsValue * отдельное значение ppsScaleKeys. В примере в первую секунду будет выпущено 64 частицы, во вторую – 13 частиц, в третью – 0 и т.д. Если ScaleKeys не задан и параметр ppsIsLooping сброшен, то ppsValue определяет кол-во частиц, которые будут выпущены сразу в начале эффекта.<br>Описание параметров ppsCreateEm_S и ppsCreateEmDelay мне не известно.<br><br>Примеры:<br>Однократное излучение<br>PpsValue = 40;<br>PpsScaleKeys_S = " ";<br>PpsIsLooping = 0; *<br>PpsIsSmooth = 0; *<br>PpsFPS = 0; *<br><br>Постоянное излучение<br>PpsValue = 40; *<br>PpsScaleKeys_S = " "; *<br>PpsIsLooping = 1; *<br>PpsIsSmooth = 0; *<br>PpsFPS = 0; *<br><br>Излучение во временном периоде<br>PpsValue = 40; *<br>PpsScaleKeys_S = "1.0"; *<br>PpsIsLooping = 0; *<br>PpsIsSmooth = 0; *<br>PpsFPS = 5; *<br><br>Излучение порывами<br>PpsValue = 40; *<br>PpsScaleKeys_S = "1.0 0 0 0 1.0 1 6.0 0.2 0.5"; *<br>PpsIsLooping = 1; *<br>PpsIsSmooth = 1; *<br>PpsFPS ** * * = 0.8;<br><br>2.2. Излучение – Пространственное распределение<br><br>Тип * * * * *Параметр * * * * * * Значение * * * * * * * * * * * * * *Пример<br>VAR STRING * shpType_S; * * * * * "point,line,box,circle,sphere,mesh" mesh<br>VAR STRING * shpFOR_S; * * * * * *"world,object" * * * * * * * * * * *world<br>VAR STRING * shpOffsetVec_S; * * *VEC3 * * * * * * * * * * * * * * * *"0 1 0"<br>VAR STRING * shpDistribType_S; * *"RAND,UNIFORM,WALK" * * * * * * * * WALK<br>VAR FLOAT * *shpDistribWalkSpeed; * * * * * * * * * * * * * * * * * * 0.0001<br>VAR INT * * *shpIsVolume; * * * * BOOL * * * <br>VAR STRING * shpDim_S; * * * * * *VEC1/3 * * * * * * * * * * * * * * *"10", "23 32 20"<br>VAR STRING * snpMesh_S; * * * * * * * * * * * * * * * * * * * * * * * "cross.3ds"<br>VAR INT * * *shpMeshRender_B; * * BOOL * * * <br>VAR STRING * shpScaleKeys_S; * * * * * * * * * * * * * * * * * * * * *"[1.0] [0.8 0.9 0.2] [1.0]"<br>VAR INT * * *shpScaleIsLooping; * BOOL * * * <br>VAR INT * * *shpScaleIsSmooth; * *BOOL * * * <br>VAR FLOAT * *shpScaleFPS; * * * * * * * * * * * * * * * * * * * * * * 2<br><br> * * *Эти параметры определяют места, в которых создаются новые частицы. Для этой цели задаются параметры форм/поверхностей на которых создаются частицы. Устанавливаются также величины, локальные смещения и временное масштабирование излучающих форм.<br> * * *Параметр shpType_S задает тип излучающей поверхности, выбирается из списка. Если задан тип mesh, то параметром snpMesh_S определяется имя файла поверхности. Если установлен shpMeshRender_B, то производится рендеринг поверхности вместе с излучаемыми частицами. Тип point (излучение из точки) является самым быстрым типом.<br> * * *Параметр shpFOR_S определяет должно ли следовать излучение за поворотами поверхности (object – да, world – нет). <br> * * *Параметр shpOffsetVec_S задает вектор смещения локальной системы координат источника излучения.<br> * * *Параметр shpDistribType_S задает распределение излучаемых частиц по поверхности. RAND – случайное место излучения, UNIFORM – место выбирается упорядоченно и равномерно (работает только с типом line и circle), WALK - место выбирается упорядоченно и равномерно, но перемещается по поверхности(работает только с типом line и circle). Параметр shpDistribWalkSpeed задает скорость перемещения по поверхности источника излучения.<br> * * *Параметр shpIsVolume определяет где должны рождаться частицы, на краю поверхности – 0, на всей площади поверхности – 1.<br> * * *Параметр *shpDim_S задает размер излучаемой поверхности (кроме типа mesh) и является в зависимости от типа поверхности одномерным или трехмерным вектором (для line,circle,sphere – 1D, для box – 3D).<br> * * *Параметры shpScaleKeys_S, shpScaleIsLooping, shpScaleIsSmooth и shpScaleFPS определяют масштабирование поверхности во времени и по описанию идентичны соответствующим pps параметрам.<br><br>2.3. Частицы – Направление полета и скорость движения<br><br>Тип * * * *Параметр * * * * * *Значение * * * * * * * * * *Пример<br>VAR STRING dirMode_S; * * * * *"NONE,RAND,DIR,TARGET,MESH" mesh<br>VAR STRING dirFOR_S; * * * * * "world,object" * * * * * * *world<br>VAR STRING dirModeTargetFOR_S; "world,object" * * * * * * *world<br>VAR STRING dirModeTargetPos_S; VEC3 * * * * * * * * * * * *"30 23 67"<br>VAR FLOAT *dirAngleHead; * * * ANGLE [0..359] * * * <br>VAR FLOAT *dirAngleHeadVar; * *ANGLE [0..179] * * * <br>VAR FLOAT *dirAngleElev; * * * ANGLE [-90..+90] * * * <br>VAR FLOAT *dirAngleElevVar; * *ANGLE [-90..+90] * * * <br>VAR FLOAT *velAvg; * * * * * * CM/MSEC * * * * * * * * * * 0.3<br>VAR FLOAT *velVar; * * * * * * CM/MSEC * * * * * * * * * * 0.1<br><br> * * *Эти параметры определяют направление полета и скорость излучаемых частиц. <br> * * *Параметр dirMode_S задает направление полета частицы.<br> NONE или RAND – случайное направление полета частиц, излучаются шарообразно относительно источника.<br> DIR – направление полета частиц задается параметрами dirAngleHead и dirAngleElev, это углы соответственно направления движения и высоты подъема. Если заданы параметры dirAngleHeadVar и dirAngleElevVar, то выполняется дисперсия (изменение) заданных углов в пределах установленных величин. Замечание: по причине оптимизации углы движком точно не устанавливаются и можно получить непредсказуемое направление полета частиц, однако, юстировкой углов можно добиться приемлемого эффекта.<br> TARGET – излучение частиц направлено на определенную цель. Координаты цели задаются параметром dirModeTargetPos_S, в зависимости от типа цели dirModeTargetFOR_S, координаты являются локальными (для object) или глобальными (для world).<br> MESH – излучение с mesh поверхности, углы и дисперсии углов аналогичны значению DIR. <br> Параметры velAvg и velVar задают соответственно среднюю скорость и дисперсию скорости полета частиц.<br> Параметр dirFOR_S определяет к чему относится поверхность к объекту или миру. <br><br>2.4. Частицы – Время жизни<br><br>Тип * * * *Параметр * * *Значение * *Пример<br>VAR FLOAT *lspPartAvg; * MSEC * * * *700<br>VAR FLOAT *lspPartVar; * MSEC * * * *300<br><br> * * *Параметры lspPartAvg и lspPartVar задают соответственно среднее время и дисперсию времени жизни частиц.<br><br>2.5. Частицы – Летательные способности<br><br>Тип * * * * Параметр * * * Значение * * *Пример<br>VAR STRING *flyGravity_S; *VEC3 * * * * *0 -0.0001 0<br>VAR INT * * flyCollDet_B; *[0,1,2,3,4] * * * <br><br> * * *Параметр flyGravity_S задает вектор гравитации в относительной системе координат мира.<br> * * *Параметр flyCollDet_B определяет реакцию частиц при столкновении. Имеются следующие варианты: 0 – проверка на столкновение не проводится, 1 – тормозящее отражение, 2 – ускоряющее отражение, 3 – обнуление скорости частицы, 4 – удаление частицы. При включенном параметре уменьшается быстродействие.<br><br>2.6. Частицы – Визуализация<br><br>Тип * * * *Параметр * * * * * *Значение * * * * * * * * * Пример<br>VAR STRING visName_S; * * * * * * * * * * * * * * * * * * "NAME.TGA/.3DS"<br>VAR STRING visOrientation_S; * "NONE,VELO,VELO3D" * * * * VELO<br>VAR INT * *visTexIsQuadPoly; * BOOL * * *<br>VAR FLOAT *visTexAniFPS; * * * * * * * * * * * * * * * * *0.5<br>VAR INT * *visTexAniIsLooping; BOOL * * *<br>VAR STRING visTexColorStart_S; RGB [0..255,0..255,0..255] "155 91 25"<br>VAR STRING visTexColorEnd_S; * RGB [0..255,0..255,0..255] "155 91 25"<br>VAR STRING visSizeStart_S; * * VEC3 * * * * * * * * * * * "50 50"<br>VAR FLOAT *visSizeEndScale; * *[0..1..x] * * * * * * * * *2<br>VAR STRING visAlphaFunc_S; * * "NONE,BLEND,ADD,MUL" * * * BLEND<br>VAR FLOAT *visAlphaStart; * * *[0..255] * * * * * * * * * 255<br>VAR FLOAT *visAlphaEnd; * * * *[0..255] * * * * * * * * * 255<br><br> * * Параметр visName_S задает имя файла визуализации частиц. Могут использоваться как TGA так и 3DS файлы соответственно для изменения или анимации частиц.<br> * * Параметр visOrientation_S определяет с какой ориентацией будет производиться рендеринг частиц.<br> * * Параметр visTexIsQuadPoly определяет типы анимации визуализации текстуры (triMesh или quadMesh). Tri частицы являются более быстрыми в сравнении с Quad частицами.<br> * * Параметр visTexAniFPS задает скорость анимации частиц.<br> * * Параметр visTexAniIsLooping определяет, должна ли останавливаться анимация частиц на последнем фрейме.<br> * * Параметры «color, size, alpha» задают соответственно цвет, размер и альфа функцию частиц в начале жизни (start) и в конце жизни (end). В процессе жизни производится линейная интерполяция от начального до конечного значений.<br><br>2.7. Другие эффекты<br><br>Тип * * * * Параметр * * * * Значение * * * * * *Пример<br>VAR FLOAT * trlFadeSpeed; * *ALPHA/MSEC [0..x] * 0.4<br>VAR STRING *trlTexture_S; * * * * * * * * * * * *Trail.tga<br>VAR FLOAT * trlWidth; * * * *CM * * * * * * * * *5<br>VAR FLOAT * mrkFadeSpeed; * *ALPHA/MSEC [0..x] * 0.1<br>VAR STRING *mrkTexture_S; * * * * * * * * * * * *Mark.tga<br>VAR FLOAT * mrkSize; * * * * CM * * * * * * * * *50<br>VAR INT * * useEmittersFOR; *BOOL * * *<br>VAR STRING *timeStartEnd_S; * * * * * * * * * * *"11 16"<br>VAR INT * * m_bIsAmbientPFX; BOOL * * *<br><br> * * Параметры визуализации траектории частиц trlTexture_S, trlFadeSpeed и trlWidth задают соответственно файл текстуры следа траектории, скорость угасания следа и ширину следа от частиц.<br> * * Параметры следов столкновения с поверхностью mrkTexture_S, mrkFadeSpeed и mrkSize задают соответственно файл текстуры оставленного следа на поверхности, скорость угасания следа и размер следа от частиц. Следы имеют форму четырехсторонних полигонов.<br> * * Параметр useEmittersFOR включает вычисление положения каждой частицы в месте излучения внутри локального фрейма. В комбинации с flyCollDet_B значительно уменьшает быстродействие.<br> * * Параметр timeStartEnd_S задает временной промежуток, в котором PFX выполняется (в примере с 11 до 16 часов).<br> * * Параметр m_bIsAmbientPFX указывает, что этот PFX может быть окружающим, т.е. с его помощью строятся погодные эффекты и он может быть отключен через Gothic.ini (параметр [ENGINE]/noAmbientPFX).<br><br>® *vam<br><br>
|
Re: Уроки скриптологии
Скриптовая болванка 0,74 Мб. <br><br>Построена на немецких исходниках и некоторых акелловских d-файлах.<br>Удален почти весь Story и Items. <br>Рабочая под Готику 2, глюки пока не обнаружены.<br><br>На мой взгляд, болванка очень удобна для новичков, т.к. файлов меньше и скорость компиляции высокая. Вполне подойдет для тех, кто делает моды, а не аддоны.<br><br>---<br>Vam: Большое спасибо за PFX.
|
Re: Уроки скриптологии
11. Вспомогательные В_ функции квестов.<br><br>Директория размещения файлов функций - B_Story<br><br> * *1. Функция, устанавливающая уровень владения оружием.<br><br>Файл B_AddFightSkill.d<br><br>// ************************************************** **************<br>// Функция, устанавливающая уровень владения оружием<br>// ************************************************** **************<br>// Аргументы: slf - НПС, talent - тип оружия, percent - процент навыка владения<br>// ----------------------------------------------------------------<br>// ПРИМЕЧАНИЕ: Существует только три уровня владения оружием (0,1,2), определены движком.<br><br>func void B_AddFightSkill(var C_NPC slf,var int talent,var int percent)<br>{<br> * *// если оружие - одноручник<br> * *if(talent == NPC_TALENT_1H)<br> * *{<br> * * * *// повысить способность влажения оружием<br> * * * *slf.HitChance[NPC_TALENT_1H] = slf.HitChance[NPC_TALENT_1H] + percent;<br> * * * *// в зависимости от способности влажения оружием задать уровень навыка<br> * * * *if(slf.HitChance[NPC_TALENT_1H] >=0) * *{ Npc_SetTalentSkill(slf,NPC_TALENT_1H,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_1H] >=30) * { Npc_SetTalentSkill(slf,NPC_TALENT_1H,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_1H] >=60) * { Npc_SetTalentSkill(slf,NPC_TALENT_1H,2); };<br> * *};<br> * *// если оружие - двуручник<br> * *if(talent == NPC_TALENT_2H)<br> * *{<br> * * * *slf.HitChance[NPC_TALENT_2H] = slf.HitChance[NPC_TALENT_2H] + percent;<br> * * * *if(slf.HitChance[NPC_TALENT_1H] >=0) * *{ Npc_SetTalentSkill(slf,NPC_TALENT_2H,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_2H] >=30) * { Npc_SetTalentSkill(slf,NPC_TALENT_2H,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_2H] >=60) * { Npc_SetTalentSkill(slf,NPC_TALENT_2H,2); };<br> * *};<br> * *// если оружие - лук<br> * *if(talent == NPC_TALENT_BOW)<br> * *{<br> * * * *slf.HitChance[NPC_TALENT_BOW] = slf.HitChance[NPC_TALENT_BOW] + percent;<br> * * * *if(slf.HitChance[NPC_TALENT_BOW] >=0) * { Npc_SetTalentSkill(slf,NPC_TALENT_BOW,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_BOW] >=30) *{ Npc_SetTalentSkill(slf,NPC_TALENT_BOW,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_BOW] >=60) *{ Npc_SetTalentSkill(slf,NPC_TALENT_BOW,2); };<br> * *};<br> * *// если оружие - арбалет<br> * *if(talent == NPC_TALENT_CROSSBOW)<br> * *{<br> * * * *slf.HitChance[NPC_TALENT_CROSSBOW] = slf.HitChance[NPC_TALENT_CROSSBOW] + percent;<br> * * * *if(slf.HitChance[NPC_TALENT_CROSSBOW] >=0) *{ Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_CROSSBOW] >=30) { Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_CROSSBOW] >=60) { Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,2); };<br> * *};<br>};<br><br><br> * *2. Функция повышения аттрибутов НПС.<br><br>Файл B_BlessAttribute.d<br><br>// ************************************************** **************<br>// Функция повышения аттрибутов НПС<br>// ************************************************** **************<br>// Аргументы: slf - НПС, attrib - аттрибут, percent - кол-во едениц улучшения<br><br>func void B_BlessAttribute(var C_NPC oth,var int attrib,var int points)<br>{<br> * *var string concatText;<br> * *// если атрибут сила<br> * *if(attrib == ATR_STRENGTH)<br> * *{ * <br> * * * *// увеличить силу<br> * * * *oth.attribute[ATR_STRENGTH] = oth.attribute[ATR_STRENGTH] + points;<br> * * * *// увеличить реальную силу<br> * * * *oth.aivar[REAL_STRENGTH] = oth.aivar[REAL_STRENGTH] + points;<br> * * * *// вывод на экран строки "Иннос дарит тебе: Сила + "<br> * * * *concatText = ConcatStrings(PRINT_BlessSTR,IntToString(points)); <br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// если атрибут ловкость<br> * *if(attrib == ATR_DEXTERITY) * * * * <br> * *{ * <br> * * * *// увеличить ловкость<br> * * * *oth.attribute[ATR_DEXTERITY] = oth.attribute[ATR_DEXTERITY] + points;<br> * * * *// увеличить реальную ловкость<br> * * * *oth.aivar[REAL_DEXTERITY] = oth.aivar[REAL_DEXTERITY] + points;<br> * * * *// вывод на экран строки "Иннос дарит тебе: Ловкость + "<br> * * * *concatText = ConcatStrings(PRINT_BlessDEX,IntToString(points)); <br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// если атрибут макс. мана<br> * *if(attrib == ATR_MANA_MAX) * * * * *<br> * *{ * <br> * * * *// увеличить макс. ману<br> * * * *oth.attribute[ATR_MANA_MAX] = oth.attribute[ATR_MANA_MAX] + points;<br> * * * *// увеличить реальную макс. ману<br> * * * *oth.aivar[REAL_MANA_MAX] = oth.aivar[REAL_MANA_MAX] + points;<br> * * * *// полностью восстановить ману<br> * * * *oth.attribute[ATR_MANA] = oth.attribute[ATR_MANA_MAX];<br> * * * *// вывод на экран строки "Иннос дарит тебе: Мана + "<br> * * * *concatText = ConcatStrings(PRINT_BlessMANA_MAX,IntToString(poin ts));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// если атрибут макс. жизнь<br> * *if(attrib == ATR_HITPOINTS_MAX) * * * * <br> * *{ * <br> * * * *// увеличить макс. жизнь<br> * * * *oth.attribute[ATR_HITPOINTS_MAX] = oth.attribute[ATR_HITPOINTS_MAX] + points;<br> * * * *// полностью восстановить жизнь<br> * * * *oth.attribute[ATR_HITPOINTS] = oth.attribute[ATR_HITPOINTS_MAX];<br> * * * *// вывод на экран строки "Иннос дарит тебе: Жизнь + "<br> * * * *concatText = ConcatStrings(PRINT_BlessHitpoints_MAX,IntToString (points));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// если атрибут жизнь<br> * *if(attrib == ATR_HITPOINTS) * * * * <br> * *{ * <br> * * * *// полностью восстановить жизнь<br> * * * *oth.attribute[ATR_HITPOINTS] = oth.attribute[ATR_HITPOINTS_MAX];<br> * * * *// вывод на экран строки "Иннос услышал тебя и ты вылечен."<br> * * * *PrintScreen(Print_Blesshitpoints,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// если атрибут сила<br> * *if (attrib == ATR_MANA) * * * * <br> * *{ * <br> * * * *// полностью восстановить ману<br> * * * *oth.attribute[ATR_MANA] = oth.attribute[ATR_MANA_MAX];<br> * * * *// вывод на экран строки "Ты исполнен ясностью разума."<br> * * * *PrintScreen(Print_BlessMana,-1,-1,FONT_SCREEN,2);<br> * *};<br>};<br><br><br> * *3. Функция создания строки стоимости обучения.<br><br>Файл B_BuildLearnString.d<br><br>// ************************************************** **************<br>// Функция создания строки стоимости обучения<br>// ************************************************** **************<br>// Аргументы: text - текст, kosten - стоимость обучения в LP<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: созданный текст<br><br>func string B_BuildLearnString(var string text,var int kosten)<br>{<br> * *var string concatText;<br> * *// создать текст: text + ". Стоимость: " + kosten + "LP"<br> * *concatText = ConcatStrings(text,PRINT_Kosten);<br> * *concatText = ConcatStrings(concatText,IntToString(kosten));<br> * *concatText = ConcatStrings(concatText,PRINT_LP);<br> * *return concatText;<br>};<br><br><br> * *4. Функция "очистки" инвентаря торговцев при их смерти.<br><br>Файл B_BuildLearnString.d<br><br>// ************************************************** **************<br>// Функция "очистки" инвентаря торговцев при их смерти<br>// ************************************************** **************<br>// Аргумент: Trader - торговец<br><br>func void B_ClearDeadTrader(var C_NPC Trader)<br>{<br> * *// очистить инвентарь<br> * *Npc_clearInventory(Trader);<br> * *// если експа за победу не начислена<br> * *if(Trader.aivar[AIV_VictoryXPGiven] == FALSE)<br> * *{<br> * * * *// инициализировать инвентарь по умолчанию<br> * * * *B_CreateAmbientInv(Trader);<br> * *};<br> * *// сброс переменной - товар торговца с началом главы не обновлялся<br> * *Trader.aivar[AIV_ChapterInv] = (Kapitel - 1);<br>};<br><br><br> * *5. Функция стандартного завершения диалога с МОВом (выполнения действий).<br><br>Файл B_EndProductionDialog.d<br><br>// ************************************************** **************<br>// Функция стандартного завершения диалога с МОВом<br>// ************************************************** **************<br>// self - НПС, использующий МОВ<br><br>func void B_EndProductionDialog()<br>{<br> * *// завершить диалог<br> * *AI_StopProcessInfos(self);<br> * *// завершить эффект (если был включен)<br> * *Wld_StopEffect("DEMENTOR_FX");<br> * *// сброс флага диалога<br> * *self.aivar[AIV_INVINCIBLE] = FALSE;<br> * *// сброс MOBsi действия<br> * *PLAYER_MOBSI_PRODUCTION = MOBSI_NONE;<br>};<br><br>
|
Re: Уроки скриптологии
Цитата:
|
Re: Уроки скриптологии
* *6. Функции входа в Яркендар.<br><br>Файл B_Enter_AddonWorld.d<br><br>// Вход в Яркендар в Главе 1<br>func void B_ENTER_ADDONWORLD_Kapitel_1()<br>{<br> * *// если Равен убит<br> * *if(RavenIsDead == TRUE)<br> * *{<br> * * * *// удалить Миксира из Яркендара<br> * * * *B_RemoveNpc(KDW_14030_Addon_Myxir_ADW);<br> * *};<br> * *// если Пропавшие люди найдены и не удалены из Яркендара<br> * *if(Sklaven_weg == TRUE) && (RemoveSklaven == FALSE)<br> * *{ * <br> * * * *// удалить найденных людей<br> * * * *B_RemoveNpc(STRF_1118_Addon_Patrick);<br> * * * *B_RemoveNpc(STRF_1119_Addon_Monty);<br> * * * *B_RemoveNpc(STRF_1120_Addon_Tonak);<br> * * * *B_RemoveNpc(STRF_1121_Addon_Telbor);<br> * * * *B_RemoveNpc(STRF_1122_Addon_Pardos);<br> * * * *// установить флаг удаления<br> * * * *RemoveSklaven = TRUE;<br> * *};<br>};<br><br>// Вход в Яркендар в Главе 2<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterADW_Kapitel2; *// флаг одноразовости<br><br>func void B_ENTER_ADDONWORLD_Kapitel_2()<br>{<br> * *if(EnterADW_Kapitel2 == FALSE)<br> * *{<br> * * * *EnterADW_Kapitel2 = TRUE;<br> * *};<br>};<br><br>// Вход в Яркендар в Главе 3<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterADW_Kapitel3; *// флаг одноразовости<br><br>func void B_ENTER_ADDONWORLD_Kapitel_3()<br>{<br> * *if (EnterADW_Kapitel3 == FALSE)<br> * *{<br> * * * *EnterADW_Kapitel3 = TRUE;<br> * *};<br>};<br><br>// Вход в Яркендар в Главе 4<br><br>var int EnterADW_Kapitel4; *// флаг одноразовости<br><br>func void B_ENTER_ADDONWORLD_Kapitel_4()<br>{<br> * *if(EnterADW_Kapitel4 == FALSE)<br> * *{<br> * * * *// респавн живности<br> * * * *Wld_InsertNpc(Giant_DesertRat,"ADW_CANYON_TE LEPORT_PATH_03");<br> * * * *Wld_InsertNpc(Giant_DesertRat,"ADW_CANYON_TE LEPORT_PATH_03");<br> * * * *Wld_InsertNpc(Giant_DesertRat,"ADW_CANYON_TE LEPORT_PATH_04");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_LIBRARY_36");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_LIBRARY_36");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_BANDITS_31");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_MINE2_04");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_MINE2_04");<br> * * * *Wld_InsertNpc(Troll,"ADW_CANYON_ORCS_02" ;);<br> * * * *Wld_InsertNpc(Troll,"ADW_CANYON_PATH_TO_MINE 2_09");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_MINE2_06");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_26");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_24");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_66");<br> * * * *Wld_InsertNpc(SkeletonMage,"ADW_CANYON_LIBRA RY_STONIE_01");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_CANYON_LIBRARY_S TONIE_02");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_CANYON_LIBRARY_S TONIE_03");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_CANYON_LIBRARY_S TONIE_04");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_CANYON_LIBRARY_S TONIE_05");<br> * * * *Wld_InsertNpc(FireWaran,"ADW_ENTRANCE_2_VALL EY_05");<br> * * * *Wld_InsertNpc(Waran,"ADW_ENTRANCE_2_VALLEY_1 1");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_ENTRANCE_PA TH2BANDITS_10");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_ENTRANCE_BE HINDAKROPOLIS_04");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_ENTRANCE_BE HINDAKROPOLIS_04");<br> * * * *Wld_InsertNpc(Swamprat,"ADW_ENTRANCE_PATH2BA NDITS_03");<br> * * * *Wld_InsertNpc(SkeletonMage,"ADW_PORTALTEMPEL _08B");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_PORTALTEMPEL_08A ");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_ENTRANCE_2_ PIRATECAMP_22");<br> * * * *Wld_InsertNpc(Swampshark,"ADW_SWAMP_SHARKSTR EET_02");<br> * * * *Wld_InsertNpc(Swampshark,"ADW_SWAMP_SHARKSTR EET_07");<br> * * * *Wld_InsertNpc(Swampshark,"ADW_SWAMP_SHARKSTR EET_09");<br> * * * *Wld_InsertNpc(Swampshark,"ADW_SWAMP_SHARKSTR EET_10");<br> * * * *Wld_InsertNpc(SwampGolem,"ADW_SWAMP_LITTLE_S EA_01");<br> * * * *Wld_InsertNpc(Bloodfly,"ADW_SWAMP_LITTLE_SEA _01");<br> * * * *Wld_InsertNpc(SwampGolem,"ADW_SWAMP_LITTLE_S EA_02");<br> * * * *Wld_InsertNpc(Bloodfly,"ADW_SWAMP_LITTLE_SEA _02");<br> * * * *Wld_InsertNpc(SwampGolem,"ADW_SWAMP_LITTLE_S EA_03");<br> * * * *Wld_InsertNpc(Bloodfly,"ADW_SWAMP_LITTLE_SEA _03");<br> * * * *Wld_InsertNpc(MayaZombie01,"ADW_PFUETZE_01&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie02,"ADW_PFUETZE_02&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie03,"ADW_PFUETZE_03&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie04,"ADW_PFUETZE_04&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie04,"ADW_BANDIT_VP1_0 7_D");<br> * * * *Wld_InsertNpc(MayaZombie01,"ADW_BANDIT_VP1_0 7_E");<br> * * * *Wld_InsertNpc(MayaZombie02,"ADW_BANDIT_VP1_0 7_F");<br> * * * *Wld_InsertNpc(MayaZombie03,"ADW_SWAMP_LITTLE _SEA_03_B");<br> * * * *Wld_InsertNpc(MayaZombie04,"ADW_SWAMP_09_C&q uot;);<br> * * * *Wld_InsertNpc(SwampGolem,"ADW_SWAMP_10" );<br> * * * *Wld_InsertNpc(SwampGolem,"ADW_SWAMP_13" );<br> * * * *Wld_InsertNpc(SwampGolem,"ADW_SWAMP_14" );<br> * * * *Wld_InsertNpc(Swampshark,"ADW_SWAMP_HOHLWEG_ 03");<br> * * * *Wld_InsertNpc(Swampshark,"ADW_SWAMP_HOHLWEG_ 04");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_SENAT_SIDE_01&qu ot;);<br> * * * *Wld_InsertNpc(Skeleton,"ADW_SENAT_SIDE_02&qu ot;);<br> * * * *Wld_InsertNpc(MayaZombie04,"ADW_SENAT_SIDE_0 3");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_SENAT_GUARDIAN_0 1");<br> * * * *Wld_InsertNpc(MayaZombie01,"ADW_SENAT_GUARDI AN_02");<br> * * * *Wld_InsertNpc(SwampDrone,"ADW_SWAMP_HILLS_DO WN_03");<br> * * * *Wld_InsertNpc(SwampDrone,"ADW_SWAMP_15" );<br> * * * *Wld_InsertNpc(Swamprat,"ADW_HOHLWEG_CENTER&q uot;);<br> * * * *Wld_InsertNpc(SwampGolem,"FP_ROAM_BF_NEST_26 ");<br> * * * *Wld_InsertNpc(Swamprat,"ADW_BANDITSCAMP_RAKE PLACE_03");<br> * * * *Wld_InsertNpc(SwampDrone,"ADW_CANYON_PATH_TO _BANDITS_02");<br> * * * *Wld_InsertNpc(SwampDrone,"ADW_PFUETZE_02&quo t;);<br> * * * *Wld_InsertNpc(SwampDrone,"ADW_SWAMP_LOCH_05& quot;);<br> * * * *Wld_InsertNpc(SwampDrone,"ADW_SWAMP_LOCH_06& quot;);<br> * * * *Wld_InsertNpc(Demon,"ADW_PIRATECAMP_LONEBEAC H_CAVE_03");<br> * * * *Wld_InsertNpc(FireWaran,"ADW_PIRATECAMP_LONE BEACH_05");<br> * * * *Wld_InsertNpc(Lurker,"ADW_PIRATECAMP_WATERHO LE_04");<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,"ADW_VALLE Y_BIGCAVE_06");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_VALLEY_BIGC AVE_06");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_BIGC AVE_15");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_PATH _110");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_PATH _110");<br> * * * *Wld_InsertNpc(Warg,"ADW_ENTRANCE_2_PIRATECAM P_13");<br> * * * *Wld_InsertNpc(Warg,"ADW_ENTRANCE_2_PIRATECAM P_13");<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,"ADW_ENTRA NCE_2_PIRATECAMP_13");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_ENTRANCE_2_ PIRATECAMP_13");<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,"ADW_ENTRA NCE_2_PIRATECAMP_13");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_ENTRANCE_2_ PIRATECAMP_13");<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,"ADW_ENTRA NCE_2_VALLEY_10");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_ENTRANCE_2_ VALLEY_10");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_ENTRANCE_2_ VALLEY_10");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_ENTRANCE_2_ VALLEY_10");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_ENTRANCE_2_ VALLEY_02A");<br> * * * *Wld_InsertNpc(Gobbo_Warrior,"ADW_ENTRANCE_2_ VALLEY_02A");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_PATH _020");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_BIGC AVE_01");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_PATH _048_A");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_PATH _047_D");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_VALLEY_PATH _047_D");<br> * * * *Wld_InsertNpc(Scavenger_Demon,"ADW_VALLEY_PA TH_047_G");<br> * * * *Wld_InsertNpc(Scavenger_Demon,"ADW_VALLEY_PA TH_047_G");<br> * * * *Wld_InsertNpc(Scavenger_Demon,"ADW_VALLEY_PA TH_038_E");<br> * * * *Wld_InsertNpc(Scavenger_Demon,"ADW_VALLEY_PA TH_038_E");<br> * * * *Wld_InsertNpc(Scavenger_Demon,"ADW_VALLEY_PA TH_038_J");<br> * * * *Wld_InsertNpc(SkeletonMage,"ADW_VALLEY_PATH_ 131");<br> * * * *Wld_InsertNpc(SkeletonMage,"ADW_VALLEY_PATH_ 132_A");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_132_ A");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_134& quot;);<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_134& quot;);<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_135& quot;);<br> * * * *Wld_InsertNpc(Shadowbeast_Addon_Fire,"ADW_VA LLEY_PATH_072");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_072& quot;);<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_073& quot;);<br> * * * *Wld_InsertNpc(Shadowbeast_Addon_Fire,"ADW_VA LLEY_PATH_072");<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_073& quot;);<br> * * * *Wld_InsertNpc(Skeleton,"ADW_VALLEY_PATH_073& quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_MINE1_05");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_MINE1_05");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_MINE 1_01");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_MINE 1_01");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_MINE 1_01");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_LIBRARY_31A");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_CANYON_PATH _TO_LIBRARY_31A");<br> * * * *Wld_InsertNpc(FireWaran,"ADW_CANYON_PATH_TO_ BANDITS_55");<br> * * * *Wld_InsertNpc(FireWaran,"ADW_CANYON_PATH_TO_ BANDITS_55");<br> * * * *Wld_InsertNpc(OrcBiter,"ADW_CANYON_PATH_TO_B ANDITS_52");<br> * * * *Wld_InsertNpc(OrcBiter,"ADW_CANYON_PATH_TO_B ANDITS_52");<br> * * * *Wld_InsertNpc(Troll,"ADW_CANYON_PATH_TO_LIBR ARY_17");<br> * * * *Wld_InsertNpc(Troll,"ADW_CANYON_PATH_TO_LIBR ARY_16A");<br> * * * *Wld_InsertNpc(OrcBiter,"ADW_CANYON_ORCS_09&q uot;);<br> * * * *Wld_InsertNpc(OrcBiter,"ADW_CANYON_ORCS_09&q uot;);<br> * * * *Wld_InsertNpc(FireWaran,"ADW_CANYON_PATH_TO_ LIBRARY_07A");<br> * * * *Wld_InsertNpc(FireWaran,"ADW_CANYON_PATH_TO_ LIBRARY_07A");<br> * * * *Wld_InsertNpc(Blattcrawler,"ADW_CANYON_TELEP ORT_PATH_09");<br> * * * *Wld_InsertNpc(Blattcrawler,"ADW_CANYON_TELEP ORT_PATH_09");<br> * * * *Wld_InsertNpc(Blattcrawler,"ADW_CANYON_TELEP ORT_PATH_09");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_ENTRANCE_PA TH2BANDITS_05P");<br> * * * *Wld_InsertNpc(DragonSnapper,"ADW_ENTRANCE_PA TH2BANDITS_05P");<br> * * * *Wld_InsertNpc(SwampGolem,"ADW_ENTRANCE_PATH2 BANDITS_05");<br> * * * *Wld_InsertNpc(Troll,"ADW_CANYON_PATH_TO_BAND ITS_20");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_21");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_17");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_14");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_62");<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,"ADW_CANYON _PATH_TO_BANDITS_19");<br> * * * *EnterADW_Kapitel4 = TRUE;<br> * *};<br>};<br><br>// Вход в Яркендар в Главе 5<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterADW_Kapitel5; *// флаг одноразовости<br><br>func void B_ENTER_ADDONWORLD_Kapitel_5()<br>{<br> * *if (EnterADW_Kapitel5 == FALSE)<br> * *{<br> * * * *EnterADW_Kapitel5 = TRUE;<br> * *};<br>};<br><br>// Вход в Яркендар в Главе 6<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterADW_Kapitel6; *// флаг одноразовости<br><br>func void B_ENTER_ADDONWORLD_Kapitel_6()<br>{<br> * *if (EnterADW_Kapitel6 == FALSE)<br> * *{<br> * * * *EnterADW_Kapitel6 = TRUE;<br> * *};<br>};<br><br>// Общая функция входа в Яркендар<br>func void B_ENTER_ADDONWORLD() *<br>{<br> * *// инициализация глобальных НПС<br> * *B_InitNpcGlobals();<br> * *// в зависимости от главы вызвать соответствующую функцию<br> * *if(Kapitel >= 1) * *{ B_ENTER_ADDONWORLD_Kapitel_1(); };<br> * *if(Kapitel >= 2) * *{ B_ENTER_ADDONWORLD_Kapitel_2(); };<br> * *if(Kapitel >= 3) * *{ B_ENTER_ADDONWORLD_Kapitel_3(); };<br> * *if(Kapitel >= 4) * *{ B_ENTER_ADDONWORLD_Kapitel_4(); };<br> * *if(Kapitel >= 5) * *{ B_ENTER_ADDONWORLD_Kapitel_5(); };<br> * *if(Kapitel >= 6) * *{ B_ENTER_ADDONWORLD_Kapitel_6(); };<br> * *CurrentLevel = ADDONWORLD_ZEN; <br> * *// инициализация глобальных НПС (уже было, можно удалить)<br> * *B_InitNpcGlobals();<br>};<br><br><br> * *7. Функции инициализации Острова Драконов.<br><br>Файл B_Enter_DragonIsland.d<br><br>// Расстановка живности на карте острова<br>func void STARTUP_NEWWORLD_PART_DRAGON_ISLAND_01()<br>{<br> * *Wld_InsertNpc(FireWaran,"FP_ROAM_DI_WARAN_01 ");<br> * *Wld_InsertNpc(FireWaran,"FP_ROAM_DI_WARAN_02 ");<br> * *Wld_InsertNpc(FireWaran,"FP_ROAM_DI_WARAN_03 ");<br> * *Wld_InsertNpc(Troll_DI,"DI_ORKAREA_TROLL&quo t;);<br> * *Wld_InsertItem(ItMi_DarkPearl,"FP_ITEM_DI_EN TER_03");<br> * *Wld_InsertItem(ItMi_Sulfur,"FP_ITEM_DI_ENTER _07");<br> * *Wld_InsertItem(ItWr_ZugBruecke_MIS,"FP_ITEM_ DI_ENTER_09");<br> * *Wld_InsertNpc(OrcWarrior_Rest,"FP_ROAM_DI_OR K_01");<br> * *Wld_InsertNpc(OrcWarrior_Rest,"FP_ROAM_DI_OR K_02");<br> * *Wld_InsertNpc(Warg,"FP_ROAM_DI_ORK_03") ;<br> * *Wld_InsertNpc(OrcElite_Rest,"FP_ROAM_DI_ORK_ 04");<br> * *Wld_InsertNpc(OrcShaman_Sit,"FP_ROAM_DI_ORK_ 05");<br> * *Wld_InsertNpc(Warg,"FP_ROAM_DI_ORK_06") ;<br> * *Wld_InsertNpc(OrcWarrior_Rest,"FP_ROAM_DI_OR K_07");<br> * *Wld_InsertNpc(OrcElite_Rest,"FP_ROAM_DI_ORK_ 08");<br> * *Wld_InsertNpc(OrcWarrior_Rest,"FP_ROAM_DI_OR K_09");<br> * *Wld_InsertNpc(Warg,"FP_ROAM_DI_ORK_11") ;<br> * *Wld_InsertNpc(OrcElite_Rest,"FP_ROAM_DI_ORK_ 14");<br> * *Wld_InsertNpc(OrcShaman_Sit,"FP_ROAM_DI_ORK_ 15");<br> * *Wld_InsertNpc(OrcElite_Rest,"FP_ROAM_DI_ORK_ 16");<br> * *Wld_InsertNpc(Warg,"FP_ROAM_DI_ORK_17") ;<br> * *Wld_InsertNpc(Warg,"FP_ROAM_DI_ORK_18") ;<br> * *Wld_InsertNpc(OrcWarrior_Rest,"FP_ROAM_DI_OR K_19");<br> * *Wld_InsertNpc(OrcShaman_Sit,"FP_ROAM_DI_ORK_ 20");<br> * *Wld_InsertNpc(OrcElite_Rest,"FP_ROAM_DI_ORK_ 21");<br> * *Wld_InsertNpc(OrcElite_Rest,"FP_ROAM_DI_ORK_ 22");<br> * *Wld_InsertNpc(OrcElite_Rest,"FP_ROAM_DI_ORK_ 23");<br> * *Wld_InsertNpc(OrcWarrior_Roam,"FP_ROAM_DI_OR K_28");<br> * *Wld_InsertNpc(OrcElite_Roam,"FP_ROAM_DI_ORK_ 29");<br> * *Wld_InsertNpc(OrcWarrior_Roam,"FP_ROAM_DI_OR K_30");<br> * *Wld_InsertNpc(OrcElite_Roam,"FP_ROAM_DI_ORK_ 33");<br> * *Wld_InsertNpc(OrcElite_Roam,"FP_ROAM_DI_ORK_ 34");<br> * *Wld_InsertNpc(OrcWarrior_Roam,"FP_ROAM_DI_OR K_35");<br> * *Wld_InsertNpc(Warg,"FP_ROAM_DI_ORK_12") ;<br> * *Wld_InsertNpc(OrcShaman_Sit,"FP_ROAM_DI_ORK_ 13");<br> * *Wld_InsertNpc(OrkElite_AntiPaladinOrkOberst_DI,&q uot;DI_ORKOBERST");<br> * *Wld_InsertNpc(OrcElite_DIOberst1_Rest,"FP_RO AM_DI_ORK_24");<br> * *Wld_InsertNpc(OrcElite_DIOberst2_Rest,"FP_RO AM_DI_ORK_26");<br> * *Wld_InsertNpc(OrcElite_DIOberst3_Rest,"FP_RO AM_DI_ORK_27");<br> * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,"DI _ORKAREA_24");<br> * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,"DI _DRACONIANAREA_22");<br> * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,"DI _DRACONIANAREA_08");<br> * *Wld_InsertNpc(Dragon_Fire_Island,"DI_DRACONI ANAREA_FIREDRAGON");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_01");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_02");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_03");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_04");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_05");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_06");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_07");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_08");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_09");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_10");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_11");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_12");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_13");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_14");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_15");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_16");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_17");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_18");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_19");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_20");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_21");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_22");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_23");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_24");<br> * *Wld_InsertNpc(Draconian,"FP_ROAM_DI_DRACONIA N_25");<br>};<br><br>// INIT_ секция - инициализация Острова (не будет ниоткуда вызвана, можно удалить)<br>func void INIT_NEWWORLD_PART_DRAGON_ISLAND_01()<br>{<br> * *B_InitMonsterAttitudes(); <br> * *B_InitGuildAttitudes();<br> * *B_InitNpcGlobals();<br>};<br><br>// Расстановка живности в Пещерах<br>func void STARTUP_NEWWORLD_PART_DRAGON_UNDEAD_01()<br>{<br> * *Wld_InsertItem(ItWr_Rezept_MegaDrink_MIS,"FP _ITEM_DI_BLACKNOV_01");<br> * *Wld_InsertItem(ItWr_Diary_BlackNovice_MIS,"F P_ITEM_DI_BLACKNOV_02");<br> * *Wld_InsertNpc(Skeleton_Lord_Archol,"DI_ARCHO L");<br> * *Wld_InsertNpc(Skeleton_Archol1,"DI_ARCHOL_SK ELETON_01");<br> * *Wld_InsertNpc(Skeleton_Archol2,"DI_ARCHOL_SK ELETON_02");<br> * *Wld_InsertNpc(Skeleton_Archol3,"DI_ARCHOL_SK ELETON_03");<br> * *Wld_InsertNpc(Skeleton_Archol4,"DI_ARCHOL_SK ELETON_04");<br> * *Wld_InsertNpc(Skeleton_Archol5,"DI_ARCHOL_SK ELETON_05");<br> * *Wld_InsertNpc(Skeleton_Archol6,"DI_ARCHOL_SK ELETON_06");<br> * *Wld_InsertNpc(DMT_DementorAmbient,"DI_DRACON IANAREA_53");<br> * *Wld_InsertNpc(DMT_DementorAmbient,"DI_DRACON IANAREA_52");<br> * *Wld_InsertNpc(Lesser_Skeleton,"DI_DRACONIANA REA_55");<br> * *Wld_InsertNpc(Lesser_Skeleton,"DI_DRACONIANA REA_55");<br> * *Wld_InsertNpc(Skeleton,"DI_DRACONIANAREA_56& quot;);<br> * *Wld_InsertNpc(Lesser_Skeleton,"DI_DRACONIANA REA_56");<br> * *Wld_InsertNpc(Skeleton,"DI_DRACONIANAREA_51& quot;);<br> * *Wld_InsertNpc(Lesser_Skeleton,"DI_DRACONIANA REA_51");<br> * *Wld_InsertNpc(Skeleton,"DI_DRACONIANAREA_51& quot;);<br> * *Wld_InsertNpc(Shadowbeast_Skeleton,"WP_UNDEA D_SPAWN_POINT_01");<br> * *Wld_InsertNpc(Skeleton_Lord,"WP_UNDEAD_LEFT_ DOWN_06");<br> * *Wld_InsertNpc(OrcElite_Rest,"WP_UNDEAD_SPAWN _POINT_02");<br> * *Wld_InsertNpc(OrcElite_Rest,"WP_UNDEAD_SPAWN _POINT_03");<br> * *Wld_InsertNpc(OrcShaman_Sit,"WP_UNDEAD_SPAWN _POINT_04");<br> * *Wld_InsertNpc(Zombie01,"WP_UNDEAD_SPAWN_POIN T_05");<br> * *Wld_InsertNpc(Zombie02,"WP_UNDEAD_SPAWN_POIN T_06");<br> * *Wld_InsertNpc(Zombie03,"WP_UNDEAD_SPAWN_POIN T_07");<br> * *Wld_InsertNpc(Zombie04,"WP_UNDEAD_SPAWN_POIN T_08");<br> * *Wld_InsertNpc(Skeleton,"DRAGONISLAND_UNDEAD_ 04_01");<br> * *Wld_InsertNpc(Skeleton,"DRAGONISLAND_UNDEAD_ 04_02");<br> * *Wld_InsertNpc(Skeleton,"DRAGONISLAND_UNDEAD_ 08_01");<br> * *Wld_InsertNpc(Skeleton_Lord,"DRAGONISLAND_UN DEAD_08_02");<br> * *Wld_InsertNpc(Skeleton_Lord,"DRAGONISLAND_UN DEAD_08_03");<br> * *Wld_InsertNpc(Skeleton,"DRAGONISLAND_UNDEAD_ 08_04");<br>};<br><br>// INIT_ секция - инициализация Пещер (не будет ниоткуда вызвана, можно удалить)<br>func void INIT_NEWWORLD_PART_DRAGON_UNDEAD_01()<br>{<br> * *B_InitMonsterAttitudes(); <br> * *B_InitGuildAttitudes();<br> * *B_InitNpcGlobals();<br>};<br><br>// Расстановка живности в Залах Ирдората<br>func void STARTUP_NEWWORLD_PART_DRAGON_FINAL_01()<br>{<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_01,&qu ot;DI_UNDEADDRAGONTEMPEL_01");<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_02,&qu ot;DI_UNDEADDRAGONTEMPEL_01");<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_03,&qu ot;DI_UNDEADDRAGONTEMPEL_01");<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_04,&qu ot;DI_UNDEADDRAGONTEMPEL_01");<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_05,&qu ot;DI_UNDEADDRAGONTEMPEL_01");<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_06,&qu ot;DI_UNDEADDRAGONTEMPEL_01");<br> * *Wld_InsertNpc(DMT_DementorAmbient,"DI_UNDEAD DRAGONTEMPEL_20");<br> * *Wld_InsertNpc(DMT_DementorAmbient,"DI_UNDEAD DRAGONTEMPEL_23");<br> * *Wld_InsertNpc(DMT_1299_OberDementor_DI,"DI_S CHWARZMAGIER");<br> * *Wld_InsertNpc(Dragon_Undead,"DI_UNDEADDRAGON ");<br> * *Wld_InsertNpc(UndeadOrcWarrior,"DI_UNDEADDRA GON_TRAP_01");<br> * *Wld_InsertNpc(UndeadOrcWarrior,"DI_UNDEADDRA GON_TRAP_02");<br> * *Wld_InsertNpc(UndeadOrcWarrior,"DI_UNDEADDRA GON_TRAP_03");<br>};<br><br>// INIT_ секция - инициализация Залов Ирдората (не будет ниоткуда вызвана, можно удалить)<br>func void INIT_NEWWORLD_PART_DRAGON_FINAL_01()<br>{<br> * *B_InitMonsterAttitudes(); <br> * *B_InitGuildAttitudes();<br> * *B_InitNpcGlobals();<br>};<br><br>// STARTUP_ секция Острова Драконов<br>func void STARTUP_DRAGONISLAND()<br>{<br> * *// вставка капитана корабля<br> * *if(JorgenIsCaptain == TRUE) // Йорген<br> * *{<br> * * * *Wld_InsertNpc(VLK_4250_Jorgen_DI,"SHIP_DECK_ 01");<br> * *};<br> * *if(TorlofIsCaptain == TRUE) // Торлоф<br> * *{<br> * * * *Wld_InsertNpc(SLD_801_Torlof_DI,"SHIP_DECK_0 1");<br> * *};<br> * *if(JackIsCaptain == TRUE) * // Джек<br> * *{<br> * * * *Wld_InsertNpc(VLK_444_Jack_DI,"SHIP_DECK_01& quot;);<br> * *};<br> * *// размещение команды на корабле<br> * *if(Lee_IsOnBoard == LOG_SUCCESS) * * * *// Ли<br> * *{<br> * * * *Wld_InsertNpc(SLD_800_Lee_DI,"SHIP_DECK_01&q uot;);<br> * *};<br> * *if(MiltenNW_IsOnBoard == LOG_SUCCESS) * // Мильтон<br> * *{<br> * * * *Wld_InsertNpc(PC_Mage_DI,"SHIP_DECK_01" );<br> * * * *// если Лестера на корабле нет<br> * * * *if(Lester_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Мильтон сидит на лавке<br> * * * * * *B_StartOtherRoutine(PC_Mage_DI,"SittingShipD I");<br> * * * *};<br> * *};<br> * *if(Lester_IsOnBoard == LOG_SUCCESS) * * // Лестер<br> * *{<br> * * * *Wld_InsertNpc(PC_Psionic_DI,"SHIP_DECK_01&qu ot;);<br> * * * *// если Мильтона на корабле нет<br> * * * *if(MiltenNW_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Лестер сидит на лавке<br> * * * * * *B_StartOtherRoutine(PC_Psionic_DI,"SittingSh ipDI");<br> * * * *};<br> * *};<br> * *if(Mario_IsOnBoard == LOG_SUCCESS) * * *// Марио<br> * *{<br> * * * *Wld_InsertNpc(None_101_Mario_DI,"SHIP_DECK_0 1");<br> * *};<br> * *if(Wolf_IsOnBoard == LOG_SUCCESS) * * * // Волк<br> * *{<br> * * * *Wld_InsertNpc(SLD_811_Wolf_DI,"SHIP_DECK_01& quot;);<br> * *};<br> * *if(Vatras_IsOnBoard == LOG_SUCCESS) * * // Ватрас<br> * *{<br> * * * *Wld_InsertNpc(VLK_439_Vatras_DI,"SHIP_DECK_0 1");<br> * *}; *<br> * *if(Bennet_IsOnBoard == LOG_SUCCESS) * * // Беннет<br> * *{<br> * * * *Wld_InsertNpc(SLD_809_Bennet_DI,"SHIP_DECK_0 1");<br> * *}; *<br> * *if(Diego_IsOnBoard == LOG_SUCCESS) * * *// Диего<br> * *{<br> * * * *Wld_InsertNpc(PC_Thief_DI,"SHIP_DECK_01" ;);<br> * * * *// если Лареса на корабле нет<br> * * * *if(Lares_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Диего сидит на лавке<br> * * * * * *B_StartOtherRoutine(PC_Thief_DI,"SittingShip DI");<br> * * * *};<br> * *};<br> * *if(Gorn_IsOnBoard == LOG_SUCCESS) * * * // Горн<br> * *{<br> * * * *Wld_InsertNpc(PC_Fighter_DI,"SHIP_DECK_01&qu ot;);<br> * *}; *<br> * *if(Lares_IsOnBoard == LOG_SUCCESS) * * *// Ларес<br> * *{<br> * * * *Wld_InsertNpc(VLK_449_Lares_DI,"SHIP_DECK_01 ");<br> * * * *// если Диего на корабле нет<br> * * * *if(Diego_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Ларес сидит на лавке<br> * * * * * *B_StartOtherRoutine(VLK_449_Lares_DI,"Sittin gShipDI");<br> * * * *};<br> * *}; *<br> * *if(Biff_IsOnBoard == LOG_SUCCESS) * * * // Бифф<br> * *{<br> * * * *Wld_InsertNpc(DJG_713_Biff_DI,"SHIP_DECK_01& quot;);<br> * *}; *<br> * *if(Angar_IsOnBoard == LOG_SUCCESS) * * *// Ангар<br> * *{<br> * * * *Wld_InsertNpc(DJG_705_Angar_DI,"SHIP_DECK_01 ");<br> * *}; *<br> * *if(Girion_IsOnBoard == LOG_SUCCESS) * * // Гирион<br> * *{<br> * * * *Wld_InsertNpc(Pal_207_Girion_DI,"SHIP_DECK_0 1");<br> * *};<br> * *// вставить Педро<br> * *Wld_InsertNpc(NOV_600_Pedro_DI,"SHIP_DECK_01 ");<br> * *// вставка предметов <br> * *Wld_InsertItem(ItMi_Flask,"FP_ITEM_SHIP_03&q uot;); <br> * *Wld_InsertItem(ItMi_Flask,"FP_ITEM_SHIP_07&q uot;);<br> * *// вставка прочей живности<br> * *STARTUP_NEWWORLD_PART_DRAGON_ISLAND_01();<br> * *STARTUP_NEWWORLD_PART_DRAGON_UNDEAD_01();<br> * *STARTUP_NEWWORLD_PART_DRAGON_FINAL_01();<br> * *// видео - прибытие корабля на остров<br> * *PlayVideo("SHIP.BIK"); * <br> * *// создать тему - "Залы Ирдората"<br> * *Log_CreateTopic(TOPIC_HallenVonIrdorath,LOG_MISSI ON);<br> * *// задать статус - в процессе<br> * *Log_SetTopicStatus(TOPIC_HallenVonIrdorath,LOG_RU NNING);<br> * *// добавить в дневник запись<br> * *Log_AddEntry(TOPIC_HallenVonIrdorath,"Наконе ц мы достигли логова врага. Только Иннос знает, какие создания будут ждать меня внутри этой огромной горы."); <br> * *// инициализация 6 главы<br> * *B_Kapitelwechsel(6,DRAGONISLAND_ZEN);<br>};<br><b r>// INIT_ секция Острова Драконов<br>func void INIT_DRAGONISLAND()<br>{<br> * *// инициализация отношений монстров к другим НПС<br> * *B_InitMonsterAttitudes(); <br> * *// инициализация отношений между гильдиями людей<br> * *B_InitGuildAttitudes();<br> * *// инициализация глобальных НПС<br> * *B_InitNpcGlobals();<br> * *// задать текущий уровень<br> * *CurrentLevel = DRAGONISLAND_ZEN;<br> * *// если ГГ имеет Ключ от каюты капитана<br> * *if(Npc_HasItems(hero,ITKE_SHIP_LEVELCHANGE_MIS))< br> * *{<br> * * * *// отобрать у него ключ<br> * * * *Npc_RemoveInvItems(hero,ITKE_SHIP_LEVELCHANGE_MIS ,1);<br> * *};<br> * *// инициализация глобальных НПС (можно удалить, уже было)<br> * *B_InitNpcGlobals(); <br>};<br><br>
|
Re: Уроки скриптологии
* *8. Функции входа в Новый мир (Хоринис с окрестностями).<br><br>Файл B_Enter_NewWorld.d<br><br>// Вход в Новый мир в Главе 1<br>func void B_ENTER_NEWWORLD_Kapitel_1()<br>{<br> * *// если Равен убит и Миксира в Хоринисе нет<br> * *if((RavenIsDead == TRUE) && Npc_IsDead(KDW_140300_Addon_Myxir_CITY))<br> * *{<br> * * * *// вставить Миксира<br> * * * *Wld_InsertNpc(KDW_140300_Addon_Myxir_CITY,"C ITY1");<br> * *};<br> * *// если ГГ был в Яркендаре<br> * *if(ENTERED_ADDONWORLD == TRUE)<br> * *{<br> * * * *// убрать Магов воды с раскопок<br> * * * *B_RemoveNpc(KDW_1400_Addon_Saturas_NW); <br> * * * *B_RemoveNpc(KDW_1401_Addon_Cronos_NW); <br> * * * *B_RemoveNpc(KDW_1402_Addon_Nefarius_NW); <br> * * * *B_RemoveNpc(KDW_1403_Addon_Myxir_NW); <br> * * * *B_RemoveNpc(KDW_1404_Addon_Riordian_NW); <br> * * * *B_RemoveNpc(KDW_1405_Addon_Merdarion_NW); <br> * * * *B_RemoveNpc(PIR_1301_Addon_Skip_NW);<br> * * * *// если ГГ не имеет ключа от портала (флаг одноразовости)<br> * * * *if(SC_GotPORTALTEMPELWALKTHROUGHKey == FALSE)<br> * * * *{<br> * * * * * *// вставить Каменного стража<br> * * * * * *Wld_InsertNpc(Stoneguardian_MerdarionsSchluessel, "NW_TROLLAREA_PORTALTEMPE<br>L_22");< br> * * * * * *// установить флаг<br> * * * * * *SC_GotPORTALTEMPELWALKTHROUGHKey = TRUE;<br> * * * *};<br> * *};<br> * *// если Пропавшие люди освобождены и не возвращены в Новый мир<br> * *if(Sklaven_Flucht == TRUE) && (Sklaven_weg == FALSE)<br> * *{<br> * * * *// вставить Пропавших людей<br> * * * *Wld_InsertNpc(STRF_1123_Addon_Patrick_NW,"NW _BIGFARM_PATRICK");<br> * * * *Wld_InsertNpc(STRF_1124_Addon_Monty_NW,"NW_C ITY_HABOUR_WERFT_IN_01");<br> * * * *Wld_InsertNpc(STRF_1125_Addon_Tonak_NW,"NW_F ARM2_FIELD_TANOK");<br> * * * *Wld_InsertNpc(STRF_1126_Addon_Telbor_NW,"NW_ FARM2_FIELD_TELBOR");<br> * * * *Wld_InsertNpc(STRF_1127_Addon_Pardos_NW,"NW_ FARM3_BENGAR");<br> * * * *// установить флаг возврата<br> * * * *Sklaven_weg = TRUE;<br> * * * *// миссия по возвращению людей завершена<br> * * * *MissingPeopleReturnedHome = TRUE;<br> * *};<br>};<br><br>// Вход в Новый мир в Главе 2<br><br>var int EnterNW_Kapitel2; * // флаг одноразовости<br><br>func void B_ENTER_NEWWORLD_Kapitel_2()<br>{<br> * *// если Грег вернулся в Яркендар<br> * *if(GregIsBack == TRUE)<br> * *{<br> * * * *// удалить Грега<br> * * * *B_RemoveNpc(PIR_1300_Addon_Greg_NW);<br> * *};<br> * *// если флаг сброшен<br> * *if(EnterNW_Kapitel2 == FALSE)<br> * *{<br> * * * *// респавн живности<br> * * * *// Примечание: Здесь и далее значок //!!!!!! означает, что часть текста скрипта пропущена для краткости<br> * * * *//!!!!!!<br> * * * *// если ГГ милиционер или паладин<br> * * * *if((hero.guild == GIL_MIL) ¦¦ (hero.guild == GIL_PAL))<br> * * * *{<br> * * * * * *// разместить Амулет ловкости<br> * * * * * *Wld_InsertItem(ItAm_Dex_01,"FP_ROAM_XARDAS_S ECRET_26");<br> * * * *}<br> * * * *// если ГГ наёмник или охотник на драконов<br> * * * *else if((hero.guild == GIL_SLD) ¦¦ (hero.guild == GIL_DJG))<br> * * * *{<br> * * * * * *// разместить Амулет жизни<br> * * * * * *Wld_InsertItem(ItAm_Hp_01,"FP_ROAM_XARDAS_SE CRET_26");<br> * * * *}<br> * * * *else // иначе - маг Огня<br> * * * *{<br> * * * * * *// разместить Амулет озарения<br> * * * * * *Wld_InsertItem(ItAm_Hp_Mana_01,"FP_ROAM_XARD AS_SECRET_26");<br> * * * *};<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// Агон стоит на охране в таверне<br> * * * * * *B_StartOtherRoutine(Agon,"StillAlive"); <br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterNW_Kapitel2 = TRUE;<br> * *};<br>};<br><br>// Вход в Новый мир в Главе 3<br><br>var int EnterNW_Kapitel3; * // флаг одноразовости<br><br>func void B_ENTER_NEWWORLD_Kapitel_3()<br>{<br> * *// если флаг сброшен<br> * *if(EnterNW_Kapitel3 == FALSE)<br> * *{<br> * * * *// если Саландрил жив<br> * * * *if(Npc_IsDead(Salandril) == FALSE) <br> * * * *{<br> * * * * * *// сделать Саландрила "крутым парнем"<br> * * * * * *Salandril.aivar[AIV_ToughGuy] = TRUE;<br> * * * *};<br> * * * *// сброс флагов Корнелиуса<br> * * * *Cornelius.Flags = 0;<br> * * * *// если Ходжес жив<br> * * * *if(!Npc_IsDead(Hodges))<br> * * * *{<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(Hodges,"BENNETWEG") ;<br> * * * *};<br> * * * *// если Диего мертв<br> * * * *if(Npc_IsDead(DiegoNW))<br> * * * *{<br> * * * * * *// вставить Диего<br> * * * * * *Wld_InsertNpc(PC_THIEF_NW,"NW_CITY_ENTRANCE_ 01");<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(DiegoNW,"START");<b r> * * * *};<br> * * * *// если Горн мертв<br> * * * *if(Npc_IsDead(GornNW_vor_DJG))<br> * * * *{<br> * * * * * *// вставить Горна<br> * * * * * *Wld_InsertNpc(PC_Fighter_NW_vor_DJG,"BIGFARM ");<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(GornNW_vor_DJG,"START&qu ot;);<br> * * * *};<br> * * * *// если Ларес жив<br> * * * *if(Npc_IsDead(Lares) == FALSE)<br> * * * *{<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(Lares,"START");<br> * * * *};<br> * * * *// вставить Ищущего у входа в Рудниковую долину<br> * * * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,"NW _PASS_GATE_02");<br> * * * *// убить паладинов, охраняющих вход в Рудниковую долину<br> * * * *B_KillNpc(PAL_297_Ritter);<br> * * * *B_KillNpc(PAL_298_Ritter);<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// убить Ульфа<br> * * * * * *B_KillNpc(Ulf);<br> * * * *};<br> * * * *// вставка Полевых жуков в лесу<br> * * * *Wld_InsertNpc(Giant_Bug,"FP_ROAM_MEDIUMFORES T_KAP2_01");<br> * * * *Wld_InsertNpc(Giant_Bug,"FP_ROAM_MEDIUMFORES T_KAP2_02");<br> * * * *Wld_InsertNpc(Giant_Bug,"FP_ROAM_MEDIUMFORES T_KAP2_05");<br> * * * *// если Секоб жив<br> * * * *if(Npc_IsDead(Sekob) == FALSE) *<br> * * * *{<br> * * * * * *// задать функцию распорядка дня окружения Секоба<br> * * * * * *B_StartOtherRoutine(Sekob,"FleeDMT"); <br> * * * * * *B_StartOtherRoutine(Rosi,"FleeDMT"); <br> * * * * * *B_StartOtherRoutine(Till,"FleeDMT"); <br> * * * * * *B_StartOtherRoutine(Balthasar,"FleeDMT" ); <br> * * * * * *B_StartOtherRoutine(BAU_933_Rega,"FleeDMT&qu ot;); <br> * * * * * *B_StartOtherRoutine(BAU_934_Babera,"FleeDMT& quot;); <br> * * * * * *B_StartOtherRoutine(BAU_937_BAUER,"FleeDMT&q uot;); <br> * * * * * *B_StartOtherRoutine(BAU_938_BAUER,"FleeDMT&q uot;);<br> * * * * * *// вставить Ищущих в доме Секоба<br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob1,"NW_ FARM4_IN_06"); * <br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob2,"NW_ FARM4_IN_02");<br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob3,"NW_ FARM4_IN_03");<br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob4,"NW_ FARM4_IN_04");<br> * * * * * *// сделать Секоба бессмертным<br> * * * * * *Sekob.flags = NPC_FLAG_IMMORTAL;<br> * * * *};<br> * * * *// задать функции распорядка дня<br> * * * *B_StartOtherRoutine(Lester,"WAITFORPLAYER&qu ot;); * *// Лестер<br> * * * *B_StartOtherRoutine(Bennet,"PRISON"); * * * * * // Беннет<br> * * * *B_StartOtherRoutine(Sergio,"WAIT"); * * * * * * // Сергио<br> * * * *B_StartOtherRoutine(Peck,"STORAGE"); * * * * * *// Пек<br> * * * *// удалить Лотара<br> * * * *B_RemoveNpc(PAL_203_Lothar);<br> * * * *// респавн живности<br> * * * *//!!!!!!<br> * * * *// если Малак жив<br> * * * *if(Npc_IsDead(Malak) == FALSE) *<br> * * * *{<br> * * * * * *// Малак с рабочими покидает ферму<br> * * * * * *B_StartOtherRoutine(Malak,"FleeFromPass" ;);<br> * * * * * *// установить флаг, что Малак покинул ферму<br> * * * * * *Malak_isAlive_Kap3 = TRUE;<br> * * * * * *B_StartOtherRoutine(BAU_962_Bauer,"FleeFromP ass"); <br> * * * * * *B_StartOtherRoutine(BAU_964_Bauer,"FleeFromP ass"); <br> * * * * * *B_StartOtherRoutine(BAU_965_Bauer,"FleeFromP ass"); <br> * * * * * *B_StartOtherRoutine(BAU_966_Bauer,"FleeFromP ass"); <br> * * * * * *B_StartOtherRoutine(BAU_967_Bauer,"FleeFromP ass"); <br> * * * * * *B_StartOtherRoutine(BAU_968_Bauer,"FleeFromP ass"); <br> * * * * * *B_StartOtherRoutine(BAU_969_Bauer,"FleeFromP ass");<br> * * * * * *// если ГГ маг Огня<br> * * * * * *if(hero.guild == GIL_KDF)<br> * * * * * *{<br> * * * * * * * *// создать в инвентаре Малака "Альманах одержимости"<br> * * * * * * * *CreateInvItems(Malak,ITWR_DementorObsessionBook_M IS,1); <br> * * * * * *};<br> * * * *};<br> * * * *// если ГГ милиционер или паладин<br> * * * *if((hero.guild == GIL_MIL) ¦¦ (hero.guild == GIL_PAL))<br> * * * *{<br> * * * * * *// Хильда круглосуточно спит<br> * * * * * *B_StartOtherRoutine(Hilda,"Krank"); <br> * * * *};<br> * * * *// если ГГ наемник или охотник на драконов<br> * * * *if((hero.guild == GIL_SLD) ¦¦ (hero.guild == GIL_DJG))<br> * * * *{<br> * * * * * *// вставить Трость и нескольких НПС (где ???)<br> * * * * * *Wld_InsertItem(ItMw_MalethsGehstock_MIS,"FP_ ITEM_FARM1_01"); <br> * * * * * *Wld_InsertNpc(Shadowbeast,"NW_LITTLESTONEHEN DGE"); *<br> * * * * * *Wld_InsertNpc(BDT_1024_MalethsBandit,"NW_FAR M1_BANDITS_CAVE_08")<br>;<br> * * * * * *Wld_InsertNpc(BDT_1006_Bandit_H,"FP_STAND_DE MENTOR_KDF_29");<br> * * * * * *Wld_InsertNpc(BDT_1007_Bandit_H,"FP_STAND_DE MENTOR_KDF_30");<br> * * * * * *Wld_InsertNpc(BDT_1008_Bandit_H,"NW_FARM1_BA NDITS_CAVE_03");<br> * * * * * *Wld_InsertNpc(BDT_1004_Bandit_M,"NW_FARM1_BA NDITS_CAVE_02");<br> * * * * * *Wld_InsertNpc(BDT_1005_Bandit_M,"NW_FARM1_BA NDITS_CAVE_04");<br> * * * *};<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// вставить "Горная порода священной земли"<br> * * * * * *Wld_InsertItem(ItMi_KarrasBlessedStone_Mis," FP_ITEM_FARM1_03"); <br> * * * * * *Wld_InsertItem(ItMi_KarrasBlessedStone_Mis," FP_NW_ITEM_TROLL_10"); <br> * * * * * *// Хильда круглосуточно спит<br> * * * * * *B_StartOtherRoutine(Hilda,"KRANK"); <br> * * * * * *// если Вино жив<br> * * * * * *if(Npc_IsDead(Vino) == FALSE) * <br> * * * * * *{ <br> * * * * * * * *// Вино курит болотник<br> * * * * * * * *B_StartOtherRoutine(Vino,"OBESESSIONRITUAL&q uot;);<br> * * * * * * * *// дать Вино "Альманах одержимости"<br> * * * * * * * *CreateInvItems(Vino,ITWR_DementorObsessionBook_MI S,1); *<br> * * * * * * * *// установить флаг, что Вино покинул ферму<br> * * * * * * * *Vino_isAlive_Kap3 = TRUE;<br> * * * * * * * *// Лобарт курит болотник<br> * * * * * * * *B_StartOtherRoutine(Lobart,"OBESESSIONRITUAL ");<br> * * * * * * * *// вставка Ищущих<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino1,"FP_S TAND_DEMENTOR_KDF_31");<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino2,"FP_S TAND_DEMENTOR_KDF_32");<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino3,"FP_S TAND_DEMENTOR_KDF_33");<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino4,"NW_L ITTLESTONEHENDGE_02");<br> * * * * * * * *// убийство Молодых полевых жуков<br> * * * * * * * *B_KillNpc(YGiant_Bug_VinoRitual1);<br> * * * * * * * *B_KillNpc(YGiant_Bug_VinoRitual2);<br> * * * * * *};<br> * * * * * *// если Бромор жив<br> * * * * * *if(Npc_IsDead(Bromor) == FALSE) <br> * * * * * *{ <br> * * * * * * * *// дать Бромору "Альманах одержимости"<br> * * * * * * * *CreateInvItems(Bromor,ITWR_DementorObsessionBook_ MIS,1);<br> * * * * * *};<br> * * * *};<br> * * * *// если компромат на Сару не собран и задание Кантара получено<br> * * * *if(MIS_Canthars_KomproBrief != LOG_SUCCESS) && (MIS_Canthars_KomproBrief != FALSE)<br> * * * *// и Кантору не заплачено и Кантор жив <br> * * * *&& (Canthar_Pay == FALSE) && (Npc_IsDead(Canthar) == FALSE)<br> * * * *{<br> * * * * * *// убить Сару<br> * * * * * *B_RemoveNpc(Sarah);<br> * * * * * *// Кантор торгует<br> * * * * * *B_StartOtherRoutine(Canthar,"MARKTSTAND" ;);<br> * * * * * *AI_Teleport(Canthar,"NW_CITY_SARAH");<b r> * * * * * *// Кантор будет мстить<br> * * * * * *Canthar_Sperre = TRUE;<br> * * * * * *// ГГ обвиняет Кантора<br> * * * * * *Canthar_WiederRaus = TRUE;<br> * * * *};<br> * * * *// дать Лестеру серп<br> * * * *CreateInvItems(Lester,ItMw_1h_Bau_Axe,1);<br> * * * *// дать Эниму Жир кротокрыса<br> * * * *CreateInvItems(Ehnim,ItMi_Moleratlubric_MIS,1);<b r> * * * *// проклясть статуи Инноса<br> * * * *ShrineIsObsessed_NW_TROLLAREA_PATH_37 * * * * * = TRUE;<br> * * * *ShrineIsObsessed_NW_FARM1_CONNECT_XARDAS * * * *= TRUE;<br> * * * *ShrineIsObsessed_NW_TROLLAREA_PATH_66 * * * * * = TRUE;<br> * * * *ShrineIsObsessed_NW_TROLLAREA_PATH_04 * * * * * = TRUE;<br> * * * *ShrineIsObsessed_SAGITTA * * * * * * * * * * * *= TRUE;<br> * * * *ShrineIsObsessed_NW_BIGMILL_MALAKSVERSTECK_02 * = TRUE;<br> * * * *ShrineIsObsessed_NW_FARM3_BIGWOOD_02 * * * * * *= TRUE;<br> * * * *// вывод разных заставок Третьей главы в зависимости от гильдии ГГ<br> * * * *if((hero.guild == GIL_MIL) ¦¦ (hero.guild == GIL_PAL))<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_3,KapWechsel_3_Text,& quot;chapter3_MIL.tga,"ch<br>apter_01.wav&quo t;,6000);<br> * * * *}<br> * * * *else if (hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_3,KapWechsel_3_Text,& quot;chapter3_KDF.tga,"ch<br>apter_01.wav&quo t;,6000);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_3,KapWechsel_3_Text,& quot;chapter3_SLD.tga,"ch<br>apter_01.wav&quo t;,6000);<br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterNW_Kapitel3 = TRUE;<br> * *};<br>};<br><br>// Вход в Новый мир в Главе 4<br><br>var int EnterNW_Kapitel4; * // флаг одноразовости<br><br>func void B_ENTER_NEWWORLD_Kapitel_4()<br>{<br> * *// если флаг сьрошен<br> * *if(EnterNW_Kapitel4 == FALSE)<br> * *{<br> * * * *// если Саландрил находится ближе 100м от алтаря<br> * * * *if(Npc_GetDistToWP(Salandril,"ALTAR") < 10000) <br> * * * *{<br> * * * * * *// задать распорядок дня<br> * * * * * *B_StartOtherRoutine(Salandril,"Start"); <br> * * * *};<br> * * * *// Йорген появляется у монастыря<br> * * * *B_StartOtherRoutine(Jorgen,"Kloster");< br> * * * *// убить Бродягу<br> * * * *B_KillNpc(BDT_1050_Landstreicher);<br> * * * *// респавн живности<br> * * * *//!!!!!!<br> * * * *// если ГГ паладин<br> * * * *if(hero.Guild == GIL_PAL)<br> * * * *{<br> * * * * * *// расстановка орков по Новому миру<br> * * * * * *//!!!!!!<br> * * * *};<br> * * * *// если ГГ охотник на драконов или паладин<br> * * * *if((hero.guild == GIL_DJG) ¦¦ (hero.guild == GIL_PAL))<br> * * * *{<br> * * * * * *// расстановка орков у фермы Лобарта<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart1,"NW_FARM1_P ATH_CITY_SHEEP_04");<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart2,"NW_FARM1_P ATH_CITY_SHEEP_04");<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart3,"NW_FARM1_P ATH_CITY_SHEEP_04");<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart4,"NW_FARM1_P ATH_CITY_SHEEP_01");<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart5,"NW_FARM1_P ATH_CITY_SHEEP_01");<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart6,"NW_FARM1_P ATH_CITY_SHEEP_01");<br> * * * * * *// распорядок дня рабочих Лобарта<br> * * * * * *B_StartOtherRoutine(Vino,"BugsThere");< br> * * * * * *B_StartOtherRoutine(LobartsBauer1,"BugsThere ");<br> * * * * * *B_StartOtherRoutine(LobartsBauer2,"BugsThere ");<br> * * * *};<br> * * * *// если ГГ маг Огня или охотник на драконов<br> * * * *if((hero.guild == GIL_KDF) ¦¦ (hero.guild == GIL_DJG))<br> * * * *{<br> * * * * * *// проклясть статуи Инноса<br> * * * * * *ShrineIsObsessed_NW_TROLLAREA_PATH_37 * * * * * = FALSE;<br> * * * * * *ShrineIsObsessed_NW_FARM1_CONNECT_XARDAS * * * *= FALSE;<br> * * * * * *ShrineIsObsessed_NW_TROLLAREA_PATH_66 * * * * * = FALSE;<br> * * * * * *ShrineIsObsessed_NW_TROLLAREA_PATH_04 * * * * * = FALSE;<br> * * * * * *ShrineIsObsessed_SAGITTA * * * * * * * * * * * *= FALSE;<br> * * * * * *ShrineIsObsessed_NW_BIGMILL_MALAKSVERSTECK_02 * = FALSE;<br> * * * * * *ShrineIsObsessed_NW_FARM3_BIGWOOD_02 * * * * * *= FALSE;<br> * * * *};<br> * * * *// если ГГ охотник на драконов<br> * * * *if (hero.guild == GIL_DJG)<br> * * * *{<br> * * * * * *// расстановка Ящеров и их яиц по пещерам<br> * * * * * *//!!!!!!<br> * * * *};<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// расстановка Ищущих по Новому миру<br> * * * * * *//!!!!!!<br> * * * * * *// дать Рандольфу "Альманах одержимости"<br> * * * * * *CreateInvItems(Randolph,ITWR_DementorObsessionBoo k_MIS,1);<br> * * * * * *// Рандольф курит болотник<br> * * * * * *B_StartOtherRoutine(Randolph,"Obsessed" );<br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterNW_Kapitel4 = TRUE;<br> * *};<br> * *// если Тальбин не перешел за перевал<br> * *if(Talbin_FollowsThroughPass == LOG_RUNNING)<br> * *{<br> * * * *// вставить Тальбина<br> * * * *Wld_InsertNpc(VLK_4132_Talbin_NW,"LEVELCHANG E");<br> * * * *// установить флаг перехода<br> * * * *Talbin_FollowsThroughPass = LOG_SUCCESS;<br> * *};<br>};<br><br>// Вход в Новый мир в Главе 5<br><br>var int EnterNW_Kapitel5; * * * * * * * * * // флаг одноразовости<br>var int Pal_Schiffswache_Exchange_onetime; *// охрана покинула корабль (TRUE)<br>var int Rosi_FleeFromSekob_Kap5; * * * * * *// Роси покинула дом Секоба (TRUE)<br><br>func void B_ENTER_NEWWORLD_Kapitel_5()<br>{<br> * *// если флаг сброшен<br> * *if(EnterNW_Kapitel5 == FALSE)<br> * *{<br> * * * *// удалить Ксардаса<br> * * * *B_RemoveNpc(Xardas);<br> * * * *// Лестер стоит у башни Ксардаса<br> * * * *B_StartOtherRoutine(Lester,"XardasWeg") ;<br> * * * *// если Саландрил находится ближе 100м от алтаря<br> * * * *if(Npc_GetDistToWP(Salandril,"ALTAR") < 10000) <br> * * * *{<br> * * * * * *// задать распорядок дня<br> * * * * * *B_StartOtherRoutine(Salandril,"Start"); <br> * * * *};<br> * * * *// если Секоб жив<br> * * * *if(Npc_IsDead(Sekob) == FALSE) *<br> * * * *{<br> * * * * * *// Роси ушла от Секоба<br> * * * * * *B_StartOtherRoutine(Rosi,"FleeFromSekob" ;);<br> * * * * * *// Тилл ушел от Секоба<br> * * * * * *B_StartOtherRoutine(Till,"FleeFromSekob" ;);<br> * * * * * *// установить флаг<br> * * * * * *Rosi_FleeFromSekob_Kap5 = TRUE;<br> * * * *};<br> * * * *// если Горн вернулся<br> * * * *if(GornDJG_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Горна<br> * * * * * *Wld_InsertNpc(PC_Fighter_NW_nach_DJG,"Bigfar m");<br> * * * *};<br> * * * *// если Ангар вернулся<br> * * * *if(DJG_Angar_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Ангара<br> * * * * * *Wld_InsertNpc(DJG_705_Angar_NW,"Bigfarm" ;);<br> * * * *};<br> * * * *// респавн живности, вставка Марио и предметов<br> * * * *//!!!!!!<br> * * * *// если ГГ паладин<br> * * * *if(hero.guild == GIL_PAL)<br> * * * *{<br> * * * * * *// вставить Доспехи паладина<br> * * * * * *Wld_InsertItem(ItAr_PAl_H,"FP_ITEM_PALFINALA RMOR");<br> * * * * * *// вставить Рунический камень<br> * * * * * *Wld_InsertItem(ItMi_RuneBlank,"FP_NW_ITEM_LI BRARY_SEAMAP"); * * <br> * * * *};<br> * * * *// если ГГ охотник на драконов (Примечание: можно убрать, пуской блок)<br> * * * *if(hero.guild == GIL_DJG)<br> * * * *{<br> * * * *};<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// расстановка Ищущих по Новому миру<br> * * * * * *//!!!!!!<br> * * * * * *// если Секоб жив<br> * * * * * *if(Npc_IsDead(Sekob) == FALSE) <br> * * * * * *{ <br> * * * * * * * *// дать Секобу "Альманах одержимости"<br> * * * * * * * *CreateInvItems(Sekob,ITWR_DementorObsessionBook_M IS,1);<br> * * * * * * * *// Секоб курит болотник<br> * * * * * * * *B_StartOtherRoutine(Sekob,"Obsessed"); <br> * * * * * *};<br> * * * *}; <br> * * * *// сборище паладинов в верхней части Хориниса<br> * * * *//!!!!!!<br> * * * *// вывод разных заставок Пятой главы в зависимости от гильдии ГГ<br> * * * *if((hero.guild == GIL_MIL) ¦¦ (hero.guild == GIL_PAL))<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_5,KapWechsel_5_Text,& quot;chapter5_PAL.tga,"ch<br>apter_01.wav&quo t;,6000);<br> * * * *}<br> * * * *else if (hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_5,KapWechsel_5_Text,& quot;chapter5_KDF.tga,"ch<br>apter_01.wav&quo t;,6000);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_5,KapWechsel_5_Text,& quot;chapter5_DJG.tga,"ch<br>apter_01.wav&quo t;,6000);<br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterNW_Kapitel5 = TRUE;<br> * *};<br> * *// выполняется при каждом входе в Новый мир в Главе 5<br> * *// если ГГ впустил орков в крепость и охрана не покинула корабль<br> * *if(MIS_OCGateOpen == TRUE) && (Pal_Schiffswache_Exchange_onetime == FALSE)<br> * *{<br> * * * *// охрана покидает корабль<br> * * * *B_StartOtherRoutine(Pal_212_Schiffswache,"Sh ipFree");<br> * * * *B_StartOtherRoutine(Pal_213_Schiffswache,"Sh ipFree");<br> * * * *// установить флаг<br> * * * *Pal_Schiffswache_Exchange_onetime = TRUE;<br> * * * *// команда может подниматься на корабль<br> * * * *MIS_ShipIsFree = TRUE;<br> * *};<br> * *// если Бифф шел за перевал<br> * *if(Biff_FollowsThroughPass == LOG_RUNNING)<br> * *{<br> * * * *// вставить Биффа<br> * * * *Wld_InsertNpc(DJG_713_Biff_NW,"LEVELCHANGE&q uot;);<br> * * * *// Бифф успешно дошел<br> * * * *Biff_FollowsThroughPass = LOG_SUCCESS; *<br> * *};<br>};<br><br>// Вход в Новый мир в Главе 6<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterNW_Kapitel6; * // флаг одноразовости<br><br>func void B_ENTER_NEWWORLD_Kapitel_6()<br>{<br> * *if (EnterNW_Kapitel6 == FALSE)<br> * *{<br> * * * *EnterNW_Kapitel6 = TRUE;<br> * *};<br>};<br><br>// Общая функция входа в Новый мир<br>func void B_ENTER_NEWWORLD() * *<br>{<br> * *// инициализация глобальных НПС<br> * *B_InitNpcGlobals(); <br> * *// в зависимости от главы вызвать соответствующую функцию<br> * *if (Kapitel >= 1) * { B_ENTER_NEWWORLD_Kapitel_1(); };<br> * *if (Kapitel >= 2) * { B_ENTER_NEWWORLD_Kapitel_2(); };<br> * *if (Kapitel >= 3) * { B_ENTER_NEWWORLD_Kapitel_3(); };<br> * *if (Kapitel >= 4) * { B_ENTER_NEWWORLD_Kapitel_4(); };<br> * *if (Kapitel >= 5) * { B_ENTER_NEWWORLD_Kapitel_5(); };<br> * *if (Kapitel >= 6) * { B_ENTER_NEWWORLD_Kapitel_6(); };<br> * *// задать текущий уровень<br> * *CurrentLevel = NEWWORLD_ZEN; <br> * *// инициализация глобальных НПС (уже было, можно удалить)<br> * *B_InitNpcGlobals();<br>};<br><br>
|
Re: Уроки скриптологии
2WSA:<br>
Цитата:
|
Re: Уроки скриптологии
* *9. Функции входа в Старый мир (Миненталь).<br><br>Файл B_Enter_OldWorld.d<br><br>// Вход в Миненталь в Главе 1<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterOW_Kapitel1; * // флаг одноразовости<br><br>func void B_ENTER_OLDWORLD_Kapitel_1()<br>{<br> * *if (EnterOW_Kapitel1 == FALSE)<br> * *{<br> * * * *EnterOW_Kapitel1 = TRUE;<br> * *};<br>};<br><br>// Вход в Миненталь в Главе 2<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterOW_Kapitel2; * // флаг одноразовости<br><br>func void B_ENTER_OLDWORLD_Kapitel_2()<br>{<br> * *if (EnterOW_Kapitel2 == FALSE)<br> * *{<br> * * * *EnterOW_Kapitel2 = TRUE;<br> * *};<br>};<br><br>// Вход в Миненталь в Главе 3<br><br>var int EnterOW_Kapitel3; * // флаг одноразовости<br><br>func void B_ENTER_OLDWORLD_Kapitel_3()<br>{<br> * *// если флаг сброшен<br> * *if(EnterOW_Kapitel3 == FALSE)<br> * *{<br> * * * *// удалить Мильтона<br> * * * *B_RemoveNpc(PC_Mage_OW);<br> * * * *// удалить Горна<br> * * * *B_RemoveNpc(PC_Fighter_OW);<br> * * * *// удалить Диего<br> * * * *B_RemoveNpc(PC_ThiefOW);<br> * * * *// респавн живности<br> * * * *// Примечание: Здесь и далее значок //!!!!!! означает, что часть текста скрипта пропущена для краткости<br> * * * *//!!!!!!<br> * * * *// вставить руну Страх в Старой башне Ксардаса<br> * * * *Wld_InsertItem(ItRu_Fear,"FP_ITEM_XARDASALTE RTURM_01");<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// вставить Рунический камень<br> * * * * * *Wld_InsertItem(ItMi_RuneBlank,"FP_ITEM_XARDA SALTERTURM_02");<br> * * * *}<br> * * * *else // иначе<br> * * * *{<br> * * * * * *// вставить кусок Руды<br> * * * * * *Wld_InsertItem(ItMi_Nugget,"FP_ITEM_XARDASAL TERTURM_02");<br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterOW_Kapitel3 = TRUE;<br> * *};<br>};<br><br>// Вход в Миненталь в Главе 4<br><br>var int EnterOW_Kapitel4; * // флаг одноразовости<br><br>func void B_ENTER_OLDWORLD_Kapitel_4()<br>{<br> * *// если флаг сброшен<br> * *if(EnterOW_Kapitel4 == FALSE)<br> * *{<br> * * * *// если Энгром жив<br> * * * *if((Npc_IsDead(Engrom)) == FALSE)<br> * * * *{<br> * * * * * *// задать распорядок дня<br> * * * * * *B_StartOtherRoutine(Engrom,"Obsessed"); <br> * * * * * *// дать Энгрому Кожу шныга<br> * * * * * *CreateInvItems(Engrom,ItAt_TalbinsLurkerSkin,1);< br> * * * * * *// если ГГ маг Огня<br> * * * * * *if(hero.guild == GIL_KDF)<br> * * * * * *{<br> * * * * * * * *// дать Энгрому "Альманах одержимости"<br> * * * * * * * *CreateInvItems(Engrom,ITWR_DementorObsessionBook_ MIS,1);<br> * * * * * *}<br> * * * * * *else // иначе<br> * * * * * *{<br> * * * * * * * *// убить Энгрома<br> * * * * * * * *B_KillNpc(Engrom);<br> * * * * * *};<br> * * * * * *// Энгром ушел от Тальбина<br> * * * * * *EngromIsGone = TRUE;<br> * * * *};<br> * * * *// убить НПС<br> * * * *B_RemoveNpc(STRF_1115_Geppert); * * // Гепперт<br> * * * *B_RemoveNpc(STRF_1116_Kervo); * * * // Керво<br> * * * *B_RemoveNpc(VLK_4106_Dobar); * * * *// Добар<br> * * * *B_RemoveNpc(VLK_4107_Parlaf); * * * // Парлаф<br> * * * *// если Сенграт жив<br> * * * *if((Npc_IsDead(Sengrath)) == FALSE)<br> * * * *{<br> * * * * * *// Сенграт идет к забору орков<br> * * * * * *B_StartOtherRoutine(Sengrath,"ORCBARRIER&quo t;);<br> * * * * * *// если у него есть арбалет<br> * * * * * *if(Npc_HasItems(Sengrath,ItRw_Mil_Crossbow))<br> * * * * * *{<br> * * * * * * * *// удалить арбалет<br> * * * * * * * *Npc_RemoveInvItem(Sengrath,ItRw_Mil_Crossbow);<br > * * * * * *};<br> * * * * * *// дать Сенграту его арбалет<br> * * * * * *CreateInvItems(Sengrath,ItRw_SengrathsArmbrust_MI S,1);<br> * * * * * *// Сенграт ушел к оркам<br> * * * * * *Sengrath_Missing = TRUE;<br> * * * * * *// убить Сенграта<br> * * * * * *B_KillNpc(Sengrath);<br> * * * *};<br> * * * *// вставка мертвых Охотников на драконов<br> * * * *//!!!!!!<br> * * * *// Брутус боится мясных жуков<br> * * * *Npc_ExchangeRoutine(Brutus,"Meatbugs"); <br> * * * *Wld_InsertNpc(Meatbug_Brutus1,"OC_FOLTER_SHA RP"); * <br> * * * *Wld_InsertNpc(Meatbug_Brutus2,"OC_FOLTER_SHA RP"); * <br> * * * *Wld_InsertNpc(Meatbug_Brutus3,"OC_FOLTER_SHA RP"); * <br> * * * *Wld_InsertNpc(Meatbug_Brutus4,"OC_FOLTER_SHA RP"); * <br> * * * *// вставка Сильвио<br> * * * *Wld_InsertNpc(DJG_700_Sylvio,"OC1");<br > * * * *// если Булко ушел в Миненталь<br> * * * *if(SLD_Bullco_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Булко<br> * * * * * *Wld_InsertNpc(DJG_701_Bullco,"OC1");<br > * * * *};<br> * * * *// если Род ушел в Миненталь<br> * * * *if(SLD_Rod_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Рода<br> * * * * * *Wld_InsertNpc(DJG_702_Rod,"OC1");<br> * * * *};<br> * * * *// если Сайфер ушел в Миненталь<br> * * * *if(SLD_Cipher_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Сайфера<br> * * * * * *Wld_InsertNpc(DJG_703_Cipher,"OC1");<br > * * * *};<br> * * * *// если Горн ушел в Миненталь<br> * * * *if(SLD_Gorn_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Горна<br> * * * * * *Wld_InsertNpc(PC_Fighter_DJG,"OC1");<br > * * * *};<br> * * * *// вставить других охотников на драконов<br> * * * *Wld_InsertNpc(DJG_705_Angar,"OC1"); <br> * * * *Wld_InsertNpc(DJG_708_Kurgan,"OC1"); <br> * * * *Wld_InsertNpc(DJG_709_Rethon,"OC1"); <br> * * * *Wld_InsertNpc(DJG_710_Kjorn,"OC1"); <br> * * * *Wld_InsertNpc(DJG_711_Godar,"OC1"); <br> * * * *Wld_InsertNpc(DJG_712_Hokurn,"OC1"); <br> * * * *Wld_InsertNpc(DJG_713_Biff,"OC1"); <br> * * * *Wld_InsertNpc(DJG_714_Jan,"OC1"); <br> * * * *Wld_InsertNpc(DJG_715_Ferros,"OC1"); <br> * * * *// вставить Ур-Шака<br> * * * *Wld_InsertNpc(NONE_110_Urshak,"WP_INTRO_FALL "); <br> * * * *// респавн живности и вставка предметов<br> * * * *//!!!!!!<br> * * * *// создать тему "Охотники на драконов"<br> * * * *Log_CreateTopic(TOPIC_Dragonhunter,LOG_MISSION);< br> * * * *// задать статус темы<br> * * * *Log_SetTopicStatus(TOPIC_Dragonhunter,LOG_RUNNING );<br> * * * *// запись в дневник<br> * * * *B_LogEntry(TOPIC_Dragonhunter,"Началась охота на драконов и она должна заманить в рудниковую долину больших авантюристов. Я могу только надеяться, что они не встанут у меня на пути."); <br> * * * *// заставка Главы 4 * * <br> * * * *IntroduceChapter(KapWechsel_4,KapWechsel_4_Text,& quot;chapter4.tga","<br>chapter_01.wav&q uot;,6000);<br> * * * *// установить флаг<br> * * * *EnterOW_Kapitel4 = TRUE;<br> * *};<br> * *// если ГГ отказался провести Тальбина за перевал<br> * *if(Talbin_FollowsThroughPass == LOG_OBSOLETE)<br> * *{<br> * * * *// убить Тальбина<br> * * * *B_KillNpc(VLK_4130_Talbin);<br> * * * *// вставка остера, убившего Тальбина<br> * * * *Wld_InsertNpc(Dragonsnapper,"START");<b r> * * * *// задание провалено<br> * * * *Talbin_FollowsThroughPass = LOG_FAILED;<br> * *}<br> * *// иначе, если Тальбин ушел за перевал<br> * *else if(Talbin_FollowsThroughPass == LOG_SUCCESS)<br> * *{<br> * * * *// удалить Тальбина<br> * * * *B_RemoveNpc(VLK_4130_Talbin);<br> * * * *// Примечание: данную строку необходимо удалить!<br> * * * *Talbin_FollowsThroughPass = LOG_FAILED;<br> * *};<br>};<br><br>// Вход в Миненталь в Главе 5<br><br>var int EnterOW_Kapitel5; * // флаг одноразовости<br><br>func void B_ENTER_OLDWORLD_Kapitel_5()<br>{<br> * *// если флаг сброшен<br> * *if(EnterOW_Kapitel5 == FALSE)<br> * *{<br> * * * *// сброс флагов охраны главных ворот<br> * * * *VLK_4143_HaupttorWache.flags = 0;<br> * * * *// дать стражнику Башенный ключ стражника главных ворот * * * * * * * * * * <br> * * * *CreateInvItems(VLK_4143_HaupttorWache,ITKE_OC_MAI NGATE_MIS,1);<br> * * * *// если Брутус жив<br> * * * *if(Npc_IsDead(Brutus) == FALSE)<br> * * * *{<br> * * * * * *// дать Брутусу "Альманах одержимости"<br> * * * * * *CreateInvItems(VLK_4100_Brutus,ITWR_DementorObses sionBook_MIS,1);<br> * * * *};<br> * * * *// если Бильгот покинул Миненталь<br> * * * *if(TschuessBilgot == TRUE)<br> * * * *{<br> * * * * * *// удалить Бильгота<br> * * * * * *B_RemoveNpc(VLK_4120_Bilgot);<br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterOW_Kapitel5 = TRUE;<br> * *};<br> * *// если Бифф покинул Миненталь<br> * *if(Biff_FollowsThroughPass == LOG_SUCCESS)<br> * *{<br> * * * *// удалить Биффа<br> * * * *B_RemoveNpc(DJG_713_Biff);<br> * *};<br>};<br><br>// Вход в Миненталь в Главе 5<br>// Примечание: функция не используется, можно удалить вместе с флагом<br><br>var int EnterOW_Kapitel6; * // флаг одноразовости<br><br>func void B_ENTER_OLDWORLD_Kapitel_6()<br>{<br> * *if(EnterOW_Kapitel6 == FALSE)<br> * *{<br> * * * *EnterOW_Kapitel6 = TRUE;<br> * *};<br>};<br><br>// Общая функция входа в Миненталь<br>func void B_ENTER_OLDWORLD()<br>{<br> * *// инициализация глобальных НПС<br> * *B_InitNpcGlobals();<br> * *// в зависимости от главы вызвать соответствующую функцию<br> * *if (Kapitel >= 1) * { B_ENTER_OLDWORLD_Kapitel_1(); };<br> * *if (Kapitel >= 2) * { B_ENTER_OLDWORLD_Kapitel_2(); };<br> * *if (Kapitel >= 3) * { B_ENTER_OLDWORLD_Kapitel_3(); };<br> * *if (Kapitel >= 4) * { B_ENTER_OLDWORLD_Kapitel_4(); };<br> * *if (Kapitel >= 5) * { B_ENTER_OLDWORLD_Kapitel_5(); };<br> * *if (Kapitel >= 6) * { B_ENTER_OLDWORLD_Kapitel_6(); };<br> * *// задать текущий уровень<br> * *CurrentLevel = OLDWORLD_ZEN;<br> * *// инициализация глобальных НПС (уже было, можно удалить)<br> * *B_InitNpcGlobals();<br> * *// если Бифф член партии ГГ и Бифф жив<br> * *if(DJG_BiffParty == TRUE) && (Npc_IsDead(Biff) == FALSE)<br> * *{<br> * * * *// если ГГ отдает Биффу половину добычи<br> * * * *if(DJG_Biff_HalbeHalbe == TRUE)<br> * * * *{<br> * * * * * *// отказ от диалога на 500мс<br> * * * * * *Npc_SetRefuseTalk(Biff,500);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// отказ от диалога на 300мс<br> * * * * * *Npc_SetRefuseTalk(Biff,300);<br> * * * *};<br> * *};<br> * *// если Бильгот мертв и ГГ вел его за перевал<br> * *if(Npc_IsDead(Bilgot) == TRUE) && (MIS_RescueBilgot == LOG_RUNNING)<br> * *{<br> * * * *// задание провалено<br> * * * *MIS_RescueBilgot = LOG_FAILED;<br> * *}; *<br>};<br><br><br> * *10. Функция получения текущего дня.<br><br>Файл B_GetDayPlus.d<br><br>// ************************************************** **************<br>// Функция получения текущего дня<br>// ************************************************** **************<br>// Возвращаемое значение: текущий день<br><br>func int B_GetDayPlus()<br>{<br> * *// если время между 22-00 и 23-59<br> * *if(Wld_IsTime(22,00,23,59))<br> * *{<br> * * * *// возвратить следующий день<br> * * * *// (так сделано для того, чтобы при получении задания, когда ГГ говорят приходи завтра или утром, у него было время что-то успеть сделать)<br> * * * *return (Wld_GetDay() + 1);<br> * *};<br> * *return Wld_GetDay();<br>};<br><br><br> * *11. Функция получения стоимости обучения ГГ.<br><br>Файл B_GetLearnCostAttribute.d<br><br>// ************************************************** **************<br>// Функция получения стоимости обучения ГГ<br>// ************************************************** **************<br>// Аргументы: oth - обучаемый НПС (ГГ), attribut - аттрибут<br>// Возвращаемое значение: стоимость обучения<br><br>func int B_GetLearnCostAttribute(var C_NPC oth,var int attribut)<br>{<br> * *// в зависимости от улучшаемого аттрибута определяется стоимость его увеличения на единицу<br> * *var int kosten;<br> * *kosten = 0;<br> * *// если сила<br> * *if(attribut == ATR_STRENGTH) <br> * *{<br> * * * *if(oth.aivar[REAL_STRENGTH] >= 120) * * * * { kosten = 5; }<br> * * * *else if(oth.aivar[REAL_STRENGTH] >= 90) * * { kosten = 4; }<br> * * * *else if(oth.aivar[REAL_STRENGTH] >= 60) * * { kosten = 3; }<br> * * * *else if(oth.aivar[REAL_STRENGTH] >= 30) * * { kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * *};<br> * *// если ловкость<br> * *if(attribut == ATR_DEXTERITY)<br> * *{<br> * * * *if(oth.aivar[REAL_DEXTERITY] >= 120) * * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_DEXTERITY] >= 90) * *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_DEXTERITY] >= 60) * *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_DEXTERITY] >= 30) * *{ kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * *};<br> * *// если мана<br> * *if (attribut == ATR_MANA_MAX)<br> * *{ * * * <br> * * * *if(oth.aivar[REAL_MANA_MAX] >= 120) * * * * { kosten = 5; }<br> * * * *else if(oth.aivar[REAL_MANA_MAX] >= 90) * * { kosten = 4; }<br> * * * *else if(oth.aivar[REAL_MANA_MAX] >= 60) * * { kosten = 3; }<br> * * * *else if(oth.aivar[REAL_MANA_MAX] >= 30) * * { kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * *};<br> * *// стоимость обучения<br> * *return kosten;<br>};<br><br><br> * *12. Функция получения стоимости обучения навыкам.<br><br>Файл B_GetLearnCostTalent.d<br><br>// ************************************************** **************<br>// Функция получения стоимости обучения навыкам<br>// ************************************************** **************<br>// Аргументы: oth - обучаемый НПС (ГГ), talent - навык, skill - уровень мастерства<br>// Возвращаемое значение: стоимость обучения<br><br>func int B_GetLearnCostTalent(var C_NPC oth,var int talent,var int skill)<br>{<br> * *var int kosten;<br> * *kosten = 0;<br> * *// повышение владения кругом магии<br> * *if(talent == NPC_TALENT_MAGE)<br> * *{<br> * * * *if(skill >= 1) && (skill <= 6)<br> * * * *{<br> * * * * * *kosten = 5;<br> * * * *};<br> * *};<br> * *// владение одноручником<br> * *if(talent == NPC_TALENT_1H)<br> * *{ * <br> * * * *if(oth.aivar[REAL_TALENT_1H] >= 120) * * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_1H] >= 90) * *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_1H] >= 60) * *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_1H] >= 30) * *{ kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * * * *kosten = (kosten * skill);<br> * *};<br> * *// владение двуручником<br> * *if(talent == NPC_TALENT_2H)<br> * *{ * <br> * * * *if(oth.aivar[REAL_TALENT_2H] >= 120) * * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_2H] >= 90) * *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_2H] >= 60) * *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_2H] >= 30) * *{ kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * * * *kosten = (kosten * skill);<br> * *};<br> * *// владение луком<br> * *if(talent == NPC_TALENT_BOW)<br> * *{ * <br> * * * *if(oth.aivar[REAL_TALENT_BOW] >= 120) * * * { kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_BOW] >= 90) * { kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_BOW] >= 60) * { kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_BOW] >= 30) * { kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * * * *kosten = (kosten * skill);<br> * *};<br> * *// владение арбалетом<br> * *if(talent == NPC_TALENT_CROSSBOW)<br> * *{ * <br> * * * *if(oth.aivar[REAL_TALENT_CROSSBOW] >= 120) * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_CROSSBOW] >= 90) *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_CROSSBOW] >= 60) *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_CROSSBOW] >= 30) *{ kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * * * *kosten = (kosten * skill);<br> * *};<br> * *// подкрадывание или акробатика<br> * *if(talent == NPC_TALENT_SNEAK) ¦¦ (talent == NPC_TALENT_ACROBAT)<br> * *{<br> * * * *kosten = 5;<br> * *};<br> * *// вскрытие замков или карманная кража<br> * *if(talent == NPC_TALENT_PICKLOCK) ¦¦ (talent == NPC_TALENT_PICKPOCKET)<br> * *{<br> * * * *kosten = 10;<br> * *};<br> * *// кузнечное дело<br> * *if(talent == NPC_TALENT_SMITH)<br> * *{<br> * * * *if(skill == WEAPON_Common) * * * * * * *{ kosten = 2; }<br> * * * *else if(skill == WEAPON_1H_Special_01) *{ kosten = 4; }<br> * * * *else if(skill == WEAPON_2H_Special_01) *{ kosten = 4; }<br> * * * *else if(skill == WEAPON_1H_Special_02) *{ kosten = 6; }<br> * * * *else if(skill == WEAPON_2H_Special_02) *{ kosten = 6; }<br> * * * *else if(skill == WEAPON_1H_Special_03) *{ kosten = 8; }<br> * * * *else if(skill == WEAPON_2H_Special_03) *{ kosten = 8; }<br> * * * *else if(skill == WEAPON_1H_Special_04) *{ kosten = 10;}<br> * * * *else if(skill == WEAPON_2H_Special_04) *{ kosten = 10;}<br> * * * *else if(skill == WEAPON_1H_Harad_01) * *{ kosten = 4; }<br> * * * *else if(skill == WEAPON_1H_Harad_02) * *{ kosten = 6; }<br> * * * *else if(skill == WEAPON_1H_Harad_03) * *{ kosten = 8; }<br> * * * *else if(skill == WEAPON_1H_Harad_04) * *{ kosten = 10;};<br> * *};<br> * *// алхимия<br> * *if(talent == NPC_TALENT_ALCHEMY)<br> * *{<br> * * * *if * * (skill == POTION_Health_01) * * *{ kosten = 1; }<br> * * * *else if(skill == POTION_Health_02) * * *{ kosten = 3; }<br> * * * *else if(skill == POTION_Health_03) * * *{ kosten = 5; }<br> * * * *else if(skill == POTION_Health_04) * * *{ kosten = 8; }<br> * * * *else if(skill == POTION_Mana_01 *) * * *{ kosten = 1; }<br> * * * *else if(skill == POTION_Mana_02 *) * * *{ kosten = 3; }<br> * * * *else if(skill == POTION_Mana_03 *) * * *{ kosten = 5; }<br> * * * *else if(skill == POTION_Mana_04 *) * * *{ kosten = 8; }<br> * * * *else if(skill == POTION_Speed * *) * * *{ kosten = 5; }<br> * * * *else if(skill == POTION_Perm_STR ) * * *{ kosten = 20;}<br> * * * *else if(skill == POTION_Perm_DEX ) * * *{ kosten = 20;}<br> * * * *else if(skill == POTION_Perm_Mana) * * *{ kosten = 10;}<br> * * * *else if(skill == POTION_Perm_Health) * *{ kosten = 10;}<br> * * * *else if(skill == POTION_MegaDrink) * * *{ kosten = 20;};<br> * *};<br> * *// разделка животных<br> * *if(talent == NPC_TALENT_TAKEANIMALTROPHY)<br> * *{<br> * * * *if * * (skill == TROPHY_Teeth * * * ) * { kosten = 3; }<br> * * * *else if(skill == TROPHY_Claws * * * ) * { kosten = 3; }<br> * * * *else if(skill == TROPHY_Fur * * * * ) * { kosten = 5; }<br> * * * *else if(skill == TROPHY_Heart * * * ) * { kosten = 3; }<br> * * * *else if(skill == TROPHY_ShadowHorn *) * { kosten = 3; }<br> * * * *else if(skill == TROPHY_FireTongue *) * { kosten = 1; }<br> * * * *else if(skill == TROPHY_BFWing * * *) * { kosten = 1; }<br> * * * *else if(skill == TROPHY_BFSting * * ) * { kosten = 1; }<br> * * * *else if(skill == TROPHY_Mandibles * ) * { kosten = 1; }<br> * * * *else if(skill == TROPHY_CrawlerPlate) * { kosten = 3; }<br> * * * *else if(skill == TROPHY_DrgSnapperHorn) { kosten = 1; }<br> * * * *else if(skill == TROPHY_DragonScale ) * { kosten = 3; }<br> * * * *else if(skill == TROPHY_DragonBlood ) * { kosten = 3; }<br> * * * *else if(skill == TROPHY_ReptileSkin ) * { kosten = 3; };<br> * *}; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *<br> * *// иностранные языки<br> * *if(talent == NPC_TALENT_FOREIGNLANGUAGE)<br> * *{<br> * * * *if * * (skill == LANGUAGE_1) * * * *{ kosten = 5; }<br> * * * *else if(skill == LANGUAGE_2) * * * *{ kosten = 10;}<br> * * * *else if(skill == LANGUAGE_3) * * * *{ kosten = 15;};<br> * *};<br> * *// обучение Огонька<br> * *if(talent == NPC_TALENT_WISPDETECTOR)<br> * *{<br> * * * *if * * (skill == WISPSKILL_NF * *) *{ kosten = 0; }<br> * * * *else if(skill == WISPSKILL_FF * *) *{ kosten = 1; }<br> * * * *else if(skill == WISPSKILL_NONE *) *{ kosten = 2; }<br> * * * *else if(skill == WISPSKILL_RUNE *) *{ kosten = 3; }<br> * * * *else if(skill == WISPSKILL_MAGIC ) *{ kosten = 4; }<br> * * * *else if(skill == WISPSKILL_FOOD *) *{ kosten = 5; }<br> * * * *else if(skill == WISPSKILL_POTIONS) { kosten = 5; };<br> * *};<br> * *// изготовление рун<br> * *if(talent == NPC_TALENT_RUNES)<br> * *{<br> * * * *if * * (skill == SPL_PalLight * * * ) * { kosten = 1; }<br> * * * *else if(skill == SPL_PalLightHeal * ) * { kosten = 3; }<br> * * * *else if(skill == SPL_PalHolyBolt * *) * { kosten = 3; }<br> * * * *else if(skill == SPL_PalMediumHeal *) * { kosten = 5; }<br> * * * *else if(skill == SPL_PalRepelEvil * ) * { kosten = 5; }<br> * * * *else if(skill == SPL_PalFullHeal * *) * { kosten = 10;}<br> * * * *else if(skill == SPL_PalDestroyEvil ) * { kosten = 10;}<br> * * * *else if(skill == SPL_PalTeleportSecret) { kosten = 5; }<br> * * * *else if(skill == SPL_Light * * * * *) * { kosten = 1; }<br> * * * *else if(skill == SPL_Firebolt * * * ) * { kosten = 5; }<br> * * * *else if(skill == SPL_LightHeal * * *) * { kosten = 3; }<br> * * * *else if(skill == SPL_SummonGoblinSkeleton) { kosten = 3;}<br> * * * *else if(skill == SPL_Zap * * * * * *) * { kosten = 3; }<br> * * * *else if(skill == SPL_Icebolt * * * *) * { kosten = 5; }<br> * * * *else if(skill == SPL_InstantFireball) * { kosten = 10;}<br> * * * *else if(skill == SPL_SummonWolf * * ) * { kosten = 5; }<br> * * * *else if(skill == SPL_WindFist * * * ) * { kosten = 5; }<br> * * * *else if(skill == SPL_Sleep * * * * *) * { kosten = 5; }<br> * * * *else if(skill == SPL_Charm * * * * *) * { kosten = 5; }<br> * * * *else if(skill == SPL_IceLance * * * ) * { kosten = 5; } *<br> * * * *else if(skill == SPL_Whirlwind * * *) * { kosten = 5; }<br> * * * *else if(skill == SPL_MediumHeal * * ) * { kosten = 5; }<br> * * * *else if(skill == SPL_LightningFlash ) * { kosten = 5; }<br> * * * *else if(skill == SPL_ChargeFireball ) * { kosten = 10;}<br> * * * *else if(skill == SPL_SummonSkeleton ) * { kosten = 10;}<br> * * * *else if(skill == SPL_Fear * * * * * ) * { kosten = 5; }<br> * * * *else if(skill == SPL_IceCube * * * *) * { kosten = 10;}<br> * * * *else if(skill == SPL_Thunderstorm * ) * { kosten = 5; }<br> * * * *else if(skill == SPL_Geyser * * * * ) * { kosten = 10;}<br> * * * *else if(skill == SPL_ChargeZap * * *) * { kosten = 10;}<br> * * * *else if(skill == SPL_SummonGolem * *) * { kosten = 15;}<br> * * * *else if(skill == SPL_DestroyUndead *) * { kosten = 10;}<br> * * * *else if(skill == SPL_Pyrokinesis * *) * { kosten = 10;}<br> * * * *else if(skill == SPL_WaterFist * * *) * { kosten = 10;} * <br> * * * *else if(skill == SPL_Firestorm * * *) * { kosten = 15;}<br> * * * *else if(skill == SPL_IceWave * * * *) * { kosten = 20;}<br> * * * *else if(skill == SPL_SummonDemon * *) * { kosten = 20;}<br> * * * *else if(skill == SPL_FullHeal * * * ) * { kosten = 10;}<br> * * * *else if(skill == SPL_MasterOfDisaster) *{ kosten = 15;}<br> * * * *else if(skill == SPL_Firerain * * * ) * { kosten = 20;}<br> * * * *else if(skill == SPL_BreathOfDeath *) * { kosten = 20;}<br> * * * *else if(skill == SPL_MassDeath * * *) * { kosten = 20;}<br> * * * *else if(skill == SPL_ArmyOfDarkness ) * { kosten = 20;}<br> * * * *else if(skill == SPL_Shrink * * * * ) * { kosten = 20;}<br> * * * *else * * * * * * * * * * * * * * * * * *{ kosten = 5; };<br> * *};<br> * *// стоимость<br> * *return kosten;<br>};<br><br>
|
Re: Уроки скриптологии
* *13. Функция создания трофеев у убитых монстров.<br><br>Файл B_GiveDeathInv.d<br><br>// ************************************************** **************<br>// Функция создания трофеев у убитых монстров.<br>// ************************************************** **************<br>// Аргументы: slf - убитый монстр<br><br>func void B_GiveDeathInv(var C_NPC slf)<br>{<br> * *// если труп обыскан<br> * *if(slf.aivar[AIV_DeathInvGiven] == TRUE)<br> * *{<br> * * * *return;<br> * *};<br> * *// если ГГ умеет добывать зубы<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Teeth] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WOLF) * * * * * *{ * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) * * * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARG) * * * * * *{ * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) * * * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR) * * * * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND) * * *{ * CreateInvItems(slf,ItAt_Teeth * * ,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK) * * *{ * CreateInvItems(slf,ItAt_SharkTeeth,1); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL) * * * * * { * CreateInvItems(slf,ItAt_TrollTooth,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK) * * { * CreateInvItems(slf,ItAt_TrollTooth,4); *};<br> * *};<br> * *// если ГГ умеет добывать когти<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARAN) * * * * * { * CreateInvItems(slf,ItAt_Claw * * *,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * * { * CreateInvItems(slf,ItAt_Claw * * *,4); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) * * * * { * CreateInvItems(slf,ItAt_Claw * * *,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR) * * * * * { * CreateInvItems(slf,ItAt_Claw * * *,2); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,ItAt_Claw * * *,4); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_Claw * * *,4); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND) * * *{ * CreateInvItems(slf,ItAt_Claw * * *,4); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_LURKER) * * * * *{ * CreateInvItems(slf,ItAt_LurkerClaw,1); *}; * * *<br> * *};<br> * *// если ГГ умеет добывать шкуру<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Fur] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHEEP) * * * * * { * CreateInvItems(slf,ItAt_SheepFur * * * ,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WOLF) * * * * * *{ * CreateInvItems(slf,ItAt_WolfFur * * * *,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) * * * * { * CreateInvItems(slf,ItAt_WolfFur * * * *,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARG) * * * * * *{ * CreateInvItems(slf,ItAt_WargFur * * * *,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_ShadowFur * * *,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL) * * * * * { * CreateInvItems(slf,ItAt_TrollFur * * * ,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK) * * { * CreateInvItems(slf,ItAt_TrollBlackFur *,1); }; *<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_Keiler) * * * * *{ * CreateInvItems(slf,ItAt_Addon_KeilerFur,1); };<br> * *};<br> * *// если ГГ умеет добывать кожу рептилий<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ReptileSkin] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_LURKER) * * * * *{ * CreateInvItems(slf,itat_LurkerSkin,1); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) * * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR) * * * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,itat_LurkerSkin,1); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARAN) * * * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK) * * *{ * CreateInvItems(slf,ItAt_SharkSkin ,1); *}; *<br> * *};<br> * *// если ГГ умеет добывать сердца<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Heart] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_STONEGOLEM) * * *{ * CreateInvItems(slf,ItAt_StoneGolemHeart,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREGOLEM) * * * { * CreateInvItems(slf,ItAt_FireGolemHeart ,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_ICEGOLEM) * * * *{ * CreateInvItems(slf,ItAt_IceGolemHeart *,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) * * * * * { * CreateInvItems(slf,ItAt_DemonHeart * * ,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) * * *{ * CreateInvItems(slf,ItAt_DemonHeart * * ,1); };<br> * *};<br> * *// если ГГ умеет добывать рог мракориса<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ShadowHorn] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_ShadowHorn,1); *};<br> * *};<br> * *// если ГГ умеет добывать огненный язык<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_FireTongue] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * * { * CreateInvItems(slf,ItAt_WaranFiretongue,1); };<br> * *};<br> * *// если ГГ умеет добывать крылья кровяного шершня<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFWing] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY) * * * *{ * CreateInvItems(slf,ItAt_Wing,2); };<br> * *};<br> * *// если ГГ умеет добывать жало кровяного шершня<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFSting] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY) * * * *{ * CreateInvItems(slf,ItAt_Sting,1); };<br> * *};<br> * *// если ГГ умеет добывать жвало<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Mandibles] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_GIANT_BUG) * * * * * { * CreateInvItems(slf,ItAt_BugMandibles, * *1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER) * * * * { * CreateInvItems(slf,ItAt_CrawlerMandibles,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR) *{ * CreateInvItems(slf,ItAt_CrawlerMandibles,1); };<br> * *};<br> * *// если ГГ умеет добывать панцирь ползунов<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_CrawlerPlate] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER) * * * * { * CreateInvItems(slf,ItAt_CrawlerPlate,1); };<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR) *{ * CreateInvItems(slf,ItAt_CrawlerPlate,2); };<br> * *};<br> * *// если ГГ умеет добывать рог остера<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DrgSnapperHorn] == TRUE)<br> * *{<br> * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,ItAt_DrgSnapperHorn,2); *};<br> * *};<br> * *// если ГГ умеет добывать чешую дракона<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonScale] == TRUE)<br> * *{<br> * * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(FireDragonIsland)) * { * CreateInvItems(slf,ItAt_DragonScale,12); };<br> * * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Undeaddragon)) * * * { * CreateInvItems(slf,ItAt_DragonScale,12); };<br> * *};<br> * *// если ГГ умеет добывать кровь дракона<br> * *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonBlood] == TRUE)<br> * *{<br> * * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(FireDragonIsland)) * { * CreateInvItems(slf,ItAt_DragonBlood,2); };<br> * * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Undeaddragon)) * * * { * CreateInvItems(slf,ItAt_DragonBlood,2); };<br> * *};<br> * *// что и у кого может добыть ГГ без умений<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] *== ID_MEATBUG) * * * { * CreateInvItems(slf,ItAt_MeatbugFlesh * * * * ,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_UNDEAD) { * CreateInvItems(slf,ItAt_UndeadDragonSoulStone,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_FIRE) * { * CreateInvItems(slf,ItAt_FireDragonHeart * * *,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_ICE) * *{ * CreateInvItems(slf,ItAt_IceDragonHeart * * * ,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_ROCK) * { * CreateInvItems(slf,ItAt_RockDragonHeart * * *,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_SWAMP) *{ * CreateInvItems(slf,ItAt_SwampDragonHeart * * ,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_GOBBO_SKELETON){ * CreateInvItems(slf,ItAt_GoblinBone * * * * * ,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_SKELETON) * * *{ * CreateInvItems(slf,ItAt_SkeletonBone * * * * ,1); }<br> * *else if(self.aivar[AIV_MM_REAL_ID] == ID_BLATTCRAWLER) *{ * CreateInvItems(slf,ItAt_Addon_BCKopf * * * * ,1); };<br> * *// что может ГГ случайным образом добыть из гоблина<br> * *GoblinGreen_Randomizer = Hlp_Random(100);<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer == 0)<br> * *{ * CreateInvItems(slf,ItMi_SilverRing,1); *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 5)<br> * *{ * CreateInvItems(slf,ItPl_Mushroom_01,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 15)<br> * *{ * CreateInvItems(slf,Itmi_Gold,5); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 30)<br> * *{ * CreateInvItems(slf,ItFo_Fish,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 50)<br> * *{ * CreateInvItems(slf,ItMi_Gold,2); };<br> * *// что может ГГ случайным образом добыть из черного гоблина<br> * *GoblinBlack_Randomizer = Hlp_Random(100);<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer == 0)<br> * *{ * CreateInvItems(slf,ItMi_GoldRing,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 5)<br> * *{ * CreateInvItems(slf,ItFo_Fish,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 15)<br> * *{ * CreateInvItems(slf,Itmi_Gold,10); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 30)<br> * *{ * CreateInvItems(slf,ItPl_Mushroom_02,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 50)<br> * *{ * CreateInvItems(slf,ItMi_Gold,5); };<br> * *// что может ГГ случайным образом добыть из орков<br> * *Orc_Randomizer *= Hlp_Random (10);<br> * *// воин орков<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 0) * * * *<br> * *{ * <br> * * * *CreateInvItems(slf,ItPo_Health_02,1);<br> * * * *CreateInvItems(slf,ItMI_Gold * * ,2); * <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 1)<br> * *{ * <br> * * * *CreateInvItems(slf,ItPo_Health_01,1);<br> * * * *CreateInvItems(slf,ItFoMuttonRaw ,1); * <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 2)<br> * *{ * <br> * * * *CreateInvItems(slf,ItPo_Health_01,2 *);<br> * * * *CreateInvItems(slf,ItMI_Gold * * ,18 ); *<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 3)<br> * *{ * <br> * * * *CreateInvItems(slf,ItFo_Booze * * ,1);<br> * * * *CreateInvItems(slf,ItMi_SilverRing,1); *<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 4)<br> * *{ * <br> * * * *CreateInvItems(slf,ItPl_Health_Herb_01,1);<br> * * * *CreateInvItems(slf,ItMI_Gold * * * * *,4); *<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer <= 7)<br> * *{ * <br> * * * *CreateInvItems(slf,ItMI_Gold,9);<br> * *};<br> * *// шаман орков<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 0)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_03,1);<br> * * * *CreateInvItems(slf,ItMI_Gold * ,5); <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 1)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_02,2);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 2)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_02,1);<br> * * * *CreateInvItems(slf,ItMi_Coal * ,1); <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 3)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_01,2);<br> * * * *CreateInvItems(slf,ItMI_Gold * ,12); * *<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 4)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_01,1);<br> * * * *CreateInvItems(slf,ItMi_Sulfur ,1); <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer <= 8 )<br> * *{<br> * * * *CreateInvItems(slf,ItPl_Mana_Herb_02,2 );<br> * * * *CreateInvItems(slf,ItMI_Gold * * * *,8 ); * *<br> * *};<br> * *// элитный воин орков<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 0)<br> * *{<br> * * * *CreateInvItems(slf,ItAt_WolfFur *,1);<br> * * * *CreateInvItems(slf,ItPo_Health_03,1);<br> * * * *CreateInvItems(slf,ItFoMutton * *,2);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 1)<br> * *{<br> * * * *CreateInvItems(slf,ItMi_GoldRing ,1);<br> * * * *CreateInvItems(slf,ItPo_Health_01,1);<br> * * * *CreateInvItems(slf,ItMi_Gold * * ,26);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 2)<br> * *{<br> * * * *CreateInvItems(slf,ItSc_LightHeal,1);<br> * * * *CreateInvItems(slf,ItLSTorch * * ,2);<br> * * * *CreateInvItems(slf,ItAt_Teeth * *,1); <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer <= 5)<br> * *{<br> * * * *CreateInvItems(slf,ItMi_Gold * * ,19);<br> * * * *CreateInvItems(slf,ItPo_Health_02,1);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 6)<br> * *{<br> * * * *CreateInvItems(slf,ItAt_WargFur,1);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer <= 9)<br> * *{<br> * * * *CreateInvItems(slf,ItMi_Gold * * ,22);<br> * * * *CreateInvItems(slf,ItPo_Health_01,1);<br> * *};<br> * *// что может ГГ случайным образом добыть из демонов<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer == 0)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_03 ,2);<br> * * * *CreateInvItems(slf,ItMi_GoldRing,1); * *<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer <= 2)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_03 *,1);<br> * * * *CreateInvItems(slf,ItPo_Health_02,1);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer <= 6)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_02,2);<br> * * * *CreateInvItems(slf,ItMi_Pitch *,1); <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_02 *,1);<br> * * * *CreateInvItems(slf,ItPo_Health_02,1); * <br> * *};<br> * *// что может ГГ случайным образом добыть из лордов демонов<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) && (Orc_Randomizer <= 1)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_03 *,2);<br> * * * *CreateInvItems(slf,ItPo_Health_03,2);<br> * * * *CreateInvItems(slf,ItSc_SumDemon ,1); * <br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) && (Orc_Randomizer <= 5)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_03 *,2);<br> * * * *CreateInvItems(slf,ItPo_Health_03,2);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_03 *,1);<br> * * * *CreateInvItems(slf,ItPo_Health_03,1); * <br> * *}; *<br> * *// установить флаг труп обыскан<br> * *slf.aivar[AIV_DeathInvGiven] = TRUE;<br>};<br><br><br> * *14. Функция передачи предметов от одного НПС другому.<br><br>Файл B_GiveInvItems.d<br><br>// ************************************************** **************<br>// Функция передачи предметов от одного НПС другому<br>// ************************************************** **************<br>// Аргументы: giver - дающий НПС, taker - берущий НПС, itemInstance - предмет, amount - кол-во предметов<br>// Возвращаемое значение: TRUE - предмет(ы) переданы, FALSE - передача невозможна<br><br>// Внимание: аргумент itemInstance является переопределенным типом (C_Item -> int)<br><br>func int B_GiveInvItems(var C_NPC giver,var C_NPC taker,var int itemInstance,var int amount)<br>{<br> * *// если дающий ГГ<br> * *if(Npc_IsPlayer(giver))<br> * *{<br> * * * *// если кол-во передаваемых предметов больше имеющихся<br> * * * *if(amount > Npc_HasItems(giver,itemInstance))<br> * * * *{<br> * * * * * *return FALSE;<br> * * * *};<br> * *};<br> * *// если передавать ничего не надо<br> * *if(amount == 0)<br> * *{<br> * * * *return TRUE;<br> * *};<br> * *// удалить предметы у дающего<br> * *Npc_RemoveInvItems(giver,itemInstance,amount);<br > * *// дать предметы берущему<br> * *CreateInvItems(taker,itemInstance,amount);<br> * *var string concatText;<br> * *var string itemname;<br> * *// имя предмета<br> * *itemname = item.name;<br> * *// если дающий ГГ<br> * *if(Npc_IsPlayer(giver))<br> * *{<br> * * * *// если деньги<br> * * * *if(itemInstance == ItMi_Gold)<br> * * * *{<br> * * * * * *// вывод строки: amount + " золотых передано"<br> * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_GoldGegebe n);<br> * * * * * *AI_PrintScreen(concatText,-1,YPOS_GoldGiven,FONT_ScreenSmall,2);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// если предмет один<br> * * * * * *if(amount == 1)<br> * * * * * *{<br> * * * * * * * *// вывод строки: itemname + " дают"<br> * * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_gegeben);<br> * * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemGiven,FONT_ScreenSmall,2);<br> * * * * * *} * <br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *// вывод строки: amount + " предметов передано" + " (" + itemname + ")"<br> * * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsGegeb en);<br> * * * * * * * *concatText = ConcatStrings(concatText," (");<br> * * * * * * * *concatText = ConcatStrings(concatText,itemname); <br> * * * * * * * *concatText = ConcatStrings(concatText,")");<br> * * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemGiven,FONT_ScreenSmall,2);<br> * * * * * *}; * <br> * * * *};<br> * *}<br> * *// иначе, если берущий ГГ<br> * *else if(Npc_IsPlayer(taker))<br> * *{<br> * * * *// если деньги<br> * * * *if(itemInstance == ItMi_Gold)<br> * * * *{<br> * * * * * *// вывод строки: amount + " золотых принято"<br> * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_GoldErhalt en);<br> * * * * * *AI_PrintScreen(concatText,-1,YPOS_GoldTaken,FONT_ScreenSmall,2);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// если предмет один<br> * * * * * *if(amount == 1)<br> * * * * * *{<br> * * * * * * * *// вывод строки: itemname + " получают"<br> * * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_erhalten);<br> * * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemTaken,FONT_ScreenSmall,2);<br> * * * * * *} * <br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *// вывод строки: amount + " предметов принято" + " (" + itemname + ")"<br> * * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsErhal ten);<br> * * * * * * * *concatText = ConcatStrings(concatText," (");<br> * * * * * * * *concatText = ConcatStrings(concatText,itemname); <br> * * * * * * * *concatText = ConcatStrings(concatText,")");<br> * * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemTaken,FONT_ScreenSmall,2);<br> * * * * * *}; <br> * * * *};<br> * *}; *<br> * *return TRUE;<br>};<br><br><br> * *15. Функция начисления ГГ экспы.<br><br>Файл B_GivePlayerXP.d<br><br>// ************************************************** **************<br>// Функция начисления ГГ экспы<br>// ************************************************** **************<br>// Аргументы: add_xp - начисляемая экспа<br><br>func void B_GivePlayerXP(var int add_xp)<br>{<br> * *// если уровень ГГ равен 0<br> * *if(hero.level == 0)<br> * *{<br> * * * *// до следующего уровня необходимо 500 экспы<br> * * * *hero.exp_next = 500;<br> * *};<br> * *// добавить ГГ экспу<br> * *hero.exp = hero.exp + add_xp;<br> * *var string concatText;<br> * *// вывод текста: "Опыт + " + add_xp<br> * *concatText = PRINT_XPGained;<br> * *concatText = ConcatStrings(concatText,IntToString(add_xp));<br> * *PrintScreen(concatText,-1,YPOS_XPGained,FONT_ScreenSmall,2);<br> * *// если экспы достаточно для повышения уровня<br> * *if(hero.exp >= hero.exp_next)<br> * *{<br> * * * *// уровень++<br> * * * *hero.level = hero.level + 1;<br> * * * *// значение экспы для перехода на новый уровень<br> * * * *// общая формула - 500* ((hero.level + 2) / 2) * (hero.level + 1))<br> * * * *hero.exp_next = hero.exp_next + ((hero.level + 1) * 500);<br> * * * *// увеличить макс. жизнь на 12<br> * * * *hero.attribute[ATR_HITPOINTS_MAX] = hero.attribute[ATR_HITPOINTS_MAX] + HP_PER_LEVEL;<br> * * * *// увеличить текущую жизнь на 12<br> * * * *hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_PER_LEVEL;<br> * * * *// увеличить очки обучения на 10<br> * * * *hero.LP = hero.LP + LP_PER_LEVEL;<br> * * * *// вывод строки: "Следующий уровень!"<br> * * * *PrintScreen(PRINT_LevelUp,-1,YPOS_LevelUp,FONT_Screen,2);<br> * * * *// музычка<br> * * * *Snd_Play("LevelUp");<br> * *};<br> * *// закрыть в дневнике завершенные квесты<br> * *B_Checklog();<br>};<br><br><br> * *16. Функция возвращения Грега в Яркендар.<br><br>Файл B_GregIsBack.d<br><br>// ************************************************** **************<br>// Функция возвращения Грега в Яркендар<br>// (вызывается при открытии ГГ сундука Грега в Яркендаре)<br>// ************************************************** **************<br><br>func void GregIsBack_S1()<br>{<br> * *// если флаг возврата не установлен<br> * *if(GregIsBack == FALSE)<br> * *{<br> * * * *// вставить Грега в Яркендар<br> * * * *Wld_InsertNpc(PIR_1320_Addon_Greg,"ADW_PIRAT ECAMP_GREG"); * <br> * * * *// сменить распорядки дня<br> * * * *B_StartOtherRoutine(Bill,"GREGISBACK"); * * * * * * // Билл<br> * * * *B_StartOtherRoutine(Morgan,"GREGISBACK" ); * * * * * // Морган<br> * * * *B_StartOtherRoutine(AlligatorJack,"GREGISBAC K"); * *// Аллигатор Джек<br> * * * *// вставить расчленителей в каньон<br> * * * *Wld_InsertNpc(CanyonRazor07,"ADW_CANYON_MINE 1_01");<br> * * * *Wld_InsertNpc(CanyonRazor08,"ADW_CANYON_PATH _TO_LIBRARY_07A");<br> * * * *Wld_InsertNpc(CanyonRazor09,"ADW_CANYON_PATH _TO_LIBRARY_36");<br> * * * *Wld_InsertNpc(CanyonRazor10,"ADW_CANYON_PATH _TO_MINE2_04");<br> * *};<br> * *// установить флаг возврата<br> * *GregIsBack = TRUE;<br>}; <br><br><br> * *17. Функция инициализации отношений между гильдиями людей.<br><br>Файл B_InitGuildsAttitudes.d<br><br>// ************************************************** **************<br>// Функция *инициализации отношений между гильдиями людей<br>// ************************************************** **************<br><br>func void B_InitGuildAttitudes()<br>{<br> * *// Примечание: неважно что функция пустая, ничего с ней делать нельзя, существует взаимосвязь с экзешником.<br> * *// Без этой функции отношения между людьми не будут установлены!!!<br>};<br><br><br>
|
Re: Уроки скриптологии
Новая версия скриптовой болванки 0,4 Мб<br><br>Почти все d-файлы заменены на закомментированные Vam'ом, остальные руcсифицированы / прокомментированы.<br>Убраны все не использующиеся файлы и вся болванка дополнительно перебрана.<br>Глюков и ошибок не обнаружено, при использовании компилятора 2.12 убраны все варнинги.<br><br>---<br>2Killer-XXX:
Цитата:
|
Re: Уроки скриптологии
* *18. Функция инициализации новой главы.<br><br>Файл B_Kapitelwechsel.d<br><br>// ************************************************** **************<br>// Функция инициализации новой главы<br>// ************************************************** **************<br>// Аргументы: neues_Kapitel - новая глава, aktuelles_Level_Zen - индекс области игрового мира<br><br>func void B_Kapitelwechsel(var int neues_Kapitel,var int aktuelles_Level_Zen)<br>{<br> * *// текущая глава = новой главе<br> * *Kapitel = neues_Kapitel;<br> * *// если глава 1<br> * *if(neues_Kapitel == 1)<br> * *{<br> * * * *// вывод заставки<br> * * * *IntroduceChapter(KapWechsel_1,KapWechsel_1_Text,& quot;chapter1.tga","<br>chapter_01.wav&q uot;,6000);<br> * *}<br> * *// если глава 2<br> * *else if(neues_Kapitel == 2)<br> * *{<br> * * * *// сброс флагов Секоба и Бенгара<br> * * * *Sekob.flags = 0;<br> * * * *Bengar.flags = 0;<br> * * * *// вывод заставки<br> * * * *IntroduceChapter(KapWechsel_2,KapWechsel_2_Text,& quot;chapter2.tga","<br>chapter_01.wav&q uot;,6000);<br> * *}<br> * *// если глава 3 (пусто, можно удалить)<br> * *else if(neues_Kapitel == 3)<br> * *{ * <br> * *}<br> * *// если глава 4<br> * *else if(neues_Kapitel == 4)<br> * *{<br> * * * *// ГГ умеет заряжать Глаз Инноса (можно удалить, должен обучить Пирокар)<br> * * * *PLAYER_TALENT_ALCHEMY[CHARGE_Innoseye] = TRUE;<br> * *}<br> * *// если глава 5<br> * *else if(neues_Kapitel == 5)<br> * *{<br> * * * *// ГГ умеет заряжать Глаз Инноса (можно удалить, должен обучить Пирокар)<br> * * * *PLAYER_TALENT_ALCHEMY[CHARGE_Innoseye] = TRUE;<br> * *}<br> * *// если глава 6<br> * *else if(neues_Kapitel == 6)<br> * *{<br> * * * *// ГГ умеет заряжать Глаз Инноса (можно удалить, должен обучить Пирокар)<br> * * * *PLAYER_TALENT_ALCHEMY[CHARGE_Innoseye] *= TRUE;<br> * *};<br> * *// закрыть в дневнике завершенные квесты<br> * *B_CheckLog();<br> * *// если Миненталь<br> * *if(aktuelles_Level_Zen == OLDWORLD_ZEN)<br> * *{<br> * * * *// вход в Миненталь<br> * * * *B_ENTER_OLDWORLD();<br> * *};<br> * *// если Новый мир<br> * *if(aktuelles_Level_Zen == NEWWORLD_ZEN)<br> * *{<br> * * * *// вход в Новый мир<br> * * * *B_ENTER_NEWWORLD();<br> * *};<br> * *// в зависимости от главы задать экспу по умолчанию<br> * *if(Kapitel == 1) { XP_Ambient = XP_AmbientKap1; }; *// 50<br> * *if(Kapitel == 2) { XP_Ambient = XP_AmbientKap2; }; *// 100<br> * *if(Kapitel == 3) { XP_Ambient = XP_AmbientKap3; }; *// 150<br> * *if(Kapitel == 4) { XP_Ambient = XP_AmbientKap4; }; *// 200<br> * *if(Kapitel == 5) { XP_Ambient = XP_AmbientKap5; }; *// 250<br> * *if(Kapitel == 6) { XP_Ambient = XP_AmbientKap6; }; *// 300<br>};<br><br><br> * *19. Убить НПС.<br><br>Файл B_KillNPC.d<br><br>// ************************************************** **************<br>// Убить НПС<br>// ************************************************** **************<br>// Аргументы: npcInstance - ссылка на НПС<br><br>// Внимание: аргумент npcInstance является переопределенным типом (C_NPC -> int)<br><br>func void B_KillNpc(var int npcInstance)<br>{<br> * *var C_NPC npc;<br> * *// получить НПС<br> * *npc = Hlp_GetNpc(npcInstance);<br> * *// если НПС существует и жив<br> * *if(Hlp_IsValidNpc(npc) && !Npc_IsDead(npc))<br> * *{<br> * * * *// сброс флагов<br> * * * *npc.flags = 0;<br> * * * *// создать в инвентаре Старинную монету<br> * * * *CreateInvItem(npc,ItMi_OldCoin);<br> * * * *// фактическая смерть<br> * * * *Npc_ChangeAttribute(npc,ATR_HITPOINTS,-npc.attribute[ATR_HITPOINTS_MAX]);<br> * *};<br>};<br><br><br> * *20. Создать в дневнике новую тему.<br><br>Файл B_LogEntry.d<br><br>// ************************************************** **************<br>// Создать в дневнике новую тему<br>// ************************************************** **************<br>// Аргументы: topic - тема, entry - первая запись темы<br><br>func void B_LogEntry(var string topic,var string entry)<br>{<br> * *// добавить тему в дневник<br> * *Log_AddEntry(topic,entry);<br> * *// вывод текста: "Ваш дневник дополнен"<br> * *PrintScreen(PRINT_NewLogEntry,-1,YPOS_LOGENTRY,FONT_ScreenSmall,2);<br> * *// музычка<br> * *Snd_Play("LogEntry");<br>};<br><br><br> * *21. ГГ находит тайник Агона.<br><br>Файл B_MageCaveTrigger.d<br><br>// ************************************************** **************<br>// ГГ находит тайник Агона<br>// Примечание: Триггерная функция - задана Спейсером<br>// ************************************************** **************<br><br>func void B_MAGECAVETRIGGER() * <br>{<br> * *// если Магический голем жив и выполняется квест "Испытание огня"<br> * *if((Npc_IsDead(MagicGolem) == FALSE) && (MIS_SCHNITZELJAGD == LOG_RUNNING))<br> * *{<br> * * * *// если Агон существует и жив<br> * * * *if(Hlp_IsValidNpc(AGON) && !Npc_IsDead(AGON))<br> * * * *{<br> * * * * * *// телепортация Агона к тайнику<br> * * * * * *AI_Teleport(AGON,"NW_TROLLAREA_PATH_02" );<br> * * * * * *// задать новый распорядок дня Агона<br> * * * * * *Npc_ExchangeRoutine(Agon,"GOLEMLIVES"); <br> * * * * * *// начать его выполнять<br> * * * * * *AI_ContinueRoutine(AGON);<br> * * * *};<br> * *};<br>};<br><br><br> * *22. Подготовка НПС для перехода из одной области мира в другую.<br><br>Файл B_NPC_IsAliveCheck.d<br><br>// если НПС готов к переходу, то в соответствующую переменную записывается TRUE<br>var int SLD_Bullco_is_alive; * *// Буллко<br>var int SLD_Rod_is_alive; * * * // Род<br>var int SLD_Cipher_is_alive; * *// Сайфер<br>var int SLD_Gorn_is_alive; * * *// Горн<br>var int SLD_Sylvio_is_alive; * *// Сильвио<br>var int GornDJG_is_alive; * * * // Горн<br>var int DJG_Angar_is_alive; * * // Ангар<br>var int DiegoOW_is_alive; * * * // Диего (не используется)<br>var int GornOw_is_alive; * * * *// Горн *(не используется)<br>var int Vino_isAlive_Kap3; * * *// Вино<br>var int Malak_isAlive_Kap3; * * // Малак<br><br>// ************************************************** **************<br>// Подготовка НПС для перехода из одной области мира в другую<br>// ************************************************** **************<br>// Аргументы: Zen - область мира<br><br>func void B_NPC_IsAliveCheck(var int Zen)<br>{<br> * *// новый мир<br> * *if(Zen == NEWWORLD_ZEN)<br> * *{<br> * * * *// если все квесты ГГ для перехода в главу 4 выполнены<br> * * * *if(MIS_ReadyforChapter4 == TRUE)<br> * * * *{<br> * * * * * *// подготовка к переходу Охотников на драконов в Миненталь<br> * * * * * *var C_NPC SLD_Bullco_OWCheck;<br> * * * * * *// получить ссылку на Буллко<br> * * * * * *SLD_Bullco_OWCheck *= Hlp_GetNpc(SLD_807_Bullco);<br> * * * * * *// если Буллко мертв<br> * * * * * *if(Npc_IsDead(SLD_Bullco_OWCheck))<br> * * * * * *{<br> * * * * * * * *// сбросить флаг<br> * * * * * * * *SLD_Bullco_is_alive = FALSE;<br> * * * * * *}<br> * * * * * *else // жив<br> * * * * * *{<br> * * * * * * * *// установить флаг<br> * * * * * * * *SLD_Bullco_is_alive = TRUE;<br> * * * * * * * *// удалить Буллко<br> * * * * * * * *B_RemoveNpc(SLD_Bullco_OWCheck);<br> * * * * * *}; *<br> * * * * * *// Род<br> * * * * * *var C_NPC SLD_Rod_OWCheck;<br> * * * * * *SLD_Rod_OWCheck = Hlp_GetNpc(SLD_804_Rod);<br> * * * * * *if(Npc_IsDead(SLD_Rod_OWCheck))<br> * * * * * *{<br> * * * * * * * *SLD_Rod_is_alive = FALSE;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *SLD_Rod_is_alive = TRUE;<br> * * * * * * * *B_RemoveNpc(SLD_Rod_OWCheck);<br> * * * * * *}; *<br> * * * * * *var C_NPC Sld_821;<br> * * * * * *// товарищ, с которым болтает Род на ферме Секоба<br> * * * * * *Sld_821 = Hlp_GetNpc(Sld_821_Soeldner);<br> * * * * * *// сменить распорядок дня из отсутствия Рода<br> * * * * * *Npc_ExchangeRoutine(Sld_821,"RODWEG");< br> * * * * * *// Сайфер * <br> * * * * * *var C_NPC SLD_Cipher_OWCheck;<br> * * * * * *SLD_Cipher_OWCheck = Hlp_GetNpc(SLD_803_Cipher);<br> * * * * * *if(Npc_IsDead(SLD_Cipher_OWCheck))<br> * * * * * *{<br> * * * * * * * *SLD_Cipher_is_alive = FALSE;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *SLD_Cipher_is_alive = TRUE;<br> * * * * * * * *B_RemoveNpc(SLD_Cipher_OWCheck);<br> * * * * * *};<br> * * * * * *// Горн<br> * * * * * *var C_NPC SLD_Gorn_OWCheck;<br> * * * * * *SLD_Gorn_OWCheck = Hlp_GetNpc(PC_Fighter_NW_vor_DJG); <br> * * * * * *if(Npc_IsDead(SLD_Gorn_OWCheck))<br> * * * * * *{<br> * * * * * * * *SLD_Gorn_is_alive = FALSE;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *SLD_Gorn_is_alive = TRUE;<br> * * * * * * * *B_RemoveNpc(SLD_Gorn_OWCheck);<br> * * * * * *}; *<br> * * * * * *// Сильвио<br> * * * * * *var C_NPC SLD_Sylvio_OWCheck;<br> * * * * * *SLD_Sylvio_OWCheck = Hlp_GetNpc(SLD_806_Sylvio);<br> * * * * * *if(Npc_IsDead(SLD_Sylvio_OWCheck))<br> * * * * * *{<br> * * * * * * * *SLD_Sylvio_is_alive = FALSE;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *SLD_Sylvio_is_alive = TRUE;<br> * * * * * * * *B_RemoveNpc(SLD_Sylvio_OWCheck);<br> * * * * * *}; *<br> * * * *};<br> * *};<br> * *// Миненталь<br> * *if(Zen == OLDWORLD_ZEN )<br> * *{<br> * * * *// если глава 4 и выше<br> * * * *if(Kapitel >= 4)<br> * * * *{<br> * * * * * *// подготовка к возвращению Охотников на драконов в Новый мир<br> * * * * * *// Горн<br> * * * * * *var C_NPC GornDJG_NWCheck;<br> * * * * * *GornDJG_NWCheck = Hlp_GetNpc(GornDJG); <br> * * * * * *if(Npc_IsDead(GornDJG))<br> * * * * * *{<br> * * * * * * * *GornDJG_is_alive = FALSE;<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *GornDJG_is_alive = TRUE;<br> * * * * * * * *B_RemoveNpc(GornDJG_NWCheck);<br> * * * * * *};<br> * * * * * *// Ангар<br> * * * * * *var C_NPC DJG_Angar_NWCheck;<br> * * * * * *DJG_Angar_NWCheck = Hlp_GetNpc(DJG_Angar);<br> * * * * * *if(Npc_IsDead(DJG_Angar))<br> * * * * * *{<br> * * * * * * * *DJG_Angar_is_alive = FALSE;}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *DJG_Angar_is_alive = TRUE;<br> * * * * * * * *B_RemoveNpc(DJG_Angar_NWCheck);<br> * * * * * *};<br> * * * *};<br> * *};<br>};<br><br><br> * *23. Функции изменения аттрибутов НПС.<br><br>Файл B_RaiseAttribute.d<br><br>// ************************************************** **************<br>// Функции изменения атрибутов НПС<br>// ************************************************** **************<br><br>// Повышение реальных атрибутов НПС<br>// Аргументы: oth - НПС, attribut - атрибут, points - пункты изменения<br>func void B_RaiseRealAttributeLearnCounter(var C_NPC oth,var int attrib,var int points)<br>{<br> * *// сила<br> * *if(attrib == ATR_STRENGTH)<br> * *{<br> * * * *oth.aivar[REAL_STRENGTH] = oth.aivar[REAL_STRENGTH] + points;<br> * *}<br> * *// ловкость<br> * *else if(attrib == ATR_DEXTERITY)<br> * *{<br> * * * *oth.aivar[REAL_DEXTERITY] = oth.aivar[REAL_DEXTERITY] + points;<br> * *}<br> * *// макс. мана<br> * *else if(attrib == ATR_MANA_MAX)<br> * *{<br> * * * *oth.aivar[REAL_MANA_MAX] = oth.aivar[REAL_MANA_MAX] + points;<br> * *};<br>};<br><br>// Повышение атрибутов НПС<br>// Аргументы: oth - НПС, attribut - атрибут, points - пункты изменения<br>func void B_RaiseAttribute(var C_NPC oth,var int attrib,var int points)<br>{<br> * *var string concatText;<br> * *// сила<br> * *if(attrib == ATR_STRENGTH) * * * * *<br> * *{<br> * * * *// повысить силу<br> * * * *oth.attribute[ATR_STRENGTH] = oth.attribute[ATR_STRENGTH] + points;<br> * * * *// вывод текста: "Сила + " + points<br> * * * *concatText = ConcatStrings(PRINT_LearnSTR,IntToString(points)); <br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// ловкость<br> * *if(attrib == ATR_DEXTERITY) * * * * <br> * *{ * <br> * * * *// повысить ловкость<br> * * * *oth.attribute[ATR_DEXTERITY] = oth.attribute[ATR_DEXTERITY] + points;<br> * * * *// если ловкость >= 90 и НПС не владеет акробатикой<br> * * * *if(oth.attribute[ATR_DEXTERITY] >= 90) && (Npc_GetTalentSkill(oth,NPC_TALENT_ACROBAT) == 0)<br> * * * *{<br> * * * * * *// научить акробатике<br> * * * * * *Npc_SetTalentSkill(oth,NPC_TALENT_ACROBAT,1);<br> * * * * * *// вывод текста: "Акробатика-Бонус!"<br> * * * * * *PrintScreen(PRINT_Addon_AcrobatBonus,-1,55,FONT_Screen,2);<br> * * * *};<br> * * * *// вывод текста: "Ловкость + " + points<br> * * * *concatText = ConcatStrings(PRINT_LearnDEX,IntToString(points)); <br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// макс. мана<br> * *if(attrib == ATR_MANA_MAX) * * * * *<br> * *{<br> * * * *// повысить макс. ману<br> * * * *oth.attribute[ATR_MANA_MAX] = oth.attribute[ATR_MANA_MAX] + points;<br> * * * *// вывод текста: "Мана + " + points<br> * * * *concatText = ConcatStrings(PRINT_LearnMANA_MAX,IntToString(poin ts));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// макс. жизнь<br> * *if(attrib == ATR_HITPOINTS_MAX) * * * * <br> * *{ * <br> * * * *// повысить макс. жизнь<br> * * * *oth.attribute[ATR_HITPOINTS_MAX] = oth.attribute[ATR_HITPOINTS_MAX] + points;<br> * * * *// вывод текста: "Жизнь + " + points<br> * * * *concatText = ConcatStrings(PRINT_Learnhitpoints_MAX,IntToString (points));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * *};<br> * *// повысить реальный атрибут<br> * *B_RaiseRealAttributeLearnCounter(oth,attrib,point s);<br>};<br><br><br> * *24. Функции изменения боевых навыков НПС.<br><br>Файл B_RaiseFightTalent.d<br><br>// ************************************************** **************<br>// Функции изменения боевых навыков НПС<br>// ************************************************** **************<br><br>// Повышение реальных боевых навыков НПС<br>// Аргументы: oth - НПС, talent - навык, percent - пункты изменения<br>func void B_RaiseRealFightTalentPercent(var C_NPC oth,var int talent,var int percent)<br>{<br> * *// владение одноручником<br> * *if(talent == NPC_TALENT_1H)<br> * *{<br> * * * *oth.aivar[REAL_TALENT_1H] = oth.aivar[REAL_TALENT_1H] + percent;<br> * *}<br> * *// владение двуручником<br> * *else if(talent == NPC_TALENT_2H)<br> * *{<br> * * * *oth.aivar[REAL_TALENT_2H] = oth.aivar[REAL_TALENT_2H] + percent;<br> * *}<br> * *// владение луком<br> * *else if(talent == NPC_TALENT_BOW)<br> * *{<br> * * * *oth.aivar[REAL_TALENT_BOW] = oth.aivar[REAL_TALENT_BOW] + percent;<br> * *}<br> * *// владение арбалетом<br> * *else if(talent == NPC_TALENT_CROSSBOW)<br> * *{<br> * * * *oth.aivar[REAL_TALENT_CROSSBOW] = oth.aivar[REAL_TALENT_CROSSBOW] + percent;<br> * *};<br>};<br><br>// Повышение боевых навыков НПС<br>// Аргументы: oth - НПС, talent - навык, percent - пункты изменения<br>func void B_RaiseFightTalent(var C_NPC oth,var int talent,var int percent)<br>{<br> * *// повысить реальный навык<br> * *B_RaiseRealFightTalentPercent(oth,talent,percent) ;<br> * *// задать уровень владения оружием<br> * *B_AddFightSkill(oth,talent,percent);<br>};<br><br><br> * *25. Удалить НПС из игры.<br><br>Файл B_RemoveNpc.d<br><br>// ************************************************** **************<br>// Удалить НПС из игры<br>// ************************************************** **************<br>// Аргументы: npcInstance - ссылка на НПС<br><br>// Внимание: аргумент npcInstance является переопределенным типом (C_NPC -> int)<br><br>func void B_RemoveNpc(var int npcInstance)<br>{<br> * *var C_NPC npc;<br> * *// получить НПС<br> * *npc = Hlp_GetNpc(npcInstance);<br> * *// если НПС существует и жив<br> * *if(Hlp_IsValidNpc(npc) && !Npc_IsDead(npc))<br> * *{ * <br> * * * *// сброс флагов<br> * * * *npc.flags = 0;<br> * * * *// телепортировать НПС на кладбище<br> * * * *AI_Teleport(npc,"TOT");<br> * * * *// задать распорядок дня загробной жизни<br> * * * *B_StartOtherRoutine(npc,"TOT");<br> * * * *// убить НПС<br> * * * *Npc_ChangeAttribute(npc,ATR_HITPOINTS,-npc.attribute[ATR_HITPOINTS_MAX]);<br> * * * *// и для надежности ещё раз послать на кладбище<br> * * * *AI_Teleport(npc,"TOT");<br> * *};<br>};<br><br><br> * *26. Функция изменения распорядка дня НПС.<br><br>Файл B_StartOtherRoutine.d<br><br>// ************************************************** **************<br>// Функция изменения распорядка дня НПС<br>// ************************************************** **************<br>// Аргументы: slf - НПС, newRoutine - сокращенное имя функции нового распорядка дня<br><br>// self - глобальная переменная, текущий инициализированный НПС<br><br>func void B_StartOtherRoutine(var C_NPC slf,var string newRoutine)<br>{<br> * *// встать<br> * *AI_StandUp(slf);<br> * *// если НПС не self<br> * *if(Hlp_GetInstanceID(self) != Hlp_GetInstanceID(slf))<br> * *{<br> * * * *// если НПС существует и жив<br> * * * *if(Hlp_IsValidNpc(slf) && !Npc_IsDead(slf))<br> * * * *{<br> * * * * * *// изменить распорядок дня<br> * * * * * *Npc_ExchangeRoutine(slf,newRoutine);<br> * * * * * *// начать выполнение<br> * * * * * *AI_ContinueRoutine(slf);<br> * * * *}; *<br> * *}<br> * *else // иначе (self)<br> * *{<br> * * * *// изменить распорядок дня<br> * * * *Npc_ExchangeRoutine(slf,newRoutine);<br> * *};<br>};<br><br>
|
Re: Уроки скриптологии
* *27. Функция повышения атрибутов НПС учителями.<br><br>Файл B_TeachAttributePoints.d<br><br>// ************************************************** **************<br>// Функция повышения атрибутов НПС учителями<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), attrib - атрибут, points - пункты изменения, teacherMAX - возможность учителя<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachAttributePoints(var C_NPC slf,var C_NPC oth,var int attrib,var int points,var int teacherMAX)<br>{<br> * *var string concatText;<br> * *var int kosten; <br> * *// получить стоимость обучения в LP <br> * *kosten = (B_GetLearnCostAttribute (oth, attrib) * points);<br> * *// если не правильный атрибут<br> * *if(attrib != ATR_STRENGTH) && (attrib != ATR_DEXTERITY) && (attrib != ATR_MANA_MAX)<br> * *{<br> * * * *Print("*** ERROR: Wrong Parameter ***");<br> * * * *return FALSE;<br> * *};<br> * *var int realAttribute;<br> * *// получить реальное значение изменяемого атрибута (без учета разных бонусов)<br> * *if * * (attrib == ATR_STRENGTH) * * { realAttribute = oth.attribute[ATR_STRENGTH]; }<br> * *else if(attrib == ATR_DEXTERITY) * *{ realAttribute = oth.attribute[ATR_DEXTERITY];}<br> * *else if(attrib == ATR_MANA_MAX) * * { realAttribute = oth.attribute[ATR_MANA_MAX]; };<br> * *// если значение атрибута выше способности учителя<br> * *if(realAttribute >= teacherMAX)<br> * *{<br> * * * *// вывод текста: "Максимум учителя составляет " + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ обучен по максимуму"<br> * * * *// Примечание: корявый перевод, можно заменить на подходящий.<br> * * * *B_Say(slf,oth,"$NOLEARNYOUREBETTER");<b r> * * * *return FALSE;<br> * *};<br> * *// если новое значение атрибута будет выше способности учителя<br> * *if((realAttribute + points) > teacherMAX)<br> * *{<br> * * * *// вывод текста: "Максимум учителя составляет " + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) "учитель не способен обучить ГГ"<br> * * * *// Примечание: корявый перевод, можно заменить на подходящий.<br> * * * *B_Say(slf,oth,"$NOLEARNOVERPERSONALMAX" );<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLP,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *// Примечание: корявый перевод, можно заменить на подходящий.<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// повысить нужный атрибут<br> * *B_RaiseAttribute(oth,attrib,points);<br> * *return TRUE;<br>};<br><br><br> * *28. Функция повышения боевых навыков учителями.<br><br>Файл B_TeachFightTalentPercent.d<br><br>// ************************************************** **************<br>// Функция повышения боевых навыков учителями<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), talent - навык, percent - пункты изменения, teacherMAX - возможность учителя<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachFightTalentPercent(var C_NPC slf,var C_NPC oth,var int talent,var int percent,var int teacherMAX)<br>{<br> * *var string concatText;<br> * *var int kosten; <br> * *// получить стоимость обучения в LP <br> * *kosten = (B_GetLearnCostTalent(oth,talent,1) * percent);<br> * *// если не правильный навык<br> * *if(talent != NPC_TALENT_1H) && (talent != NPC_TALENT_2H) && (talent != NPC_TALENT_BOW) && (talent != NPC_TALENT_CROSSBOW)<br> * *{<br> * * * *Print ("*** ERROR: Wrong Parameter ***");<br> * * * *return FALSE;<br> * *};<br> * *var int realHitChance;<br> * *// получить реальное значение изменяемого навыка (без учета разных бонусов)<br> * *if * * (talent == NPC_TALENT_1H) * * * *{ realHitChance = oth.HitChance[NPC_TALENT_1H]; * * }<br> * *else if(talent == NPC_TALENT_2H) * * * *{ realHitChance = oth.HitChance[NPC_TALENT_2H]; * * }<br> * *else if(talent == NPC_TALENT_BOW) * * * { realHitChance = oth.HitChance[NPC_TALENT_BOW]; * *}<br> * *else if(talent == NPC_TALENT_CROSSBOW) *{ realHitChance = oth.HitChance[NPC_TALENT_CROSSBOW];};<br> * *// если значение навыка выше способности учителя<br> * *if(realHitChance >= teacherMAX)<br> * *{<br> * * * *// вывод текста: "Максимум учителя составляет " + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ обучен по максимуму"<br> * * * *B_Say(slf,oth,"$NOLEARNYOUREBETTER");<b r> * * * *return FALSE;<br> * *};<br> * *// если новое значение навыка будет выше способности учителя<br> * *if((realHitChance + percent) > teacherMAX)<br> * *{<br> * * * *// вывод текста: "Максимум учителя составляет " + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * * * *// учитель говорит ученику (SVM фраза) "учитель не способен обучить ГГ"<br> * * * *B_Say(slf,oth,"$NOLEARNOVERPERSONALMAX" );<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLP,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// если одноручник<br> * *if(talent == NPC_TALENT_1H) * * * * <br> * *{ * <br> * * * *// повысить навык<br> * * * *B_RaiseFightTalent(oth,NPC_TALENT_1H,percent);<br > * * * *// если владение одноручником на 30 превышает владение двуручником<br> * * * *if(oth.aivar[REAL_TALENT_1H] >= (oth.aivar[REAL_TALENT_2H] + 30))<br> * * * *{<br> * * * * * *// повысить навык двуручника<br> * * * * * *B_RaiseFightTalent(oth,NPC_TALENT_2H,percent);<br > * * * * * *// вывод текста: "Улучшить: Борьба одно- и двуручным оружием"<br> * * * * * *PrintScreen(PRINT_Learn1H_and_2H,-1,-1,FONT_Screen,2);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// вывод текста: "Улучшить: Одноручное оружие"<br> * * * * * *PrintScreen(PRINT_Learn1H,-1,-1,FONT_Screen,2);<br> * * * *};<br> * *};<br> * *// аналогично, если двуручник<br> * *else if(talent == NPC_TALENT_2H) * * * * * *<br> * *{ * <br> * * * *B_RaiseFightTalent(oth,NPC_TALENT_2H,percent);<br > * * * *if(oth.aivar[REAL_TALENT_2H] >= (oth.aivar[REAL_TALENT_1H] + 30))<br> * * * *{<br> * * * * * *B_RaiseFightTalent(oth,NPC_TALENT_1H,percent);<br > * * * * * *PrintScreen(PRINT_Learn2H_and_1H,-1,-1,FONT_Screen,2);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *PrintScreen(PRINT_Learn2H,-1,-1,FONT_Screen,2);<br> * * * *};<br> * *};<br> * *// аналогично, если лук<br> * *else if(talent == NPC_TALENT_BOW) * * * * * <br> * *{ * <br> * * * *B_RaiseFightTalent(oth,NPC_TALENT_BOW,percent);<b r> * * * *if(oth.aivar[REAL_TALENT_BOW] >= (oth.aivar[REAL_TALENT_CROSSBOW] + 30))<br> * * * *{<br> * * * * * *B_RaiseFightTalent(oth,NPC_TALENT_CROSSBOW,percen t);<br> * * * * * *PrintScreen(PRINT_LearnBow_and_Crossbow,-1,-1,FONT_Screen,2);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *PrintScreen(PRINT_LearnBow,-1,-1,FONT_Screen,2);<br> * * * *};<br> * *};<br> * *// аналогично, если арбалет<br> * *else if(talent == NPC_TALENT_CROSSBOW) * * * * *<br> * *{ * <br> * * * *B_RaiseFightTalent(oth,NPC_TALENT_CROSSBOW,percen t);<br> * * * *if(oth.aivar[REAL_TALENT_CROSSBOW] >= (oth.aivar[REAL_TALENT_BOW] + 30))<br> * * * *{<br> * * * * * *B_RaiseFightTalent(oth,NPC_TALENT_BOW,percent);<b r> * * * * * *PrintScreen(PRINT_LearnCrossbow_and_Bow,-1,-1,FONT_Screen,2);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *PrintScreen(PRINT_LearnCrossbow,-1,-1,FONT_Screen,2);<br> * * * *};<br> * *};<br> * *return TRUE;<br>};<br><br><br> * *29. Функция повышения круга магии НПС учителями.<br><br>Файл B_TeachMagicCircle.d<br><br>// ************************************************** **************<br>// Функция повышения круга магии НПС учителями<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), circle - круг магии<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachMagicCircle(var C_NPC slf,var C_NPC oth,var int circle)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth,NPC_TALENT_MAGE,circle);< br> * *// если не правильный круг<br> * *if(circle < 1) ¦¦ (circle > 6)<br> * *{<br> * * * *Print("*** ERROR: Wrong Parameter ***");<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLP,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_MAGE,circle);<b r> * *// создать в дневнике тему "Круги магии"<br> * *Log_CreateTopic(TOPIC_TalentMagicCircle,LOG_NOTE) ;<br> * *// сделать запись <br> * *B_LogEntry(TOPIC_TalentMagicCircle,"Доступны е мне магические руны разделены на Круги. Формулами заклинаний более высокого Круга, чем доступный мне, я не владею.");<br> * *// круг 1<br> * *if(circle == 1)<br> * *{<br> * * * *// вывод текста: "Обучение: 1 Круг магии"<br> * * * *PrintScreen(PRINT_LearnCircle_1,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,"Заклинан ия 1 магического Круга: свет, огненная стрела, молния, лечить легкое ранение и вызвать скелет гоблина.");<br> * * * *return TRUE;<br> * *};<br> * *// круг 2<br> * *if(circle == 2)<br> * *{<br> * * * *// вывод текста: "Обучение: 2 Круг магии"<br> * * * *PrintScreen(PRINT_LearnCircle_2,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,"Заклинан ия 2 магического Круга: огненный шар, ледяная стрела, вызвать волка, порыв ветра и сон.");<br> * * * *return TRUE;<br> * *};<br> * *// круг 3<br> * *if (circle == 3)<br> * *{<br> * * * *// вывод текста: "Обучение: 3 Круг магии"<br> * * * *PrintScreen(PRINT_LearnCircle_3,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,"Заклинан ия 3 магического Круга: лечить среднее ранение, шаровая молния, огненная буря, вызвать скелет, страх и ледяная глыба.");<br> * * * *return TRUE;<br> * *};<br> * *// круг 4<br> * *if (circle == 4)<br> * *{<br> * * * *// вывод текста: "Обучение: 4 Круг магии"<br> * * * *PrintScreen(PRINT_LearnCircle_4,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,"Заклинан ия 4 магического Круга: удар молнии, вызвать голема, уничтожить нежить и большой огненный шар.");<br> * * * *return TRUE;<br> * *};<br> * *// круг 5<br> * *if (circle == 5)<br> * *{<br> * * * *// вывод текста: "Обучение: 5 Круг магии"<br> * * * *PrintScreen(PRINT_LearnCircle_5,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,"Заклинан ия 5 магического Круга: большая огненная буря, ледяная волна, вызвать демона и лечить сильное ранение.");<br> * * * *return TRUE;<br> * *};<br> * *// круг 6<br> * *if (circle == 6)<br> * *{<br> * * * *// вывод текста: "Обучение: 6 Круг магии"<br> * * * *PrintScreen(PRINT_LearnCircle_6,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,"Заклинан ия 6 магического Круга: огненный дождь, дым смерти, волна смерти, армия тьмы и уменьшить монстра.");<br> * * * *return TRUE;<br> * *};<br>};<br><br><br> * *30. Функция повышения таланта алхимии учителями.<br><br>Файл B_TeachPlayerTalentAlchemy.d<br><br>// ************************************************** **************<br>// Функция повышения таланта алхимии учителями<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), potion - изготовляемый напиток<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachPlayerTalentAlchemy(var C_NPC slf,var C_NPC oth,var int potion)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth,NPC_TALENT_ALCHEMY,potion );<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему "Напитки"<br> * *Log_CreateTopic(TOPIC_TalentAlchemy,LOG_NOTE);<br > * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentAlchemy,"Для приготовления напитка мне нужна лабороторная колба и некоторые ингредиенты для желаемого напитка. С помощью этих ингредиентов на алхимическом столе можно изготовить желаемый напиток.");<br> * *// если Лечебная эссенция<br> * *if(potion == POTION_Health_01)<br> * *{<br> * * * *// освоить навык<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Health_01] = TRUE; <br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЛЕЧЕБНАЯ ЭССЕНЦИЯ': 2 лечебных растения и 1 полевое растение.");<br> * *};<br> * *// для остальных напитков аналогично<br> * *if(potion == POTION_Health_02)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Health_02] = TRUE; <br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЛЕЧЕБНЫЙ ЭКСТРАКТ': 2 лечебные травы и 1 полевое растение.");<br> * *};<br> * *if(potion == POTION_Health_03)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Health_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЛЕЧЕБНЫЙ ЭЛИКСИР': 2 лечебных корня и 1 полевое растение.");<br> * *};<br> * *if(potion == POTION_Mana_01)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Mana_01] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЭССЕНЦИЯ МАНЫ': 2 огненные крапивы и 1 полевое растение.");<br> * *};<br> * *if(potion == POTION_Mana_02)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Mana_02] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЭКСТРАКТ МАНЫ': 2 огненные травы и 1 полевое растение.");<br> * *};<br> * *if(potion == POTION_Mana_03)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Mana_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЭЛИКСИР МАНЫ': 2 огненных корня и 1 полевое растение.");<br> * *};<br> * *if(potion == POTION_Speed)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Speed] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'НАПИТОК УСКОРЕНИЯ': 1 трава глорха и 1 полевое растение.");<br> * *};<br> * *if(potion == POTION_Perm_STR)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_STR] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЭЛИКСИР СИЛЫ': 1 драконий корень и 1 коронное растение.");<br> * *};<br> * *if(potion == POTION_Perm_DEX)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_DEX] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЭЛИКСИР ЛОВКОСТИ': 1 ягода гоблина и 1 коронное растение.");<br> * *};<br> * *if(potion == POTION_Perm_Mana)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_Mana] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЭЛИКСИР ДУХА': 1 огненный корень и 1 коронное растение.");<br> * *};<br> * *if(potion == POTION_Perm_Health)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_Health] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,"Ингредиенты для напитка 'ЭЛИКСИР ЖИЗНИ': 1 лечебный корень и 1 коронное растение.");<br> * *};<br> * *// вывод текста: "Обучение: Приготовление напитка"<br> * *PrintScreen(PRINT_LearnAlchemy,-1,-1,FONT_Screen,2);<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_ALCHEMY,1);<br> * *return TRUE;<br>};<br><br><br> * *31. Функция обучения иностранным языкам.<br><br>Файл B_TeachPlayerTalentForeignLanguage.d<br><br>// ************************************************** **************<br>// Функция обучения иностранным языкам<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), Language - уровень владения языком<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachPlayerTalentForeignLanguage(var C_NPC slf,var C_NPC oth,var int Language)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth,NPC_TALENT_FOREIGNLANGUAG E,Language);<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему "Язык строителей"<br> * *Log_CreateTopic(TOPIC_Language,LOG_NOTE);<br> * *// первый уровень языка<br> * *if(Language == LANGUAGE_1)<br> * *{<br> * * * *// освоить навык<br> * * * *PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_1] = TRUE;<br> * * * *// сделать запись "Я владею Языком Крестьян. Это был обычный язык Строителей."<br> * * * *B_LogEntry(TOPIC_Language,LogText_Addon_Language_ 1);<br> * *};<br> * *// для остальных уровней аналогично<br> * *if(Language == LANGUAGE_2)<br> * *{<br> * * * *PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_2] = TRUE;<br> * * * *// запись "Я владею Языком Воинов."<br> * * * *B_LogEntry(TOPIC_Language,LogText_Addon_Language_ 2);<br> * *}; *<br> * *if(Language == LANGUAGE_3)<br> * *{<br> * * * *PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_3] = TRUE;<br> * * * *// сделать запись "Я владею Языком Жрецов."<br> * * * *B_LogEntry(TOPIC_Language,LogText_Addon_Language_ 3);<br> * *}; *<br> * *// вывод текста: "Учится: язык строителей"<br> * *PrintScreen(PRINT_LearnForeignLanguage,-1,-1,FONT_Screen,2);<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_FOREIGNLANGUAGE ,1);<br> * *return TRUE;<br>};<br><br>
|
Re: Уроки скриптологии
* *32. Функция обучения изготовлению рун.<br><br>Файл B_TeachPlayerTalentRunes.d<br><br>// ************************************************** **************<br>// Функция обучения изготовлению рун<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), spell - заклинание<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachPlayerTalentRunes(var C_NPC slf,var C_NPC oth,var int spell)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth,NPC_TALENT_RUNES,spell);< br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему "Руны"<br> * *Log_CreateTopic(TOPIC_TalentRunes,LOG_NOTE);<br> * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentRunes,"Для создания магической руны, кроме необходимого заклинания мне еще нужны некоторые составляющие. С помощью этих составляющих и рунического камня я могу создать необходимую руну на руническом столе.");<br> * *var C_NPC ScrollTrader;<br> * *// у кого ГГ может приобрести свитки заклинаний<br> * *if(Npc_IsDead(Gorax) == FALSE)<br> * *{<br> * * * *ScrollTrader = Hlp_GetNpc(Gorax); * * * // Горакс<br> * *}<br> * *else if(Npc_IsDead(Isgaroth) == FALSE)<br> * *{<br> * * * *ScrollTrader = Hlp_GetNpc(Isgaroth); * *// Исгарот<br> * *}<br> * *else if(Npc_IsDead(Engor) == FALSE)<br> * *{<br> * * * *ScrollTrader = Hlp_GetNpc(Engor); * * * // Енгор<br> * *}<br> * *else if(Npc_IsDead(Orlan) == FALSE)<br> * *{<br> * * * *ScrollTrader = Hlp_GetNpc(Orlan); * * * // Орлан<br> * *}<br> * *else if(Npc_IsDead(Cronos_ADW) == FALSE)<br> * *{<br> * * * *ScrollTrader = Hlp_GetNpc(Cronos_ADW); *// Кронос<br> * *};<br> * *// освоить соответствующую руну<br> * *if(spell == SPL_PalLight) * * * * * { PLAYER_TALENT_RUNES[SPL_PalLight] * * * * = TRUE; };<br> * *if(spell == SPL_PalLightHeal) * * * { PLAYER_TALENT_RUNES[SPL_PalLightHeal] * * = TRUE; };<br> * *if(spell == SPL_PalHolyBolt) * * * *{ PLAYER_TALENT_RUNES[SPL_PalHolyBolt] * * *= TRUE; };<br> * *if(spell == SPL_PalMediumHeal) * * *{ PLAYER_TALENT_RUNES[SPL_PalMediumHeal] * *= TRUE; };<br> * *if(spell == SPL_PalRepelEvil) * * * { PLAYER_TALENT_RUNES[SPL_PalRepelEvil] * * = TRUE; };<br> * *if(spell == SPL_PalFullHeal) * * * *{ PLAYER_TALENT_RUNES[SPL_PalFullHeal] * * *= TRUE; };<br> * *if(spell == SPL_PalDestroyEvil) * * { PLAYER_TALENT_RUNES[SPL_PalDestroyEvil] * = TRUE; };<br> * *if(spell == SPL_PalTeleportSecret) *{ PLAYER_TALENT_RUNES[SPL_PalTeleportSecret]= TRUE; };<br> * *if(spell == SPL_TeleportSeaport) * *{ PLAYER_TALENT_RUNES[SPL_TeleportSeaport] *= TRUE; };<br> * *if(spell == SPL_TeleportMonastery) *{ PLAYER_TALENT_RUNES[SPL_TeleportMonastery]= TRUE; };<br> * *if(spell == SPL_TeleportFarm) * * * { PLAYER_TALENT_RUNES[SPL_TeleportFarm] * * = TRUE; };<br> * *if(spell == SPL_TeleportXardas) * * { PLAYER_TALENT_RUNES[SPL_TeleportXardas] * = TRUE; };<br> * *if(spell == SPL_TeleportPassNW) * * { PLAYER_TALENT_RUNES[SPL_TeleportPassNW] * = TRUE; };<br> * *if(spell == SPL_TeleportPassOW) * * { PLAYER_TALENT_RUNES[SPL_TeleportPassOW] * = TRUE; };<br> * *if(spell == SPL_TeleportOC) * * * * { PLAYER_TALENT_RUNES[SPL_TeleportOC] * * * = TRUE; };<br> * *// освоить соответствующую руну<br> * *if(spell == SPL_LIGHT)<br> * *{<br> * * * *// освоить изготовление<br> * * * *PLAYER_TALENT_RUNES[SPL_LIGHT] = TRUE;<br> * * * *// создать свиток заклинания у торговца<br> * * * *CreateInvItems(ScrollTrader,ItSc_LIGHT,1);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'СВЕТ': 1 золотая монета.");<br> * *};<br> * *if(spell == SPL_Firebolt)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Firebolt] = TRUE;<br> * * * *CreateInvItems (ScrollTrader,ItSc_Firebolt,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ОГНЕННАЯ СТРЕЛА': 1 сера.");<br> * *};<br> * *if(spell == SPL_Icebolt)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Icebolt] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Icebolt,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ЛЕДЯНАЯ СТРЕЛА': 1 кварц.");<br> * *};<br> * *if(spell == SPL_LightHeal)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_LightHeal] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_LightHeal,1); * * * * * * *<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ЛЕЧИТЬ ЛЕГКОЕ РАНЕНИЕ': 1 лечебное растение.");<br> * *};<br> * *if(spell == SPL_SummonGoblinSkeleton)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_SummonGoblinSkeleton] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_SumGobSkel,1);<b r> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ВЫЗВАТЬ СКЕЛЕТ ГОБЛИНА': 1 кость гоблина.");<br> * *};<br> * *if(spell == SPL_InstantFireball)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_InstantFireball] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_InstantFireball, 1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ОГНЕННЫЙ ШАР': 1 смола.");<br> * *};<br> * *if(spell == SPL_Zap)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Zap] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Zap,1); * * * * * * * * * * * *<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'МОЛНИЯ': 1 горный хрусталь.");<br> * *};<br> * *if(spell == SPL_SummonWolf)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_SummonWolf] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_SumWolf,1); * * * * * * * * * *<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ВЫЗВАТЬ ВОЛКА': 1 шкура волка.");<br> * *};<br> * *if(spell == SPL_WINDFIST)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_WINDFIST] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_WINDFIST,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ПОРЫВ ВЕТРА': 1 уголь.");<br> * *};<br> * *if(spell == SPL_Sleep)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Sleep] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Sleep,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'СОН': 1 болотник.");<br> * *};<br> * *if(spell == SPL_MediumHeal)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_MediumHeal] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_MediumHeal,1);<b r> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ЛЕЧИТЬ СРЕДНЕЕ РАНЕНИЕ': 1 лечебная трава.");<br> * *};<br> * *if(spell == SPL_LightningFlash)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_LightningFlash] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_LightningFlash,1 );<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'УДАР МОЛНИИ': 1 горный хрусталь и 1 кварц.");<br> * *};<br> * *if(spell == SPL_ChargeFireball)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_ChargeFireball] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_ChargeFireball,1 );<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'БОЛЬШОЙ ОГНЕННЫЙ ШАР': 1 сера и 1 смола.");<br> * *};<br> * *if(spell == SPL_SummonSkeleton)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_SummonSkeleton] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_SumSkel,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ВЫЗВАТЬ СКЕЛЕТ': 1 кость скелета.");<br> * *}; * * *<br> * *if(spell == SPL_Fear)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Fear] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Fear,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'СТРАХ': 1 черный жемчуг.");<br> * *};<br> * *if(spell == SPL_IceCube)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_IceCube] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_IceCube,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ЛЕДЯНАЯ ГЛЫБА': 1 кварц и 1 аквамарин.");<br> * *};<br> * *if(spell == SPL_ChargeZap)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_ChargeZap] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_ThunderBall,1);< br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ШАРОВАЯ МОЛНИЯ': 1 сера и 1 горный хрусталь.");<br> * *};<br> * *if(spell == SPL_SummonGolem)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_SummonGolem] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_SumGol,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ВЫЗВАТЬ ГОЛЕМА': 1 сердце каменного голема.");<br> * *};<br> * *if(spell == SPL_DestroyUndead)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_DestroyUndead] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_HarmUndead,1);<b r> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'УНИЧТОЖИТЬ НЕЖИТЬ': 1 святая вода.");<br> * *};<br> * *if(spell == SPL_Pyrokinesis)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Pyrokinesis] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Pyrokinesis,1);< br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'БОЛЬШАЯ ОГНЕННАЯ БУРЯ': 1 сера и 1 огненный язык.");<br> * *};<br> * *if(spell == SPL_Firestorm)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Firestorm] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Firestorm,1);<br > * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ОГНЕННАЯ БУРЯ': 1 сера и 1 смола.");<br> * *};<br> * *if(spell == SPL_IceWave)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_IceWave] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_IceWave,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ЛЕДЯНАЯ ВОЛНА': 1 кварц и 1 аквамарин.");<br> * *};<br> * *if(spell == SPL_SummonDemon)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_SummonDemon] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_SumDemon,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ВЫЗВАТЬ ДЕМОНА': 1 сердце демона.");<br> * *};<br> * *if(spell == SPL_FullHeal)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_FullHeal] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_FullHeal,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ЛЕЧИТЬ СИЛЬНОЕ РАНЕНИЕ': 1 лечебный корень.");<br> * *};<br> * *if(spell == SPL_Firerain)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Firerain] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Firerain,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ОГНЕННЫЙ ДОЖДЬ': 1 смола и 1 огненный язык.");<br> * *};<br> * *if(spell == SPL_BreathOfDeath)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_BreathOfDeath] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_BreathOfDeath,1) ;<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ДЫМ СМЕРТИ': 1 уголь и 1 черный жемчуг.");<br> * *};<br> * *if(spell == SPL_MassDeath)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_MassDeath] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_MassDeath,1);<br > * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'ВОЛНА СМЕРТИ': 1 кость скелета и 1 черный жемчуг.");<br> * *};<br> * *if(spell == SPL_ArmyOfDarkness)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_ArmyOfDarkness] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_ArmyOfDarkness,1 );<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'АРМИЯ МРАКА': 1 кость скелета, 1 черный жемчуг, 1 сердце каменного голема и 1 сердце демона.");<br> * *};<br> * *if(spell == SPL_Shrink)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Shrink] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Shrink,1);<br> * * * *B_LogEntry(TOPIC_TalentRunes,"Составляющие для руны 'УМЕНЬШИТЬ МОНСТРА': 1 кость гоблина и 1 клык тролля.");<br> * *};<br> * *if(spell == SPL_Whirlwind)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Whirlwind] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Whirlwind,1);<br > * * * *// "Ингредиенты для руны "Смерч": 1 крыло"<br> * * * *B_LogEntry(TOPIC_TalentRunes,Log_Text_Addon_Talen tRune_Whirlwind);<br> * *};<br> * *if(spell == SPL_WaterFist)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_WaterFist] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Waterfist,1);<br > * * * *// "Ингредиенты для руны "Водный кулак": 1 Аквамарин и 1 горный кристалл"<br> * * * *B_LogEntry(TOPIC_TalentRunes,Log_Text_Addon_Talen tRune_Waterfist);<br> * *};<br> * *if(spell == SPL_IceLance)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_IceLance] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Icelance,1);<br> * * * *// "Ингредиенты для руны "Ледяное копье": 1 Ледниковый кварц"<br> * * * *B_LogEntry(TOPIC_TalentRunes,Log_Text_Addon_Talen tRune_Icelance);<br> * *};<br> * *if(spell == SPL_Geyser)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Geyser] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Geyser,1);<br> * * * *// "Ингредиенты для руны "Гейзер": 1 Аквамарин"<br> * * * *B_LogEntry(TOPIC_TalentRunes,Log_Text_Addon_Talen tRune_Geyser);<br> * *};<br> * *if(spell == SPL_Thunderstorm)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Thunderstorm] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Thunderstorm,1); <br> * * * *// "Ингредиенты для руны "Непогода": 1 ледниковый кварц и 1 крыло"<br> * * * *B_LogEntry(TOPIC_TalentRunes,Log_Text_Addon_Talen tRune_Thunderstorm);<br> * *};<br> * *// вывод текста: "Обучение: Создание руны"<br> * *PrintScreen(PRINT_LearnRunes,-1,-1,FONT_Screen,2);<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_RUNES,1);<br> * *return TRUE;<br>};<br><br><br> * *33. Функция обучения кузнечному ремеслу.<br><br>Файл B_TeachPlayerTalentSmith.d<br><br>// ************************************************** **************<br>// Функция обучения кузнечному ремеслу<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), waffe - умение ковать<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachPlayerTalentSmith(var C_NPC slf,var C_NPC oth,var int waffe)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth,NPC_TALENT_SMITH,waffe);< br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему "Ковка"<br> * *Log_CreateTopic(TOPIC_TalentSmith,LOG_NOTE);<br> * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentSmith,"Для того, чтобы ковать оружие, мне необходимо немного сырой стали. Сначала я должен накалить сталь на огне, а затем придать необходимую форму. Для качественного оружия необходимы также некоторые составляющие, которые придадут оружию особенные свойства.");<br> * *// выучить соответствующее умение<br> * *if(waffe == WEAPON_Common)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_Common] = TRUE; *<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Для простого самокованного меча не требуется никаких дополнительных составляющих.");<br> * *};<br> * *if(waffe == WEAPON_1H_Special_01)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_01] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,"Добавление 1 части руды позволяет выковать меч: 'ДЛИННЫЙ РУДНЫЙ МЕЧ'.");<br> * *};<br> * *if(waffe == WEAPON_2H_Special_01)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_01] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Добавление 2 части руды позволяет выковать меч: 'РУДНЫЙ ДВУРУЧНИК'.");<br> * *};<br> * *if(waffe == WEAPON_1H_Special_02)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_02] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Добавление 2 части руды позволяет выковать меч: 'РУДНЫЙ МЕЧ ЧУДОВИЩА'.");<br> * *};<br> * *if(waffe == WEAPON_2H_Special_02)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_02] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,"Добавление 3 части руды позволяет выковать меч: 'ТЯЖЕЛЫЙ ДВУРУЧНИК'.");<br> * *};<br> * *if(waffe == WEAPON_1H_Special_03)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Добавление 3 части руды позволяет выковать меч: 'РУДНЫЙ БОЕВОЙ КЛИНОК'.");<br> * *};<br> * *if(waffe == WEAPON_2H_Special_03)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_03] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,"Добавление 4 части руды позволяет выковать меч: 'ТЯЖЕЛЫЙ РУДНЫЙ БОЕВОЙ КЛИНОК'.");<br> * *};<br> * *if(waffe == WEAPON_1H_Special_04)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_04] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,"Если я добавлю 4 части руды и 5 частей крови дракона, то я выкую 'РУДНОГО УБИЙЦУ ДРАКОНОВ'.");<br> * *};<br> * *if(waffe == WEAPON_2H_Special_04)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_04] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Если я добавлю 5 частей руды и 5 частей крови дракона, то я выкую 'БОЛЬШОГО РУДНОГО УБИЙЦУ ДРАКОНОВ'.");<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_01)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_01] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Я могу теперь выковать благородный меч.");<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_02)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_02] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Я могу теперь выковать благородный длинный меч.");<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_03)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Я могу теперь даже выковать рубиновый клинок.");<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_04)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_04] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,"Харальд научил меня ковать "Эль Бастардо" - одно из лучших одноручных оружий!");<br> * *};<br> * *// вывод текста: "Обучение: Кузнечное дело"<br> * *PrintScreen(PRINT_LearnSmith,-1,-1,FONT_Screen,2);<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_SMITH,1);<br> * *return TRUE;<br>};<br><br><br> * *34. Функция обучения добыче трофеев.<br><br>Файл B_TeachPlayerTalentTakeAnimalTrophy.d<br><br>// ************************************************** **************<br>// Функция обучения добыче трофеев<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый (ГГ), trophy - умение добыть трофей<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachPlayerTalentTakeAnimalTrophy(var C_NPC slf,var C_NPC oth,var int trophy)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth,NPC_TALENT_TAKEANIMALTROP HY,trophy);<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему "Животные"<br> * *Log_CreateTopic(TOPIC_TalentAnimalTrophy,LOG_NOTE );<br> * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentAnimalTrophy,"Теперь я умею:");<br> * *// выучить соответствующее умение<br> * *if(trophy == TROPHY_Teeth)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Teeth] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...выры вать зубы.");<br> * *};<br> * *if(trophy == TROPHY_Claws)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...лома ть когти.");<br> * *};<br> * *if(trophy == TROPHY_Fur)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Fur] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...сним ать шкуры.");<br> * *};<br> * *if(trophy == TROPHY_ReptileSkin)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ReptileSkin] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"... Сдирать кожу с рептилий");<br> * *};<br> * *if(trophy == TROPHY_Heart)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Heart] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...выре зать сердца у големов и демонов.");<br> * *};<br> * *if(trophy == TROPHY_ShadowHorn)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ShadowHorn] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...отла мывать рог у мракорисов.");<br> * *};<br> * *if(trophy == TROPHY_FireTongue)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_FireTongue] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...выре зать огненный язык у огненных ящериц.");<br> * *};<br> * *if(trophy == TROPHY_BFWing)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFWing] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...отре зать крылья у кровяных шершней.");<br> * *};<br> * *if(trophy == TROPHY_BFSting)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFSting] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...выре зать жало у кровяных шершней.");<br> * *};<br> * *if(trophy == TROPHY_Mandibles)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Mandibles] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...выре зать жвало у ползунов и полевых жуков.");<br> * *};<br> * *if(trophy == TROPHY_CrawlerPlate)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_CrawlerPlate] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...сним ать панцирь с ползунов.");<br> * *};<br> * *if(trophy == TROPHY_DrgSnapperHorn)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DrgSnapperHorn] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...отла мывать рог у остеров.");<br> * *};<br> * *if(trophy == TROPHY_DragonScale)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonScale] = TRUE;<br> * * * *CreateInvItems(Swampdragon,ItAt_DragonScale,12);< br> * * * *CreateInvItems(Rockdragon,ItAt_DragonScale,12);<b r> * * * *CreateInvItems(Firedragon,ItAt_DragonScale,12);<b r> * * * *CreateInvItems(Icedragon,ItAt_DragonScale,12);<br > * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...сним ать чашую с драконов.");<br> * *};<br> * *if(trophy == TROPHY_DragonBlood)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonBlood] = TRUE;<br> * * * *CreateInvItems(Swampdragon,ItAt_DragonBlood,2);<b r> * * * *CreateInvItems(Rockdragon,ItAt_DragonBlood,2);<br > * * * *CreateInvItems(Firedragon,ItAt_DragonBlood,2);<br > * * * *CreateInvItems(Icedragon,ItAt_DragonBlood,2);<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,"...сцеж ивать кровь с драконов.");<br> * *};<br> * *// вывод текста: "Обучение: Разделка зверей"<br> * *PrintScreen(PRINT_LearnTakeAnimalTrophy,-1,-1,FONT_Screen,2);<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_TAKEANIMALTROPH Y,1);<br> * *return TRUE;<br>};<br><br><br>
|
Re: Уроки скриптологии
* *35. Функции обучения Ищущего огонька.<br><br>Файл B_TeachPlayerTalentWispDetector.d<br><br>// ************************************************** **************<br>// Функции обучения Ищущего огонька<br>// ************************************************** **************<br><br>// Эффекты при обучении<br>// -----------------------------------------------------------------<br>// Аргументы: Teacher - учитель<br>func void B_WISPDETECTOR_LearnEffect(var C_NPC Teacher)<br>{<br> * *AI_PlayAni(Teacher,"T_PRACTICEMAGIC5"); <br> * *Wld_PlayEffect("spellFX_HealShrine",her o,hero,0,0,0,FALSE);<br> * *Wld_PlayEffect("spellFX_INCOVATION_BLUE" ;,hero,hero,0,0,0,FALSE);<br> * *Snd_Play("WSP_Dead_A1");<br>};<br><br>// Обучение Ищущего огонька<br>// -----------------------------------------------------------------<br>// Аргументы: slf - учитель, oth - обучаемый, WispSkill - умение поиска<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br>func int B_TeachPlayerTalentWispDetector(var C_NPC slf,var C_NPC oth,var int WispSkill)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth, NPC_TALENT_WISPDETECTOR, WispSkill);<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему "Ищущий Огонек"<br> * *Log_CreateTopic(TOPIC_WispDetector,LOG_NOTE);<br> * *// сделать запись "Мой Огонек может искать для меня следующие вещи:"<br> * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned);<br> * *// выучить соответствующее умение<br> * *if(WispSkill == WISPSKILL_FF)<br> * *{<br> * * * *PLAYER_TALENT_WISPDETECTOR[WISPSKILL_FF] = TRUE;<br> * * * *B_WISPDETECTOR_LearnEffect(slf);<br> * * * *// "Оружие дальнего боя и амуниция"<br> * * * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned_FF);<br> * *};<br> * *if(WispSkill == WISPSKILL_NONE)<br> * *{<br> * * * *PLAYER_TALENT_WISPDETECTOR[WISPSKILL_NONE] = TRUE;<br> * * * *B_WISPDETECTOR_LearnEffect(slf);<br> * * * *// "Золото, ключи и предметы обихода"<br> * * * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned_NONE);<br> * *};<br> * *if(WispSkill == WISPSKILL_RUNE)<br> * *{<br> * * * *PLAYER_TALENT_WISPDETECTOR[WISPSKILL_RUNE] = TRUE;<br> * * * *B_WISPDETECTOR_LearnEffect(slf);<br> * * * *// "Руны и свитки"<br> * * * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned_RUNE);<br> * *};<br> * *if(WispSkill == WISPSKILL_MAGIC)<br> * *{<br> * * * *PLAYER_TALENT_WISPDETECTOR[WISPSKILL_MAGIC] = TRUE;<br> * * * *B_WISPDETECTOR_LearnEffect(slf);<br> * * * *// "Кольца и амулеты"<br> * * * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned_MAGIC);<br> * *};<br> * *if(WispSkill == WISPSKILL_FOOD)<br> * *{<br> * * * *PLAYER_TALENT_WISPDETECTOR[WISPSKILL_FOOD] = TRUE;<br> * * * *B_WISPDETECTOR_LearnEffect(slf);<br> * * * *// "Еда и растения"<br> * * * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned_FOOD);<br> * *};<br> * *if(WispSkill == WISPSKILL_POTIONS)<br> * *{<br> * * * *PLAYER_TALENT_WISPDETECTOR[WISPSKILL_POTIONS] = TRUE;<br> * * * *B_WISPDETECTOR_LearnEffect(slf);<br> * * * *// "Магические и другие напитки"<br> * * * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned_POTIONS);<br> * *};<br> * *// вывод текста: "Огонек научился"<br> * *PrintScreen(PRINT_LearnWispDetector,-1,-1,FONT_Screen,2);<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_WISPDETECTOR,1) ;<br> * *return TRUE;<br>};<br><br><br> * *36. Функция обучения воровству, отмычкам, подкрадаванию и акробатике.<br><br>Файл B_TeachThiefTalent.d<br><br>// ************************************************** **************<br>// Функция обучения воровству, отмычкам, подкрадаванию и акробатике<br>// ************************************************** **************<br>// Аргументы: slf - учитель, oth - обучаемый, talent - умение<br>// Возвращаемое значение: TRUE - обучение успешно, FALSE - обучение невозможно<br><br>func int B_TeachThiefTalent(var C_NPC slf,var C_NPC oth,var int talent)<br>{<br> * *var int kosten;<br> * *// получить стоимость обучения в LP <br> * *kosten = B_GetLearnCostTalent(oth,talent,1);<br> * *// если не правильный навык<br> * *if(talent != NPC_TALENT_PICKLOCK) && (talent != NPC_TALENT_SNEAK)<br> * * * *&& (talent != NPC_TALENT_ACROBAT) && (talent != NPC_TALENT_PICKPOCKET)<br> * *{<br> * * * *Print("*** ERROR: Wrong Parameter ***");<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp < kosten)<br> * *{<br> * * * *// вывод текста: "Недостаточное количество оч. обучения!"<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) "ГГ не хватает опыта"<br> * * * *B_Say(slf,oth,"$NOLEARNNOPOINTS");<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// отмычки<br> * *if(talent == NPC_TALENT_PICKLOCK)<br> * *{<br> * * * *// отобразить в окне характеристик<br> * * * *Npc_SetTalentSkill(oth,NPC_TALENT_PICKLOCK,1);<br > * * * *// вывод текста: "Обучение: Вскрытие замков"<br> * * * *PrintScreen(PRINT_LearnPicklock,-1,-1,FONT_Screen,2);<br> * *};<br> * *// подкрадывание<br> * *else if(talent == NPC_TALENT_SNEAK)<br> * *{<br> * * * *Npc_SetTalentSkill(oth,NPC_TALENT_SNEAK,1);<br> * * * *// вывод текста: "Обучение: Подкрадывание"<br> * * * *PrintScreen(PRINT_LearnSneak,-1,-1,FONT_Screen,2);<br> * *};<br> * *// акробатика<br> * *else if(talent == NPC_TALENT_ACROBAT)<br> * *{<br> * * * *Npc_SetTalentSkill(oth,NPC_TALENT_ACROBAT,1);<br> * * * *// вывод текста: "Учится: акробатика"<br> * * * *PrintScreen(PRINT_LearnAcrobat,-1,-1,FONT_Screen,2);<br> * *};<br> * *// карманная кража<br> * *else if(talent == NPC_TALENT_PICKPOCKET)<br> * *{<br> * * * *Npc_SetTalentSkill(oth,NPC_TALENT_PICKPOCKET,1);< br> * * * *// вывод текста: "Обучение: Карманная кража"<br> * * * *PrintScreen(PRINT_LearnPickpocket,-1,-1,FONT_Screen,2);<br> * *};<br> * *return TRUE;<br>};<br><br><br> * *37. Функция чтения писем или записок при передаче.<br><br>Файл B_UseFakeScroll.d<br><br>// ************************************************** **************<br>// Функция чтения писем или записок при передаче<br>// ************************************************** **************<br>// self - НПС получивший записку<br>// hero - как всегда ГГ<br><br>func void B_UseFakeScroll()<br>{<br> * *// если НПС сидит<br> * *if(C_BodystateContains(self,BS_SIT))<br> * *{<br> * * * *// встает<br> * * * *AI_StandUp(self);<br> * * * *// поворачивается к ГГ<br> * * * *B_TurnToNpc(self,hero);<br> * *};<br> * *// прячет оружие<br> * *AI_RemoveWeapon(self);<br> * *// создается в инвентаре НПС записка<br> * *CreateInvItem(self,Fakescroll);<br> * *var C_NPC target;<br> * *// инициализировать target = hero<br> * *target = Npc_GetLookAtTarget(self);<br> * *// если target существует<br> * *if(Hlp_IsValidNpc(target))<br> * *{<br> * * * *// НПС перестает смотреть на ГГ<br> * * * *B_StopLookAt(self);<br> * * * *// читает записку<br> * * * *AI_UseItemToState(self,Fakescroll,1);<br> * * * *// таймаут<br> * * * *AI_Wait(self,1);<br> * * * *// закончить чтение<br> * * * *AI_UseItemToState(self,Fakescroll,-1);<br> * * * *// смотреть на ГГ<br> * * * *B_LookAtNpc(self,hero);<br> * *}<br> * *else // если ГГ отсутствует<br> * *{<br> * * * *// просто прочитать записку<br> * * * *AI_UseItemToState(self,Fakescroll,1);<br> * * * *AI_Wait(self,1);<br> * * * *AI_UseItemToState(self, Fakescroll,-1);<br> * *};<br>};<br><br><br> * *38. Функция использования предмета.<br><br>Файл B_UseItem.d<br><br>// ************************************************** **************<br>// Функция использования предмета<br>// ************************************************** **************<br>// Аргументы: slf - НПС, использующий предмет, itmInstance - предмет<br><br>// Внимание: аргумент itemInstance является переопределенным типом (C_Item -> int)<br><br>func void B_UseItem(var C_NPC slf,var int itmInstance)<br>{<br> * *// если НПС сидит<br> * *if(C_BodyStateContains(slf,BS_SIT))<br> * *{<br> * * * *return;<br> * *};<br> * *var C_NPC target;<br> * *// получить target (НПС, на которого смотрит наш НПС)<br> * *target = Npc_GetLookAtTarget(slf);<br> * *// если target существует<br> * *if(Hlp_IsValidNpc(target))<br> * *{<br> * * * *// перестать смотреть на цель<br> * * * *B_StopLookAt(slf);<br> * * * *// использовать предмет<br> * * * *AI_UseItem(slf,itmInstance);<br> * * * *// смотреть на цель<br> * * * *B_LookAtNpc(slf,target);<br> * *}<br> * *else // цель отсутствует<br> * *{<br> * * * *// просто использовать предмет<br> * * * *AI_UseItem(slf,itmInstance);<br> * *};<br>};<br><br><br> * *39. Проверка, как далеко находится ГГ от конкретной точки.<br><br>Файл C_DiegoTooFar.d<br><br>// ************************************************** **************<br>// Проверка, как далеко находится ГГ от конкретной точки<br>// ************************************************** **************<br>// Аргументы: tolerance - коэффициент удаления<br>// Возвращаемое значение: FALSE - далеко, или индекс конкретной точки<br><br>// индексы точек<br>const int LOC_ANGAR * * * * = 1;<br>const int LOC_ICE * * * * * = 2;<br>const int LOC_SWAMP * * * * = 4;<br>const int LOC_FIRE * * * * *= 3;<br>const int LOC_LAKE * * * * *= 5;<br>const int LOC_XARDAS * * * *= 6;<br>const int LOC_FAJETHMINE * *= 7;<br>const int LOC_SILVESTROMINE = 8;<br>const int LOC_GRIMESMINE * *= 9;<br>const int LOC_BURG * * * * *= 10;<br>const int LOC_ORCBARRIER * *= 11;<br>const int LOC_ORCBARRIER_FAR = 12;<br><br>func int C_DiegoTooFar(var int tolerance)<br>{<br> * *// если ГГ находится от указанной точки не далее заданного значения<br> * *if(Npc_GetDistToWP(hero,"SPAWN_OW_SHADOWBEAS T_10_01") < (4000 + tolerance))<br> * *{<br> * * * *// возвращается индекс точки<br> * * * *return LOC_ANGAR;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OW_ICEREGION_ENTRANC E_01") < (3000 + tolerance))<br> * *{<br> * * * *return LOC_ICE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OW_PATH_046") < (1800 + tolerance))<br> * *{<br> * * * *return LOC_SWAMP;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"CASTLE_5") < (1500 + tolerance))<br> * *{<br> * * * *return LOC_FIRE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"MT16") < (6500 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,"MT13") < (5500 + tolerance))<br> * *{<br> * * * *return LOC_LAKE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"DT_MAINGATE") < (500 + tolerance))<br> * *¦¦ (Wld_GetPlayerPortalGuild() == GIL_DMT)<br> * *¦¦ ((Npc_GetDistToWP(hero,"DT_E3_03") < 1000) && (Npc_GetHeightToNpc(self,hero) > 1000))<br> * *{<br> * * * *return LOC_XARDAS;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OW_NEWMINE_03") < (2500 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,"OW_NEWMINE_03_B") < (2500 + tolerance))<br> * *{<br> * * * *return LOC_FAJETHMINE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OW_MINE3_OUT") < (1200 + tolerance))<br> * *{<br> * * * *return LOC_SILVESTROMINE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OW_PATH_266") < (3000 + tolerance))<br> * *{<br> * * * *return LOC_GRIMESMINE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OC_CENTER_02") < (12000 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,"OC_CENTER_05") < (12000 + tolerance))<br> * *{<br> * * * *return LOC_BURG;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OC_ORCBARRIER_08&quo t;) < (5000 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,"PATH_OC_PSI_01") < (5000 + tolerance))<br> * *{<br> * * * *return LOC_ORCBARRIER;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,"OW_PATH_BLOODFLY01_S PAWN01") < (5000 + tolerance))<br> * *{<br> * * * *return LOC_ORCBARRIER_FAR;<br> * *};<br> * *// далеко от любой точки<br> * *return FALSE;<br>};<br><br><br> * *40. Функции проверяющие положение НПС в Хоринисе.<br><br>Файл C_NpcIsInQuarter.d<br><br>// ************************************************** **************<br>// Функции проверяющие положение НПС в Хоринисе<br>// ************************************************** **************<br><br>// Получить расстояние от НПС до центра квартала города<br>// ----------------------------------------------------------------<br>// Аргументы: slf - НПС, quarter - квартал города<br>// Возвращаемое значение: расстояние<br>func int C_GetDistToCenter(var C_NPC slf,var int quarter)<br>{<br> * *var int dist;<br> * *// казармы<br> * *if(quarter == Q_KASERNE)<br> * *{<br> * * * *// выдать расстояние до ближайшей точки казарм<br> * * * *if(Npc_GetDistToWP(slf,"NW_CITY_HABOUR_KASER N_CENTRE_03") < Npc_GetDistToWP(slf,"NW_CITY_KASERN_ARMORY_SH ARP"))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_HABOUR_KASERN_CE NTRE_03");<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_KASERN_ARMORY_SH ARP");<br> * * * *};<br> * *}<br> * *// виселица<br> * *else if(quarter == Q_GALGEN)<br> * *{<br> * * * *// расстояние до виселицы<br> * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_MERCHANT_PATH_33 _B");<br> * * * *// предел<br> * * * *if(dist > 1900)<br> * * * *{<br> * * * * * *dist = 100000;<br> * * * *};<br> * *}<br> * *// рынок<br> * *else if (quarter == Q_MARKT)<br> * *{<br> * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_MERCHANT_PATH_36 ");<br> * * * *if(dist > 2300)<br> * * * *{<br> * * * * * *dist = 100000;<br> * * * *};<br> * *}<br> * *// храм<br> * *else if(quarter == Q_TEMPEL)<br> * *{<br> * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_MERCHANT_TEMPLE_ FRONT");<br> * *}<br> * *// нижний город<br> * *else if (quarter == Q_UNTERSTADT)<br> * *{<br> * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_MAINSTREET_05&qu ot;);<br> * *}<br> * *// гавань<br> * *else if (quarter == Q_HAFEN)<br> * *{<br> * * * *if(Npc_GetDistToWP(slf,"NW_CITY_HABOUR_POOR_ AREA_PATH_07") < Npc_GetDistToWP(slf,"NW_CITY_HABOUR_SMALLTALK _02"))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_HABOUR_POOR_AREA _PATH_07");<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_HABOUR_SMALLTALK _02");<br> * * * *};<br> * *}<br> * *// верхний город<br> * *else if (quarter == Q_OBERSTADT)<br> * *{<br> * * * *if(Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_ 04") < Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_16&q uot;))<br> * * * *&& (Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_04& quot;) < Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_18&q uot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_04&q uot;);<br> * * * *};<br> * *<br> * * * *if(Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_ 16") < Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_04&q uot;))<br> * * * *&& (Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_16& quot;) < Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_18&q uot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_16&q uot;);<br> * * * *};<br> * * * *<br> * * * *if(Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_ 18") < Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_04&q uot;))<br> * * * *&& (Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_18& quot;) < Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_16&q uot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,"NW_CITY_UPTOWN_PATH_18&q uot;);<br> * * * *};<br> * *}<br> * *return dist;<br>};<br><br>// Является ли расстояние от НПС до указанного квартала наименьшим<br>// ----------------------------------------------------------------<br>// Аргументы: slf - НПС, quarter - квартал города<br>// Возвращаемое значение: TRUE - да, FALSE - нет<br>func int C_IsQuarterNearest(var C_NPC slf,var int quart)<br>{<br> * *var int quartDist;<br> * *// расстояние от НПС до нужного квартала<br> * *quartDist = C_GetDistToCenter(slf,quart);<br> * *// если оно наименьшее, то возвращаем TRUE<br> * *if (quartDist <= C_GetDistToCenter(slf,Q_KASERNE))<br> * *&& (quartDist <= C_GetDistToCenter(slf,Q_GALGEN))<br> * *&& (quartDist <= C_GetDistToCenter(slf,Q_MARKT))<br> * *&& (quartDist <= C_GetDistToCenter(slf,Q_TEMPEL))<br> * *&& (quartDist <= C_GetDistToCenter(slf,Q_UNTERSTADT))<br> * *&& (quartDist <= C_GetDistToCenter(slf,Q_HAFEN))<br> * *&& (quartDist <= C_GetDistToCenter(slf,Q_OBERSTADT))<br> * *{<br> * * * *return TRUE;<br> * *}<br> * *return FALSE;<br>};<br><br>// Получить наиближайший к НПС квартал города<br>// ----------------------------------------------------------------<br>// Аргументы: slf - НПС<br>// Возвращаемое значение: квартал<br>func int C_NpcIsInQuarter (var C_NPC slf)<br>{<br> * *// казармы<br> * *if(C_IsQuarterNearest(slf,Q_KASERNE))<br> * *{<br> * * * *return Q_KASERNE;<br> * *};<br> * *// виселица<br> * *if(C_IsQuarterNearest(slf,Q_GALGEN))<br> * *{<br> * * * *return Q_GALGEN;<br> * *};<br> * *// рынок<br> * *if(C_IsQuarterNearest(slf,Q_MARKT))<br> * *{<br> * * * *return Q_MARKT;<br> * *};<br> * *// храм<br> * *if(C_IsQuarterNearest(slf,Q_TEMPEL))<br> * *{<br> * * * *return Q_TEMPEL;<br> * *};<br> * *// нижний город<br> * *if(C_IsQuarterNearest(slf,Q_UNTERSTADT))<br> * *{<br> * * * *return Q_UNTERSTADT;<br> * *};<br> * *// гавань<br> * *if(C_IsQuarterNearest(slf,Q_HAFEN))<br> * *{<br> * * * *return Q_HAFEN;<br> * *};<br> * *// верхний город<br> * *if(C_IsQuarterNearest(slf,Q_OBERSTADT))<br> * *{<br> * * * *return Q_OBERSTADT;<br> * *};<br>};<br><br>
|
Re: Уроки скриптологии
прослойка <br><br>Добавление от 08/17/05, в 17:21:30 <hr class="hr_agfc">немного покромсал тему. посмотрите, не прибил ли я чего лишнего. Резервную копию на всякий случай я сделал ;)
|
Re: Уроки скриптологии
12. Функции организации диалогов с МОВами (Move Object).<br><br>Директория размещения файлов функций - B_Dialog_Mobsis<br><br> * *1. Функции использования предметов "горячими" клавишами.<br><br>Файл B_OnHotKey.d<br><br>// ************************************************** **************<br>// Функции вызова карты мира при нажатии "горячей" клавиши<br>// ************************************************** **************<br><br>// Найти наилучшую карту текущего уровня имеющуюся у ГГ<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение является переопределенным типом (C_Item -> int)<br><br>func int B_GetBestPlayerMap()<br>{<br> * *// Описание функции: если ГГ имеет карту текущего уровня, то возвращается ссылка на неё.<br> * *// Последовательность опроса существующих карт уровня идет в порядке от подробных к частичным<br> * *if(CurrentLevel == NEWWORLD_ZEN)<br> * *{<br> * * * *if(Npc_HasItems(hero,ItWr_Map_NewWorld) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_NewWorld;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_Shrine_MIS) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_Shrine_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_Caves_MIS) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_Caves_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Ornaments_A ddon) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_NewWorld_Ornaments_Addon;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Dexter) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_NewWorld_Dexter;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_ShatteredGolem_MIS) >= 1)<br> * * * *{<br> * * * * * *return ItWr_ShatteredGolem_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_Orcelite_MIS) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_Orcelite_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_City) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_NewWorld_City;<br> * * * *};<br> * *}<br> * *else if(CurrentLevel == OLDWORLD_ZEN)<br> * *{<br> * * * *if(Npc_HasItems(hero,ItWr_Map_OldWorld) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_OldWorld;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_OldWorld_Oremines_MI S) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_OldWorld_Oremines_MIS;<br> * * * *};<br> * *}<br> * *else if(CurrentLevel == DRAGONISLAND_ZEN)<br> * *{<br> * *}<br> * *else if(CurrentLevel == ADDONWORLD_ZEN)<br> * *{<br> * * * *if(Npc_HasItems(hero,ItWr_Map_AddonWorld) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_AddonWorld;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Addon_TreasureMap) >= 1)<br> * * * *{<br> * * * * * *return ItWr_Addon_TreasureMap;<br> * * * *};<br> * *};<br> * *return 0;<br>};<br><br>// Найти любую карту имеющуюся у ГГ<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение является переопределенным типом (C_Item -> int)<br><br>func int B_GetAnyPlayerMap()<br>{<br> * *// Описание функции: если ГГ имеет любую карту, то возвращается ссылка на неё.<br> * *// Последовательность опроса существующих карт идет в порядке от подробных к частичным<br> * *if(Npc_HasItems(hero,ItWr_Map_NewWorld) >= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_Shrine_MIS) >= 1)<br> * *{<br> * * * *return ItWr_Map_Shrine_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_Caves_MIS) >= 1)<br> * *{<br> * * * *return ItWr_Map_Caves_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Ornaments_A ddon) >= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld_Ornaments_Addon;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Dexter) >= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld_Dexter;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_ShatteredGolem_MIS) >= 1)<br> * *{<br> * * * *return ItWr_ShatteredGolem_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_Orcelite_MIS) >= 1)<br> * *{<br> * * * *return ItWr_Map_Orcelite_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_City) >= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld_City;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_OldWorld) >= 1)<br> * *{<br> * * * *return ItWr_Map_OldWorld;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_OldWorld_Oremines_MI S) >= 1)<br> * *{<br> * * * *return ItWr_Map_OldWorld_Oremines_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_AddonWorld) >= 1)<br> * *{<br> * * * *return ItWr_Map_AddonWorld;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Addon_TreasureMap) >= 1)<br> * *{<br> * * * *return ItWr_Addon_TreasureMap;<br> * *};<br> * *return 0;<br>};<br><br>// Функция выбора карты мира, вызываемой "горячей" клавишей<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту, которая вызывается "горячей" клавишей<br>// Примечание: Вызывается только экзешником.<br>func int PLAYER_HOTKEY_SCREEN_MAP()<br>{<br> * *<br> * *// Внимание: переменная OldInstance является переопределенным типом (C_Item -> int)<br> * *var int OldInstance;<br> * *// получить ссылку на последнюю просмотренную карту (далее - старая ссылка)<br> * *OldInstance = B_GetPlayerMap();<br> * *// если карта существует и ГГ её не имеет<br> * *if((OldInstance > 0) && (Npc_HasItems(hero,OldInstance) < 1))<br> * *{<br> * * * *// удалить ссылку<br> * * * *OldInstance = 0;<br> * *};<br> * *// очистить глобальную ссылку на карту<br> * *B_SetPlayerMap(OldInstance);<br> * *// Внимание: переменная NewInstance является переопределенным типом (C_Item -> int)<br> * *var int NewInstance;<br> * *// созранить ссылку на последнюю просмотренную карту (далее - новая ссылка)<br> * *NewInstance = OldInstance;<br> * *// если текущий уровень не Новый мир<br> * *if(CurrentLevel != NEWWORLD_ZEN)<br> * *{<br> * * * *// если старая ссылка является одной из карт Нового мира<br> * * * *if((OldInstance == ItWr_Map_Caves_MIS)<br> * * * *¦¦ (OldInstance == ItWr_Map_NewWorld)<br> * * * *¦¦ (OldInstance == ItWr_Map_NewWorld_City)<br> * * * *¦¦ (OldInstance == ItWr_Map_NewWorld_Dexter)<br> * * * *¦¦ (OldInstance == ItWr_Map_NewWorld_Ornaments_Addon)<br> * * * *¦¦ (OldInstance == ItWr_Map_Orcelite_MIS)<br> * * * *¦¦ (OldInstance == ItWr_Map_Shrine_MIS)<br> * * * *¦¦ (OldInstance == ItWr_ShatteredGolem_MIS))<br> * * * *{<br> * * * * * *// очистить новую ссылку<br> * * * * * *NewInstance = 0;<br> * * * *};<br> * *};<br> * *// если текущий уровень не Миненталь<br> * *if(CurrentLevel != OLDWORLD_ZEN)<br> * *{<br> * * * *// если старая ссылка является одной из карт Миненталя<br> * * * *if((OldInstance == ItWr_Map_OldWorld) ¦¦ (OldInstance == ItWr_Map_OldWorld_Oremines_MIS))<br> * * * *{<br> * * * * * *// очистить новую ссылку<br> * * * * * *NewInstance = 0;<br> * * * *};<br> * *};<br> * *// если текущий уровень не Ирдорат<br> * *// Примечание: этот блок можно удалить - карт для него нет<br> * *if(CurrentLevel != DRAGONISLAND_ZEN)<br> * *{<br> * *};<br> * *// если текущий уровень не Яркендар<br> * *if(CurrentLevel != ADDONWORLD_ZEN)<br> * *{<br> * * * *// аналогично<br> * * * *if((OldInstance == ItWr_Map_AddonWorld) ¦¦ (OldInstance == ItWr_Addon_TreasureMap))<br> * * * *{<br> * * * * * *NewInstance = 0;<br> * * * *};<br> * *};<br> * *// если новая ссылка отсутствует<br> * *if(NewInstance <= 0)<br> * *{<br> * * * *// найти наилучшую карту текущего уровня имеющуюся у ГГ<br> * * * *NewInstance = B_GetBestPlayerMap();<br> * *};<br> * *// если новая и старая ссылки отсутствуют<br> * *if((NewInstance <= 0) && (OldInstance <= 0))<br> * *{<br> * * * *// найти любую карту имеющуюся у ГГ<br> * * * *NewInstance = B_GetAnyPlayerMap();<br> * *};<br> * *// если новая ссылка инициализирована<br> * *if(NewInstance > 0)<br> * *{<br> * * * *// установить глобальную ссылку на эту карту<br> * * * *B_SetPlayerMap(NewInstance);<br> * * * *return NewInstance;<br> * *}<br> * *return OldInstance;<br>};<br><br>// Звук выпивания пузырька<br>func void B_LameSchlork()<br>{<br> * *Snd_Play("DRINKBOTTLE");<br>};<br><br>// ************************************************** **************<br>// Функция употребления напитка повышения маны при нажатии "горячей" клавиши<br>// ************************************************** **************<br>// Примечание: Вызывается только экзешником.<br><br>func void PLAYER_HOTKEY_LAME_POTION()<br>{<br> * *// если ГГ жив<br> * *if(Npc_IsInState(hero,ZS_Dead) == FALSE)<br> * *{ * <br> * * * *// если ГГ имеет соответствующий напиток и при его выпивании мана не превысит максимальную<br> * * * *if(Npc_HasItems(hero,ItPo_Mana_03))<br> * * * *&& (((hero.attribute[ATR_MANA_MAX])-(hero.attribute[ATR_MANA])) >= Mana_Elixier)<br> * * * *{<br> * * * * * *// увеличить ману<br> * * * * * *Npc_ChangeAttribute(hero,ATR_MANA,Mana_Elixier);< br> * * * * * *// удалить напиток<br> * * * * * *Npc_RemoveInvItem(hero,ItPo_Mana_03);<br> * * * * * *// звук выпивания<br> * * * * * *B_LameSchlork();<br> * * * *}<br> * * * *// аналогично<br> * * * *else if(Npc_HasItems (hero,ItPo_Mana_02))<br> * * * *&& (((hero.attribute[ATR_MANA_MAX])-(hero.attribute[ATR_MANA])) >= MANA_Extrakt)<br> * * * *{<br> * * * * * *Npc_ChangeAttribute(hero,ATR_MANA,MANA_Extrakt);< br> * * * * * *Npc_RemoveInvItem(hero,ItPo_Mana_02);<br> * * * * * *B_LameSchlork();<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItPo_Mana_01))<br> * * * *&& (((hero.attribute[ATR_MANA_MAX])-(hero.attribute[ATR_MANA])) >= MANA_Essenz)<br> * * * *{<br> * * * * * *Npc_ChangeAttribute(hero,ATR_MANA,MANA_Essenz);<b r> * * * * * *Npc_RemoveInvItem(hero,ItPo_Mana_01);<br> * * * * * *B_LameSchlork();<br> * * * *}<br> * * * *// если текущая мана не равна максимальной<br> * * * *else if(hero.attribute[ATR_MANA_MAX] != hero.attribute[ATR_MANA])<br> * * * *{<br> * * * * * *// если ГГ имеет напиток<br> * * * * * *if(Npc_HasItems(hero,ItPo_Mana_01))<br> * * * * * *{<br> * * * * * * * *Npc_ChangeAttribute(hero,ATR_MANA,Mana_Essenz);<b r> * * * * * * * *Npc_RemoveInvItem(hero,ItPo_Mana_01);<br> * * * * * * * *B_LameSchlork();<br> * * * * * *}<br> * * * * * *else if(Npc_HasItems(hero,ItPo_Mana_02))<br> * * * * * *{<br> * * * * * * * *Npc_ChangeAttribute(hero,ATR_MANA,MANA_Extrakt);< br> * * * * * * * *Npc_RemoveInvItem(hero,ItPo_Mana_02);<br> * * * * * * * *B_LameSchlork();<br> * * * * * *}<br> * * * * * *else if(Npc_HasItems(hero,ItPo_Mana_03))<br> * * * * * *{<br> * * * * * * * *Npc_ChangeAttribute(hero,ATR_MANA,MANA_Elixier);< br> * * * * * * * *Npc_RemoveInvItem(hero,ItPo_Mana_03);<br> * * * * * * * *B_LameSchlork();<br> * * * * * *}<br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *Print("Нет напитка маны!");<br> * * * * * *};<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *Print("Максимум маны!");<br> * * * *};<br> * *};<br>};<br><br>// ************************************************** **************<br>// Функция употребления напитка повышения жизни при нажатии "горячей" клавиши<br>// ************************************************** **************<br>// Примечание: Вызывается только экзешником.<br><br>// Все аналогично употреблению напитков маны<br>func void PLAYER_HOTKEY_LAME_HEAL()<br>{<br> * *if(Npc_IsInState(hero,ZS_Dead)==FALSE)<br> * *{ * <br> * * * *if(Npc_HasItems(hero,ItPo_HEALTH_03))<br> * * * *&& (((hero.attribute[ATR_HITPOINTS_MAX])-(hero.attribute[ATR_HITPOINTS])) >= HP_Elixier)<br> * * * *{<br> * * * * * *Npc_ChangeAttribute(hero,ATR_HITPOINTS,HP_Elixier );<br> * * * * * *Npc_RemoveInvItem(hero,ItPo_HEALTH_03);<br> * * * * * *B_LameSchlork();<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItPo_HEALTH_02))<br> * * * *&& (((hero.attribute[ATR_HITPOINTS_MAX])-(hero.attribute[ATR_HITPOINTS])) >= HP_Extrakt)<br> * * * *{<br> * * * * * *Npc_ChangeAttribute(hero,ATR_HITPOINTS,HP_Extrakt );<br> * * * * * *Npc_RemoveInvItem(hero,ItPo_HEALTH_02);<br> * * * * * *B_LameSchlork();<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItPo_HEALTH_01))<br> * * * *&& (((hero.attribute[ATR_HITPOINTS_MAX])-(hero.attribute[ATR_HITPOINTS])) >= HP_Essenz)<br> * * * *{<br> * * * * * *Npc_ChangeAttribute(hero,ATR_HITPOINTS,HP_Essenz) ;<br> * * * * * *Npc_RemoveInvItem(hero,ItPo_HEALTH_01);<br> * * * * * *B_LameSchlork();<br> * * * *}<br> * * * *else if((hero.attribute[ATR_HITPOINTS_MAX]) != (hero.attribute[ATR_HITPOINTS]))<br> * * * *{<br> * * * * * * * *if(Npc_HasItems(hero,ItPo_HEALTH_01))<br> * * * * * * * *{<br> * * * * * * * * * *Npc_ChangeAttribute(hero,ATR_HITPOINTS,HP_Essenz) ;<br> * * * * * * * * * *Npc_RemoveInvItem(hero,ItPo_HEALTH_01);<br> * * * * * * * * * *B_LameSchlork();<br> * * * * * * * *}<br> * * * * * * * *else if(Npc_HasItems(hero,ItPo_HEALTH_02))<br> * * * * * * * *{<br> * * * * * * * * * *Npc_ChangeAttribute(hero,ATR_HITPOINTS,HP_Extrakt );<br> * * * * * * * * * *Npc_RemoveInvItem(hero,ItPo_HEALTH_02);<br> * * * * * * * * * *B_LameSchlork();<br> * * * * * * * *}<br> * * * * * * * *else if(Npc_HasItems(hero,ItPo_HEALTH_03))<br> * * * * * * * *{<br> * * * * * * * * * *Npc_ChangeAttribute(hero,ATR_HITPOINTS,HP_Elixier );<br> * * * * * * * * * *Npc_RemoveInvItem(hero,ItPo_HEALTH_03);<br> * * * * * * * * * *B_LameSchlork();<br> * * * * * * * *}<br> * * * * * * * *else<br> * * * * * * * *{<br> * * * * * * * * * *Print("Нет лечебного напитка!");<br> * * * * * * * *};<br> * * * * }<br> * * * * else<br> * * * * {<br> * * * * * * * *Print("Максимум жизненной энергии!");<br> * * * * };<br> * *};<br>};<br><br><br> * *2. Функции инициализации и получения ссылки на последнюю просмотренную карту.<br><br>Файл B_PlayerMap.d<br><br>// ************************************************** **************<br>// Функции инициализации и получения ссылки на последнюю просмотренную карту<br>// ************************************************** **************<br><br>// Внимание: переменная PlayerMapInstance является переопределенным типом (C_Item -> int)<br>var int PlayerMapInstance; * * *// ссылка на карту<br><br>// Функция получения ссылки на карту<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение является переопределенным типом (C_Item -> int)<br><br>func int B_GetPlayerMap()<br>{<br> * *return PlayerMapInstance;<br>};<br><br>// Функция инициализации ссылки на карту<br>// ----------------------------------------------------------------<br>// Аргумент: MapInstance - последняя просмотренная карта<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение и аргумент MapInstance являются переопределенными типами (C_Item -> int)<br><br>func int B_SetPlayerMap(var int MapInstance)<br>{<br> * *PlayerMapInstance = MapInstance;<br> * *return PlayerMapInstance;<br>};<br><br><br> * *3. Функции неудачного использования МОВов.<br><br>Файл B_RefuseAction.d<br><br>// ************************************************** **************<br>// Функции неудачного использования МОВов<br>// ************************************************** **************<br>// Примечание: Все эти функции вызываются только экзешником<br><br>// ГГ не имеет ключа или отмычки<br>func void PLAYER_MOB_MISSING_KEY_OR_LOCKPICK()<br>{<br> * *// вывод текста "Мне нужен ключ или отмычка"<br> * *Print(PRINT_Picklock_or_KeyMissing);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,"T_DONTKNOW");<br> * *// ГГ говорит сам себе (SVM фраза) "Гм, у меня нет ни ключа, ни отмычки."<br> * *B_Say_Overlay(self,self,"$PICKLOCKORKEYMISSI NG");<br>};<br><br>// ГГ не имеет ключа<br>func void PLAYER_MOB_MISSING_KEY()<br>{<br> * *// вывод текста "Мне нужен ключ от этого замка"<br> * *Print(PRINT_KeyMissing);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,"T_DONTKNOW");<br> * *// ГГ говорит сам себе (SVM фраза) "Без настоящего ключа я не открою!"<br> * *B_Say_Overlay(self,self,"$KEYMISSING"); <br>};<br><br>// ГГ не имеет отмычки<br>func void PLAYER_MOB_MISSING_LOCKPICK()<br>{<br> * *// если ГГ не обучен работе с отмычками<br> * *if(Npc_GetTalentSkill(hero,NPC_TALENT_PICKLOCK) == FALSE)<br> * *{<br> * * * *// вывод текста "У меня нехватает таланта"<br> * * * *Print(PRINT_NoPicklockTalent);<br> * * * *// ГГ пожимает плечами<br> * * * *AI_PlayAni(self,"T_DONTKNOW");<br> * * * *// ГГ говорит сам себе (SVM фраза) "Я не умею взламывать замки ..."<br> * * * *B_Say_Overlay(self,self,"$NOPICKLOCKTALENT&q uot;);<br> * *}<br> * *else<br> * *{<br> * * * *// вывод текста "Мне нужна отмычка"<br> * * * *Print(PRINT_PicklockMissing);<br> * * * *// ГГ пожимает плечами<br> * * * *AI_PlayAni(self,"T_DONTKNOW");<br> * * * *// ГГ говорит сам себе (SVM фраза) "Пара отмычек помогли бы!"<br> * * * *B_Say_Overlay(self,self,"$PICKLOCKMISSING&qu ot;);<br> * *};<br>};<br><br>// Попытка ГГ открыть неоткрываемый МОВ<br>func void PLAYER_MOB_NEVER_OPEN()<br>{<br> * *// вывод текста "Я не могу ничего сделать"<br> * *Print(PRINT_NeverOpen);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,"T_DONTKNOW");<br>};<br ><br>// ГГ не имеет соответствующего предмета для использования МОВа<br>func void PLAYER_MOB_MISSING_ITEM()<br>{<br> * *// вывод текста "У меня нет соответствующего предмета"<br> * *Print(PRINT_MissingItem);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,"T_DONTKNOW");<br> * *// ГГ говорит сам себе (SVM фраза) "Но чем?"<br> * *B_Say_Overlay(self,self,"$MISSINGITEM") ;<br>};<br><br>// Если МОВ уже используется другим НПС<br>func void PLAYER_MOB_ANOTHER_IS_USING()<br>{<br> * *// вывод текста "Это сейчас занято"<br> * *Print(PRINT_AnotherUser);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,"T_DONTKNOW");<br>};<br ><br>// Если ГГ находится слишком далеко от МОВа<br>func void PLAYER_MOB_TOO_FAR_AWAY()<br>{<br> * *// вывод текста "Я нахожусь слишком далеко"<br> * *Print(PRINT_Toofar_Away);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,"T_DONTKNOW");<br>};<br ><br>// Если ГГ подошел к МОВу не с той стороны<br>func void PLAYER_MOB_WRONG_SIDE()<br>{<br> * *// вывод текста "Я нахожусь с другой стороны"<br> * *Print(PRINT_WrongSide);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,"T_DONTKNOW");<br>};<br ><br>// ГГ не имеет денег для покупки предмета<br>func void PLAYER_TRADE_NOT_ENOUGH_GOLD()<br>{<br> * *// вывод текста "У вас недостаточно золота, чтобы купить это."<br> * *Print(PRINT_Trade_Not_Enough_Gold);<br>};<br><br><br>
|
Re: Уроки скриптологии
Ой, а где ещё две страницы? Их вроде как 12 было...<br><br>Пр-ка.
|
Re: Уроки скриптологии
2Vendiga:
Цитата:
|
Re: Уроки скриптологии
Ой, а почему уроки прекратились? Что уже нечему учть? :(
|
Текущее время: 08:29. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
AGFC: Valley of Gothic © 2004-2022