AGFC
Страница 6 из 8 123456 78

AGFC (http://agfc.ru/index.php)
-   AGFC: Valley of Gothic (http://agfc.ru/forumdisplay.php?f=46)
-   -   М: Уроки скриптологии (http://agfc.ru/showthread.php?t=1098161614)

17.06.2005 08:20

Re: Уроки скриптологии
 
2basilio58:<br>
Цитата:

НИ ОДНОГО такого названия(инстанции) в скриптах НЕТ!<br>Я думаю, не меня одного это интересует, без музыки игра....сами понимаете...
<br>История об этом умалчивает, а почему ты думаешь, что это должны быть имена инстанций? Ничего конкретного сказать не могу, с устройством музыки в Готике не разбирался.<br>+++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++<br><br> * *14. Документы аддона.<br><br>Файл IT_Addon_Written.d<br><br>//*************************<br>// Документы аддона<br>//*************************<br><br>//--------------------------------------<br>// Записка Снафа<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Hinweis_02(C_Item)<br>{<br> * *name * * * * * *= * &quot;Важное сообщение&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_Hinweis_02; * * * * * * // использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Важное сообщение&quot;<br> * *TEXT[0] * * * * = *&quot;Из трактира в лагере бандитов&quot;;<br>};<br><br>// Прочитать<br>func void Use_Hinweis_02()<br>{<br> * *var int nDocID;<br> * *// создать документ<br> * *nDocID = Doc_Create();<br> * *// кол-во страниц - 1<br> * *Doc_SetPages * *(nDocID,1);<br> * *// изображение страницы<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *// шрифт заголовка<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *// границы текста<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *// заголовок<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *// шрифт текста<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *// вывод строки<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Эй, люди,&quot;);<br> * *// вывод текста в несколько строк<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Лу пропал в болоте, наверное, его сожрали болотожеры&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Еще хуже - с ним пропал и его ключ&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Так что кто его найдет, может хлам Лу оставить себе&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Снаф&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *// показать документ<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Рецепт лечебного напитка<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Health_04(C_Item)<br>{<br> * *name * * * * * *= * &quot;Рецепт лечебного напитка&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 1000; * * * * * * * * * * * // 1000<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_Heilrezept_04; * * * * *// использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * &quot;Чистая жизненная энергия&quot;;<br> * *TEXT[2] * * * * = * &quot;Изготовление одного могущественного напитка.&quot;;<br> * *TEXT[3] * * * * = * &quot;Для применения необходимо знание о эликсирах лечения.&quot;;<br> * *TEXT[5] * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= * value; * * * * * * * * * * *// 1000<br>};<br><br>// Прочитать<br>func void Use_Heilrezept_04()<br>{<br> * *var int nDocID;<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// если ГГ умеет делать Лечебный элексир<br> * * * *if(PLAYER_TALENT_ALCHEMY[POTION_Health_03] == TRUE)<br> * * * *{<br> * * * * * *// ГГ обучился делать Чистую жизненную энергию<br> * * * * * *PLAYER_TALENT_ALCHEMY[POTION_Health_04] = TRUE;<br> * * * * * *// звуковое сопровождение<br> * * * * * *Snd_Play(&quot;LevelUP&quot;);<br> * * * * * *// запись в дневник, тема &quot;Напитки&quot;<br> * * * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Чтобы произвести напиток, необходимо 1 полевое растение и 3 эссенции лечения.&quot;);<br> * * * *};<br> * *};<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;); *<br> * *Doc_PrintLines *(nDocID,0,&quot;Изготовление лечебного напитка:&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Нужно полевое растение и 3 эссенции лечения&quot;); * <br> * *Doc_PrintLines *(nDocID,0,&quot;Вылить вместе и выгнать по рецепту напитков лечения.&quot;); *<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Этот напиток может изготовить только алхимик, который знает рецепт эликсиров лечения.&quot;); <br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;); *<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;); *<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Рецепт напитка маны<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Mana_04(C_Item)<br>{<br> * *name * * * * * *= * &quot;Рецепт напитка маны&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 1500; * * * * * * * * * * * // 1500<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_Manarezept_04; * * * * *// использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * &quot;Чистая мана&quot;;<br> * *TEXT[2] * * * * = * &quot;Изготовление одного могущественного напитка.&quot;;<br> * *TEXT[3] * * * * = * &quot;Для применения необходимо знание о эликсирах маны.&quot;;<br> * *TEXT[5] * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= * value; * * * * * * * * * * *// 1500<br>};<br><br>// Прочитать<br>func void Use_Manarezept_04()<br>{<br> * *var int nDocID;<br> * *// если НПС ГГ<br> * *if(Npc_IsPlayer(self))<br> * *{<br> * * * *// если ГГ умеет делать Элексир маны<br> * * * *if(PLAYER_TALENT_ALCHEMY[POTION_Mana_03] == TRUE)<br> * * * *{<br> * * * * * *// ГГ обучился делать Чистую ману<br> * * * * * *PLAYER_TALENT_ALCHEMY[POTION_Mana_04] = TRUE;<br> * * * * * *Snd_Play(&quot;LevelUP&quot;);<br> * * * * * *// запись в дневник, тема &quot;Напитки&quot;<br> * * * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Чтобы произвести напиток, необходимо 1 полевое растение и 3 эссенции маны.&quot;);<br> * * * *};<br> * *};<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Изготовление напитка маны:&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Нужно полевое растение и 3 эссенции магической силы&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Вылить вместе и выгнать по рецепту напитков маны.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Этот напиток может изготовить только алхимик, который знает рецепт эликсиров маны.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br><br>//--------------------------------------<br>// Записка Флетчера<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Hinweis_01(C_Item)<br>{<br> * *name * * * * * *= * &quot;Важное сообщение&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_Hinweis_01; * * * * * * // использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Важное сообщение&quot;<br> * *TEXT[0] * * * * = *&quot;Висело на одной хибаре в болоте&quot;;<br>};<br><br>// Прочитать<br>func void Use_Hinweis_01()<br>{<br> * *var int nDocID;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Эй, люди,&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Вещи в сундуке только на крайний случай.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;О они лежат для ВСЕХ. Так что берите только тогда, если что нужно.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;И столько, сколько нужно.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Если все будут делать так, то получится.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Флэтчер&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Записка неизвестного Виллиаму<br>//--------------------------------------<br>INSTANCE ITWr_Addon_William_01(C_Item)<br>{<br> * *name * * * * * *= * &quot;Записка&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_William_01; * * * * * * // использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Записка&quot;<br> * *Text[0] * * * * = * &quot;Эта записка была у рыбака Виллиама с собой.&quot;;<br>};<br><br>// Прочитать<br>func void Use_William_01 ()<br>{<br> * *var int nDocID;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Виллиам,&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Когда Луна будет в полном свете, стражник отвлечется.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Прокрадись наружу - но будь осторожен!&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;если ты пойдешь по настилу, то сможешь покинуть болото.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Лагерь пиратов лежит на другой стороне долины далеко на западе.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Оттуда ты сможешь выбраться на лодке.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Кто-то, кто к тебе хорошо относится.&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Рецепт Мигеля<br>//--------------------------------------<br>INSTANCE ITWr_Addon_MCELIXIER_01(C_Item)<br>{<br> * *name * * * * * *= * &quot;Рецепт&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_MCELIXIER_01; * * * * * // использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Рецепт&quot;<br> * *Text[0] * * * * = * &quot;Рецепт эликсира изменения духа.&quot;;<br> * *Text[1] * * * * = * &quot;Этот напиток помогает вернуть потерянные воспоминания&quot;;<br>};<br><br>// Прочитать<br>func void Use_MCELIXIER_01()<br>{<br> * *var int nDocID;<br> * *// ГГ научился делать Эликсир изменения духа<br> * *Knows_MCELIXIER = TRUE;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;Эликсир изменения духа&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Для изготовления напитка нужен секрет двух жал кровавых шершней.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;К нему добавляют экстракт маня и эссенцию лечения.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;В завершение в кипящую смесь добавить южного слезного перца.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Только знающий алхимик, который умеет выделять секрет из жала кровавых шершней, должен пытаться изготовить этот напиток.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br><br>//--------------------------------------<br>// Письмо Эстебана пиратам<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Pirates_01(C_Item)<br>{<br> * *name * * * * * *= * &quot;Грязная бумажка&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_Pirates_01; * * * * * * // использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Грязная бумажка&quot;<br> * *TEXT[0] * * * * = * &quot;Эта бумажка лежала в кармане у Ангуса.&quot;;<br>};<br><br>// Прочитать<br>func void Use_Pirates_01()<br>{<br> * *var int nDocID;<br> * *// переменная не используется, можно удалить<br> * *Read_JuansText = TRUE;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;Вы, пираты,&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Достаньте нашу последнюю поставку.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Принесите ее к вашей пещере. Там мы встретимся.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Я заплачу двойную стоимость золотом.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Так это будет обделано.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Том&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Рецепт Зеленого послушника<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Joint_01(C_Item)<br>{<br> * *name * * * * * *= * &quot;Зеленый послушник&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * Use_Joint_Rezept_01; * * * *// использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Зеленый послушник&quot;<br> * *TEXT[0] * * * * = * &quot;Лежал в сундуке Фортуно&quot;;<br>};<br><br>// Прочитать<br>func void Use_Joint_Rezept_01()<br>{<br> * *var int nDocID;<br> * *// ГГ научился делать Зеленый послушник<br> * *Green_Extrem = TRUE;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;Зеленый послушник&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;(...) хотя косячки хорошо скручиваются, то, что было у нас в болотном лагере, было совсем другого калибра&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;если я возьму эссенцию двух болотных травок и добавлю полевое растение, то получу эффект &quot;Зеленого послушника&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;Зеленый послушник&quot; помогает против любых болей и проясняет голову.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Рецепт Молотка Лу<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Lou_Rezept(C_Item)<br>{<br> * *name * * * * * *= * &quot;Рецепт Молотка Лу&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 70;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * UseLouRezept; * * * * * * * // использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Рецепт Молотка Лу&quot;<br> * *Text[0] * * * * = * &quot;Рецепт для изготовления молотка Лу&quot;;<br>};<br><br>// Прочитать<br>func void UseLouRezept()<br>{<br> * *var int nDocID;<br> * *// ГГ изучил Рецепт Молотка Лу<br> * *Knows_LousHammer = TRUE;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;Рецепт Молотка Лу&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Ингредиенты для молоткового зелья&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Берем бутылку воды, 2 репы и конкретную порцию болотной травы&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;К этому перемолотые зубы болотожера.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Вместе засыпать в бутылку и перегнать с ромом.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Прост.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Как-то раз старый слепой человек сказал, что здоровее пар не вдыхать.&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Рецепт Двойного молотка Лу<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Lou_Rezept2(C_Item)<br>{<br> * *name * * * * * *= * &quot;Рецепт двойного молотка Лу&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 140;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * UseLouRezept2; * * * * * * *// использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Рецепт двойного молотка Лу&quot;<br> * *Text[0] * * * * = * &quot;Рецепт для изготовления двойного молотка Лу&quot;;<br>};<br><br>// Прочитать<br>func void UseLouRezept2()<br>{<br> * *var int nDocID;<br> * *// ГГ изучил рецепт Двойного Молотка Лу<br> * *Knows_Schlafhammer = TRUE;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;Двойной молоток Лу&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Взять добрый старый молоток Лу и продистиллировать его еще раз.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Эту смесь лучше изготавливать только опытным самогонщикам.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Если такое попытается сделать новичок, он не только ослепнет, но и помрет.&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Рецепт Быстрой селедки<br>//--------------------------------------<br>INSTANCE ITWr_Addon_Piratentod(C_Item)<br>{<br> * *name * * * * * *= * &quot;Быстрая селедка&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * UseRezeptPiratentod; * * * *// использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Быстрая селедка&quot;<br> * *Text[0] * * * * = * &quot;Рецепт изготовления быстрой селедки&quot;;<br>};<br><br>// Прочитать<br>func void UseRezeptPiratentod()<br>{<br> * *var int nDocID;<br> * *// ГГ изучил рецепт Быстрой Селёдки<br> * *Knows_SchnellerHering = TRUE;<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;Быстрая селедка(мой вариант)&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Маленький глоток бодрости для настоящих парней&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Как обычно, берем бутылку из-под воды. Ее наполняем порцией рома, добавляем свежую рыбу.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Когда смесь начинает желтеть, вынимаем рыбу. Все это доводим до кондиции &quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Пучком свежесорванной травы глорха.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Осторожно. Зелье выходит очень сильно.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br>//--------------------------------------<br>// Лист бумаги<br>//--------------------------------------<br>INSTANCE Fakescroll_Addon(C_Item)<br>{ * <br> * *name * * * * * *= * &quot;Лист бумаги.&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *hp * * * * * * *= * 5;<br> * *hp_max * * * * *= * 5;<br> * *weight * * * * *= * 1;<br> * *value * * * * * = * 0; * * * * * * * * * * * * *// 0<br> * *visual * * * * *= * &quot;Fakescroll.3ds&quot;;<br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * = * &quot;MAPSEALED&quot;; * *<br> * *description * * = * name; * * * * * * * * * * * // &quot;Лист бумаги.&quot;<br> * *TEXT[5] * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= * value; * * * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Инструкция по изготовлению Бандитского топора<br>//--------------------------------------<br>INSTANCE ItWr_Addon_AxtAnleitung(C_ITEM)<br>{ * <br> * *name * * * * * *= * &quot;Руководство бандитский топор.&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * UseAxtAnleitung; * * * * * *// использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // &quot;Руководство бандитский топор.&quot;<br> * *Text[0] * * * * = * &quot;Руководство по сборке легкого, острого топора.&quot;;<br>};<br><br>// Прочитать<br>func void UseAxtAnleitung()<br>{<br> * *var int nDocID;<br> * *// если ГГ знает кузнечное дело<br> * *if(Npc_GetTalentSkill(hero,NPC_TALENT_SMITH) &gt;= 1)<br> * *{<br> * * * *// ГГ может изготовить Бандитский топор<br> * * * *Knows_Banditenaxt = TRUE;<br> * *};<br> * *nDocID = Doc_Create();<br> * *Doc_SetPages * *(nDocID,1);<br> * *Doc_SetPage * * (nDocID,0,&quot;letters.TGA&quot;,0);<br> * *Doc_SetFont * * (nDocID,0,FONT_BookHeadline);<br> * *Doc_SetMargins *(nDocID,-1,50,50,50,50,1);<br> * *Doc_PrintLine * (nDocID,0,&quot;Бандитский топор.&quot;);<br> * *Doc_SetFont * * (nDocID,0,FONT_Book);<br> * *Doc_PrintLine * (nDocID,0,&quot;Одноручный топор.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Человек, который знает основы ковки, может изготовить особенный топор.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Для этого нужно две горячих болванки.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;Еще один слиток руды и три зубу волка, глорх или похожих тварей.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Руду и зубы вместе с болванкой обработать на наковальне.&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * *Doc_PrintLine * (nDocID,0,&quot;Такой топор очень легок и наносит серьезный урон.&quot;);<br> * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * *Doc_Show * * * *(nDocID);<br>};<br><br><br>...продолжение следует<br>

17.06.2005 08:23

Re: Уроки скриптологии
 
//--------------------------------------<br>// Свиток вызова Кваходрона<br>//--------------------------------------<br>INSTANCE ItWr_Addon_SUMMONANCIENTGHOST(C_ITEM)<br>{ * <br> * *name * * * * * *= * &quot;Вызвать 'Кваходрона'&quot;;<br> * *mainflag * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * = * ITEM_MISSION; * * * * * * * // квестовый<br> * *value * * * * * = * 250;<br> * *visual * * * * *= * &quot;ItWr_Scroll_01.3DS&quot;; * <br> * *material * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *on_state[0] * * = * UseSummonAncientGhost; * * *// использовать<br> * *scemeName * * * = * &quot;MAP&quot;;<br> * *description * * = * name; * * * * * * * * * * * // Вызвать 'Кваходрона'<br> * *Text[0] * * * * = * &quot;С этим свитком можно вызвать Кваходрона.&quot;;<br>};<br><br>// Прочитать<br>func void UseSummonAncientGhost()<br>{<br> * *// если Кваходрон не вызван<br> * *if(SC_SummonedAncientGhost == FALSE)<br> * *{<br> * * * *// ГГ говорит себе (SVM фраза) &quot;Игхориал торул. Явись мне, Кваходрон, старый вождь касты воителей!&quot;<br> * * * *B_Say(self,self,&quot;$ADDON_SUMMONANCIENTGHOST&q uot;);<br> * * * *// если ГГ находится не далее 10м от нужного места<br> * * * *if(Npc_GetDistToWP(self,&quot;ADW_ANCIENTGHOST&qu ot;) &lt; 1000)<br> * * * *{<br> * * * * * *// появляется Кваходрон<br> * * * * * *Wld_InsertNpc(NONE_ADDON_111_Quarhodron,&quot;ADW _ANCIENTGHOST&quot;);<br> * * * * * *// визуальные и звуковые эффекты<br> * * * * * *Wld_PlayEffect(&quot;spellFX_Maya_Ghost&quot;,NON E_ADDON_111_Quarhodron,NONE_ADDON_111_Quarhodron,0 ,0,0,FALSE);<br> * * * * * *Wld_PlayEffect(&quot;SPELLFX_LIGHTSTAR_WHITE&quot ;,NONE_ADDON_111_Quarhodron,NONE_ADDON_111_Quarhod ron,0,0,0,FALSE);<br> * * * * * *Snd_Play(&quot;MFX_GhostVoice&quot;);<br> * * * * * *Snd_Play(&quot;MFX_Firestorm_Cast&quot;);<br> * * * * * *Snd_Play(&quot;MFX_Lightning_Origin&quot;);<br> * * * * * *// Кваходрон вызван<br> * * * * * *SC_SummonedAncientGhost = TRUE;<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// ГГ говорит себе (SVM фраза) &quot;Ммм... Здесь не функционирует.&quot;<br> * * * * * *B_Say(self,self,&quot;$ADDON_ANCIENTGHOST_NOTNEAR &quot;);<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Карта Забытой долины Строителей<br>//--------------------------------------<br>INSTANCE ItWr_Map_AddonWorld(C_Item)<br>{<br> * *name * * * * * *= &quot;Забытая долина Строителей&quot;; *<br> * *mainflag * * * *= ITEM_KAT_DOCS; * * * * * * * *// документ<br> * *flags * * * * * = ITEM_MISSION ¦ ITEM_MULTI; * *// квестовый + складируемый<br> * *value * * * * * = 250; * * * * * * * * * * * * *// 250<br> * *visual * * * * *= &quot;ItWr_Map_01.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *scemeName * * * = &quot;MAP&quot;;<br> * *on_state[0] * * = Use_Map_AddonWorld; * * * * * // использовать<br> * *description * * = name; * * * * * * * * * * * * // &quot;Забытая долина Строителей&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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> * * * *// сохранить ссылку на документ для просмотра &quot;горячей&quot; клавишей<br> * * * *B_SetPlayerMap(ItWr_Map_AddonWorld);<br> * *};<br> * *Document = Doc_CreateMap();<br> * *Doc_SetPages * * * *(Document,1);<br> * *Doc_SetPage * * * * (Document,0,&quot;Map_AddonWorld.tga&quot;,TRUE);< br> * *// задать уровень мира для просмотра<br> * *Doc_SetLevel * * * *(Document,&quot;Addon\AddonWorld.zen&quot;);<br> * *// установить координаты уровня<br> * *Doc_SetLevelCoords *(Document,-47783,36300,43949,-32300);<br> * *Doc_Show * * * * * *(Document);<br>};<br><br>

20.06.2005 11:52

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 * * * * * * * *= * &quot;Круг Воды&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_04.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун водных магов (1 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Воды II&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_04.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун водных магов (2 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Воды III&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_04.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун водных магов (3 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Воды VI&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_04.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун водных магов (4 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Воды V&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_04.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун водных магов (5 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Воды VI&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_04.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун водных магов (6 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Огня I&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_03.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун огненных магов (1 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Огня II&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_03.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун огненных магов (2 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Огня III&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_03.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун огненных магов (3 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Огня IV&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_03.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун огненных магов (4 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Огня V&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_03.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун огненных магов (5 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Книга рун Огня VI&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ<br> * *flags * * * * * * * = * ITEM_MISSION;<br> * *value * * * * * * * = * 100; * * * * * * * * * * * *// 100<br> * *visual * * * * * * *= * &quot;ItWr_Book_02_03.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MAP&quot;;<br> * *description * * * * = * &quot;Книга рун огненных магов (6 круг)&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // &quot;Ценность:&quot;<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Круг Воды&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;Руны Воды и для их изготовления необходимые ингридиенты &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Смерч&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Крыло кровавого шершня&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Ледяное копье&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Ледяной кварц&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Гейзер&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Аквамарин&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Шторм&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Ледяной кварц&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Крыло кровавого шершня&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кулак воды&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Аквамарин&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Горный хрусталь&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. &quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Только если эти условия выполнены он может приступить к изготовлению руны.&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Страница 1&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Рунический камень&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Страница 2&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Страница 1&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Руны и их ингредиенты &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Страница 2&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Страница 1&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Учитель Иннос&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Страница 2&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Страница 1&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Приказы Инноса &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Страница 2&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;DER ERSTE KREIS&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;Руны первого Круга и необходимые для их изготовления ингредиенты: &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Свет&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Золотая монета&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Огненная стрела &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сера&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Малая молния&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Горный хрусталь&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Скелет гоблина&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кость гоблина&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Лечить легкое ранение&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Лечебное растение &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. &quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Только если эти условия выполнены он может приступить к изготовлению руны.&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;DER ZWEITE KREIS&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;Руны второго Круга и необходимые для их изготовления ингредиенты: &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Огненный шар&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Смола&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Ледяная стрела&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кварц&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Вызвать волка&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Шкура волка&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Порыв ветра&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Уголь&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сон&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Болотник&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. &quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Только если эти условия выполнены он может приступить к изготовлению руны.&quot;);<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br><br>...продолжение следует

20.06.2005 11:53

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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;DER DRITTE KREIS&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;Руны третьего Круга и необходимые для их изготовления ингредиенты: &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Лечить среднее ранение &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Лечебная трава &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Малая огненная буря &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Смола&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сера&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Вызвать скелет&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кость скелета&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Страх&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Черный жемчуг&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Ледяная глыба &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кварц&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Аквамарин&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Шаровая молния &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Горный хрусталь&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сера&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Огненный шар&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Смола&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сера&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. &quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Только если эти условия выполнены он может приступить к изготовлению руны.&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;DER VIERTE KREIS&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;Руны четвертого Круга и необходимые для их изготовления ингредиенты: &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Большой огненный шар&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сера&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Смола&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Удар молнии &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Горный хрусталь&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кварц&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Вызвать голема&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сердце каменного голема&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Уничтожить нежить&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Святая вода&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. &quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Только если эти условия выполнены он может приступить к изготовлению руны.&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;DER FЬNFTE KREIS&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;Руны пятого Круга и необходимые для их изготовления ингредиенты: &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Ледяная волна &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кварц&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Аквамарин&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Большая огненная буря &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сера&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Огненный язык&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Вызвать демона&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сердце демона&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Лечить сильное ранение &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Лечебный корень&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. &quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Только если эти условия выполнены он может приступить к изготовлению руны.&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;DER SECHSTE KREIS&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;Руны шестого Круга и необходимые для их изготовления ингредиенты: &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Огненный дождь&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Смола&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сера&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Огненный язык&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Дым смерти&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Уголь&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Черный жемчуг&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Волна смерти &quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кость скелета&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Черный жемчуг&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Армия мрака&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Кость скелета&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Черный жемчуг&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сердце каменного голема&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Сердце демона&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Уменьшить монстра&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Кость гоблина&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Клык тролля&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Для изготовления руны необходим соответственно ОДИН из указанных ингредиентов. &quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Изготовителю должна быть известна формула магии, он должен иметь рунический камень, а также свиток заклинания.&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;Только если эти условия выполнены он может приступить к изготовлению руны.&quot;);<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,&quot;Book_Mage_L.tga&quot;,0);<br> * * * *Doc_SetPage * * (nDocID,1,&quot;Book_Mage_R.tga&quot;,0);<br> * * * *Doc_SetFont * * (nDocID,-1,FONT_Book);<br> * * * *Doc_SetMargins *(nDocID,0,275,20,30,20,1);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Страница 1&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;Правила&quot;);<br> * * * *Doc_PrintLine * (nDocID,0,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,0,&quot;&quot;);<br> * * * *Doc_SetMargins *(nDocID,-1,30,20,275,20,1);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;Страница 2&quot;);<br> * * * *Doc_PrintLine * (nDocID,1,&quot;&quot;);<br> * * * *Doc_PrintLines *(nDocID,1,&quot;&quot;);<br> * * * *Doc_Show * * * *(nDocID);<br> * *};<br>};<br><br>

04.07.2005 10:53

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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtFire; * * * * * *// 600<br> * *visual * * * * *= &quot;ItAm_Prot_Fire_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет огня&quot;;<br> * *TEXT[2] * * * * = NAME_Prot_Fire; * * * * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[2] * * * *= Am_ProtFire; * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtEdge; * * * * * *// 800<br> * *visual * * * * *= &quot;ItAm_Prot_Edge_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет брони&quot;;<br> * *TEXT[2] * * * * = NAME_Prot_Edge; * * * * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[2] * * * *= Am_ProtEdge; * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtPoint; * * * * * // 500<br> * *visual * * * * *= &quot;ItAm_Prot_Point_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет дубовой кожи&quot;;<br> * *TEXT[2] * * * * = NAME_Prot_Point; * * * * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * *= Am_ProtPoint; * * * * * * * * // 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtMage; * * * * * *// 700<br> * *visual * * * * *= &quot;ItAm_Prot_Mage_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет силы духа&quot;;<br> * *TEXT[2] * * * * = NAME_Prot_Magic; * * * * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[2] * * * *= Am_ProtMage; * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_ProtTotal; * * * * * // 1000<br> * *visual * * * * *= &quot;ItAm_Prot_Total_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет рудной кожи&quot;;<br> * *TEXT[1] * * * * = NAME_Prot_Fire; * * * * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[1] * * * *= AM_TProtFire; * * * * * * * * // 8<br> * *TEXT[2] * * * * = NAME_Prot_Magic; * * * * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[2] * * * *= AM_TProtMage; * * * * * * * * // 8<br> * *TEXT[3] * * * * = NAME_Prot_Point; * * * * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[3] * * * *= AM_TProtPoint; * * * * * * * *// 8<br> * *TEXT[4] * * * * = NAME_Prot_Edge; * * * * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[4] * * * *= AM_TProtEdge; * * * * * * * * // 8<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Dex; * * * * * * * * // 1000<br> * *visual * * * * *= &quot;ItAm_Dex_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет ловкости&quot;;<br> * *TEXT[2] * * * * = NAME_Bonus_Dex; * * * * * * * // &quot;Прибавка к ловкости:&quot;<br> * *COUNT[2] * * * *= Am_Dex; * * * * * * * * * * * // 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Strg; * * * * * * * *// 1000<br> * *visual * * * * *= &quot;ItAm_Strg_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет силы&quot;;<br> * *TEXT[2] * * * * = NAME_Bonus_Str; * * * * * * * // &quot;Прибавка к силе:&quot;<br> * *COUNT[2] * * * *= Am_Strg; * * * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Hp; * * * * * * * * *// 400<br> * *visual * * * * *= &quot;ItAm_Hp_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет жизни&quot;;<br> * *TEXT[2] * * * * = NAME_Bonus_HP; * * * * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[2] * * * *= Am_Hp; * * * * * * * * * * * *// 40<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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> * *// если жизнь &gt; 42<br> * *if(self.attribute[ATR_HITPOINTS] &gt; (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; * * * * * * * * // &quot;Амулет&quot;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_Mana; * * * * * * * *// 1000<br> * *visual * * * * *= &quot;ItAm_Mana_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет магии&quot;;<br> * *TEXT[2] * * * * = NAME_Bonus_Mana; * * * * * * *// &quot;Прибавка к мане:&quot;<br> * *COUNT[2] * * * *= Am_Mana; * * * * * * * * * * *// 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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> * *// если мана &gt; 10<br> * *if(self.attribute[ATR_MANA] &gt; (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 * * * * * *= &quot;Амулет власти&quot;;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_DexStrg; * * * * * * // 1600<br> * *visual * * * * *= &quot;ItAm_Dex_Strg_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет власти&quot;;<br> * *TEXT[2] * * * * = NAME_Bonus_Dex; * * * * * * * // &quot;Прибавка к ловкости:&quot;<br> * *COUNT[2] * * * *= Am_DexStrg_Dex; * * * * * * * // 8<br> * *TEXT[3] * * * * = NAME_Bonus_Str; * * * * * * * // &quot;Прибавка к силе:&quot;<br> * *COUNT[3] * * * *= Am_DexStrg_Strg; * * * * * * *// 8<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * *= &quot;Амулет озарения&quot;;<br> * *mainflag * * * *= ITEM_KAT_MAGIC; * * * * * * * // амулеты<br> * *flags * * * * * = ITEM_AMULET;<br> * *value * * * * * = Value_Am_HpMana; * * * * * * *// 1300<br> * *visual * * * * *= &quot;ItAm_Hp_Mana_01.3ds&quot;;<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 * * * * *= &quot;SPELLFX_ITEMGLIMMER&quot;; <br> * *description * * = &quot;Амулет озарения&quot;;<br> * *TEXT[2] * * * * = NAME_Bonus_HP; * * * * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[2] * * * *= Am_HpMana_Hp; * * * * * * * * // 30<br> * *TEXT[3] * * * * = NAME_Bonus_Mana; * * * * * * *// &quot;Прибавка к мане:&quot;<br> * *COUNT[3] * * * *= Am_HpMana_Mana; * * * * * * * // 10<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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> * *// если жизнь &gt; 31<br> * *if(self.attribute[ATR_HITPOINTS] &gt; 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> * *// если мана &gt;= 10<br> * *if(self.attribute[ATR_MANA] &gt;= 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>

05.07.2005 10:52

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 * * * * * *= &quot;Kopf&quot;; * * * * * * * * * * * // (не переведено)<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_BCKopf; * * * * * * * * // 50<br> * *visual * * * * *= &quot;ItAt_Blattcrawler_01.3DS&quot;; <br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = &quot;Голова богомола&quot;;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 50<br>};<br><br>//--------------------------------------<br>// Мясо мясного жука<br>//--------------------------------------<br>INSTANCE ItAt_Meatbugflesh(C_Item)<br>{<br> * *name * * * * * *= &quot;Мясо мясного жука&quot;;<br> * *mainflag * * * *= ITEM_KAT_FOOD; * * * * * * * *// еда<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Meatbugflesh; * * * * * // 10<br> * *visual * * * * *= &quot;ItAt_Meatbugflesh.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *scemeName * * * = &quot;FOODHUGE&quot;;<br> * *on_state[0] * * = Use_Meatbugflesh; * * * * * * // использовать<br> * *description * * = name; * * * * * * * * * * * * // &quot;Мясо мясного жука&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = NAME_Bonus_HP; * * * * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * *= 10; * * * * * * * * * * * * * // 10<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * *= &quot;Шкура овцы&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SheepFur; * * * * * * * // 10<br> * *visual * * * * *= &quot;ItAt_SheepFur.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Шкура овцы&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Шкура волка<br>//--------------------------------------<br>INSTANCE ItAt_WolfFur(C_Item)<br>{<br> * *name * * * * * *= &quot;Шкура волка&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_WolfFur; * * * * * * * *// 10<br> * *visual * * * * *= &quot;ItAt_WolfFur.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Шкура волка&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Жвало полевого жука<br>//--------------------------------------<br>INSTANCE ItAt_BugMandibles(C_Item)<br>{<br> * *name * * * * * *= &quot;Жвало полевого жука&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_BugMandibles; * * * * * // 15<br> * *visual * * * * *= &quot;ItAt_BugMandibles.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Жвало полевого жука&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Когти<br>//--------------------------------------<br>INSTANCE ItAt_Claw(C_Item)<br>{<br> * *name * * * * * *= &quot;Когти&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Claw; * * * * * * * * * // 15<br> * *visual * * * * *= &quot;ItAt_Claw.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Когти&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Когти шныга<br>//--------------------------------------<br>INSTANCE ItAt_LurkerClaw(C_Item)<br>{<br> * *name * * * * * *= &quot;Когти шныга&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_LurkerClaw; * * * * * * // 15<br> * *visual * * * * *= &quot;ItAt_LurkerClaw.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Когти шныга&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Зубы<br>//--------------------------------------<br>INSTANCE ItAt_Teeth(C_Item)<br>{<br> * *name * * * * * *= &quot;Зубы&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Teeth; * * * * * * * * *// 15<br> * *visual * * * * *= &quot;ItAt_Teeth.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Зубы&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Жвало ползуна<br>//--------------------------------------<br>INSTANCE ItAt_CrawlerMandibles(C_Item)<br>{<br> * *name * * * * * *= &quot;Жвало ползуна&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_CrawlerMandibles; * * * // 15<br> * *visual * * * * *= &quot;ItAt_CrawlerMandibles.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *scemeName * * * = &quot;FOOD&quot;;<br> * *on_state[0] * * = Use_Mandibles; * * * * * * * *// использовать<br> * *description * * = name; * * * * * * * * * * * * // &quot;Жвало ползуна&quot;<br> * *TEXT[0] * * * * = &quot;В этом жвале содержится особенный &quot;;<br> * *TEXT[1] * * * * = &quot;сок, который обладает действием&quot;;<br> * *TEXT[2] * * * * = &quot;восстанавливать магическую энергию.&quot;;<br> * *TEXT[3] * * * * = &quot;Со временем прекращает действовать.&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>// Использовать<br>func void Use_Mandibles()<br>{<br> * *// если съедено менее 10 жвал<br> * *if(Mandibles_Bonus &lt;= 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> * * * *// вывод на экран - &quot;Этот сок больше не действует.&quot;<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 * * * * * *= &quot;Flьgel&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Wing; * * * * * * * * * // 20<br> * *visual * * * * *= &quot;ItAt_Wing.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Крыло&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 20<br>};<br><br>//--------------------------------------<br>// Жало<br>//--------------------------------------<br>INSTANCE ItAt_Sting(C_Item)<br>{<br> * *name * * * * * *= &quot;Жало&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_Sting; * * * * * * * * *// 25<br> * *scemeName * * * = &quot;FOOD&quot;;<br> * *on_state[0] * * = Use_Sting; * * * * * * * * * *// использовать<br> * *visual * * * * *= &quot;ItAt_Sting.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Жало&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;Жало&quot;;<br> * *TEXT[2] * * * * = &quot;содержит ядовитый сок&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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 &lt;= 10)<br> * * * *{<br> * * * * * *// восстановить жизнь до максимальной<br> * * * * * *Npc_ChangeAttribute(self,ATR_HITPOINTS,self.attri bute[ATR_HITPOINTS_MAX]);<br> * * * * * *// вывод на экран - &quot;Полностью вылечен&quot;<br> * * * * * *Print(PRINT_FullyHealed);<br> * * * * * *// кол-во съеденных жал ++<br> * * * * * *Bloodfly_Bonus = (Bloodfly_Bonus+1);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// вывод на экран &quot;Этот сок больше не действует.&quot;<br> * * * * * *Print(PRINT_Mandibles);<br> * * * *};<br> * *}<br> * *else<br> * *{<br> * * * *// вывод на экран &quot;На вкус горький и ядовитый&quot;<br> * * * *Print(PRINT_Bloodfly);<br> * * * *// если жизнь &gt; 1<br> * * * *if(self.attribute[ATR_HITPOINTS] &gt; 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 * * * * * *= &quot;Кожа рептилии&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_ReptileSkin; * * * * * *// 25<br> * *visual * * * * *= &quot;ItAt_LurkerSkin.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = &quot;Кожа рептилии&quot;;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 25<br>};<br><br>//--------------------------------------<br>// Шкура варга<br>//--------------------------------------<br>INSTANCE ItAt_WargFur(C_Item)<br>{<br> * *name * * * * * *= &quot;Шкура варга&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_WargFur; * * * * * * * *// 25<br> * *visual * * * * *= &quot;ItAt_WargFur.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Шкура варга&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 25<br>};<br><br>//--------------------------------------<br>// Шкура кабана<br>//--------------------------------------<br>INSTANCE ItAt_Addon_KeilerFur(C_Item)<br>{<br> * *name * * * * * *= &quot;Шкура кабана&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_KeilerFur; * * * * * * *// 15<br> * *visual * * * * *= &quot;ItAt_WargFur.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Шкура кабана&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 15<br>};<br><br>//--------------------------------------<br>// Рог остера<br>//--------------------------------------<br>INSTANCE ItAt_DrgSnapperHorn(C_Item)<br>{<br> * *name * * * * * *= &quot;Рог остера&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_DrgSnapperHorn; * * * * // 100<br> * *visual * * * * *= &quot;ItAt_DrgSnapperHorn.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Рог остера&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 100<br>};<br><br>//--------------------------------------<br>// Панцирь ползуна<br>//--------------------------------------<br>INSTANCE ItAt_CrawlerPlate(C_Item)<br>{<br> * *name * * * * * *= &quot;Панцирь ползуна&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_CrawlerPlate; * * * * * // 50<br> * *visual * * * * *= &quot;ItAt_CrawlerPlate.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Панцирь ползуна&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 50<br>};<br><br>//--------------------------------------<br>// Шкура мракориса<br>//--------------------------------------<br>INSTANCE ItAt_ShadowFur(C_Item)<br>{<br> * *name * * * * * *= &quot;Шкура мракориса&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_ShadowFur; * * * * * * *// 250<br> * *visual * * * * *= &quot;ItAt_ShadowFur.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Шкура мракориса&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 250<br>};<br><br>//--------------------------------------<br>// Кожа болотожора<br>//--------------------------------------<br>INSTANCE ItAt_SharkSkin(C_Item)<br>{<br> * *name * * * * * *= &quot;Кожа болотожора&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SharkSkin; * * * * * * *// 200<br> * *visual * * * * *= &quot;ItAt_SharkSkin.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Кожа болотожора&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 200<br>};<br><br>//--------------------------------------<br>// Шкура тролля<br>//--------------------------------------<br>INSTANCE ItAt_TrollFur(C_Item)<br>{<br> * *name * * * * * *= &quot;Шкура тролля&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_TrollFur; * * * * * * * // 300<br> * *visual * * * * *= &quot;ItAt_TrollFur.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Шкура тролля&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Шкура черного тролля<br>//--------------------------------------<br>INSTANCE ItAt_TrollBlackFur(C_Item)<br>{<br> * *name * * * * * *= &quot;Шкура черного тролля&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_TrollBlackFur; * * * * *// 350<br> * *visual * * * * *= &quot;ItAt_TrollFur.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Шкура черного тролля&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 350<br>};<br><br>//--------------------------------------<br>// Огненный язык<br>//--------------------------------------<br>INSTANCE ItAt_WaranFiretongue(C_Item)<br>{<br> * *name * * * * * *= &quot;Огненный язык&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_WaranFiretongue; * * * *// 300<br> * *visual * * * * *= &quot;ItAt_WaranFiretongue.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Огненный язык&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Рог мракориса<br>//--------------------------------------<br>INSTANCE ItAt_ShadowHorn(C_Item)<br>{<br> * *name * * * * * *= &quot;Рог мракориса&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_ShadowHorn; * * * * * * // 300<br> * *visual * * * * *= &quot;ItAt_ShadowHorn.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Рог мракориса&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Зубы болотожора<br>//--------------------------------------<br>INSTANCE ItAt_SharkTeeth(C_Item)<br>{<br> * *name * * * * * *= &quot;Зубы болотожора&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SharkTeeth; * * * * * * // 300<br> * *visual * * * * *= &quot;ItAt_SharkTeeth.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Зубы болотожора&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Клык тролля<br>//--------------------------------------<br>INSTANCE ItAt_TrollTooth(C_Item)<br>{<br> * *name * * * * * *= &quot;Клык тролля&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_TrollTooth; * * * * * * // 300<br> * *visual * * * * *= &quot;ItAt_TrollTooth.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Клык тролля&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br> * *INV_ZBIAS * * * = INVCAM_ENTF_RING_STANDARD;<br>};<br><br>...продолжение следует

05.07.2005 10:56

Re: Уроки скриптологии
 
//--------------------------------------<br>// Сердце каменного голема<br>//--------------------------------------<br>INSTANCE ItAt_StoneGolemHeart(C_Item)<br>{<br> * *name * * * * * *= &quot;Сердце каменного голема&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_StoneGolemHeart; * * * *// 300<br> * *visual * * * * *= &quot;ItAt_StoneGolemHeart.3DS&quot;;<br> * *material * * * *= MAT_STONE; * * * * * * * * * *// камень<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце каменного голема&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;; <br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Сердце огненного голема<br>//--------------------------------------<br>INSTANCE ItAt_FireGolemHeart(C_Item)<br>{<br> * *name * * * * * *= &quot;Сердце огненного голема&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_FireGolemHeart; * * * * // 300<br> * *visual * * * * *= &quot;ItAt_FireGolemHeart.3DS&quot;;<br> * *material * * * *= MAT_STONE; * * * * * * * * * *// камень<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце огненного голема&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;; <br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Сердце ледяного голема<br>//--------------------------------------<br>INSTANCE ItAt_IceGolemHeart(C_Item)<br>{<br> * *name * * * * * *= &quot;Сердце ледяного голема&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_IceGolemHeart; * * * * *// 300<br> * *visual * * * * *= &quot;ItAt_IceGolemHeart.3DS&quot;;<br> * *material * * * *= MAT_STONE; * * * * * * * * * *// камень<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце ледяного голема&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Кость гоблина<br>//--------------------------------------<br>INSTANCE ItAt_GoblinBone(C_Item)<br>{<br> * *name * * * * * *= &quot;Кость гоблина&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_GoblinBone; * * * * * * // 10<br> * *visual * * * * *= &quot;ItAt_GoblinBone.3DS&quot;;<br> * *material * * * *= MAT_WOOD; * * * * * * * * * * // дерево<br> * *description * * = name; * * * * * * * * * * * * // &quot;Кость гоблина&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Кость скелета<br>//--------------------------------------<br>INSTANCE ItAt_SkeletonBone(C_Item)<br>{<br> * *name * * * * * *= &quot;Кость скелета&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_SkeletonBone; * * * * * // 10<br> * *visual * * * * *= &quot;ItAt_SkeletonBone.3DS&quot;;<br> * *material * * * *= MAT_WOOD; * * * * * * * * * * // дерево<br> * *description * * = name; * * * * * * * * * * * * // &quot;Кость скелета&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Сердце демона<br>//--------------------------------------<br>INSTANCE ItAt_DemonHeart(C_Item)<br>{<br> * *name * * * * * *= &quot;Сердце демона&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_DemonHeart; * * * * * * // 300<br> * *visual * * * * *= &quot;ItAt_DemonHeart.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце демона&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Каменная душа дракона нежити<br>//--------------------------------------<br>INSTANCE ItAt_UndeadDragonSoulStone(C_Item)<br>{<br> * *name * * * * * *= &quot;Каменная душа дракона нежити&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_UndeadDragonSoulStone; *// 400<br> * *visual * * * * *= &quot;ItAt_UndeadDragonSoulStone.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Каменная душа дракона нежити&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * *= &quot;Сердце ледяного дракона&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_IcedragonHeart; * * * * // 400<br> * *visual * * * * *= &quot;ItAt_IcedragonHeart.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце ледяного дракона&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Сердце каменного дракона<br>//--------------------------------------<br>INSTANCE ItAt_RockdragonHeart(C_Item)<br>{<br> * *name * * * * * *= &quot;Сердце каменного дракона&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_RockdragonHeart; * * * *// 400<br> * *visual * * * * *= &quot;ItAt_RockdragonHeart.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце каменного дракона&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Сердце болотного дракона<br>//--------------------------------------<br>INSTANCE ItAt_SwampdragonHeart(C_Item)<br>{<br> * *name * * * * * *= &quot;Сердце болотного дракона&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_SwampdragonHeart; * * * // 400<br> * *visual * * * * *= &quot;ItAt_SwampdragonHeart.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце болотного дракона&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Сердце огненного дракона<br>//--------------------------------------<br>INSTANCE ItAt_FiredragonHeart(C_Item)<br>{<br> * *name * * * * * *= &quot;Сердце огненного дракона&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_FiredragonHeart; * * * *// 400<br> * *visual * * * * *= &quot;ItAt_FiredragonHeart.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Сердце огненного дракона&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 400<br>};<br><br>//--------------------------------------<br>// Кровь дракона<br>//--------------------------------------<br>INSTANCE ItAt_DragonBlood(C_Item)<br>{<br> * *name * * * * * *= &quot;Кровь дракона&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI ¦ ITEM_MISSION; * *// складируемый + квестовый<br> * *value * * * * * = Value_DragonBlood; * * * * * *// 200<br> * *visual * * * * *= &quot;ItAt_DragonBlood.3DS&quot;;<br> * *material * * * *= MAT_LEATHER; * * * * * * * * *// кожа<br> * *description * * = name; * * * * * * * * * * * * // &quot;Кровь дракона&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<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 * * * * * *= &quot;Чешуя дракона&quot;;<br> * *mainflag * * * *= ITEM_KAT_NONE; * * * * * * * *// прочее<br> * *flags * * * * * = ITEM_MULTI; * * * * * * * * * // складируемый<br> * *value * * * * * = Value_DragonScale; * * * * * *// 200<br> * *visual * * * * *= &quot;ItAt_DragonScale.3DS&quot;;<br> * *material * * * *= MAT_STONE ; * * * * * * * * * // камень<br> * *description * * = name; * * * * * * * * * * * * // &quot;Чешуя дракона&quot;<br> * *TEXT[0] * * * * = &quot;&quot;;<br> * *TEXT[1] * * * * = &quot;&quot;;<br> * *TEXT[2] * * * * = &quot;&quot;;<br> * *TEXT[3] * * * * = &quot;&quot;;<br> * *TEXT[5] * * * * = NAME_Value; * * * * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * *= value; * * * * * * * * * * * *// 200<br>};<br><br>

06.07.2005 16:38

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 * * * * * * * * * *= * &quot;Накидка городского советника&quot;;<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 * * * * * * * * *= * &quot;ItAr_Governor.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Governor.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Накидка городского советника&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 40<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 40<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 1100<br>};<br><br>//--------------------------------------<br>// Одежда судьи<br>//--------------------------------------<br>INSTANCE ITAR_JUDGE (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда судьи&quot;;<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 * * * * * * * * *= * &quot;ItAr_Governor.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Judge.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда судьи&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда кузнеца<br>//--------------------------------------<br>INSTANCE ITAR_SMITH (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда кузнеца&quot;;<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 * * * * * * * * *= * &quot;ItAr_Smith.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Smith.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда кузнеца&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 15<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 15<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 5<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда трактирщика<br>//--------------------------------------<br>INSTANCE ITAR_BARKEEPER (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда трактирщика&quot;;<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 * * * * * * * * *= * &quot;ItAr_Wirt.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Barkeeper.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда трактирщика&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда горожанина (бедная)<br>//--------------------------------------<br>INSTANCE ITAR_VLK_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда горожанина&quot;;<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 * * * * * * * * *= * &quot;ItAr_VLK_L.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Vlk_L.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда горожанина&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 120<br>};<br><br>//--------------------------------------<br>// Одежда горожанина (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_VLK_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда горожанина&quot;;<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 * * * * * * * * *= * &quot;ItAr_VLK_M.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Vlk_M.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда горожанина&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 120<br>};<br><br>//--------------------------------------<br>// Одежда горожанина (богатая)<br>//--------------------------------------<br>INSTANCE ITAR_VLK_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда горожанина&quot;;<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 * * * * * * * * *= * &quot;ItAr_VLK_H.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Vlk_H.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда горожанина&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 120<br>};<br><br>//--------------------------------------<br>// Одежда горожанки (бедная)<br>//--------------------------------------<br>instance ITAR_VlkBabe_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда горожанки&quot;;<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 * * * * * * * * *= * &quot;ItAr_VLKBabe.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_VlkBabe_L.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда горожанки&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда горожанки (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_VlkBabe_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда горожанки&quot;;<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 * * * * * * * * *= * &quot;ItAr_VLKBabe.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_VlkBabe_M.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда горожанки&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Одежда горожанки (богатая)<br>//--------------------------------------<br>INSTANCE ITAR_VlkBabe_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда горожанки&quot;;<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 * * * * * * * * *= * &quot;ItAr_VLKBabe.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_VlkBabe_H.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда горожанки&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Легкие доспехи ополчения<br>//--------------------------------------<br>INSTANCE ITAR_MIL_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Легкие доспехи ополчения&quot;;<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 * * * * * * * * *= * &quot;ItAr_MIL_L.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Mil_L.asc&quot;;<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; * * * * * * * * * // &quot;Легкие доспехи ополчения&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 40<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 40<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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>...продолжение следует

06.07.2005 16:39

Re: Уроки скриптологии
 
//--------------------------------------<br>// Тяжелые доспехи ополчения<br>//--------------------------------------<br>INSTANCE ITAR_MIL_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Тяжелые доспехи ополчения&quot;;<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 * * * * * * * * *= * &quot;ItAr_MIL_M.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_MIL_M.asc&quot;;<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; * * * * * * * * * // &quot;Тяжелые доспехи ополчения&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 70<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 70<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 10<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 10<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Доспехи паладина&quot;;<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 * * * * * * * * *= * &quot;ItAr_Pal_M.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Pal_M.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_METAL; * * * * * * *// металл<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Доспехи паладина&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 25<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 5000<br>};<br><br>//--------------------------------------<br>// Доспехи паладина (тяжелые)<br>//--------------------------------------<br>INSTANCE ITAR_PAL_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Доспехи паладина&quot;;<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 * * * * * * * * *= * &quot;ItAr_Pal_H.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Pal_H.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_METAL; * * * * * * *// металл<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Доспехи паладина&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 150<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 150<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 100<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 20000<br>};<br><br>//--------------------------------------<br>// Одежда крестьянина (бедная)<br>//--------------------------------------<br>INSTANCE ITAR_BAU_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда крестьянина&quot;;<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 * * * * * * * * *= * &quot;ItAr_Bau_L.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Bau_L.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда крестьянина&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 15<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 15<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 80<br>};<br><br>//--------------------------------------<br>// Одежда крестьянина (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_BAU_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда крестьянина&quot;;<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 * * * * * * * * *= * &quot;ItAr_Bau_M.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Bau_M.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда крестьянина&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 15<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 15<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 100<br>};<br><br>//--------------------------------------<br>// Гордость крестьянки (бедная)<br>//--------------------------------------<br>INSTANCE ITAR_BauBabe_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Гордость крестьянки&quot;;<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 * * * * * * * * *= * &quot;ItAr_VLKBabe.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_BauBabe_L.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Гордость крестьянки&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Гордость крестьянки (скромная)<br>//--------------------------------------<br>INSTANCE ITAR_BauBabe_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Гордость крестьянки&quot; ;<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 * * * * * * * * *= * &quot;ItAr_VLKBabe.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_BauBabe_M.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Гордость крестьянки&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 10<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 10<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Легкие доспехи наемника<br>//--------------------------------------<br>INSTANCE ITAR_SLD_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Легкие доспехи наемника&quot;;<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 * * * * * * * * *= * &quot;ItAr_Sld_L.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Sld_L.asc&quot;;<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; * * * * * * * * * // &quot;Легкие доспехи наемника&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 30<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 30<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Средние доспехи наемника&quot;;<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 * * * * * * * * *= * &quot;ItAr_Sld_M.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Sld_M.asc&quot;;<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; * * * * * * * * * // &quot;Средние доспехи наемника&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 50<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 50<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 5<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Тяжелые доспехи наемника&quot;;<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 * * * * * * * * *= * &quot;ItAr_Sld_H.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Sld_H.asc&quot;;<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; * * * * * * * * * // &quot;Тяжелые доспехи наемника&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 80<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 80<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 5<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 10<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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>...продолжение следует

06.07.2005 16:45

Re: Уроки скриптологии
 
//--------------------------------------<br>// Доспехи из панцирей ползунов<br>//--------------------------------------<br>INSTANCE ITAR_DJG_Crawler (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Доспехи из панцирей ползунов&quot;;<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 * * * * * * * * *= * &quot;ItAr_Djg_Crawler.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Djg_Crawler.asc&quot;;<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; * * * * * * * * * // &quot;Доспехи из панцирей ползунов&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 70<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 70<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 15<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Легкие доспехи охотника на драконов&quot;;<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 * * * * * * * * *= * &quot;ItAr_Djg_L.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Djg_L.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Легкие доспехи охотника на драконов&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 25<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 3000<br>};<br><br>//--------------------------------------<br>// Средние доспехи охотника на драконов<br>//--------------------------------------<br>INSTANCE ITAR_DJG_M (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Средние доспехи охотника на драконов&quot;;<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 * * * * * * * * *= * &quot;ItAr_Djg_M.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Djg_M.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Средние доспехи охотника на драконов&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 120<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 120<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 75<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 35<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 12000<br>};<br><br>//--------------------------------------<br>// Тяжелые доспехи охотника на драконов<br>//--------------------------------------<br>INSTANCE ITAR_DJG_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Тяжелые доспехи охотника на драконов&quot;;<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 * * * * * * * * *= * &quot;ItAr_Djg_H.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Djg_H.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Тяжелые доспехи охотника на драконов&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 150<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 150<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 100<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 20000<br>};<br><br>//--------------------------------------<br>// Кольчуга охотницы за драконами<br>//--------------------------------------<br>INSTANCE ITAR_DJG_BABE (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Кольчуга охотницы за драконами&quot;;<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 * * * * * * * * *= * &quot;ItAr_Djg_L.3DS&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Djg_Babe.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Кольчуга охотницы за драконами&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 60<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 60<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 30<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 0<br>};<br><br>//--------------------------------------<br>// Роба послушника<br>//--------------------------------------<br>INSTANCE ITAR_NOV_L (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Роба послушника&quot;;<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 * * * * * * * * *= * &quot;ItAr_Nov_L.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Nov_L.asc&quot;;<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; * * * * * * * * * // &quot;Роба послушника&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 25<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 25<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 10<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Роба мага огня&quot;;<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 * * * * * * * * *= * &quot;ItAr_KdF_L.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Kdf_L.asc&quot;;<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; * * * * * * * * * // &quot;Роба мага огня&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 40<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 40<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 20<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 20<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Тяжелая роба огня&quot;;<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 * * * * * * * * *= * &quot;ItAr_KdF_H.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Kdf_H.asc&quot;;<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; * * * * * * * * * // &quot;Тяжелая роба огня&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Кожаные доспехи&quot;;<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 * * * * * * * * *= * &quot;ItAr_Leather_L.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Leather_L.asc&quot;;<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; * * * * * * * * * // &quot;Кожаные доспехи&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 25<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 25<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 5<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * * * *= * &quot;Средняя бандитская кольчуга&quot;;<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 * * * * * * * * *= * &quot;ItAr_Bdt_M.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Bdt_M.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Средняя бандитская кольчуга&quot;<br> * *TEXT[0] * * * * * * * * = * PRINT_Addon_BDTArmor; * // &quot;Кто носит эту кольчугу, принадлежит к бандитам&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 35<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 35<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 550<br>};<br><br>...продолжение следует

07.07.2005 12:14

Re: Уроки скриптологии
 
//--------------------------------------<br>// Тяжелая бандитская кольчуга<br>//--------------------------------------<br>INSTANCE ITAR_BDT_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Тяжелая бандитская кольчуга&quot;;<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 * * * * * * * * *= * &quot;ItAr_Bdt_H.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Bdt_H.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Тяжелая бандитская кольчуга&quot;<br> * *TEXT[0] * * * * * * * * = * PRINT_Addon_BDTArmor; * // &quot;Кто носит эту кольчугу, принадлежит к бандитам&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 50<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 50<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 2100<br>};<br><br>//--------------------------------------<br>// Роба темных сил<br>//--------------------------------------<br>INSTANCE ITAR_XARDAS (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Роба темных сил&quot;;<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 * * * * * * * * *= * &quot;ItAr_Xardas.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Xardas.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Роба темных сил&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 15000<br>};<br><br>//--------------------------------------<br>// Роба Лестера<br>//--------------------------------------<br>INSTANCE ITAR_LESTER (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Lesters Robe&quot;;<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 * * * * * * * * *= * &quot;ItAr_Lester.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Lester.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Роба Лестера&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 25<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 25<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 300<br>};<br><br>//--------------------------------------<br>// Кольчуга Диего<br>//--------------------------------------<br>INSTANCE ITAR_Diego (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Кольчуга Диего&quot;;<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 * * * * * * * * *= * &quot;ItAr_Diego.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Diego.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Кольчуга Диего&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 30<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 30<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 450<br>};<br><br>//--------------------------------------<br>// Кольчуга Кор Ангара<br>//--------------------------------------<br>INSTANCE ITAR_CorAngar (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Кольчуга Кор Ангара&quot;;<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 * * * * * * * * *= * &quot;ItAr_CorAngar.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_CorAngar.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Кольчуга Кор Ангара&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 25<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 600<br>};<br><br>//--------------------------------------<br>// Темная накидка<br>//--------------------------------------<br>INSTANCE ITAR_Dementor (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Темная накидка&quot;;<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 * * * * * * * * *= * &quot;ItAr_Xardas.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Dementor.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Темная накидка&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 130<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 130<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 65<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 65<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 500<br>};<br><br>//--------------------------------------<br>// Роба мага воды<br>//--------------------------------------<br>INSTANCE ITAR_KDW_H (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Роба мага воды&quot;;<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 * * * * * * * * *= * &quot;ItAr_KdW_H.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_KdW_H.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Роба мага воды&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 100<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 100<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 50<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 50<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * * * *= * value; * * * * * * * * *// 450<br>};<br><br>//--------------------------------------<br>// Одежда заключенного<br>//--------------------------------------<br>instance ITAR_Prisoner (C_Item)<br>{<br> * *name * * * * * * * * * *= * &quot;Одежда заключенного&quot;;<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 * * * * * * * * *= * &quot;ItAr_Prisoner.3ds&quot;;<br> * *visual_change * * * * * = * &quot;Armor_Prisoner.asc&quot;;<br> * *visual_skin * * * * * * = * 0;<br> * *material * * * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *description * * * * * * = * name; * * * * * * * * * // &quot;Одежда заключенного&quot;<br> * *TEXT[1] * * * * * * * * = * NAME_Prot_Edge; * * * * // &quot;Защита от оружия:&quot;<br> * *COUNT[1] * * * * * * * *= * protection[PROT_EDGE]; *// 20<br> * *TEXT[2] * * * * * * * * = * NAME_Prot_Point; * * * *// &quot;Защита от стрел:&quot;<br> * *COUNT[2] * * * * * * * *= * protection[PROT_POINT]; // 20<br> * *TEXT[3] * * * * * * * * = * NAME_Prot_Fire; * * * * // &quot;Защита от огня:&quot;<br> * *COUNT[3] * * * * * * * *= * protection[PROT_FIRE]; *// 0<br> * *TEXT[4] * * * * * * * * = * NAME_Prot_Magic; * * * *// &quot;Защита от магии:&quot;<br> * *COUNT[4] * * * * * * * *= * protection[PROT_MAGIC]; // 0<br> * *TEXT[5] * * * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= &quot;Письмо&quot;;<br> * *mainflag * * * * * *= ITEM_KAT_DOCS; * * * *// документ<br> * *flags * * * * * * * = ITEM_MISSION; * * * * // квестовый<br> * *hp * * * * * * * * *= 5;<br> * *hp_max * * * * * * *= 5;<br> * *weight * * * * * * *= 1;<br> * *value * * * * * * * = 0;<br> * *visual * * * * * * *= &quot;Fakescroll.3ds&quot;;<br> * *material * * * * * *= MAT_LEATHER; * * * * *// кожа<br> * *scemeName * * * * * = &quot;MAPSEALED&quot;; *<br> * *description * * * * = name; * * * * * * * * // &quot;Письмо&quot;<br> * *TEXT[5] * * * * * * = NAME_Value; * * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * *= value; * * * * * * * *// 0<br>};<br><br>

08.07.2005 09:33

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 * * * * * * * *= * &quot;Яблоко&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Apple; * * * * * *// 8<br> * *visual * * * * * * *= * &quot;ItFo_Apple.3DS&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;FOOD&quot;;<br> * *on_state[0] * * * * = * Use_Apple; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Яблоко&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Apple; * * * * * * * // 3<br> * *TEXT[3] * * * * * * = * &quot;Свежее яблоко&quot;;<br> * *TEXT[4] * * * * * * = * &quot;мягкое и сочное&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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> * * * * * *// вывод текста &quot;Ты чувствуешь себя посвежевшим&quot;<br> * * * * * *Print(PRINT_Eat1);<br> * * * *};<br> * * * *// если съедено 15 яблок<br> * * * *if(Apple_Bonus == 15) *<br> * * * *{<br> * * * * * *// вывод текста &quot;На вкус сочное и свежее&quot;<br> * * * * * *Print(PRINT_Eat2);<br> * * * *};<br> * * * *// если съедено 25 яблок<br> * * * *if(Apple_Bonus == 25) *<br> * * * *{<br> * * * * * *// вывод текста &quot;Ты чувствуешь себя здоровым и сильным!&quot;<br> * * * * * *Print(PRINT_Eat3);<br> * * * * * *// сила += 1<br> * * * * * *B_RaiseAttribute(self,ATR_STRENGTH,1);<br> * * * * * *Snd_Play(&quot;LevelUp&quot;);<br> * * * * * *// сброс счетчика яблок<br> * * * * * *Apple_Bonus = 0;<br> * * * *};<br> * *};<br>};<br><br>//--------------------------------------<br>// Сыр<br>//--------------------------------------<br>INSTANCE ItFo_Cheese (C_Item)<br>{ * <br> * *name * * * * * * * *= * &quot;Сыр&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Cheese; * * * * * // 30<br> * *visual * * * * * * *= * &quot;ItFo_Cheese.3DS&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;FOODHUGE&quot;;<br> * *on_state[0] * * * * = * Use_Cheese; * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Сыр&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Cheese; * * * * * * *// 15<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Ветчина&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Bacon; * * * * * *// 50<br> * *visual * * * * * * *= * &quot;ItFo_Bacon.3ds&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;FOODHUGE&quot;;<br> * *on_state[0] * * * * = * Use_Bacon; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Ветчина&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Bacon; * * * * * * * // 20<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Хлеб&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Bread; * * * * * *// 20<br> * *visual * * * * * * *= * &quot;ItFo_Bread.3DS&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;FOODHUGE&quot;;<br> * *on_state[0] * * * * = * Use_Bread; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Хлеб&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Bread; * * * * * * * // 10<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Рыба&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Fish; * * * * * * // 15<br> * *visual * * * * * * *= * &quot;ItFo_Fish.3DS&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;FOODHUGE&quot;;<br> * *on_state[0] * * * * = * Use_Fish; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Рыба&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Fish; * * * * * * * *// 5<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Сырое мясо&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_RawMeat; * * * * *// 3<br> * *visual * * * * * * *= * &quot;ItFoMuttonRaw.3DS&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MEAT&quot;;<br> * *on_state[0] * * * * = * Use_RawMeat; * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Сырое мясо&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_RawMeat; * * * * * * // 6<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Жареное мясо&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Meat; * * * * * * // 6<br> * *visual * * * * * * *= * &quot;ItFoMutton.3DS&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;MEAT&quot;;<br> * *on_state[0] * * * * = * Use_Meat; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Жареное мясо&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Meat; * * * * * * * *// 12<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Обед&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Stew; * * * * * * // 8<br> * *visual * * * * * * *= * &quot;ItFo_Stew.3ds&quot;;<br> * *material * * * * * *= * MAT_WOOD; * * * * * * * // дерево<br> * *scemeName * * * * * = * &quot;RICE&quot;;<br> * *on_state[0] * * * * = * Use_Stew; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Обед&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Stew; * * * * * * * *// 20<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Обед Теклы&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Stew; * * * * * * // 8<br> * *visual * * * * * * *= * &quot;ItFo_Stew.3ds&quot;;<br> * *material * * * * * *= * MAT_WOOD; * * * * * * * // дерево<br> * *scemeName * * * * * = * &quot;RICE&quot;;<br> * *on_state[0] * * * * = * Use_XPStew; * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Обед Теклы&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Stew; * * * * * * * *// 20<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Str; * * * * // &quot;Прибавка к силе:&quot;<br> * *COUNT[2] * * * * * *= * 1; * * * * * * * * * * *// 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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(&quot;LevelUp&quot;);<br> * *// сила += 1<br> * *B_RaiseAttribute(self,ATR_STRENGTH,1);<br>};<br>< br>//--------------------------------------<br>// Пиво Корагона<br>//--------------------------------------<br>INSTANCE ItFo_CoragonsBeer (C_Item)<br>{ * <br> * *name * * * * * * * *= * &quot;Пиво&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Beer; * * * * * * // 20<br> * *visual * * * * * * *= * &quot;ItFo_Beer.3DS&quot;;<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * &quot;POTIONFAST&quot;;<br> * *on_state[0] * * * * = * Use_CoragonsBeerBeer; * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Пиво&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Beer; * * * * * * * *// 3<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// &quot;Прибавка к мане:&quot;<br> * *COUNT[2] * * * * * *= * Mana_Beer; * * * * * * *// 1<br> * *TEXT[4] * * * * * * = * &quot;Специальное пиво Корагона&quot;; * * * *<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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> * *// сформировать строку &quot;Жизнь + 3&quot;<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 * * * * * * * *= * &quot;Рыбный суп&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_FishSoup; * * * * // 20<br> * *visual * * * * * * *= * &quot;ItFo_FishSoup.3ds&quot;;<br> * *material * * * * * *= * MAT_WOOD; * * * * * * * // дерево<br> * *scemeName * * * * * = * &quot;RICE&quot;;<br> * *on_state[0] * * * * = * Use_FishSoup; * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Рыбный суп&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_FishSoup; * * * * * *// 10<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Колбаса&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Sausage; * * * * *// 30<br> * *visual * * * * * * *= * &quot;ItFo_Sausage.3DS&quot;;<br> * *material * * * * * *= * MAT_LEATHER; * * * * * *// кожа<br> * *scemeName * * * * * = * &quot;FOODHUGE&quot;;<br> * *on_state[0] * * * * = * Use_Sausage; * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Колбаса&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Sausage; * * * * * * // 12<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Мед&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Honey; * * * * * *// 30<br> * *visual * * * * * * *= * &quot;ItFo_Honey.3DS&quot;;<br> * *material * * * * * *= * MAT_STONE; * * * * * * *// камень<br> * *scemeName * * * * * = * &quot;FOODHUGE&quot;;<br> * *on_state[0] * * * * = * Use_Honey; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Мед&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Honey; * * * * * * * // 12<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Вода&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Water; * * * * * *// 10<br> * *visual * * * * * * *= * &quot;ItFo_Water.3ds&quot;;<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * &quot;POTION&quot;;<br> * *on_state[0] * * * * = * Use_Water; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Вода&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Water; * * * * * * * // 8<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Пиво&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Beer; * * * * * * // 20<br> * *visual * * * * * * *= * &quot;ItFo_Beer.3DS&quot;;<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * &quot;POTIONFAST&quot;;<br> * *on_state[0] * * * * = * Use_Beer; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Пиво&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Beer; * * * * * * * *// 3<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// &quot;Прибавка к мане:&quot;<br> * *COUNT[2] * * * * * *= * Mana_Beer; * * * * * * *// 1<br> * *TEXT[4] * * * * * * = * &quot;Темный паладин&quot;;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Самогон&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Booze; * * * * * *// 15<br> * *visual * * * * * * *= * &quot;ItFo_Booze.3DS&quot;;<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * &quot;POTION&quot;;<br> * *on_state[0] * * * * = * Use_Booze; * * * * * * *// использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Самогон&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Booze; * * * * * * * // 4<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// &quot;Прибавка к мане:&quot;<br> * *COUNT[2] * * * * * *= * Mana_Booze; * * * * * * // 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Вино&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Wine; * * * * * * // 20<br> * *visual * * * * * * *= * &quot;ItFo_Wine.3DS&quot;;<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * &quot;POTION&quot;;<br> * *on_state[0] * * * * = * Use_Wine; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Вино&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Wine; * * * * * * * *// 2<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// &quot;Прибавка к мане:&quot;<br> * *COUNT[2] * * * * * *= * Mana_Wine; * * * * * * *// 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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 * * * * * * * *= * &quot;Молоко&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_FOOD; * * * * *// провиант<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Milk; * * * * * * // 15<br> * *visual * * * * * * *= * &quot;ItFo_Milk.3DS&quot;;<br> * *material * * * * * *= * MAT_GLAS; * * * * * * * // стекло<br> * *scemeName * * * * * = * &quot;POTION&quot;;<br> * *on_state[0] * * * * = * Use_Milk; * * * * * * * // использовать<br> * *description * * * * = * name; * * * * * * * * * // &quot;Молоко&quot;<br> * *TEXT[1] * * * * * * = * NAME_Bonus_HP; * * * * *// &quot;Прибавка к жизни:&quot;<br> * *COUNT[1] * * * * * *= * HP_Milk; * * * * * * * *// 5<br> * *TEXT[2] * * * * * * = * NAME_Bonus_Mana; * * * *// &quot;Прибавка к мане:&quot;<br> * *COUNT[2] * * * * * *= * Mana_Milk; * * * * * * *// 1<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * * * // &quot;Ценность:&quot;<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>

11.07.2005 09:53

Re: Уроки скриптологии
 
Спасибо всем, кому не безразличен этот труд, постараюсь учесть ваши пожелания. Конечно, каждому хочется получить общую картину по скриптам как можно скорее, но увы, я не разработчик серии игр Готика, для меня, как и для вас, очень много непонятных вещей, особенно это касается связи скриптов с миром Готики (программируется Спейсером), так что будем разбираться постепенно. Многие повторяющиеся блоки скриптов буду проходить конспектно, у кого есть желание, может их подробно закомментировать и предложить на общее внимание. Вот многоуважаемый Pa написал:
Цитата:

Нужен вариант Правленых расписанных скриптов!!!<br>- не AG (тогда просто не было времени довести все до ума да и основа - пиратка - плохое наследие),<br>- не перевод Мартина (все равно ему большой респект),<br>- не очередная попытка Dagot_Ur (и ему не меньший респект - только бы не пропадал так надолго...),<br>- и уж конечно не Акеллы с Руссобитом...
;<br>но не предложил, какие скрипты взять за основу, имхо, это должен быть озвученный вариант, но какой?<br>Выкладываю последний полный файл по предметам (уже был готов), далее по ним пойдет конспект.<br><br>--------------------------------------------------------------------------------<br>---------------<br><br> * *21. Ключи основной игры.<br><br>Файл IT_Keys.d<br><br>//*************************<br>// Ключи основной игры<br>//*************************<br><br>// стоимость<br>const int * Value_Lockpick *= * 10; * * // отмычка<br>const int * Value_Key_01 * *= * 3; * * *// ключ<br>const int * Value_Key_02 * *= * 3; * * *// ключ<br>const int * Value_Key_03 * *= * 3; * * *// ключ<br><br>//--------------------------------------<br>// Отмычка<br>//--------------------------------------<br>INSTANCE ItKe_Lockpick(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Отмычка&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * ITEM_MULTI;<br> * *value * * * * * * * = * Value_Lockpick; * * // 10<br> * *visual * * * * * * *= * &quot;ItKe_Lockpick.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Отмычка&quot;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * *= * value; * * * * * * *// 10<br>};<br><br>//--------------------------------------<br>// Ключ 1 (не используется)<br>//--------------------------------------<br>INSTANCE ItKe_Key_01(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * 0;<br> * *value * * * * * * * = * Value_Key_01; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_01.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Ключ&quot;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * *= * value; * * * * * * *// 3<br>};<br><br>//--------------------------------------<br>// Ключ 2 (не используется)<br>//--------------------------------------<br>INSTANCE ItKe_Key_02(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * 0;<br> * *value * * * * * * * = * Value_Key_02; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_02.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Ключ&quot;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * *= * value; * * * * * * *// 3<br>};<br><br>//--------------------------------------<br>// Ключ 3 (не используется)<br>//--------------------------------------<br>INSTANCE ItKe_Key_03(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * 0;<br> * *value * * * * * * * = * Value_Key_03; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_03.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Ключ&quot;<br> * *TEXT[5] * * * * * * = * NAME_Value; * * * * // &quot;Ценность:&quot;<br> * *COUNT[5] * * * * * *= * value; * * * * * * *// 3<br>};<br><br>//--------------------------------------<br>// Башенный ключ 1<br>//--------------------------------------<br>INSTANCE ItKe_City_Tower_01(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Башенный ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * ITEM_MISSION; * * * // квестовый<br> * *value * * * * * * * = * Value_Key_01; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_01.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Башенный ключ&quot;<br> * *TEXT[2] * * * * * * = * &quot;&quot;;<br> * *TEXT[3] * * * * * * = * &quot;&quot;;<br>};<br><br>//--------------------------------------<br>// Башенный ключ 2<br>//--------------------------------------<br>INSTANCE ItKe_City_Tower_02(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Башенный ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * ITEM_MISSION; * * * // квестовый<br> * *value * * * * * * * = * Value_Key_01; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_01.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Башенный ключ&quot;<br> * *TEXT[2] * * * * * * = * &quot;&quot;;<br> * *TEXT[3] * * * * * * = * &quot;&quot;;<br>};<br><br>//--------------------------------------<br>// Башенный ключ 3<br>//--------------------------------------<br>INSTANCE ItKe_City_Tower_03(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Башенный ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * ITEM_MISSION; * * * // квестовый<br> * *value * * * * * * * = * Value_Key_01; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_01.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Башенный ключ&quot;<br> * *TEXT[2] * * * * * * = * &quot;&quot;;<br> * *TEXT[3] * * * * * * = * &quot;&quot;;<br>};<br><br>//--------------------------------------<br>// Башенный ключ 4<br>//--------------------------------------<br>INSTANCE ItKe_City_Tower_04(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Башенный ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * ITEM_MISSION; * * * // квестовый<br> * *value * * * * * * * = * Value_Key_01; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_01.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Башенный ключ&quot;<br> * *TEXT[2] * * * * * * = * &quot;&quot;;<br> * *TEXT[3] * * * * * * = * &quot;&quot;;<br>};<br><br>//--------------------------------------<br>// Башенный ключ 5<br>//--------------------------------------<br>INSTANCE ItKe_City_Tower_05(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Башенный ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * ITEM_MISSION; * * * // квестовый<br> * *value * * * * * * * = * Value_Key_01; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_01.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Башенный ключ&quot;<br> * *TEXT[2] * * * * * * = * &quot;&quot;;<br> * *TEXT[3] * * * * * * = * &quot;&quot;;<br>};<br><br>//--------------------------------------<br>// Башенный ключ 6<br>//--------------------------------------<br>INSTANCE ItKe_City_Tower_06(C_Item)<br>{<br> * *name * * * * * * * *= * &quot;Башенный ключ&quot;;<br> * *mainflag * * * * * *= * ITEM_KAT_NONE; * * *// прочее<br> * *flags * * * * * * * = * ITEM_MISSION; * * * // квестовый<br> * *value * * * * * * * = * Value_Key_01; * * * // 3<br> * *visual * * * * * * *= * &quot;ItKe_Key_01.3ds&quot;;<br> * *material * * * * * *= * MAT_METAL; * * * * *// металл<br> * *description * * * * = * name; * * * * * * * // &quot;Башенный ключ&quot;<br> * *TEXT[2] * * * * * * = * &quot;&quot;;<br> * *TEXT[3] * * * * * * = * &quot;&quot;;<br>};<br><br>

12.07.2005 09:09

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() использования напитка &quot;Эмбарла Фиргасто&quot;, которая повышает силу или ловкость, смотря что лучше развито, в обмен на всю ману.<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>Стоит обратить внимание, что заряженный &quot;Глаз Инноса&quot; дает очень хорошие бонусы к любой защите.<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. Параметры &quot;Когтя Белиара&quot;.<br><br>Файл IT_Tuning_Addon_BeliarsWeapons.d<br><br>Здесь приведены значения параметров стоимости оружия, наносимого повреждения и вероятности дополнительного урона.<br>Для самостоятельного изучения.<br><br>P.S. Если у кого есть желание, можете подробно закомментировать эти файлы и выложить в теме.

13.07.2005 10:01

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,&quot;START&quot;);<br> * *B_StartOtherRoutine(Matt,&quot;START&quot;);<br> * *B_StartOtherRoutine(Brandon,&quot;START&quot;);<b r> * *B_StartOtherRoutine(RoastPirate,&quot;START&quot; ); <br> * *B_StartOtherRoutine(BenchPirate,&quot;START&quot; );<br> * *B_StartOtherRoutine(AlligatorJack,&quot;START&quo t;);<br>};<br><br>// Насколько далеко от лагеря пираты могут сопровождать ГГ<br>// ------------------------------------------------<br>// Возвращаемое значение:<br>// TRUE - пират должен покинуть ГГ, FALSE - пират сопровождает ГГ.<br>func int C_GregsPiratesTooFar()<br>{<br> * *// если расстояние (в см) от ГГ до указанных точек менее заданного<br> * *if (Npc_GetDistToWP(hero,&quot;ADW_CANYON_MINE1_09&qu ot;) &lt; 3000)<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;ADW_CANYON_MINE2_04&qu ot;) &lt; 2000)<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;ADW_CANYON_LIBRARY_04& quot;) &lt; 2000)<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;ADW_CANYON_PATH_TO_BAN DITS_25&quot;) &lt; 6000)<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;ADW_PIRATECAMP_WAY_16& quot;) &lt; 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,&quot;STRAND&quot;) &lt; 4000)<br> * *{<br> * * * *return;<br> * *};<br> * *// если с ГГ уже есть пираты<br> * *if(C_HowManyPiratesInParty() != 0)<br> * *{<br> * * * *return;<br> * *};<br> * *// если расстояние между ГГ и Скипом &lt; 20м и Скип живой и self не Скип<br> * *if(Npc_GetDistToNpc(hero,Skip) &lt;= 2000) &amp;&amp; (!Npc_IsDead(Skip)) &amp;&amp; (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,&quot;FOLLOW&quot;);<br> * *};<br> * *// аналогично и с другими пиратами<br> * *if(Npc_GetDistToNpc(hero,Matt) &lt;= 2000) &amp;&amp; (!Npc_IsDead(Matt)) &amp;&amp; (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(Matt))<br> * *{<br> * * * *Matt.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(Matt);<br> * * * *B_StartOtherRoutine(Matt,&quot;FOLLOW&quot;);<br> * *};<br> * *if(Npc_GetDistToNpc(hero,Brandon) &lt;= 2000) &amp;&amp; (!Npc_IsDead(Brandon)) &amp;&amp; (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(Brandon))<br> * *{<br> * * * *Brandon.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(Brandon);<br> * * * *B_StartOtherRoutine(Brandon,&quot;FOLLOW&quot;);< br> * *};<br> * *if(Npc_GetDistToNpc(hero,RoastPirate) &lt;= 2000) &amp;&amp; (!Npc_IsDead(RoastPirate)) &amp;&amp; (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(RoastPirate))<br> * *{<br> * * * *RoastPirate.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(RoastPirate);<br> * * * *B_StartOtherRoutine(RoastPirate,&quot;FOLLOW&quot ;);<br> * *};<br> * *if(Npc_GetDistToNpc(hero,BenchPirate) &lt;= 2000) &amp;&amp; (!Npc_IsDead(BenchPirate)) &amp;&amp; (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(BenchPirate))<br> * *{<br> * * * *BenchPirate.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(BenchPirate);<br> * * * *B_StartOtherRoutine(BenchPirate,&quot;FOLLOW&quot ;);<br> * *};<br> * *if(Npc_GetDistToNpc(hero,AlligatorJack) &lt;= 2000) &amp;&amp; (!Npc_IsDead(AlligatorJack)) &amp;&amp; (Hlp_GetInstanceID(self) != Hlp_GetInstanceID(AlligatorJack))<br> * *{<br> * * * *AlligatorJack.aivar[AIV_PARTYMEMBER] = TRUE;<br> * * * *Npc_ClearAIQueue(AlligatorJack);<br> * * * *B_StartOtherRoutine(AlligatorJack,&quot;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) &amp;&amp; Npc_IsDead(TowerBandit2) &amp;&amp; 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> * *&amp;&amp; (self.aivar[AIV_PlayerHasPickedMyPocket] == FALSE)<br> * *// и ГГ имеет требуемую ловкость (ловкость ГГ должна быть более (TheftDex-10))<br> * *&amp;&amp; (other.attribute[ATR_DEXTERITY] &gt;= (TheftDex - Theftdiff))<br> * *// и НПС не одержим <br> * *&amp;&amp; (NpcObsessedByDMT == FALSE)<br> * *{<br> * * * *// если НПС в состоянии диалога<br> * * * *if(Npc_IsInState(self,ZS_Talk))<br> * * * *{<br> * * * * * *// задать уровень ловкости, требуемый для успешного воровства<br> * * * * * *if(TheftDex &lt;= 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] &gt;= 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(&quot;Geldbeutel&quot;);<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. Функция реакции на повреждение &quot;Когтем Белиара&quot;.<br><br>Файл B_BeliarsWeaponSpecialDamage.d<br><br>// ************************************************** **************<br>// Функция реакции на повреждение &quot;Когтем Белиара&quot;<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> * * * *// эффект &quot;Гнев Белиара&quot; исходит от Равена<br> * * * *Wld_PlayEffect(&quot;spellFX_BELIARSRAGE_COLLIDE& quot;,slf,slf,0,0,0,FALSE);<br> * * * *// если молний не было<br> * * * *if(RavenBlitz &lt;= 0)<br> * * * *{<br> * * * * * *// эффект &quot;Гнев Белиара&quot; падает на ГГ<br> * * * * * *Wld_PlayEffect(&quot;spellFX_BELIARSRAGE&quot;,ot h,oth,0,0,0,FALSE);<br> * * * * * *// магическое повреждение ГГ на 50 пунктов<br> * * * * * *B_MagicHurtNpc(slf,oth,50);<br> * * * * * *// кол-во молний ++<br> * * * * * *RavenBlitz += 1;<br> * * * *}<br> * * * *// если ударов молнией &gt;= 3<br> * * * *else if(RavenBlitz &gt;= 3) <br> * * * *{<br> * * * * * *var int RavenRandy;<br> * * * * * *RavenRandy = Hlp_Random(3);<br> * * * * * *// Примечание: непонятное условие, будет выполняться всегда<br> * * * * * *if(RavenRandy &lt;= 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> * * * *// если ГГ вооружен &quot;Когтем Белиара&quot; и вероятность &lt;= шанса доп. повреждения<br> * * * *if(C_ScHasReadiedBeliarsWeapon()) &amp;&amp; (DamageRandy &lt;= BeliarDamageChance) <br> * * * *{<br> * * * * * *// если жертва Дракон нежить<br> * * * * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD)<br> * * * * * *{<br> * * * * * * * *// эффект &quot;Гнев Белиара&quot; падает на ГГ<br> * * * * * * * *Wld_PlayEffect(&quot;spellFX_BELIARSRAGE&quot;,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> * * * * * * * *// эффект &quot;Гнев Белиара&quot; падает на жертву<br> * * * * * * * *Wld_PlayEffect(&quot;spellFX_BELIARSRAGE&quot;,sl f,slf,0,0,0,FALSE);<br> * * * * * * * *// жертва получает 100 пунктов урона<br> * * * * * * * *B_MagicHurtNpc(oth,slf,100); * * * * * *<br> * * * * * *};<br> * * * * * *// эффект &quot;Гнев Белиара&quot; исходит от ГГ<br> * * * * * *Wld_PlayEffect(&quot;spellFX_BELIARSRAGE_COLLIDE& quot;,hero,hero,0,0,0,FALSE);<br> * * * *};<br> * * * *// если ГГ вооружен &quot;Когтем Белиара&quot; и вероятность &lt;= 50 (удар без повреждения)<br> * * * *if(C_ScHasReadiedBeliarsWeapon()) &amp;&amp; (DamageRandy &lt;= 50)<br> * * * *{<br> * * * * * *// эффект &quot;Гнев Белиара&quot; исходит от ГГ<br> * * * * * *Wld_PlayEffect(&quot;spellFX_BELIARSRAGE_COLLIDE& quot;,hero,hero,0,0,0,FALSE);<br> * * * *};<br> * *};<br>};<br><br>

14.07.2005 12:04

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> * *// ГГ отдает капитану &quot;Морскую карту к острову Ирдорат&quot;<br> * *B_GiveInvItems(hero,Captain,ItWr_Seamap_Irdorath, 1);<br> * *// в инвентаре капитана появляется &quot;Ключ от каюты капитана&quot;<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,&quot;AllOnBoard&quot ;);<br> * *// если Ли завербован, он идет на корабль<br> * *if(Lee_IsOnBoard == LOG_SUCCESS) * * * *{B_StartOtherRoutine(Lee,&quot;Ship&quot;);};<br> * *// если Мильтон завербован, он идет на корабль<br> * *if(MiltenNW_IsOnBoard == LOG_SUCCESS) * {B_StartOtherRoutine(MiltenNW,&quot;Ship&quot;);}; <br> * *// если Лестер завербован, он идет на корабль<br> * *if(Lester_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Lester,&quot;Ship&quot;);};<b r> * *// если Горн завербован, он идет на корабль<br> * *if(Gorn_IsOnBoard == LOG_SUCCESS) * * * {B_StartOtherRoutine(GornNW_nach_DJG,&quot;Ship&qu ot;);};<br> * *// если Марио завербован, он идет на корабль<br> * *if(Mario_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(Mario,&quot;Ship&quot;);};<b r> * *// если Вольф завербован, он идет на корабль<br> * *if(Wolf_IsOnBoard == LOG_SUCCESS) * * * {B_StartOtherRoutine(SLD_Wolf,&quot;Ship&quot;);}; <br> * *// если Ларес завербован, он идет на корабль<br> * *if(Lares_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(Lares,&quot;Ship&quot;);};<b r> * *// если Беннет завербован, он идет на корабль<br> * *if(Bennet_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Bennet,&quot;Ship&quot;);};<b r> * *// если Диего завербован, он идет на корабль<br> * *if(Diego_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(DiegoNW,&quot;Ship&quot;);}; <br> * *// если Бифф завербован, он идет на корабль<br> * *if(Biff_IsOnBoard == LOG_SUCCESS) * * * {B_StartOtherRoutine(Biff_NW,&quot;Ship&quot;);};< br> * *// если Ватрас завербован, он идет на корабль<br> * *if(Vatras_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Vatras,&quot;Ship&quot;);};<b r> * *// если Кор Ангар завербован, он идет на корабль<br> * *if(Angar_IsOnBoard == LOG_SUCCESS) * * *{B_StartOtherRoutine(Angar_NW,&quot;Ship&quot;);} ;<br> * *// если Гирион завербован, он идет на корабль<br> * *if(Girion_IsOnBoard == LOG_SUCCESS) * * {B_StartOtherRoutine(Girion,&quot;Ship&quot;);};<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> * *&amp;&amp; (SCGotCaptain == TRUE)<br> * *// и ГГ имеет &quot;Морскую карту к острову Ирдорат&quot;<br> * *&amp;&amp; (Npc_HasItems(hero,ItWr_Seamap_Irdorath))<br> * *// и кол-во завербованных для похода &gt;= 5 <br> * *&amp;&amp; (crewmember_Count &gt;= Min_Crew)<br> * *// и капитан находится не далее 20м от корабля<br> * *&amp;&amp; (Npc_GetDistToWP(Captain,&quot;NW_WAITFOR_SHIP_CAP TAIN&quot;) &lt; 2000)<br> * *// и команда может подниматься на корабль или охрана корабля убита (2 охранника)<br> * *&amp;&amp; ((MIS_ShipIsFree == TRUE) ¦¦ ((Npc_IsDead(Schiffswache_212)) &amp;&amp; (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> * *&amp;&amp; Npc_IsDead(CanyonRazor01)<br> * *&amp;&amp; Npc_IsDead(CanyonRazor02)<br> * *&amp;&amp; Npc_IsDead(CanyonRazor03)<br> * *&amp;&amp; Npc_IsDead(CanyonRazor04)<br> * *&amp;&amp; Npc_IsDead(CanyonRazor05)<br> * *&amp;&amp; Npc_IsDead(CanyonRazor06)<br> * *&amp;&amp; Npc_IsDead(CanyonRazor07)<br> * *&amp;&amp; Npc_IsDead(CanyonRazor08 )<br> * *&amp;&amp; Npc_IsDead(CanyonRazor09)<br> * *&amp;&amp; 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> * *// &quot;10 - кол-во убитых Расчленителей&quot;<br> * *CanyonRazorLeft = IntToString(10 - CanyonRazorBodyCount);<br> * *// CanyonRazorLeft + &quot;глорх(-а, -ов) осталось&quot;<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> * * * * * *// видео &quot;Смерть Равена&quot;<br> * * * * * *PlayVideoEx(&quot;EXTRO_RAVEN.BIK&quot;,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)) &amp;&amp; (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)) &amp;&amp; (RckDragnIsDead == FALSE))<br> * * * *{<br> * * * * * *MIS_KilledDragons = (MIS_KilledDragons + 1);<br> * * * * * *RckDragnIsDead = TRUE;<br> * * * *};<br> * * * *// Огненный дракон<br> * * * *if((Hlp_GetInstanceID(current_dragon) == Hlp_GetInstanceID (FreDragn)) &amp;&amp; (FreDragnIsDead == FALSE))<br> * * * *{<br> * * * * * *MIS_KilledDragons = (MIS_KilledDragons + 1);<br> * * * * * *FreDragnIsDead = TRUE;<br> * * * *};<br> * * * *// Ледяной дракон<br> * * * *if((Hlp_GetInstanceID (current_dragon) == Hlp_GetInstanceID (IcDragn)) &amp;&amp; (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) &amp;&amp; (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> * * * *// создать в дневнике тему &quot;Назад к кораблю&quot;<br> * * * *Log_CreateTopic(TOPIC_BackToShip,LOG_MISSION);<br > * * * *// установить статус темы - выполнение<br> * * * *Log_SetTopicStatus(TOPIC_BackToShip,LOG_RUNNING); <br> * * * *// запись в теме &quot;Враг побежден и теперь я больше не буду гнить под скалами. Я ухожу отсюда обратно на корабль.&quot;<br> * * * *B_LogEntry(TOPIC_BackToShip,PRINT_DragKillCount); <br> * * * *// телепортация ГГ на корабль<br> * * * *AI_Teleport(hero,&quot;UNDEAD_ENDTELEPORT&quot;); *<br> * * * *// если ГГ Милиционер или Паладин<br> * * * *if((hero.guild == GIL_MIL) ¦¦ (hero.guild == GIL_PAL))<br> * * * *{<br> * * * * * *// ролик убийства дракона Паладином<br> * * * * * *PlayVideoEx (&quot;EXTRO_PAL.BIK&quot;,TRUE,FALSE);<br> * * * *}<br> * * * *// если ГГ Наемник или Охотник на драконов<br> * * * *else if((hero.guild == GIL_SLD) ¦¦ (hero.guild == GIL_DJG))<br> * * * *{<br> * * * * * *// ролик убийства дракона Охотником на драконов<br> * * * * * *PlayVideoEx(&quot;EXTRO_DJG.BIK&quot;,TRUE,FALSE) ;<br> * * * *}<br> * * * *else // ГГ Маг Огня<br> * * * *{<br> * * * * * *// ролик убийства дракона Магом Огня<br> * * * * * *PlayVideoEx (&quot;EXTRO_KDF.BIK&quot;,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) &amp;&amp; (Npc_IsDead(PC_Fighter_DI) == FALSE))<br> * *{<br> * * * *// установить флаг - друзья живы<br> * * * *DiegAndGornAreOnboard = TRUE;<br> * *};<br> * *// серия финальных роликов<br> * *PlayVideo(&quot;Extro_Xardas.BIK&quot;); * <br> * *PlayVideo(&quot;Credits_Extro.BIK&quot;); <br> * *PlayVideo(&quot;Credits2.BIK&quot;); *<br> * *// если друзья живы<br> * *if(DiegAndGornAreOnboard == TRUE)<br> * *{<br> * * * *// ещё один ролик<br> * * * *PlayVideo(&quot;Extro_AllesWirdGut.BIK&quot;); * *<br> * *};<br> * *// GAME OVER<br> * *ExitSession();<br>};<br><br>

15.07.2005 08:34

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> * * * *// эффект &quot;Гнев Белиара&quot; падает на нападающего<br> * * * *Wld_PlayEffect(&quot;spellFX_BELIARSRAGE&quot;,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 &lt; 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,&quot;T_DEAD&quot;);<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> * *// если кол-во обворованных &gt;= уровня обворованных<br> * *if(VictimCount &gt;= 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> * *// если кол-во обворованных &gt;= уровня воровства<br> * *if(VictimCount &gt; 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,&quot;Dexter&quot;); // Внимание: В одной из версий датника слово &quot;Dexter&quot; переведено на русский язык - грубейшая ошибка, Грег к Декстеру не пойдет!<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,&quot;DIA_Wisp_15_00&quot;); //(зумм)<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,&quot;DIA_Liesel_15_00&quot; ); * //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,&quot;ADW_PIRATECAMP_SECRETCAV E_02&quot;);<br> * * * * * *// Малком спит в пещере<br> * * * * * *B_StartOtherRoutine(Malcom,&quot;Start&quot;);<br > * * * * * *// убить Малкома<br> * * * * * *Npc_ChangeAttribute(Malcom,ATR_HITPOINTS,-Malcom.attribute[ATR_HITPOINTS_MAX]);<br> * * * * * *// тепортировать в пещеру ???<br> * * * * * *AI_Teleport(Malcom,&quot;ADW_PIRATECAMP_SECRETCAV E_02&quot;);<br> * * * * * *// несчастный случай произошел<br> * * * * * *Malcom_Accident = TRUE;<br> * * * * * *// если Оуэн жив<br> * * * * * *if(!Npc_IsDead(Owen))<br> * * * * * *{<br> * * * * * * * *// Оуэн сидит у костра в лагере пиратов<br> * * * * * * * *B_StartOtherRoutine(Owen,&quot;Start&quot;);<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 + &quot; золотых принято&quot;<br> * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_GoldErhalt en);<br> * * * * * *// вывод на экран<br> * * * * * *Print(concatText);<br> * * * * * *// звон денег<br> * * * * * *Snd_Play(&quot;Geldbeutel&quot;);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// если найден 1 предмет<br> * * * * * *if(amount == 1)<br> * * * * * *{<br> * * * * * * * *// itemname + &quot; получают&quot;<br> * * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_erhalten);<br> * * * * * * * *// вывод<br> * * * * * * * *Print(concatText);<br> * * * * * * * *<br> * * * * * *} * <br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *// amount + &quot;предметов принято&quot;<br> * * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsErhal ten);<br> * * * * * * * *// += &quot; (&quot;<br> * * * * * * * *concatText = ConcatStrings(concatText,&quot; (&quot;);<br> * * * * * * * *// += itemname<br> * * * * * * * *concatText = ConcatStrings(concatText,itemname);<br> * * * * * * * *// += &quot;)&quot;<br> * * * * * * * *concatText = ConcatStrings(concatText,&quot;)&quot;);<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> * *// если НПС имеет Кольчуга &quot;Кольца Воды&quot;, то удалить её<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,&quot;PreRangerMeeti ng&quot;);<br> * *};<br> * *// Мартин идет в таверну<br> * *B_StartOtherRoutine(Martin,&quot;PreRangerMeeting &quot;); <br> * *// Ларес идет в таверну<br> * *B_StartOtherRoutine(Lares,&quot;PreRangerMeeting& quot;); * * * * *<br> * *// Корд идет в таверну<br> * *B_StartOtherRoutine(Cord,&quot;PreRangerMeeting&q uot;); * * * <br> * *// Гаан идет в таверну<br> * *B_StartOtherRoutine(Gaan,&quot;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,&quot;RangerMeeting& quot;); * * *<br> * *};<br> * *B_StartOtherRoutine(Martin, &quot;RangerMeeting&quot;); * * * * * <br> * *B_StartOtherRoutine(Lares,&quot;RangerMeeting&quo t;); * * * * <br> * *B_StartOtherRoutine(Cord,&quot;RangerMeeting&quot ;); * * * * *<br> * *B_StartOtherRoutine(Gaan,&quot;RangerMeeting&quot ;); * * * * *<br> * *B_StartOtherRoutine(Orlan,&quot;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,&quot;Stadt&quot;);< br> * *};<br> * *// Орлан идет за прилавок<br> * *B_StartOtherRoutine(Orlan,&quot;START&quot;); <br> * *// Ларес должен обратиться к ГГ<br> * *Lares_HaltsMaul = TRUE;<br> * *// просто стоит у стола<br> * *B_StartOtherRoutine(Lares,&quot;Parking&quot;); * * * * * * * <br> * *// Корд стоит у стола<br> * *B_StartOtherRoutine(Cord,&quot;Parking&quot;);<br > * *// тут написана какая-то фигня, надо просто оставить те строки, против которых стоит //++, остальные удалить<br> * *if((Gaan.aivar[AIV_TalkedToPlayer] == FALSE))<br> * *{<br> * * * *// Гаан остается у стола<br> * * * *B_StartOtherRoutine(Gaan,&quot;Parking&quot;); * *//++<br> * *}<br> * *else<br> * *{<br> * * * *B_StartOtherRoutine(Gaan,&quot;Parking&quot;); * * * * * * * * * *<br> * *};<br> * *if(MIS_Addon_Martin_GetRangar == 0)<br> * *{<br> * * * *// Мартин остается у стола<br> * * * *B_StartOtherRoutine(Martin,&quot;Parking&quot;); *//++<br> * *}<br> * *else<br> * *{<br> * * * *B_StartOtherRoutine(Martin,&quot;Parking&quot;);< 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,&quot;Stadt&quot;); * * * * *<br> * *};<br> * *// Ларес идет в гавань<br> * *B_StartOtherRoutine(Lares,&quot;Start&quot;);<br> * *// Корд идет продолжать свои тренировки с мечом<br> * *B_StartOtherRoutine(Cord,&quot;Start&quot;);<br> * *// если ГГ не говорил с Гааном<br> * *if(Gaan.aivar[AIV_TalkedToPlayer] == FALSE)<br> * *{<br> * * * *// Гаан идет туда, где родился<br> * * * *B_StartOtherRoutine(Gaan,&quot;PreStart&quot;);<b r> * *}<br> * *else<br> * *{<br> * * * *// Гаан идет к снепперу<br> * * * *B_StartOtherRoutine(Gaan,&quot;Start&quot;); * * * * * * * * *<br> * *};<br> * *// если вор для Мартина не пойман<br> * *if(MIS_Addon_Martin_GetRangar == 0)<br> * *{<br> * * * *// идет в порт<br> * * * *B_StartOtherRoutine(Martin,&quot;PreStart&quot;); <br> * *}<br> * *else<br> * *{<br> * * * *// идет в порт или таверну в порту, в зависимости от времени<br> * * * *B_StartOtherRoutine(Martin,&quot;Start&quot;);<br > * *};<br> * *// Орлан идет за прилавок<br> * *B_StartOtherRoutine (Orlan,&quot;Start&quot;); * *<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) &amp;&amp; (B_RemoveQuarhodron_OneTime == FALSE)<br> * * * *{<br> * * * * * *// телепортировать на кладбище<br> * * * * * *AI_Teleport(NONE_ADDON_111_Quarhodron,&quot;TOT&q uot;);<br> * * * * * *// удалить Кваходрона<br> * * * * * *B_RemoveNpc(NONE_ADDON_111_Quarhodron);<br> * * * * * *// музычка<br> * * * * * *Snd_Play(&quot;MFX_GhostVoice&quot;); <br> * * * * * *Snd_Play(&quot;MFX_Firestorm_Cast&quot;);<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) &amp;&amp; (B_RemoveRhademes_OneTime == FALSE)<br> * * * *{<br> * * * * * *// телепортировать на кладбище<br> * * * * * *AI_Teleport(NONE_ADDON_112_Rhademes,&quot;TOT&quo t;);<br> * * * * * *// удалить Радемеса<br> * * * * * *B_RemoveNpc(NONE_ADDON_112_Rhademes);<br> * * * * * *// если ГГ слышал последние слова Радемеса<br> * * * * * *if(SC_TalkedToRhademAfter == TRUE)<br> * * * * * *{<br> * * * * * * * *// музычка<br> * * * * * * * *Snd_Play(&quot;MFX_GhostVoice&quot;); <br> * * * * * * * *Snd_Play(&quot;MFX_Firestorm_Cast&quot;); <br> * * * * * *};<br> * * * * * *// установить флаг удаления<br> * * * * * *B_RemoveRhademes_OneTime = TRUE;<br> * * * * * *// сброс счетчика предупреждений<br> * * * * * *GhostAttackWarn = 0;<br> * * * *};<br> * *};<br>}; * * * * * * * * * * * * * <br><br>

PA 15.07.2005 12:50

Re: Уроки скриптологии
 
2Vam:<br>
Цитата:

// amount + &quot;предметов принято&quot;
<br><br>Судя по всему используется не оригинальный немецкий скрипт - Должно быть<br>// amount + &quot; предметов принято&quot;<br><br>Пробел обязателен - иначе не проставляется количество предметов.<br>Во многих местах надо обратиь на это внимание - типа получено/получен, принято/передано и т.д.<br>

15.07.2005 14:55

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) &gt;= 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) &lt;= 1) { BeliarWeapNextLvL = 1; };<br> * * * *return TRUE;<br> * *}<br> * *else<br> * *{ * <br> * * * *// в зависимости от уровня ГГ устанвливается следующий уровень оружия Белиара и соответствующая вероятность повреждения<br> * * * *if * * *(herolvl &gt; 46) *{ BeliarWeapNextLvL = 20; BeliarNextDamageChance = BeliarDamageChance_20; } <br> * * * *else if (herolvl &gt; 44) *{ BeliarWeapNextLvL = 19; BeliarNextDamageChance = BeliarDamageChance_19; }<br> * * * *else if (herolvl &gt; 42) *{ BeliarWeapNextLvL = 18; BeliarNextDamageChance = BeliarDamageChance_18; }<br> * * * *else if (herolvl &gt; 40) *{ BeliarWeapNextLvL = 17; BeliarNextDamageChance = BeliarDamageChance_17; }<br> * * * *else if (herolvl &gt; 38) *{ BeliarWeapNextLvL = 16; BeliarNextDamageChance = BeliarDamageChance_16; }<br> * * * *else if (herolvl &gt; 36) *{ BeliarWeapNextLvL = 15; BeliarNextDamageChance = BeliarDamageChance_15; }<br> * * * *else if (herolvl &gt; 34) *{ BeliarWeapNextLvL = 14; BeliarNextDamageChance = BeliarDamageChance_14; }<br> * * * *else if (herolvl &gt; 32) *{ BeliarWeapNextLvL = 13; BeliarNextDamageChance = BeliarDamageChance_13; }<br> * * * *else if (herolvl &gt; 30) *{ BeliarWeapNextLvL = 12; BeliarNextDamageChance = BeliarDamageChance_12; }<br> * * * *else if (herolvl &gt; 28) *{ BeliarWeapNextLvL = 11; BeliarNextDamageChance = BeliarDamageChance_11; }<br> * * * *else if (herolvl &gt; 26) *{ BeliarWeapNextLvL = 10; BeliarNextDamageChance = BeliarDamageChance_10; }<br> * * * *else if (herolvl &gt; 24) *{ BeliarWeapNextLvL = 9; *BeliarNextDamageChance = BeliarDamageChance_09; }<br> * * * *else if (herolvl &gt; 22) *{ BeliarWeapNextLvL = 8; *BeliarNextDamageChance = BeliarDamageChance_08; }<br> * * * *else if (herolvl &gt; 20) *{ BeliarWeapNextLvL = 7; *BeliarNextDamageChance = BeliarDamageChance_07; }<br> * * * *else if (herolvl &gt; 18) *{ BeliarWeapNextLvL = 6; *BeliarNextDamageChance = BeliarDamageChance_06; }<br> * * * *else if (herolvl &gt; 16) *{ BeliarWeapNextLvL = 5; *BeliarNextDamageChance = BeliarDamageChance_05; }<br> * * * *else if (herolvl &gt; 14) *{ BeliarWeapNextLvL = 4; *BeliarNextDamageChance = BeliarDamageChance_04; }<br> * * * *else if (herolvl &gt; 12) *{ BeliarWeapNextLvL = 3; *BeliarNextDamageChance = BeliarDamageChance_03; }<br> * * * *else if (herolvl &gt; 10) *{ BeliarWeapNextLvL = 2; *BeliarNextDamageChance = BeliarDamageChance_02; }<br> * * * *else if (herolvl &lt;= 10) { BeliarWeapNextLvL = 1; *BeliarNextDamageChance = BeliarDamageChance_01; };<br> * *};<br> * *// если текущий уровень оружия &lt; найденного<br> * *if(BeliarWeapCurrentLvL &lt; 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 &gt; 0)<br> * *{<br> * * * *// создать строку &quot;Жизненная энергия -&quot; кол-во едениц жизни<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 &gt;= 1) * <br> * * * *{<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_GreenTentacle,PС_Pra<br>yShrine_UPGRATEB ELIARSWEAPON_GreenTentacle);<br> * * * *};<br> * * * *if(BeliarWeapCurrentLvL &gt;= 2) <br> * * * *{<br> * * * * * *Info_AddChoice(PC_PrayShrine_UPGRATEBELIARSWEAPON ,NAME_SPL_SuckEnergy,PC_P<br>rayShrine_UPGRATEBELI ARSWEAPON_SuckEnergy);<br> * * * * * *<br> * * * *};<br> * * * *if(BeliarWeapCurrentLvL &gt;= 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 &gt;= 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 &gt;= 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]) &gt; (hero.HitChance[NPC_TALENT_2H]))<br> * * * *{<br> * * * * * *// создать в инвентаре ГГ одноручник в зависимости от текущего уровня оружия<br> * * * * * *if * * (BeliarWeapCurrentLvL &lt;= 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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE);<br> * * * * * *// музычка<br> * * * * * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<b r> * * * * * *// оружие улучшено<br> * * * * * *BeliarsWeaponUpgrated = TRUE;<br> * * * *}<br> * * * *else // иначе двуручник<br> * * * *{<br> * * * * * *// создать в инвентаре ГГ двуручник в зависимости от текущего уровня оружия<br> * * * * * *if * * (BeliarWeapCurrentLvL &lt;= 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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE); * * *<br> * * * * * *// музычка<br> * * * * * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<b r> * * * * * *// оружие улучшено<br> * * * * * *BeliarsWeaponUpgrated = TRUE;<br> * * * *};<br> * *};<br>};<br><br>...продолжение следует<br>

15.07.2005 15:05

Re: Уроки скриптологии
 
// Создать руну Зеленые щупальца (для остальных рун аналогично)<br>func void PC_PrayShrine_UPGRATEBELIARSWEAPON_GreenTentacle() <br>{<br> * *// создать в инвентаре ГГ<br> * *CreateInvItem(hero,ItRu_GreenTentacle);<br> * *// визуальный эффект<br> * *Wld_PlayEffect(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE);<br> * *// вывод текста &quot;Белиар дарит тебе другое заклинание&quot;<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *// музычка<br> * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * * * <br> * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * * * <br> * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE); *<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<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(&quot;spellFX_BeliarsWeapon_Upgrat e&quot;,self,self,0,0,0,F<br>ALSE);<br> * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2);<br> * *Snd_Play(&quot;CS_Prayer_WaveOfInsanity&quot;);<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> * *// вывод текста &quot;Ты чувствуешь себя освобожденным!&quot;<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> * * * *// если счетчик проклятий &gt;= 2<br> * * * *if(SC_ObsessionCounter &gt;= 2)<br> * * * *{<br> * * * * * *// установить одержимость<br> * * * * * *SC_IsObsessed = TRUE;<br> * * * * * *// вывод текста &quot;Чувство одержимости преследует тебя!&quot;<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(&quot;spellFX_ItemAusbuddeln&quot; ,itm,itm,0,0,0,FALSE);<br> * *// ГГ говорит сам себе (SVM фраза) &quot;нашел сокровища&quot;<br> * *B_Say_Overlay(self,self,&quot;$FOUNDTREASURE&quot ;);<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,&quot;NW_BIGFARM_LAKE_CA VE_07&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[Greg_FirstSecret] == FALSE))<br> * * * *{<br> * * * * * *// выкопать предмет<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket25,&quot;NW_BIGFARM _LAKE_CAVE_07&quot;);<br> * * * * * *// установить флаг клад выкопан<br> * * * * * *RAKEPLACE[Greg_FirstSecret] = TRUE;<br> * * * * * *// получить экспу<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket25);<br> * * * * * *var C_ITEM GregsArmor;<br> * * * * * *// получить ссылку на одежду Грега<br> * * * * * *GregsArmor = Npc_GetEquippedArmor(Greg_NW);<br> * * * * * *// если это не &quot;Одежда капитана&quot;<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,&quot;NW_LAKE_GREG_TREASU RE_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[2] == FALSE))<br> * * * *{<br> * * * * * *// выкопать предмет<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket100,&quot;NW_LAKE_G REG_TREASURE_01&quot;);<br> * * * * * *// установить флаг клад выкопан<br> * * * * * *RAKEPLACE[2] = TRUE;<br> * * * * * *// получить экспу<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket100);<br> * * * *}<br> * * * *// для всех остальных кладов аналогично<br> * * * *else if((Npc_GetDistToWP(hero,&quot;NW_FARM3_GREGTREASU RE_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[3] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_GoldCup,&quot;NW_FARM3_GREGTR EASURE_01&quot;);<br> * * * * * *RAKEPLACE[3] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItMi_GoldCup);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;NW_FARM3_MOUNTAINLA KE_MONSTER_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[4] == FALSE))<br> * * * *{ * <br> * * * * * *Wld_InsertItem(ItMi_SilverChalice,&quot;NW_FARM3_ MOUNTAINLAKE_MONSTER_01&quot;);<br> * * * * * *RAKEPLACE[4] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItMi_SilverChalice);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;NW_BIGMILL_FARM3_01 &quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[5] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItAm_Prot_Point_01,&quot;NW_BIGMIL L_FARM3_01&quot;);<br> * * * * * *RAKEPLACE[5] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItAm_Prot_Point_01);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_ENTRANCE_RAKEPL ACE_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[12] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,&quot; ADW_ENTRANCE_RAKEPLACE_01&quot;);<br> * * * * * *RAKEPLACE[12] = TRUE;<br> * * * * * *Wld_InsertItem(ItMi_SilverChalice,&quot;ADW_ENTRA NCE_RAKEPLACE_01&quot;);<br> * * * * * *RakeTreasureSuccess(ItMi_SilverChalice);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_ENTRANCE_RAKEPL ACE_02&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[13] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItWr_DexStonePlate1_Addon,&quot;AD W_ENTRANCE_RAKEPLACE_02&quot;);<br> * * * * * *RAKEPLACE[13] = TRUE;<br> * * * * * *Wld_InsertItem(ItMi_GoldCup,&quot;ADW_ENTRANCE_RA KEPLACE_02&quot;); * * * * * * * * * * * * * * * * * * * *<br> * * * * * *RakeTreasureSuccess(ItMi_GoldCup);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_ENTRANCE_RAKEPL ACE_03&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[14] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItPo_Perm_Health,&quot;ADW_ENTRANC E_RAKEPLACE_03&quot;);<br> * * * * * *RAKEPLACE[14] = TRUE;<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket100,&quot;ADW_ENTRA NCE_RAKEPLACE_03&quot;); * * * * * * * * * * * * * * * * * * * * <br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket100);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_ENTRANCE_RAKEPL ACE_04&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[15] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_SilverRing,&quot;ADW_ENTRANCE _RAKEPLACE_04&quot;);<br> * * * * * *RAKEPLACE[15] = TRUE;<br> * * * * * *Wld_InsertItem(ItMw_Schwert4,&quot;ADW_ENTRANCE_R AKEPLACE_04&quot;);<br> * * * * * *RakeTreasureSuccess(ItMw_Schwert4);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_VALLEY_GREGTREA SURE_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[16] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket100,&quot;ADW_VALLE Y_GREGTREASURE_01&quot;);<br> * * * * * *RAKEPLACE[16] = TRUE;<br> * * * * * *Wld_InsertItem(ItPo_Health_02,&quot;ADW_VALLEY_GR EGTREASURE_01&quot;);<br> * * * * * *Wld_InsertItem(ItPo_Mana_03,&quot;ADW_VALLEY_GREG TREASURE_01&quot;);<br> * * * * * *RakeTreasureSuccess(ItPo_Mana_03);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_VALLEY_RAKEPLAC E_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[17] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItPo_Mana_Addon_04,&quot;ADW_VALLE Y_RAKEPLACE_01&quot;);<br> * * * * * *RAKEPLACE[17] = TRUE;<br> * * * * * *Wld_InsertItem(ItPo_Speed,&quot;ADW_VALLEY_RAKEPL ACE_01&quot;);<br> * * * * * *Wld_InsertItem(ItPo_Mana_02,&quot;ADW_VALLEY_RAKE PLACE_01&quot;);<br> * * * * * *RakeTreasureSuccess(ItPo_Mana_02);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_VALLEY_RAKEPLAC E_02&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[18] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItPo_Health_Addon_04,&quot;ADW_VAL LEY_RAKEPLACE_02&quot;);<br> * * * * * *RAKEPLACE[18] = TRUE;<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,&quot; ADW_VALLEY_RAKEPLACE_02&quot;);<br> * * * * * *Wld_InsertItem(ItSe_LockpickFisch,&quot;ADW_VALLE Y_RAKEPLACE_02&quot;);<br> * * * * * *RakeTreasureSuccess(ItSe_LockpickFisch);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_VALLEY_RAKEPLAC E_03&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[19] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSc_Firerain,&quot;ADW_VALLEY_RAK EPLACE_03&quot;);<br> * * * * * *RAKEPLACE[19] = TRUE;<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket50,&quot;ADW_VALLEY _RAKEPLACE_03&quot;);<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,&quot; ADW_VALLEY_RAKEPLACE_03&quot;);<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket50);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_BANDITSCAMP_RAK EPLACE_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[20] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_Honigtabak,&quot;ADW_BANDITSC AMP_RAKEPLACE_01&quot;);<br> * * * * * *RAKEPLACE[20] = TRUE;<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,&quot; ADW_BANDITSCAMP_RAKEPLACE_01&quot;);<br> * * * * * *Wld_InsertItem(ItAm_Addon_MANA,&quot;ADW_BANDITSC AMP_RAKEPLACE_01&quot;);<br> * * * * * *RakeTreasureSuccess(ItAm_Addon_MANA);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_BANDITSCAMP_RAK EPLACE_02&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[21] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSc_SumGobSkel,&quot;ADW_BANDITSC AMP_RAKEPLACE_02&quot;);<br> * * * * * *RAKEPLACE[21] = TRUE;<br> * * * * * *Wld_InsertItem(ItPo_Mana_03,&quot;ADW_BANDITSCAMP _RAKEPLACE_02&quot;);<br> * * * * * *RakeTreasureSuccess(ItPo_Mana_03);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_BANDITSCAMP_RAK EPLACE_03&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[22] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSc_TrfShadowbeast,&quot;ADW_BAND ITSCAMP_RAKEPLACE_03&quot;);<br> * * * * * *RAKEPLACE[22] = TRUE;<br> * * * * * *Wld_InsertItem(ItSc_LightHeal,&quot;ADW_BANDITSCA MP_RAKEPLACE_03&quot;);<br> * * * * * *RakeTreasureSuccess(ItSc_LightHeal);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_BANDITSCAMP_RAK EPLACE_04&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[23] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,&quot; ADW_BANDITSCAMP_RAKEPLACE_04&quot;);<br> * * * * * *RAKEPLACE[23] = TRUE;<br> * * * * * *Wld_InsertItem(ItRi_HP_01,&quot;ADW_BANDITSCAMP_R AKEPLACE_04&quot;);<br> * * * * * *RakeTreasureSuccess(ItRi_HP_01);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_CANYON_MINE1_11 &quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[24] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSE_Addon_FrancisChest,&quot;ADW_ CANYON_MINE1_11&quot;);<br> * * * * * *RAKEPLACE[24] = TRUE;<br> * * * * * *RakeTreasureSuccess(ItSE_Addon_FrancisChest);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_CANYON_RAKEPLAC E_01&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[25] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_RuneBlank,&quot;ADW_CANYON_RA KEPLACE_01&quot;);<br> * * * * * *RAKEPLACE[25] = TRUE;<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket25,&quot;ADW_CANYON _RAKEPLACE_01&quot;);<br> * * * * * *RakeTreasureSuccess(ItSe_GoldPocket25);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_CANYON_RAKEPLAC E_02&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[26] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_Nugget,&quot;ADW_CANYON_RAKEP LACE_02&quot;);<br> * * * * * *RAKEPLACE[26] = TRUE;<br> * * * * * *Wld_InsertItem(ItSc_LightningFlash,&quot;ADW_CANY ON_RAKEPLACE_02&quot;);<br> * * * * * *Wld_InsertItem(ItSc_ChargeFireBall,&quot;ADW_CANY ON_RAKEPLACE_02&quot;);<br> * * * * * *RakeTreasureSuccess(ItSc_ChargeFireBall);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_CANYON_RAKEPLAC E_03&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[27] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItSe_GoldPocket25,&quot;ADW_CANYON _RAKEPLACE_03&quot;);<br> * * * * * *RAKEPLACE[27] = TRUE;<br> * * * * * *Wld_InsertItem(ItWr_ManaStonePlate1_Addon,&quot;A DW_CANYON_RAKEPLACE_03&quot;);<br> * * * * * *Wld_InsertItem(ItMi_Pitch,&quot;ADW_CANYON_RAKEPL ACE_03&quot;);<br> * * * * * *RakeTreasureSuccess(ItMi_Pitch);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_CANYON_RAKEPLAC E_04&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[28] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_SilverRing,&quot;ADW_CANYON_R AKEPLACE_04&quot;);<br> * * * * * *RAKEPLACE[28] = TRUE;<br> * * * * * *Wld_InsertItem(ItMi_Sulfur,&quot;ADW_CANYON_RAKEP LACE_04&quot;);<br> * * * * * *Wld_InsertItem(ItWr_TwoHStonePlate1_Addon,&quot;A DW_CANYON_RAKEPLACE_04&quot;);<br> * * * * * *RakeTreasureSuccess(ItWr_TwoHStonePlate1_Addon);< br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_CANYON_RAKEPLAC E_05&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[29] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMi_GoldRing,&quot;ADW_CANYON_RAK EPLACE_05&quot;);<br> * * * * * *RAKEPLACE[29] = TRUE;<br> * * * * * *Wld_InsertItem(ItAt_DragonBlood,&quot;ADW_CANYON_ RAKEPLACE_05&quot;);<br> * * * * * *RakeTreasureSuccess(ItAt_DragonBlood);<br> * * * *}<br> * * * *else if((Npc_GetDistToWP(hero,&quot;ADW_PIRATECAMP_GREG TREASURE_KOMPASS&quot;) &lt; RAKE_BUDDEL_DIST_MIN) &amp;&amp; (RAKEPLACE[30] == FALSE))<br> * * * *{<br> * * * * * *Wld_InsertItem(ItMI_Addon_Kompass_Mis,&quot;ADW_P IRATECAMP_GREGTREASURE_KOMPASS&quot;);<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> * *// &quot;Повысил знание о добыче золота (+ &quot; *+ Wert<br> * *concatText = ConcatStrings(PRINT_ADDON_HACKCHANCE,IntToString(W ert));<br> * *// текст += &quot;)&quot;<br> * *concatText = ConcatStrings(concatText,&quot;)&quot;);<br> * *PrintScreen(concatText,-1,34,FONT_ScreenSmall,2);<br> * *// увеличить навык по добыче золота<br> * *Hero_HackChance = (Hero_HackChance + Wert);<br> * *// музычка<br> * *Snd_Play(&quot;Geldbeutel&quot;);<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(&quot;SPELLFX_LIGHTSTAR_WHITE&quot ;,self,self,0,0,0,FALSE);<br> * * * * * * * * * *// музычка<br> * * * * * * * * * *Snd_Play(&quot;MFX_LIGHT_CAST&quot;);<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(&quot;SPELLFX_LIGHTSTAR_WHITE&quot ;,self,self,0,0,0,FALSE);<br> * * * * * * * * * *Snd_Play(&quot;MFX_LIGHT_CAST&quot;);<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(&quot;SPELLFX_LIGHTSTAR_WHITE&quot ;,self,self,0,0,0,FALSE);<br> * * * * * * * * * *Snd_Play(&quot;MFX_LIGHT_CAST&quot;);<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>

04.08.2005 09:29

Re: Уроки скриптологии
 
2Killer-XXX:<br>
Цитата:

Ты ничем тут помочь не сможешь?
<br>PFX систему подробно не изучал, могу предложить только ссылку, но нужен товарищ со знанием немецкого языка, чтобы перевести это. Других описаний не встречал, если у кого есть более полная информация, можете сообщить. Пока всё.

05.08.2005 17:15

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; * * * * * * * &quot;1 0.2 0 16 0.1&quot;<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> &nbsp; &nbsp;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 = &quot; &quot;;<br>PpsIsLooping = 0; *<br>PpsIsSmooth = 0; *<br>PpsFPS = 0; *<br><br>Постоянное излучение<br>PpsValue = 40; *<br>PpsScaleKeys_S = &quot; &quot;; *<br>PpsIsLooping = 1; *<br>PpsIsSmooth = 0; *<br>PpsFPS = 0; *<br><br>Излучение во временном периоде<br>PpsValue = 40; *<br>PpsScaleKeys_S = &quot;1.0&quot;; *<br>PpsIsLooping = 0; *<br>PpsIsSmooth = 0; *<br>PpsFPS = 5; *<br><br>Излучение порывами<br>PpsValue = 40; *<br>PpsScaleKeys_S = &quot;1.0 0 0 0 1.0 1 6.0 0.2 0.5&quot;; *<br>PpsIsLooping = 1; *<br>PpsIsSmooth = 1; *<br>PpsFPS ** * * = 0.8;<br><br>2.2. Излучение – Пространственное распределение<br><br>Тип * * * * *Параметр * * * * * * Значение * * * * * * * * * * * * * *Пример<br>VAR STRING * shpType_S; * * * * * &quot;point,line,box,circle,sphere,mesh&quot; mesh<br>VAR STRING * shpFOR_S; * * * * * *&quot;world,object&quot; * * * * * * * * * * *world<br>VAR STRING * shpOffsetVec_S; * * *VEC3 * * * * * * * * * * * * * * * *&quot;0 1 0&quot;<br>VAR STRING * shpDistribType_S; * *&quot;RAND,UNIFORM,WALK&quot; * * * * * * * * WALK<br>VAR FLOAT * *shpDistribWalkSpeed; * * * * * * * * * * * * * * * * * * 0.0001<br>VAR INT * * *shpIsVolume; * * * * BOOL * * * <br>VAR STRING * shpDim_S; * * * * * *VEC1/3 * * * * * * * * * * * * * * *&quot;10&quot;, &quot;23 32 20&quot;<br>VAR STRING * snpMesh_S; * * * * * * * * * * * * * * * * * * * * * * * &quot;cross.3ds&quot;<br>VAR INT * * *shpMeshRender_B; * * BOOL * * * <br>VAR STRING * shpScaleKeys_S; * * * * * * * * * * * * * * * * * * * * *&quot;[1.0] [0.8 0.9 0.2] [1.0]&quot;<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; * * * * *&quot;NONE,RAND,DIR,TARGET,MESH&quot; mesh<br>VAR STRING dirFOR_S; * * * * * &quot;world,object&quot; * * * * * * *world<br>VAR STRING dirModeTargetFOR_S; &quot;world,object&quot; * * * * * * *world<br>VAR STRING dirModeTargetPos_S; VEC3 * * * * * * * * * * * *&quot;30 23 67&quot;<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> &nbsp; &nbsp; NONE или RAND – случайное направление полета частиц, излучаются шарообразно относительно источника.<br> &nbsp; &nbsp; DIR – направление полета частиц задается параметрами dirAngleHead и dirAngleElev, это углы соответственно направления движения и высоты подъема. Если заданы параметры dirAngleHeadVar и dirAngleElevVar, то выполняется дисперсия (изменение) заданных углов в пределах установленных величин. Замечание: по причине оптимизации углы движком точно не устанавливаются и можно получить непредсказуемое направление полета частиц, однако, юстировкой углов можно добиться приемлемого эффекта.<br> &nbsp; &nbsp; TARGET – излучение частиц направлено на определенную цель. Координаты цели задаются параметром dirModeTargetPos_S, в зависимости от типа цели dirModeTargetFOR_S, координаты являются локальными (для object) или глобальными (для world).<br> &nbsp; &nbsp; MESH – излучение с mesh поверхности, углы и дисперсии углов аналогичны значению DIR. <br> &nbsp; &nbsp; Параметры velAvg и velVar задают соответственно среднюю скорость и дисперсию скорости полета частиц.<br> &nbsp; &nbsp; Параметр 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; * * * * * * * * * * * * * * * * * * &quot;NAME.TGA/.3DS&quot;<br>VAR STRING visOrientation_S; * &quot;NONE,VELO,VELO3D&quot; * * * * 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] &quot;155 91 25&quot;<br>VAR STRING visTexColorEnd_S; * RGB [0..255,0..255,0..255] &quot;155 91 25&quot;<br>VAR STRING visSizeStart_S; * * VEC3 * * * * * * * * * * * &quot;50 50&quot;<br>VAR FLOAT *visSizeEndScale; * *[0..1..x] * * * * * * * * *2<br>VAR STRING visAlphaFunc_S; * * &quot;NONE,BLEND,ADD,MUL&quot; * * * 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; * * * * * * * * * * *&quot;11 16&quot;<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>

06.08.2005 15:36

Re: Уроки скриптологии
 
Скриптовая болванка 0,74 Мб. <br><br>Построена на немецких исходниках и некоторых акелловских d-файлах.<br>Удален почти весь Story и Items. <br>Рабочая под Готику 2, глюки пока не обнаружены.<br><br>На мой взгляд, болванка очень удобна для новичков, т.к. файлов меньше и скорость компиляции высокая. Вполне подойдет для тех, кто делает моды, а не аддоны.<br><br>---<br>Vam: Большое спасибо за PFX.

08.08.2005 09:28

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] &gt;=0) * *{ Npc_SetTalentSkill(slf,NPC_TALENT_1H,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_1H] &gt;=30) * { Npc_SetTalentSkill(slf,NPC_TALENT_1H,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_1H] &gt;=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] &gt;=0) * *{ Npc_SetTalentSkill(slf,NPC_TALENT_2H,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_2H] &gt;=30) * { Npc_SetTalentSkill(slf,NPC_TALENT_2H,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_2H] &gt;=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] &gt;=0) * { Npc_SetTalentSkill(slf,NPC_TALENT_BOW,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_BOW] &gt;=30) *{ Npc_SetTalentSkill(slf,NPC_TALENT_BOW,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_BOW] &gt;=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] &gt;=0) *{ Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,0); };<br> * * * *if(slf.HitChance[NPC_TALENT_CROSSBOW] &gt;=30) { Npc_SetTalentSkill(slf,NPC_TALENT_CROSSBOW,1); };<br> * * * *if(slf.HitChance[NPC_TALENT_CROSSBOW] &gt;=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> * * * *// вывод на экран строки &quot;Иннос дарит тебе: Сила + &quot;<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> * * * *// вывод на экран строки &quot;Иннос дарит тебе: Ловкость + &quot;<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> * * * *// вывод на экран строки &quot;Иннос дарит тебе: Мана + &quot;<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> * * * *// вывод на экран строки &quot;Иннос дарит тебе: Жизнь + &quot;<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> * * * *// вывод на экран строки &quot;Иннос услышал тебя и ты вылечен.&quot;<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> * * * *// вывод на экран строки &quot;Ты исполнен ясностью разума.&quot;<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 + &quot;. Стоимость: &quot; + kosten + &quot;LP&quot;<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. Функция &quot;очистки&quot; инвентаря торговцев при их смерти.<br><br>Файл B_BuildLearnString.d<br><br>// ************************************************** **************<br>// Функция &quot;очистки&quot; инвентаря торговцев при их смерти<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(&quot;DEMENTOR_FX&quot;);<br> * *// сброс флага диалога<br> * *self.aivar[AIV_INVINCIBLE] = FALSE;<br> * *// сброс MOBsi действия<br> * *PLAYER_MOBSI_PRODUCTION = MOBSI_NONE;<br>};<br><br>

08.08.2005 09:32

Re: Уроки скриптологии
 
Цитата:

&nbsp;};<br> &nbsp; // если атрибут сила<br> &nbsp; if (attrib == ATR_MANA) &nbsp; &nbsp; &nbsp; &nbsp; <br> &nbsp; { &nbsp; <br> &nbsp; &nbsp; &nbsp; // полностью восстановить ману<br> &nbsp; &nbsp; &nbsp; oth.attribute[ATR_MANA] = oth.attribute[ATR_MANA_MAX];<br> &nbsp; &nbsp; &nbsp; // вывод на экран строки &quot;Ты исполнен ясностью разума.&quot;<br> &nbsp; &nbsp; &nbsp; PrintScreen(Print_BlessMana,-1,-1,FONT_SCREEN,2);<br> &nbsp; };<br>};
<br><br>Атрибут манна. Ошибочка.

09.08.2005 09:16

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) &amp;&amp; (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,&quot;ADW_CANYON_TE LEPORT_PATH_03&quot;);<br> * * * *Wld_InsertNpc(Giant_DesertRat,&quot;ADW_CANYON_TE LEPORT_PATH_03&quot;);<br> * * * *Wld_InsertNpc(Giant_DesertRat,&quot;ADW_CANYON_TE LEPORT_PATH_04&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_LIBRARY_36&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_LIBRARY_36&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_BANDITS_31&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_MINE2_04&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_MINE2_04&quot;);<br> * * * *Wld_InsertNpc(Troll,&quot;ADW_CANYON_ORCS_02&quot ;);<br> * * * *Wld_InsertNpc(Troll,&quot;ADW_CANYON_PATH_TO_MINE 2_09&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_MINE2_06&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_26&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_24&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_66&quot;);<br> * * * *Wld_InsertNpc(SkeletonMage,&quot;ADW_CANYON_LIBRA RY_STONIE_01&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_CANYON_LIBRARY_S TONIE_02&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_CANYON_LIBRARY_S TONIE_03&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_CANYON_LIBRARY_S TONIE_04&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_CANYON_LIBRARY_S TONIE_05&quot;);<br> * * * *Wld_InsertNpc(FireWaran,&quot;ADW_ENTRANCE_2_VALL EY_05&quot;);<br> * * * *Wld_InsertNpc(Waran,&quot;ADW_ENTRANCE_2_VALLEY_1 1&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_ENTRANCE_PA TH2BANDITS_10&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_ENTRANCE_BE HINDAKROPOLIS_04&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_ENTRANCE_BE HINDAKROPOLIS_04&quot;);<br> * * * *Wld_InsertNpc(Swamprat,&quot;ADW_ENTRANCE_PATH2BA NDITS_03&quot;);<br> * * * *Wld_InsertNpc(SkeletonMage,&quot;ADW_PORTALTEMPEL _08B&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_PORTALTEMPEL_08A &quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_ENTRANCE_2_ PIRATECAMP_22&quot;);<br> * * * *Wld_InsertNpc(Swampshark,&quot;ADW_SWAMP_SHARKSTR EET_02&quot;);<br> * * * *Wld_InsertNpc(Swampshark,&quot;ADW_SWAMP_SHARKSTR EET_07&quot;);<br> * * * *Wld_InsertNpc(Swampshark,&quot;ADW_SWAMP_SHARKSTR EET_09&quot;);<br> * * * *Wld_InsertNpc(Swampshark,&quot;ADW_SWAMP_SHARKSTR EET_10&quot;);<br> * * * *Wld_InsertNpc(SwampGolem,&quot;ADW_SWAMP_LITTLE_S EA_01&quot;);<br> * * * *Wld_InsertNpc(Bloodfly,&quot;ADW_SWAMP_LITTLE_SEA _01&quot;);<br> * * * *Wld_InsertNpc(SwampGolem,&quot;ADW_SWAMP_LITTLE_S EA_02&quot;);<br> * * * *Wld_InsertNpc(Bloodfly,&quot;ADW_SWAMP_LITTLE_SEA _02&quot;);<br> * * * *Wld_InsertNpc(SwampGolem,&quot;ADW_SWAMP_LITTLE_S EA_03&quot;);<br> * * * *Wld_InsertNpc(Bloodfly,&quot;ADW_SWAMP_LITTLE_SEA _03&quot;);<br> * * * *Wld_InsertNpc(MayaZombie01,&quot;ADW_PFUETZE_01&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie02,&quot;ADW_PFUETZE_02&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie03,&quot;ADW_PFUETZE_03&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie04,&quot;ADW_PFUETZE_04&q uot;);<br> * * * *Wld_InsertNpc(MayaZombie04,&quot;ADW_BANDIT_VP1_0 7_D&quot;);<br> * * * *Wld_InsertNpc(MayaZombie01,&quot;ADW_BANDIT_VP1_0 7_E&quot;);<br> * * * *Wld_InsertNpc(MayaZombie02,&quot;ADW_BANDIT_VP1_0 7_F&quot;);<br> * * * *Wld_InsertNpc(MayaZombie03,&quot;ADW_SWAMP_LITTLE _SEA_03_B&quot;);<br> * * * *Wld_InsertNpc(MayaZombie04,&quot;ADW_SWAMP_09_C&q uot;);<br> * * * *Wld_InsertNpc(SwampGolem,&quot;ADW_SWAMP_10&quot; );<br> * * * *Wld_InsertNpc(SwampGolem,&quot;ADW_SWAMP_13&quot; );<br> * * * *Wld_InsertNpc(SwampGolem,&quot;ADW_SWAMP_14&quot; );<br> * * * *Wld_InsertNpc(Swampshark,&quot;ADW_SWAMP_HOHLWEG_ 03&quot;);<br> * * * *Wld_InsertNpc(Swampshark,&quot;ADW_SWAMP_HOHLWEG_ 04&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_SENAT_SIDE_01&qu ot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_SENAT_SIDE_02&qu ot;);<br> * * * *Wld_InsertNpc(MayaZombie04,&quot;ADW_SENAT_SIDE_0 3&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_SENAT_GUARDIAN_0 1&quot;);<br> * * * *Wld_InsertNpc(MayaZombie01,&quot;ADW_SENAT_GUARDI AN_02&quot;);<br> * * * *Wld_InsertNpc(SwampDrone,&quot;ADW_SWAMP_HILLS_DO WN_03&quot;);<br> * * * *Wld_InsertNpc(SwampDrone,&quot;ADW_SWAMP_15&quot; );<br> * * * *Wld_InsertNpc(Swamprat,&quot;ADW_HOHLWEG_CENTER&q uot;);<br> * * * *Wld_InsertNpc(SwampGolem,&quot;FP_ROAM_BF_NEST_26 &quot;);<br> * * * *Wld_InsertNpc(Swamprat,&quot;ADW_BANDITSCAMP_RAKE PLACE_03&quot;);<br> * * * *Wld_InsertNpc(SwampDrone,&quot;ADW_CANYON_PATH_TO _BANDITS_02&quot;);<br> * * * *Wld_InsertNpc(SwampDrone,&quot;ADW_PFUETZE_02&quo t;);<br> * * * *Wld_InsertNpc(SwampDrone,&quot;ADW_SWAMP_LOCH_05& quot;);<br> * * * *Wld_InsertNpc(SwampDrone,&quot;ADW_SWAMP_LOCH_06& quot;);<br> * * * *Wld_InsertNpc(Demon,&quot;ADW_PIRATECAMP_LONEBEAC H_CAVE_03&quot;);<br> * * * *Wld_InsertNpc(FireWaran,&quot;ADW_PIRATECAMP_LONE BEACH_05&quot;);<br> * * * *Wld_InsertNpc(Lurker,&quot;ADW_PIRATECAMP_WATERHO LE_04&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,&quot;ADW_VALLE Y_BIGCAVE_06&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_VALLEY_BIGC AVE_06&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_BIGC AVE_15&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_PATH _110&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_PATH _110&quot;);<br> * * * *Wld_InsertNpc(Warg,&quot;ADW_ENTRANCE_2_PIRATECAM P_13&quot;);<br> * * * *Wld_InsertNpc(Warg,&quot;ADW_ENTRANCE_2_PIRATECAM P_13&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,&quot;ADW_ENTRA NCE_2_PIRATECAMP_13&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_ENTRANCE_2_ PIRATECAMP_13&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,&quot;ADW_ENTRA NCE_2_PIRATECAMP_13&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_ENTRANCE_2_ PIRATECAMP_13&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior_Visir,&quot;ADW_ENTRA NCE_2_VALLEY_10&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_ENTRANCE_2_ VALLEY_10&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_ENTRANCE_2_ VALLEY_10&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_ENTRANCE_2_ VALLEY_10&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_ENTRANCE_2_ VALLEY_02A&quot;);<br> * * * *Wld_InsertNpc(Gobbo_Warrior,&quot;ADW_ENTRANCE_2_ VALLEY_02A&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_PATH _020&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_BIGC AVE_01&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_PATH _048_A&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_PATH _047_D&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_VALLEY_PATH _047_D&quot;);<br> * * * *Wld_InsertNpc(Scavenger_Demon,&quot;ADW_VALLEY_PA TH_047_G&quot;);<br> * * * *Wld_InsertNpc(Scavenger_Demon,&quot;ADW_VALLEY_PA TH_047_G&quot;);<br> * * * *Wld_InsertNpc(Scavenger_Demon,&quot;ADW_VALLEY_PA TH_038_E&quot;);<br> * * * *Wld_InsertNpc(Scavenger_Demon,&quot;ADW_VALLEY_PA TH_038_E&quot;);<br> * * * *Wld_InsertNpc(Scavenger_Demon,&quot;ADW_VALLEY_PA TH_038_J&quot;);<br> * * * *Wld_InsertNpc(SkeletonMage,&quot;ADW_VALLEY_PATH_ 131&quot;);<br> * * * *Wld_InsertNpc(SkeletonMage,&quot;ADW_VALLEY_PATH_ 132_A&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_132_ A&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_134& quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_134& quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_135& quot;);<br> * * * *Wld_InsertNpc(Shadowbeast_Addon_Fire,&quot;ADW_VA LLEY_PATH_072&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_072& quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_073& quot;);<br> * * * *Wld_InsertNpc(Shadowbeast_Addon_Fire,&quot;ADW_VA LLEY_PATH_072&quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_073& quot;);<br> * * * *Wld_InsertNpc(Skeleton,&quot;ADW_VALLEY_PATH_073& quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_MINE1_05&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_MINE1_05&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_MINE 1_01&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_MINE 1_01&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_MINE 1_01&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_LIBRARY_31A&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_CANYON_PATH _TO_LIBRARY_31A&quot;);<br> * * * *Wld_InsertNpc(FireWaran,&quot;ADW_CANYON_PATH_TO_ BANDITS_55&quot;);<br> * * * *Wld_InsertNpc(FireWaran,&quot;ADW_CANYON_PATH_TO_ BANDITS_55&quot;);<br> * * * *Wld_InsertNpc(OrcBiter,&quot;ADW_CANYON_PATH_TO_B ANDITS_52&quot;);<br> * * * *Wld_InsertNpc(OrcBiter,&quot;ADW_CANYON_PATH_TO_B ANDITS_52&quot;);<br> * * * *Wld_InsertNpc(Troll,&quot;ADW_CANYON_PATH_TO_LIBR ARY_17&quot;);<br> * * * *Wld_InsertNpc(Troll,&quot;ADW_CANYON_PATH_TO_LIBR ARY_16A&quot;);<br> * * * *Wld_InsertNpc(OrcBiter,&quot;ADW_CANYON_ORCS_09&q uot;);<br> * * * *Wld_InsertNpc(OrcBiter,&quot;ADW_CANYON_ORCS_09&q uot;);<br> * * * *Wld_InsertNpc(FireWaran,&quot;ADW_CANYON_PATH_TO_ LIBRARY_07A&quot;);<br> * * * *Wld_InsertNpc(FireWaran,&quot;ADW_CANYON_PATH_TO_ LIBRARY_07A&quot;);<br> * * * *Wld_InsertNpc(Blattcrawler,&quot;ADW_CANYON_TELEP ORT_PATH_09&quot;);<br> * * * *Wld_InsertNpc(Blattcrawler,&quot;ADW_CANYON_TELEP ORT_PATH_09&quot;);<br> * * * *Wld_InsertNpc(Blattcrawler,&quot;ADW_CANYON_TELEP ORT_PATH_09&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_ENTRANCE_PA TH2BANDITS_05P&quot;);<br> * * * *Wld_InsertNpc(DragonSnapper,&quot;ADW_ENTRANCE_PA TH2BANDITS_05P&quot;);<br> * * * *Wld_InsertNpc(SwampGolem,&quot;ADW_ENTRANCE_PATH2 BANDITS_05&quot;);<br> * * * *Wld_InsertNpc(Troll,&quot;ADW_CANYON_PATH_TO_BAND ITS_20&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_21&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_17&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_14&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_62&quot;);<br> * * * *Wld_InsertNpc(MinecrawlerWarrior,&quot;ADW_CANYON _PATH_TO_BANDITS_19&quot;);<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 &gt;= 1) * *{ B_ENTER_ADDONWORLD_Kapitel_1(); };<br> * *if(Kapitel &gt;= 2) * *{ B_ENTER_ADDONWORLD_Kapitel_2(); };<br> * *if(Kapitel &gt;= 3) * *{ B_ENTER_ADDONWORLD_Kapitel_3(); };<br> * *if(Kapitel &gt;= 4) * *{ B_ENTER_ADDONWORLD_Kapitel_4(); };<br> * *if(Kapitel &gt;= 5) * *{ B_ENTER_ADDONWORLD_Kapitel_5(); };<br> * *if(Kapitel &gt;= 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,&quot;FP_ROAM_DI_WARAN_01 &quot;);<br> * *Wld_InsertNpc(FireWaran,&quot;FP_ROAM_DI_WARAN_02 &quot;);<br> * *Wld_InsertNpc(FireWaran,&quot;FP_ROAM_DI_WARAN_03 &quot;);<br> * *Wld_InsertNpc(Troll_DI,&quot;DI_ORKAREA_TROLL&quo t;);<br> * *Wld_InsertItem(ItMi_DarkPearl,&quot;FP_ITEM_DI_EN TER_03&quot;);<br> * *Wld_InsertItem(ItMi_Sulfur,&quot;FP_ITEM_DI_ENTER _07&quot;);<br> * *Wld_InsertItem(ItWr_ZugBruecke_MIS,&quot;FP_ITEM_ DI_ENTER_09&quot;);<br> * *Wld_InsertNpc(OrcWarrior_Rest,&quot;FP_ROAM_DI_OR K_01&quot;);<br> * *Wld_InsertNpc(OrcWarrior_Rest,&quot;FP_ROAM_DI_OR K_02&quot;);<br> * *Wld_InsertNpc(Warg,&quot;FP_ROAM_DI_ORK_03&quot;) ;<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;FP_ROAM_DI_ORK_ 04&quot;);<br> * *Wld_InsertNpc(OrcShaman_Sit,&quot;FP_ROAM_DI_ORK_ 05&quot;);<br> * *Wld_InsertNpc(Warg,&quot;FP_ROAM_DI_ORK_06&quot;) ;<br> * *Wld_InsertNpc(OrcWarrior_Rest,&quot;FP_ROAM_DI_OR K_07&quot;);<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;FP_ROAM_DI_ORK_ 08&quot;);<br> * *Wld_InsertNpc(OrcWarrior_Rest,&quot;FP_ROAM_DI_OR K_09&quot;);<br> * *Wld_InsertNpc(Warg,&quot;FP_ROAM_DI_ORK_11&quot;) ;<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;FP_ROAM_DI_ORK_ 14&quot;);<br> * *Wld_InsertNpc(OrcShaman_Sit,&quot;FP_ROAM_DI_ORK_ 15&quot;);<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;FP_ROAM_DI_ORK_ 16&quot;);<br> * *Wld_InsertNpc(Warg,&quot;FP_ROAM_DI_ORK_17&quot;) ;<br> * *Wld_InsertNpc(Warg,&quot;FP_ROAM_DI_ORK_18&quot;) ;<br> * *Wld_InsertNpc(OrcWarrior_Rest,&quot;FP_ROAM_DI_OR K_19&quot;);<br> * *Wld_InsertNpc(OrcShaman_Sit,&quot;FP_ROAM_DI_ORK_ 20&quot;);<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;FP_ROAM_DI_ORK_ 21&quot;);<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;FP_ROAM_DI_ORK_ 22&quot;);<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;FP_ROAM_DI_ORK_ 23&quot;);<br> * *Wld_InsertNpc(OrcWarrior_Roam,&quot;FP_ROAM_DI_OR K_28&quot;);<br> * *Wld_InsertNpc(OrcElite_Roam,&quot;FP_ROAM_DI_ORK_ 29&quot;);<br> * *Wld_InsertNpc(OrcWarrior_Roam,&quot;FP_ROAM_DI_OR K_30&quot;);<br> * *Wld_InsertNpc(OrcElite_Roam,&quot;FP_ROAM_DI_ORK_ 33&quot;);<br> * *Wld_InsertNpc(OrcElite_Roam,&quot;FP_ROAM_DI_ORK_ 34&quot;);<br> * *Wld_InsertNpc(OrcWarrior_Roam,&quot;FP_ROAM_DI_OR K_35&quot;);<br> * *Wld_InsertNpc(Warg,&quot;FP_ROAM_DI_ORK_12&quot;) ;<br> * *Wld_InsertNpc(OrcShaman_Sit,&quot;FP_ROAM_DI_ORK_ 13&quot;);<br> * *Wld_InsertNpc(OrkElite_AntiPaladinOrkOberst_DI,&q uot;DI_ORKOBERST&quot;);<br> * *Wld_InsertNpc(OrcElite_DIOberst1_Rest,&quot;FP_RO AM_DI_ORK_24&quot;);<br> * *Wld_InsertNpc(OrcElite_DIOberst2_Rest,&quot;FP_RO AM_DI_ORK_26&quot;);<br> * *Wld_InsertNpc(OrcElite_DIOberst3_Rest,&quot;FP_RO AM_DI_ORK_27&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,&quot;DI _ORKAREA_24&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,&quot;DI _DRACONIANAREA_22&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,&quot;DI _DRACONIANAREA_08&quot;);<br> * *Wld_InsertNpc(Dragon_Fire_Island,&quot;DI_DRACONI ANAREA_FIREDRAGON&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_01&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_02&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_03&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_04&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_05&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_06&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_07&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_08&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_09&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_10&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_11&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_12&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_13&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_14&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_15&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_16&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_17&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_18&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_19&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_20&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_21&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_22&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_23&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_24&quot;);<br> * *Wld_InsertNpc(Draconian,&quot;FP_ROAM_DI_DRACONIA N_25&quot;);<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,&quot;FP _ITEM_DI_BLACKNOV_01&quot;);<br> * *Wld_InsertItem(ItWr_Diary_BlackNovice_MIS,&quot;F P_ITEM_DI_BLACKNOV_02&quot;);<br> * *Wld_InsertNpc(Skeleton_Lord_Archol,&quot;DI_ARCHO L&quot;);<br> * *Wld_InsertNpc(Skeleton_Archol1,&quot;DI_ARCHOL_SK ELETON_01&quot;);<br> * *Wld_InsertNpc(Skeleton_Archol2,&quot;DI_ARCHOL_SK ELETON_02&quot;);<br> * *Wld_InsertNpc(Skeleton_Archol3,&quot;DI_ARCHOL_SK ELETON_03&quot;);<br> * *Wld_InsertNpc(Skeleton_Archol4,&quot;DI_ARCHOL_SK ELETON_04&quot;);<br> * *Wld_InsertNpc(Skeleton_Archol5,&quot;DI_ARCHOL_SK ELETON_05&quot;);<br> * *Wld_InsertNpc(Skeleton_Archol6,&quot;DI_ARCHOL_SK ELETON_06&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbient,&quot;DI_DRACON IANAREA_53&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbient,&quot;DI_DRACON IANAREA_52&quot;);<br> * *Wld_InsertNpc(Lesser_Skeleton,&quot;DI_DRACONIANA REA_55&quot;);<br> * *Wld_InsertNpc(Lesser_Skeleton,&quot;DI_DRACONIANA REA_55&quot;);<br> * *Wld_InsertNpc(Skeleton,&quot;DI_DRACONIANAREA_56& quot;);<br> * *Wld_InsertNpc(Lesser_Skeleton,&quot;DI_DRACONIANA REA_56&quot;);<br> * *Wld_InsertNpc(Skeleton,&quot;DI_DRACONIANAREA_51& quot;);<br> * *Wld_InsertNpc(Lesser_Skeleton,&quot;DI_DRACONIANA REA_51&quot;);<br> * *Wld_InsertNpc(Skeleton,&quot;DI_DRACONIANAREA_51& quot;);<br> * *Wld_InsertNpc(Shadowbeast_Skeleton,&quot;WP_UNDEA D_SPAWN_POINT_01&quot;);<br> * *Wld_InsertNpc(Skeleton_Lord,&quot;WP_UNDEAD_LEFT_ DOWN_06&quot;);<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;WP_UNDEAD_SPAWN _POINT_02&quot;);<br> * *Wld_InsertNpc(OrcElite_Rest,&quot;WP_UNDEAD_SPAWN _POINT_03&quot;);<br> * *Wld_InsertNpc(OrcShaman_Sit,&quot;WP_UNDEAD_SPAWN _POINT_04&quot;);<br> * *Wld_InsertNpc(Zombie01,&quot;WP_UNDEAD_SPAWN_POIN T_05&quot;);<br> * *Wld_InsertNpc(Zombie02,&quot;WP_UNDEAD_SPAWN_POIN T_06&quot;);<br> * *Wld_InsertNpc(Zombie03,&quot;WP_UNDEAD_SPAWN_POIN T_07&quot;);<br> * *Wld_InsertNpc(Zombie04,&quot;WP_UNDEAD_SPAWN_POIN T_08&quot;);<br> * *Wld_InsertNpc(Skeleton,&quot;DRAGONISLAND_UNDEAD_ 04_01&quot;);<br> * *Wld_InsertNpc(Skeleton,&quot;DRAGONISLAND_UNDEAD_ 04_02&quot;);<br> * *Wld_InsertNpc(Skeleton,&quot;DRAGONISLAND_UNDEAD_ 08_01&quot;);<br> * *Wld_InsertNpc(Skeleton_Lord,&quot;DRAGONISLAND_UN DEAD_08_02&quot;);<br> * *Wld_InsertNpc(Skeleton_Lord,&quot;DRAGONISLAND_UN DEAD_08_03&quot;);<br> * *Wld_InsertNpc(Skeleton,&quot;DRAGONISLAND_UNDEAD_ 08_04&quot;);<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&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_02,&qu ot;DI_UNDEADDRAGONTEMPEL_01&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_03,&qu ot;DI_UNDEADDRAGONTEMPEL_01&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_04,&qu ot;DI_UNDEADDRAGONTEMPEL_01&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_05,&qu ot;DI_UNDEADDRAGONTEMPEL_01&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbientWalker_DI_06,&qu ot;DI_UNDEADDRAGONTEMPEL_01&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbient,&quot;DI_UNDEAD DRAGONTEMPEL_20&quot;);<br> * *Wld_InsertNpc(DMT_DementorAmbient,&quot;DI_UNDEAD DRAGONTEMPEL_23&quot;);<br> * *Wld_InsertNpc(DMT_1299_OberDementor_DI,&quot;DI_S CHWARZMAGIER&quot;);<br> * *Wld_InsertNpc(Dragon_Undead,&quot;DI_UNDEADDRAGON &quot;);<br> * *Wld_InsertNpc(UndeadOrcWarrior,&quot;DI_UNDEADDRA GON_TRAP_01&quot;);<br> * *Wld_InsertNpc(UndeadOrcWarrior,&quot;DI_UNDEADDRA GON_TRAP_02&quot;);<br> * *Wld_InsertNpc(UndeadOrcWarrior,&quot;DI_UNDEADDRA GON_TRAP_03&quot;);<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,&quot;SHIP_DECK_ 01&quot;);<br> * *};<br> * *if(TorlofIsCaptain == TRUE) // Торлоф<br> * *{<br> * * * *Wld_InsertNpc(SLD_801_Torlof_DI,&quot;SHIP_DECK_0 1&quot;);<br> * *};<br> * *if(JackIsCaptain == TRUE) * // Джек<br> * *{<br> * * * *Wld_InsertNpc(VLK_444_Jack_DI,&quot;SHIP_DECK_01& quot;);<br> * *};<br> * *// размещение команды на корабле<br> * *if(Lee_IsOnBoard == LOG_SUCCESS) * * * *// Ли<br> * *{<br> * * * *Wld_InsertNpc(SLD_800_Lee_DI,&quot;SHIP_DECK_01&q uot;);<br> * *};<br> * *if(MiltenNW_IsOnBoard == LOG_SUCCESS) * // Мильтон<br> * *{<br> * * * *Wld_InsertNpc(PC_Mage_DI,&quot;SHIP_DECK_01&quot; );<br> * * * *// если Лестера на корабле нет<br> * * * *if(Lester_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Мильтон сидит на лавке<br> * * * * * *B_StartOtherRoutine(PC_Mage_DI,&quot;SittingShipD I&quot;);<br> * * * *};<br> * *};<br> * *if(Lester_IsOnBoard == LOG_SUCCESS) * * // Лестер<br> * *{<br> * * * *Wld_InsertNpc(PC_Psionic_DI,&quot;SHIP_DECK_01&qu ot;);<br> * * * *// если Мильтона на корабле нет<br> * * * *if(MiltenNW_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Лестер сидит на лавке<br> * * * * * *B_StartOtherRoutine(PC_Psionic_DI,&quot;SittingSh ipDI&quot;);<br> * * * *};<br> * *};<br> * *if(Mario_IsOnBoard == LOG_SUCCESS) * * *// Марио<br> * *{<br> * * * *Wld_InsertNpc(None_101_Mario_DI,&quot;SHIP_DECK_0 1&quot;);<br> * *};<br> * *if(Wolf_IsOnBoard == LOG_SUCCESS) * * * // Волк<br> * *{<br> * * * *Wld_InsertNpc(SLD_811_Wolf_DI,&quot;SHIP_DECK_01& quot;);<br> * *};<br> * *if(Vatras_IsOnBoard == LOG_SUCCESS) * * // Ватрас<br> * *{<br> * * * *Wld_InsertNpc(VLK_439_Vatras_DI,&quot;SHIP_DECK_0 1&quot;);<br> * *}; *<br> * *if(Bennet_IsOnBoard == LOG_SUCCESS) * * // Беннет<br> * *{<br> * * * *Wld_InsertNpc(SLD_809_Bennet_DI,&quot;SHIP_DECK_0 1&quot;);<br> * *}; *<br> * *if(Diego_IsOnBoard == LOG_SUCCESS) * * *// Диего<br> * *{<br> * * * *Wld_InsertNpc(PC_Thief_DI,&quot;SHIP_DECK_01&quot ;);<br> * * * *// если Лареса на корабле нет<br> * * * *if(Lares_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Диего сидит на лавке<br> * * * * * *B_StartOtherRoutine(PC_Thief_DI,&quot;SittingShip DI&quot;);<br> * * * *};<br> * *};<br> * *if(Gorn_IsOnBoard == LOG_SUCCESS) * * * // Горн<br> * *{<br> * * * *Wld_InsertNpc(PC_Fighter_DI,&quot;SHIP_DECK_01&qu ot;);<br> * *}; *<br> * *if(Lares_IsOnBoard == LOG_SUCCESS) * * *// Ларес<br> * *{<br> * * * *Wld_InsertNpc(VLK_449_Lares_DI,&quot;SHIP_DECK_01 &quot;);<br> * * * *// если Диего на корабле нет<br> * * * *if(Diego_IsOnBoard != LOG_SUCCESS) <br> * * * *{<br> * * * * * *// Ларес сидит на лавке<br> * * * * * *B_StartOtherRoutine(VLK_449_Lares_DI,&quot;Sittin gShipDI&quot;);<br> * * * *};<br> * *}; *<br> * *if(Biff_IsOnBoard == LOG_SUCCESS) * * * // Бифф<br> * *{<br> * * * *Wld_InsertNpc(DJG_713_Biff_DI,&quot;SHIP_DECK_01& quot;);<br> * *}; *<br> * *if(Angar_IsOnBoard == LOG_SUCCESS) * * *// Ангар<br> * *{<br> * * * *Wld_InsertNpc(DJG_705_Angar_DI,&quot;SHIP_DECK_01 &quot;);<br> * *}; *<br> * *if(Girion_IsOnBoard == LOG_SUCCESS) * * // Гирион<br> * *{<br> * * * *Wld_InsertNpc(Pal_207_Girion_DI,&quot;SHIP_DECK_0 1&quot;);<br> * *};<br> * *// вставить Педро<br> * *Wld_InsertNpc(NOV_600_Pedro_DI,&quot;SHIP_DECK_01 &quot;);<br> * *// вставка предметов <br> * *Wld_InsertItem(ItMi_Flask,&quot;FP_ITEM_SHIP_03&q uot;); <br> * *Wld_InsertItem(ItMi_Flask,&quot;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(&quot;SHIP.BIK&quot;); * <br> * *// создать тему - &quot;Залы Ирдората&quot;<br> * *Log_CreateTopic(TOPIC_HallenVonIrdorath,LOG_MISSI ON);<br> * *// задать статус - в процессе<br> * *Log_SetTopicStatus(TOPIC_HallenVonIrdorath,LOG_RU NNING);<br> * *// добавить в дневник запись<br> * *Log_AddEntry(TOPIC_HallenVonIrdorath,&quot;Наконе ц мы достигли логова врага. Только Иннос знает, какие создания будут ждать меня внутри этой огромной горы.&quot;); <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>

10.08.2005 09:31

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) &amp;&amp; Npc_IsDead(KDW_140300_Addon_Myxir_CITY))<br> * *{<br> * * * *// вставить Миксира<br> * * * *Wld_InsertNpc(KDW_140300_Addon_Myxir_CITY,&quot;C ITY1&quot;);<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, &quot;NW_TROLLAREA_PORTALTEMPE<br>L_22&quot;);< br> * * * * * *// установить флаг<br> * * * * * *SC_GotPORTALTEMPELWALKTHROUGHKey = TRUE;<br> * * * *};<br> * *};<br> * *// если Пропавшие люди освобождены и не возвращены в Новый мир<br> * *if(Sklaven_Flucht == TRUE) &amp;&amp; (Sklaven_weg == FALSE)<br> * *{<br> * * * *// вставить Пропавших людей<br> * * * *Wld_InsertNpc(STRF_1123_Addon_Patrick_NW,&quot;NW _BIGFARM_PATRICK&quot;);<br> * * * *Wld_InsertNpc(STRF_1124_Addon_Monty_NW,&quot;NW_C ITY_HABOUR_WERFT_IN_01&quot;);<br> * * * *Wld_InsertNpc(STRF_1125_Addon_Tonak_NW,&quot;NW_F ARM2_FIELD_TANOK&quot;);<br> * * * *Wld_InsertNpc(STRF_1126_Addon_Telbor_NW,&quot;NW_ FARM2_FIELD_TELBOR&quot;);<br> * * * *Wld_InsertNpc(STRF_1127_Addon_Pardos_NW,&quot;NW_ FARM3_BENGAR&quot;);<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,&quot;FP_ROAM_XARDAS_S ECRET_26&quot;);<br> * * * *}<br> * * * *// если ГГ наёмник или охотник на драконов<br> * * * *else if((hero.guild == GIL_SLD) ¦¦ (hero.guild == GIL_DJG))<br> * * * *{<br> * * * * * *// разместить Амулет жизни<br> * * * * * *Wld_InsertItem(ItAm_Hp_01,&quot;FP_ROAM_XARDAS_SE CRET_26&quot;);<br> * * * *}<br> * * * *else // иначе - маг Огня<br> * * * *{<br> * * * * * *// разместить Амулет озарения<br> * * * * * *Wld_InsertItem(ItAm_Hp_Mana_01,&quot;FP_ROAM_XARD AS_SECRET_26&quot;);<br> * * * *};<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// Агон стоит на охране в таверне<br> * * * * * *B_StartOtherRoutine(Agon,&quot;StillAlive&quot;); <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> * * * * * *// сделать Саландрила &quot;крутым парнем&quot;<br> * * * * * *Salandril.aivar[AIV_ToughGuy] = TRUE;<br> * * * *};<br> * * * *// сброс флагов Корнелиуса<br> * * * *Cornelius.Flags = 0;<br> * * * *// если Ходжес жив<br> * * * *if(!Npc_IsDead(Hodges))<br> * * * *{<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(Hodges,&quot;BENNETWEG&quot;) ;<br> * * * *};<br> * * * *// если Диего мертв<br> * * * *if(Npc_IsDead(DiegoNW))<br> * * * *{<br> * * * * * *// вставить Диего<br> * * * * * *Wld_InsertNpc(PC_THIEF_NW,&quot;NW_CITY_ENTRANCE_ 01&quot;);<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(DiegoNW,&quot;START&quot;);<b r> * * * *};<br> * * * *// если Горн мертв<br> * * * *if(Npc_IsDead(GornNW_vor_DJG))<br> * * * *{<br> * * * * * *// вставить Горна<br> * * * * * *Wld_InsertNpc(PC_Fighter_NW_vor_DJG,&quot;BIGFARM &quot;);<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(GornNW_vor_DJG,&quot;START&qu ot;);<br> * * * *};<br> * * * *// если Ларес жив<br> * * * *if(Npc_IsDead(Lares) == FALSE)<br> * * * *{<br> * * * * * *// задать функцию распорядка дня<br> * * * * * *B_StartOtherRoutine(Lares,&quot;START&quot;);<br> * * * *};<br> * * * *// вставить Ищущего у входа в Рудниковую долину<br> * * * *Wld_InsertNpc(DMT_DementorAmbientSpeaker,&quot;NW _PASS_GATE_02&quot;);<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,&quot;FP_ROAM_MEDIUMFORES T_KAP2_01&quot;);<br> * * * *Wld_InsertNpc(Giant_Bug,&quot;FP_ROAM_MEDIUMFORES T_KAP2_02&quot;);<br> * * * *Wld_InsertNpc(Giant_Bug,&quot;FP_ROAM_MEDIUMFORES T_KAP2_05&quot;);<br> * * * *// если Секоб жив<br> * * * *if(Npc_IsDead(Sekob) == FALSE) *<br> * * * *{<br> * * * * * *// задать функцию распорядка дня окружения Секоба<br> * * * * * *B_StartOtherRoutine(Sekob,&quot;FleeDMT&quot;); <br> * * * * * *B_StartOtherRoutine(Rosi,&quot;FleeDMT&quot;); <br> * * * * * *B_StartOtherRoutine(Till,&quot;FleeDMT&quot;); <br> * * * * * *B_StartOtherRoutine(Balthasar,&quot;FleeDMT&quot; ); <br> * * * * * *B_StartOtherRoutine(BAU_933_Rega,&quot;FleeDMT&qu ot;); <br> * * * * * *B_StartOtherRoutine(BAU_934_Babera,&quot;FleeDMT& quot;); <br> * * * * * *B_StartOtherRoutine(BAU_937_BAUER,&quot;FleeDMT&q uot;); <br> * * * * * *B_StartOtherRoutine(BAU_938_BAUER,&quot;FleeDMT&q uot;);<br> * * * * * *// вставить Ищущих в доме Секоба<br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob1,&quot;NW_ FARM4_IN_06&quot;); * <br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob2,&quot;NW_ FARM4_IN_02&quot;);<br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob3,&quot;NW_ FARM4_IN_03&quot;);<br> * * * * * *Wld_InsertNpc(DMT_DementorAmbientSekob4,&quot;NW_ FARM4_IN_04&quot;);<br> * * * * * *// сделать Секоба бессмертным<br> * * * * * *Sekob.flags = NPC_FLAG_IMMORTAL;<br> * * * *};<br> * * * *// задать функции распорядка дня<br> * * * *B_StartOtherRoutine(Lester,&quot;WAITFORPLAYER&qu ot;); * *// Лестер<br> * * * *B_StartOtherRoutine(Bennet,&quot;PRISON&quot;); * * * * * // Беннет<br> * * * *B_StartOtherRoutine(Sergio,&quot;WAIT&quot;); * * * * * * // Сергио<br> * * * *B_StartOtherRoutine(Peck,&quot;STORAGE&quot;); * * * * * *// Пек<br> * * * *// удалить Лотара<br> * * * *B_RemoveNpc(PAL_203_Lothar);<br> * * * *// респавн живности<br> * * * *//!!!!!!<br> * * * *// если Малак жив<br> * * * *if(Npc_IsDead(Malak) == FALSE) *<br> * * * *{<br> * * * * * *// Малак с рабочими покидает ферму<br> * * * * * *B_StartOtherRoutine(Malak,&quot;FleeFromPass&quot ;);<br> * * * * * *// установить флаг, что Малак покинул ферму<br> * * * * * *Malak_isAlive_Kap3 = TRUE;<br> * * * * * *B_StartOtherRoutine(BAU_962_Bauer,&quot;FleeFromP ass&quot;); <br> * * * * * *B_StartOtherRoutine(BAU_964_Bauer,&quot;FleeFromP ass&quot;); <br> * * * * * *B_StartOtherRoutine(BAU_965_Bauer,&quot;FleeFromP ass&quot;); <br> * * * * * *B_StartOtherRoutine(BAU_966_Bauer,&quot;FleeFromP ass&quot;); <br> * * * * * *B_StartOtherRoutine(BAU_967_Bauer,&quot;FleeFromP ass&quot;); <br> * * * * * *B_StartOtherRoutine(BAU_968_Bauer,&quot;FleeFromP ass&quot;); <br> * * * * * *B_StartOtherRoutine(BAU_969_Bauer,&quot;FleeFromP ass&quot;);<br> * * * * * *// если ГГ маг Огня<br> * * * * * *if(hero.guild == GIL_KDF)<br> * * * * * *{<br> * * * * * * * *// создать в инвентаре Малака &quot;Альманах одержимости&quot;<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,&quot;Krank&quot;); <br> * * * *};<br> * * * *// если ГГ наемник или охотник на драконов<br> * * * *if((hero.guild == GIL_SLD) ¦¦ (hero.guild == GIL_DJG))<br> * * * *{<br> * * * * * *// вставить Трость и нескольких НПС (где ???)<br> * * * * * *Wld_InsertItem(ItMw_MalethsGehstock_MIS,&quot;FP_ ITEM_FARM1_01&quot;); <br> * * * * * *Wld_InsertNpc(Shadowbeast,&quot;NW_LITTLESTONEHEN DGE&quot;); *<br> * * * * * *Wld_InsertNpc(BDT_1024_MalethsBandit,&quot;NW_FAR M1_BANDITS_CAVE_08&quot;)<br>;<br> * * * * * *Wld_InsertNpc(BDT_1006_Bandit_H,&quot;FP_STAND_DE MENTOR_KDF_29&quot;);<br> * * * * * *Wld_InsertNpc(BDT_1007_Bandit_H,&quot;FP_STAND_DE MENTOR_KDF_30&quot;);<br> * * * * * *Wld_InsertNpc(BDT_1008_Bandit_H,&quot;NW_FARM1_BA NDITS_CAVE_03&quot;);<br> * * * * * *Wld_InsertNpc(BDT_1004_Bandit_M,&quot;NW_FARM1_BA NDITS_CAVE_02&quot;);<br> * * * * * *Wld_InsertNpc(BDT_1005_Bandit_M,&quot;NW_FARM1_BA NDITS_CAVE_04&quot;);<br> * * * *};<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// вставить &quot;Горная порода священной земли&quot;<br> * * * * * *Wld_InsertItem(ItMi_KarrasBlessedStone_Mis,&quot; FP_ITEM_FARM1_03&quot;); <br> * * * * * *Wld_InsertItem(ItMi_KarrasBlessedStone_Mis,&quot; FP_NW_ITEM_TROLL_10&quot;); <br> * * * * * *// Хильда круглосуточно спит<br> * * * * * *B_StartOtherRoutine(Hilda,&quot;KRANK&quot;); <br> * * * * * *// если Вино жив<br> * * * * * *if(Npc_IsDead(Vino) == FALSE) * <br> * * * * * *{ <br> * * * * * * * *// Вино курит болотник<br> * * * * * * * *B_StartOtherRoutine(Vino,&quot;OBESESSIONRITUAL&q uot;);<br> * * * * * * * *// дать Вино &quot;Альманах одержимости&quot;<br> * * * * * * * *CreateInvItems(Vino,ITWR_DementorObsessionBook_MI S,1); *<br> * * * * * * * *// установить флаг, что Вино покинул ферму<br> * * * * * * * *Vino_isAlive_Kap3 = TRUE;<br> * * * * * * * *// Лобарт курит болотник<br> * * * * * * * *B_StartOtherRoutine(Lobart,&quot;OBESESSIONRITUAL &quot;);<br> * * * * * * * *// вставка Ищущих<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino1,&quot;FP_S TAND_DEMENTOR_KDF_31&quot;);<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino2,&quot;FP_S TAND_DEMENTOR_KDF_32&quot;);<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino3,&quot;FP_S TAND_DEMENTOR_KDF_33&quot;);<br> * * * * * * * *Wld_InsertNpc(DMT_DementorSpeakerVino4,&quot;NW_L ITTLESTONEHENDGE_02&quot;);<br> * * * * * * * *// убийство Молодых полевых жуков<br> * * * * * * * *B_KillNpc(YGiant_Bug_VinoRitual1);<br> * * * * * * * *B_KillNpc(YGiant_Bug_VinoRitual2);<br> * * * * * *};<br> * * * * * *// если Бромор жив<br> * * * * * *if(Npc_IsDead(Bromor) == FALSE) <br> * * * * * *{ <br> * * * * * * * *// дать Бромору &quot;Альманах одержимости&quot;<br> * * * * * * * *CreateInvItems(Bromor,ITWR_DementorObsessionBook_ MIS,1);<br> * * * * * *};<br> * * * *};<br> * * * *// если компромат на Сару не собран и задание Кантара получено<br> * * * *if(MIS_Canthars_KomproBrief != LOG_SUCCESS) &amp;&amp; (MIS_Canthars_KomproBrief != FALSE)<br> * * * *// и Кантору не заплачено и Кантор жив <br> * * * *&amp;&amp; (Canthar_Pay == FALSE) &amp;&amp; (Npc_IsDead(Canthar) == FALSE)<br> * * * *{<br> * * * * * *// убить Сару<br> * * * * * *B_RemoveNpc(Sarah);<br> * * * * * *// Кантор торгует<br> * * * * * *B_StartOtherRoutine(Canthar,&quot;MARKTSTAND&quot ;);<br> * * * * * *AI_Teleport(Canthar,&quot;NW_CITY_SARAH&quot;);<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,&quot;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,&quot;ch<br>apter_01.wav&quo t;,6000);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_3,KapWechsel_3_Text,& quot;chapter3_SLD.tga,&quot;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,&quot;ALTAR&quot;) &lt; 10000) <br> * * * *{<br> * * * * * *// задать распорядок дня<br> * * * * * *B_StartOtherRoutine(Salandril,&quot;Start&quot;); <br> * * * *};<br> * * * *// Йорген появляется у монастыря<br> * * * *B_StartOtherRoutine(Jorgen,&quot;Kloster&quot;);< 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,&quot;NW_FARM1_P ATH_CITY_SHEEP_04&quot;);<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart2,&quot;NW_FARM1_P ATH_CITY_SHEEP_04&quot;);<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart3,&quot;NW_FARM1_P ATH_CITY_SHEEP_04&quot;);<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart4,&quot;NW_FARM1_P ATH_CITY_SHEEP_01&quot;);<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart5,&quot;NW_FARM1_P ATH_CITY_SHEEP_01&quot;);<br> * * * * * *Wld_InsertNpc(OrcWarrior_Lobart6,&quot;NW_FARM1_P ATH_CITY_SHEEP_01&quot;);<br> * * * * * *// распорядок дня рабочих Лобарта<br> * * * * * *B_StartOtherRoutine(Vino,&quot;BugsThere&quot;);< br> * * * * * *B_StartOtherRoutine(LobartsBauer1,&quot;BugsThere &quot;);<br> * * * * * *B_StartOtherRoutine(LobartsBauer2,&quot;BugsThere &quot;);<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> * * * * * *// дать Рандольфу &quot;Альманах одержимости&quot;<br> * * * * * *CreateInvItems(Randolph,ITWR_DementorObsessionBoo k_MIS,1);<br> * * * * * *// Рандольф курит болотник<br> * * * * * *B_StartOtherRoutine(Randolph,&quot;Obsessed&quot; );<br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterNW_Kapitel4 = TRUE;<br> * *};<br> * *// если Тальбин не перешел за перевал<br> * *if(Talbin_FollowsThroughPass == LOG_RUNNING)<br> * *{<br> * * * *// вставить Тальбина<br> * * * *Wld_InsertNpc(VLK_4132_Talbin_NW,&quot;LEVELCHANG E&quot;);<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,&quot;XardasWeg&quot;) ;<br> * * * *// если Саландрил находится ближе 100м от алтаря<br> * * * *if(Npc_GetDistToWP(Salandril,&quot;ALTAR&quot;) &lt; 10000) <br> * * * *{<br> * * * * * *// задать распорядок дня<br> * * * * * *B_StartOtherRoutine(Salandril,&quot;Start&quot;); <br> * * * *};<br> * * * *// если Секоб жив<br> * * * *if(Npc_IsDead(Sekob) == FALSE) *<br> * * * *{<br> * * * * * *// Роси ушла от Секоба<br> * * * * * *B_StartOtherRoutine(Rosi,&quot;FleeFromSekob&quot ;);<br> * * * * * *// Тилл ушел от Секоба<br> * * * * * *B_StartOtherRoutine(Till,&quot;FleeFromSekob&quot ;);<br> * * * * * *// установить флаг<br> * * * * * *Rosi_FleeFromSekob_Kap5 = TRUE;<br> * * * *};<br> * * * *// если Горн вернулся<br> * * * *if(GornDJG_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Горна<br> * * * * * *Wld_InsertNpc(PC_Fighter_NW_nach_DJG,&quot;Bigfar m&quot;);<br> * * * *};<br> * * * *// если Ангар вернулся<br> * * * *if(DJG_Angar_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Ангара<br> * * * * * *Wld_InsertNpc(DJG_705_Angar_NW,&quot;Bigfarm&quot ;);<br> * * * *};<br> * * * *// респавн живности, вставка Марио и предметов<br> * * * *//!!!!!!<br> * * * *// если ГГ паладин<br> * * * *if(hero.guild == GIL_PAL)<br> * * * *{<br> * * * * * *// вставить Доспехи паладина<br> * * * * * *Wld_InsertItem(ItAr_PAl_H,&quot;FP_ITEM_PALFINALA RMOR&quot;);<br> * * * * * *// вставить Рунический камень<br> * * * * * *Wld_InsertItem(ItMi_RuneBlank,&quot;FP_NW_ITEM_LI BRARY_SEAMAP&quot;); * * <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> * * * * * * * *// дать Секобу &quot;Альманах одержимости&quot;<br> * * * * * * * *CreateInvItems(Sekob,ITWR_DementorObsessionBook_M IS,1);<br> * * * * * * * *// Секоб курит болотник<br> * * * * * * * *B_StartOtherRoutine(Sekob,&quot;Obsessed&quot;); <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,&quot;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,&quot;ch<br>apter_01.wav&quo t;,6000);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *IntroduceChapter(KapWechsel_5,KapWechsel_5_Text,& quot;chapter5_DJG.tga,&quot;ch<br>apter_01.wav&quo t;,6000);<br> * * * *};<br> * * * *// установить флаг<br> * * * *EnterNW_Kapitel5 = TRUE;<br> * *};<br> * *// выполняется при каждом входе в Новый мир в Главе 5<br> * *// если ГГ впустил орков в крепость и охрана не покинула корабль<br> * *if(MIS_OCGateOpen == TRUE) &amp;&amp; (Pal_Schiffswache_Exchange_onetime == FALSE)<br> * *{<br> * * * *// охрана покидает корабль<br> * * * *B_StartOtherRoutine(Pal_212_Schiffswache,&quot;Sh ipFree&quot;);<br> * * * *B_StartOtherRoutine(Pal_213_Schiffswache,&quot;Sh ipFree&quot;);<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,&quot;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 &gt;= 1) * { B_ENTER_NEWWORLD_Kapitel_1(); };<br> * *if (Kapitel &gt;= 2) * { B_ENTER_NEWWORLD_Kapitel_2(); };<br> * *if (Kapitel &gt;= 3) * { B_ENTER_NEWWORLD_Kapitel_3(); };<br> * *if (Kapitel &gt;= 4) * { B_ENTER_NEWWORLD_Kapitel_4(); };<br> * *if (Kapitel &gt;= 5) * { B_ENTER_NEWWORLD_Kapitel_5(); };<br> * *if (Kapitel &gt;= 6) * { B_ENTER_NEWWORLD_Kapitel_6(); };<br> * *// задать текущий уровень<br> * *CurrentLevel = NEWWORLD_ZEN; <br> * *// инициализация глобальных НПС (уже было, можно удалить)<br> * *B_InitNpcGlobals();<br>};<br><br>

10.08.2005 13:00

Re: Уроки скриптологии
 
2WSA:<br>
Цитата:

На мой взгляд, болванка очень удобна для новичков, т.к. файлов меньше и скорость компиляции высокая. Вполне подойдет для тех, кто делает моды, а не аддоны.
<br>&quot;Скриптовая болванка&quot; хороша, но не в таком же виде, в ней необходимо было поместить все подробные комментарии из Уроков скриптологии (или использовать файлы из них). Первое её предназначение - создать базу скриптов, которая затем расширяется и модернизируется под свои нужды, а без подробных комментариев с ней работать очень трудно, если сам не знаешь всех скриптовых особенностей. Но пока всё равно &quot;плюс&quot;. &nbsp;;)

11.08.2005 14:35

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,&quot;FP_ITEM_XARDASALTE RTURM_01&quot;);<br> * * * *// если ГГ маг Огня<br> * * * *if(hero.guild == GIL_KDF)<br> * * * *{<br> * * * * * *// вставить Рунический камень<br> * * * * * *Wld_InsertItem(ItMi_RuneBlank,&quot;FP_ITEM_XARDA SALTERTURM_02&quot;);<br> * * * *}<br> * * * *else // иначе<br> * * * *{<br> * * * * * *// вставить кусок Руды<br> * * * * * *Wld_InsertItem(ItMi_Nugget,&quot;FP_ITEM_XARDASAL TERTURM_02&quot;);<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,&quot;Obsessed&quot;); <br> * * * * * *// дать Энгрому Кожу шныга<br> * * * * * *CreateInvItems(Engrom,ItAt_TalbinsLurkerSkin,1);< br> * * * * * *// если ГГ маг Огня<br> * * * * * *if(hero.guild == GIL_KDF)<br> * * * * * *{<br> * * * * * * * *// дать Энгрому &quot;Альманах одержимости&quot;<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,&quot;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,&quot;Meatbugs&quot;); <br> * * * *Wld_InsertNpc(Meatbug_Brutus1,&quot;OC_FOLTER_SHA RP&quot;); * <br> * * * *Wld_InsertNpc(Meatbug_Brutus2,&quot;OC_FOLTER_SHA RP&quot;); * <br> * * * *Wld_InsertNpc(Meatbug_Brutus3,&quot;OC_FOLTER_SHA RP&quot;); * <br> * * * *Wld_InsertNpc(Meatbug_Brutus4,&quot;OC_FOLTER_SHA RP&quot;); * <br> * * * *// вставка Сильвио<br> * * * *Wld_InsertNpc(DJG_700_Sylvio,&quot;OC1&quot;);<br > * * * *// если Булко ушел в Миненталь<br> * * * *if(SLD_Bullco_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Булко<br> * * * * * *Wld_InsertNpc(DJG_701_Bullco,&quot;OC1&quot;);<br > * * * *};<br> * * * *// если Род ушел в Миненталь<br> * * * *if(SLD_Rod_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Рода<br> * * * * * *Wld_InsertNpc(DJG_702_Rod,&quot;OC1&quot;);<br> * * * *};<br> * * * *// если Сайфер ушел в Миненталь<br> * * * *if(SLD_Cipher_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Сайфера<br> * * * * * *Wld_InsertNpc(DJG_703_Cipher,&quot;OC1&quot;);<br > * * * *};<br> * * * *// если Горн ушел в Миненталь<br> * * * *if(SLD_Gorn_is_alive == TRUE)<br> * * * *{<br> * * * * * *// вставить Горна<br> * * * * * *Wld_InsertNpc(PC_Fighter_DJG,&quot;OC1&quot;);<br > * * * *};<br> * * * *// вставить других охотников на драконов<br> * * * *Wld_InsertNpc(DJG_705_Angar,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_708_Kurgan,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_709_Rethon,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_710_Kjorn,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_711_Godar,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_712_Hokurn,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_713_Biff,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_714_Jan,&quot;OC1&quot;); <br> * * * *Wld_InsertNpc(DJG_715_Ferros,&quot;OC1&quot;); <br> * * * *// вставить Ур-Шака<br> * * * *Wld_InsertNpc(NONE_110_Urshak,&quot;WP_INTRO_FALL &quot;); <br> * * * *// респавн живности и вставка предметов<br> * * * *//!!!!!!<br> * * * *// создать тему &quot;Охотники на драконов&quot;<br> * * * *Log_CreateTopic(TOPIC_Dragonhunter,LOG_MISSION);< br> * * * *// задать статус темы<br> * * * *Log_SetTopicStatus(TOPIC_Dragonhunter,LOG_RUNNING );<br> * * * *// запись в дневник<br> * * * *B_LogEntry(TOPIC_Dragonhunter,&quot;Началась охота на драконов и она должна заманить в рудниковую долину больших авантюристов. Я могу только надеяться, что они не встанут у меня на пути.&quot;); <br> * * * *// заставка Главы 4 * * <br> * * * *IntroduceChapter(KapWechsel_4,KapWechsel_4_Text,& quot;chapter4.tga&quot;,&quot;<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,&quot;START&quot;);<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> * * * * * *// дать Брутусу &quot;Альманах одержимости&quot;<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 &gt;= 1) * { B_ENTER_OLDWORLD_Kapitel_1(); };<br> * *if (Kapitel &gt;= 2) * { B_ENTER_OLDWORLD_Kapitel_2(); };<br> * *if (Kapitel &gt;= 3) * { B_ENTER_OLDWORLD_Kapitel_3(); };<br> * *if (Kapitel &gt;= 4) * { B_ENTER_OLDWORLD_Kapitel_4(); };<br> * *if (Kapitel &gt;= 5) * { B_ENTER_OLDWORLD_Kapitel_5(); };<br> * *if (Kapitel &gt;= 6) * { B_ENTER_OLDWORLD_Kapitel_6(); };<br> * *// задать текущий уровень<br> * *CurrentLevel = OLDWORLD_ZEN;<br> * *// инициализация глобальных НПС (уже было, можно удалить)<br> * *B_InitNpcGlobals();<br> * *// если Бифф член партии ГГ и Бифф жив<br> * *if(DJG_BiffParty == TRUE) &amp;&amp; (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) &amp;&amp; (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] &gt;= 120) * * * * { kosten = 5; }<br> * * * *else if(oth.aivar[REAL_STRENGTH] &gt;= 90) * * { kosten = 4; }<br> * * * *else if(oth.aivar[REAL_STRENGTH] &gt;= 60) * * { kosten = 3; }<br> * * * *else if(oth.aivar[REAL_STRENGTH] &gt;= 30) * * { kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * *};<br> * *// если ловкость<br> * *if(attribut == ATR_DEXTERITY)<br> * *{<br> * * * *if(oth.aivar[REAL_DEXTERITY] &gt;= 120) * * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_DEXTERITY] &gt;= 90) * *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_DEXTERITY] &gt;= 60) * *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_DEXTERITY] &gt;= 30) * *{ kosten = 2; }<br> * * * *else * * * * * * * * * * * * * * * * * * * *{ kosten = 1; };<br> * *};<br> * *// если мана<br> * *if (attribut == ATR_MANA_MAX)<br> * *{ * * * <br> * * * *if(oth.aivar[REAL_MANA_MAX] &gt;= 120) * * * * { kosten = 5; }<br> * * * *else if(oth.aivar[REAL_MANA_MAX] &gt;= 90) * * { kosten = 4; }<br> * * * *else if(oth.aivar[REAL_MANA_MAX] &gt;= 60) * * { kosten = 3; }<br> * * * *else if(oth.aivar[REAL_MANA_MAX] &gt;= 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 &gt;= 1) &amp;&amp; (skill &lt;= 6)<br> * * * *{<br> * * * * * *kosten = 5;<br> * * * *};<br> * *};<br> * *// владение одноручником<br> * *if(talent == NPC_TALENT_1H)<br> * *{ * <br> * * * *if(oth.aivar[REAL_TALENT_1H] &gt;= 120) * * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_1H] &gt;= 90) * *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_1H] &gt;= 60) * *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_1H] &gt;= 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] &gt;= 120) * * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_2H] &gt;= 90) * *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_2H] &gt;= 60) * *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_2H] &gt;= 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] &gt;= 120) * * * { kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_BOW] &gt;= 90) * { kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_BOW] &gt;= 60) * { kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_BOW] &gt;= 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] &gt;= 120) * * *{ kosten = 5; }<br> * * * *else if(oth.aivar[REAL_TALENT_CROSSBOW] &gt;= 90) *{ kosten = 4; }<br> * * * *else if(oth.aivar[REAL_TALENT_CROSSBOW] &gt;= 60) *{ kosten = 3; }<br> * * * *else if(oth.aivar[REAL_TALENT_CROSSBOW] &gt;= 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>

12.08.2005 09:24

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) &amp;&amp; (GoblinGreen_Randomizer == 0)<br> * *{ * CreateInvItems(slf,ItMi_SilverRing,1); *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) &amp;&amp; (GoblinGreen_Randomizer &lt;= 5)<br> * *{ * CreateInvItems(slf,ItPl_Mushroom_01,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) &amp;&amp; (GoblinGreen_Randomizer &lt;= 15)<br> * *{ * CreateInvItems(slf,Itmi_Gold,5); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) &amp;&amp; (GoblinGreen_Randomizer &lt;= 30)<br> * *{ * CreateInvItems(slf,ItFo_Fish,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) &amp;&amp; (GoblinGreen_Randomizer &lt;= 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) &amp;&amp; (GoblinBlack_Randomizer == 0)<br> * *{ * CreateInvItems(slf,ItMi_GoldRing,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) &amp;&amp; (GoblinBlack_Randomizer &lt;= 5)<br> * *{ * CreateInvItems(slf,ItFo_Fish,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) &amp;&amp; (GoblinBlack_Randomizer &lt;= 15)<br> * *{ * CreateInvItems(slf,Itmi_Gold,10); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) &amp;&amp; (GoblinBlack_Randomizer &lt;= 30)<br> * *{ * CreateInvItems(slf,ItPl_Mushroom_02,1); }<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) &amp;&amp; (GoblinBlack_Randomizer &lt;= 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) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (Orc_Randomizer &lt;= 7)<br> * *{ * <br> * * * *CreateInvItems(slf,ItMI_Gold,9);<br> * *};<br> * *// шаман орков<br> * *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) &amp;&amp; (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) &amp;&amp; (Orc_Randomizer == 1)<br> * *{<br> * * * *CreateInvItems(slf,ItPo_Mana_02,2);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (Orc_Randomizer &lt;= 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) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (Orc_Randomizer &lt;= 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) &amp;&amp; (Orc_Randomizer == 6)<br> * *{<br> * * * *CreateInvItems(slf,ItAt_WargFur,1);<br> * *}<br> * *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) &amp;&amp; (Orc_Randomizer &lt;= 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) &amp;&amp; (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) &amp;&amp; (Orc_Randomizer &lt;= 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) &amp;&amp; (Orc_Randomizer &lt;= 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) &amp;&amp; (Orc_Randomizer &lt;= 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) &amp;&amp; (Orc_Randomizer &lt;= 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 -&gt; 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 &gt; 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 + &quot; золотых передано&quot;<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 + &quot; дают&quot;<br> * * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_gegeben);<br> * * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemGiven,FONT_ScreenSmall,2);<br> * * * * * *} * <br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *// вывод строки: amount + &quot; предметов передано&quot; + &quot; (&quot; + itemname + &quot;)&quot;<br> * * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsGegeb en);<br> * * * * * * * *concatText = ConcatStrings(concatText,&quot; (&quot;);<br> * * * * * * * *concatText = ConcatStrings(concatText,itemname); <br> * * * * * * * *concatText = ConcatStrings(concatText,&quot;)&quot;);<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 + &quot; золотых принято&quot;<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 + &quot; получают&quot;<br> * * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_erhalten);<br> * * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemTaken,FONT_ScreenSmall,2);<br> * * * * * *} * <br> * * * * * *else<br> * * * * * *{<br> * * * * * * * *// вывод строки: amount + &quot; предметов принято&quot; + &quot; (&quot; + itemname + &quot;)&quot;<br> * * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsErhal ten);<br> * * * * * * * *concatText = ConcatStrings(concatText,&quot; (&quot;);<br> * * * * * * * *concatText = ConcatStrings(concatText,itemname); <br> * * * * * * * *concatText = ConcatStrings(concatText,&quot;)&quot;);<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> * *// вывод текста: &quot;Опыт + &quot; + 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 &gt;= 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> * * * *// вывод строки: &quot;Следующий уровень!&quot;<br> * * * *PrintScreen(PRINT_LevelUp,-1,YPOS_LevelUp,FONT_Screen,2);<br> * * * *// музычка<br> * * * *Snd_Play(&quot;LevelUp&quot;);<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,&quot;ADW_PIRAT ECAMP_GREG&quot;); * <br> * * * *// сменить распорядки дня<br> * * * *B_StartOtherRoutine(Bill,&quot;GREGISBACK&quot;); * * * * * * // Билл<br> * * * *B_StartOtherRoutine(Morgan,&quot;GREGISBACK&quot; ); * * * * * // Морган<br> * * * *B_StartOtherRoutine(AlligatorJack,&quot;GREGISBAC K&quot;); * *// Аллигатор Джек<br> * * * *// вставить расчленителей в каньон<br> * * * *Wld_InsertNpc(CanyonRazor07,&quot;ADW_CANYON_MINE 1_01&quot;);<br> * * * *Wld_InsertNpc(CanyonRazor08,&quot;ADW_CANYON_PATH _TO_LIBRARY_07A&quot;);<br> * * * *Wld_InsertNpc(CanyonRazor09,&quot;ADW_CANYON_PATH _TO_LIBRARY_36&quot;);<br> * * * *Wld_InsertNpc(CanyonRazor10,&quot;ADW_CANYON_PATH _TO_MINE2_04&quot;);<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>

14.08.2005 09:10

Re: Уроки скриптологии
 
Новая версия скриптовой болванки 0,4 Мб<br><br>Почти все d-файлы заменены на закомментированные Vam'ом, остальные руcсифицированы / прокомментированы.<br>Убраны все не использующиеся файлы и вся болванка дополнительно перебрана.<br>Глюков и ошибок не обнаружено, при использовании компилятора 2.12 убраны все варнинги.<br><br>---<br>2Killer-XXX:
Цитата:

Хотелось бы увидеть описание ф-ий отвечающих за отношение людей в новой броне.
Сори, не совсем понял, о каких именно функциях идет речь. Отношения людей в зависимости от одежды проверяются в файлах <br>AI\HUMAN\C_Human\C_PlayerIsFakeBandit.d<br>AI\ HUMAN\C_Human\C_PlayerIsFakePirate.d<br>AI\HUMAN\C _Human\C_PlayerHasFakeGuild.d<br>и они уже расписаны в этой теме.

15.08.2005 08:56

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&quot;,&quot;<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&quot;,&quot;<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 -&gt; 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) &amp;&amp; !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> * *// вывод текста: &quot;Ваш дневник дополнен&quot;<br> * *PrintScreen(PRINT_NewLogEntry,-1,YPOS_LOGENTRY,FONT_ScreenSmall,2);<br> * *// музычка<br> * *Snd_Play(&quot;LogEntry&quot;);<br>};<br><br><br> * *21. ГГ находит тайник Агона.<br><br>Файл B_MageCaveTrigger.d<br><br>// ************************************************** **************<br>// ГГ находит тайник Агона<br>// Примечание: Триггерная функция - задана Спейсером<br>// ************************************************** **************<br><br>func void B_MAGECAVETRIGGER() * <br>{<br> * *// если Магический голем жив и выполняется квест &quot;Испытание огня&quot;<br> * *if((Npc_IsDead(MagicGolem) == FALSE) &amp;&amp; (MIS_SCHNITZELJAGD == LOG_RUNNING))<br> * *{<br> * * * *// если Агон существует и жив<br> * * * *if(Hlp_IsValidNpc(AGON) &amp;&amp; !Npc_IsDead(AGON))<br> * * * *{<br> * * * * * *// телепортация Агона к тайнику<br> * * * * * *AI_Teleport(AGON,&quot;NW_TROLLAREA_PATH_02&quot; );<br> * * * * * *// задать новый распорядок дня Агона<br> * * * * * *Npc_ExchangeRoutine(Agon,&quot;GOLEMLIVES&quot;); <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,&quot;RODWEG&quot;);< 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 &gt;= 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> * * * *// вывод текста: &quot;Сила + &quot; + 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> * * * *// если ловкость &gt;= 90 и НПС не владеет акробатикой<br> * * * *if(oth.attribute[ATR_DEXTERITY] &gt;= 90) &amp;&amp; (Npc_GetTalentSkill(oth,NPC_TALENT_ACROBAT) == 0)<br> * * * *{<br> * * * * * *// научить акробатике<br> * * * * * *Npc_SetTalentSkill(oth,NPC_TALENT_ACROBAT,1);<br> * * * * * *// вывод текста: &quot;Акробатика-Бонус!&quot;<br> * * * * * *PrintScreen(PRINT_Addon_AcrobatBonus,-1,55,FONT_Screen,2);<br> * * * *};<br> * * * *// вывод текста: &quot;Ловкость + &quot; + 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> * * * *// вывод текста: &quot;Мана + &quot; + 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> * * * *// вывод текста: &quot;Жизнь + &quot; + 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 -&gt; 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) &amp;&amp; !Npc_IsDead(npc))<br> * *{ * <br> * * * *// сброс флагов<br> * * * *npc.flags = 0;<br> * * * *// телепортировать НПС на кладбище<br> * * * *AI_Teleport(npc,&quot;TOT&quot;);<br> * * * *// задать распорядок дня загробной жизни<br> * * * *B_StartOtherRoutine(npc,&quot;TOT&quot;);<br> * * * *// убить НПС<br> * * * *Npc_ChangeAttribute(npc,ATR_HITPOINTS,-npc.attribute[ATR_HITPOINTS_MAX]);<br> * * * *// и для надежности ещё раз послать на кладбище<br> * * * *AI_Teleport(npc,&quot;TOT&quot;);<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) &amp;&amp; !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>

15.08.2005 16:47

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) &amp;&amp; (attrib != ATR_DEXTERITY) &amp;&amp; (attrib != ATR_MANA_MAX)<br> * *{<br> * * * *Print(&quot;*** ERROR: Wrong Parameter ***&quot;);<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 &gt;= teacherMAX)<br> * *{<br> * * * *// вывод текста: &quot;Максимум учителя составляет &quot; + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ обучен по максимуму&quot;<br> * * * *// Примечание: корявый перевод, можно заменить на подходящий.<br> * * * *B_Say(slf,oth,&quot;$NOLEARNYOUREBETTER&quot;);<b r> * * * *return FALSE;<br> * *};<br> * *// если новое значение атрибута будет выше способности учителя<br> * *if((realAttribute + points) &gt; teacherMAX)<br> * *{<br> * * * *// вывод текста: &quot;Максимум учителя составляет &quot; + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;учитель не способен обучить ГГ&quot;<br> * * * *// Примечание: корявый перевод, можно заменить на подходящий.<br> * * * *B_Say(slf,oth,&quot;$NOLEARNOVERPERSONALMAX&quot; );<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLP,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *// Примечание: корявый перевод, можно заменить на подходящий.<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<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) &amp;&amp; (talent != NPC_TALENT_2H) &amp;&amp; (talent != NPC_TALENT_BOW) &amp;&amp; (talent != NPC_TALENT_CROSSBOW)<br> * *{<br> * * * *Print (&quot;*** ERROR: Wrong Parameter ***&quot;);<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 &gt;= teacherMAX)<br> * *{<br> * * * *// вывод текста: &quot;Максимум учителя составляет &quot; + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ обучен по максимуму&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNYOUREBETTER&quot;);<b r> * * * *return FALSE;<br> * *};<br> * *// если новое значение навыка будет выше способности учителя<br> * *if((realHitChance + percent) &gt; teacherMAX)<br> * *{<br> * * * *// вывод текста: &quot;Максимум учителя составляет &quot; + teacherMAX<br> * * * *concatText = ConcatStrings(PRINT_NoLearnOverPersonalMAX,IntToSt ring(teacherMAX));<br> * * * *PrintScreen(concatText,-1,-1,FONT_SCREEN,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;учитель не способен обучить ГГ&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNOVERPERSONALMAX&quot; );<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLP,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<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] &gt;= (oth.aivar[REAL_TALENT_2H] + 30))<br> * * * *{<br> * * * * * *// повысить навык двуручника<br> * * * * * *B_RaiseFightTalent(oth,NPC_TALENT_2H,percent);<br > * * * * * *// вывод текста: &quot;Улучшить: Борьба одно- и двуручным оружием&quot;<br> * * * * * *PrintScreen(PRINT_Learn1H_and_2H,-1,-1,FONT_Screen,2);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *// вывод текста: &quot;Улучшить: Одноручное оружие&quot;<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] &gt;= (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] &gt;= (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] &gt;= (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 &lt; 1) ¦¦ (circle &gt; 6)<br> * *{<br> * * * *Print(&quot;*** ERROR: Wrong Parameter ***&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLP,-1,-1,FONT_Screen,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_MAGE,circle);<b r> * *// создать в дневнике тему &quot;Круги магии&quot;<br> * *Log_CreateTopic(TOPIC_TalentMagicCircle,LOG_NOTE) ;<br> * *// сделать запись <br> * *B_LogEntry(TOPIC_TalentMagicCircle,&quot;Доступны е мне магические руны разделены на Круги. Формулами заклинаний более высокого Круга, чем доступный мне, я не владею.&quot;);<br> * *// круг 1<br> * *if(circle == 1)<br> * *{<br> * * * *// вывод текста: &quot;Обучение: 1 Круг магии&quot;<br> * * * *PrintScreen(PRINT_LearnCircle_1,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,&quot;Заклинан ия 1 магического Круга: свет, огненная стрела, молния, лечить легкое ранение и вызвать скелет гоблина.&quot;);<br> * * * *return TRUE;<br> * *};<br> * *// круг 2<br> * *if(circle == 2)<br> * *{<br> * * * *// вывод текста: &quot;Обучение: 2 Круг магии&quot;<br> * * * *PrintScreen(PRINT_LearnCircle_2,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,&quot;Заклинан ия 2 магического Круга: огненный шар, ледяная стрела, вызвать волка, порыв ветра и сон.&quot;);<br> * * * *return TRUE;<br> * *};<br> * *// круг 3<br> * *if (circle == 3)<br> * *{<br> * * * *// вывод текста: &quot;Обучение: 3 Круг магии&quot;<br> * * * *PrintScreen(PRINT_LearnCircle_3,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,&quot;Заклинан ия 3 магического Круга: лечить среднее ранение, шаровая молния, огненная буря, вызвать скелет, страх и ледяная глыба.&quot;);<br> * * * *return TRUE;<br> * *};<br> * *// круг 4<br> * *if (circle == 4)<br> * *{<br> * * * *// вывод текста: &quot;Обучение: 4 Круг магии&quot;<br> * * * *PrintScreen(PRINT_LearnCircle_4,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,&quot;Заклинан ия 4 магического Круга: удар молнии, вызвать голема, уничтожить нежить и большой огненный шар.&quot;);<br> * * * *return TRUE;<br> * *};<br> * *// круг 5<br> * *if (circle == 5)<br> * *{<br> * * * *// вывод текста: &quot;Обучение: 5 Круг магии&quot;<br> * * * *PrintScreen(PRINT_LearnCircle_5,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,&quot;Заклинан ия 5 магического Круга: большая огненная буря, ледяная волна, вызвать демона и лечить сильное ранение.&quot;);<br> * * * *return TRUE;<br> * *};<br> * *// круг 6<br> * *if (circle == 6)<br> * *{<br> * * * *// вывод текста: &quot;Обучение: 6 Круг магии&quot;<br> * * * *PrintScreen(PRINT_LearnCircle_6,-1,-1,FONT_Screen,2);<br> * * * *// сделать запись<br> * * * *B_LogEntry(TOPIC_TalentMagicCircle,&quot;Заклинан ия 6 магического Круга: огненный дождь, дым смерти, волна смерти, армия тьмы и уменьшить монстра.&quot;);<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 &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему &quot;Напитки&quot;<br> * *Log_CreateTopic(TOPIC_TalentAlchemy,LOG_NOTE);<br > * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Для приготовления напитка мне нужна лабороторная колба и некоторые ингредиенты для желаемого напитка. С помощью этих ингредиентов на алхимическом столе можно изготовить желаемый напиток.&quot;);<br> * *// если Лечебная эссенция<br> * *if(potion == POTION_Health_01)<br> * *{<br> * * * *// освоить навык<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Health_01] = TRUE; <br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЛЕЧЕБНАЯ ЭССЕНЦИЯ': 2 лечебных растения и 1 полевое растение.&quot;);<br> * *};<br> * *// для остальных напитков аналогично<br> * *if(potion == POTION_Health_02)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Health_02] = TRUE; <br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЛЕЧЕБНЫЙ ЭКСТРАКТ': 2 лечебные травы и 1 полевое растение.&quot;);<br> * *};<br> * *if(potion == POTION_Health_03)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Health_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЛЕЧЕБНЫЙ ЭЛИКСИР': 2 лечебных корня и 1 полевое растение.&quot;);<br> * *};<br> * *if(potion == POTION_Mana_01)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Mana_01] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЭССЕНЦИЯ МАНЫ': 2 огненные крапивы и 1 полевое растение.&quot;);<br> * *};<br> * *if(potion == POTION_Mana_02)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Mana_02] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЭКСТРАКТ МАНЫ': 2 огненные травы и 1 полевое растение.&quot;);<br> * *};<br> * *if(potion == POTION_Mana_03)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Mana_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЭЛИКСИР МАНЫ': 2 огненных корня и 1 полевое растение.&quot;);<br> * *};<br> * *if(potion == POTION_Speed)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Speed] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'НАПИТОК УСКОРЕНИЯ': 1 трава глорха и 1 полевое растение.&quot;);<br> * *};<br> * *if(potion == POTION_Perm_STR)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_STR] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЭЛИКСИР СИЛЫ': 1 драконий корень и 1 коронное растение.&quot;);<br> * *};<br> * *if(potion == POTION_Perm_DEX)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_DEX] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЭЛИКСИР ЛОВКОСТИ': 1 ягода гоблина и 1 коронное растение.&quot;);<br> * *};<br> * *if(potion == POTION_Perm_Mana)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_Mana] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЭЛИКСИР ДУХА': 1 огненный корень и 1 коронное растение.&quot;);<br> * *};<br> * *if(potion == POTION_Perm_Health)<br> * *{<br> * * * *PLAYER_TALENT_ALCHEMY[POTION_Perm_Health] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAlchemy,&quot;Ингредиенты для напитка 'ЭЛИКСИР ЖИЗНИ': 1 лечебный корень и 1 коронное растение.&quot;);<br> * *};<br> * *// вывод текста: &quot;Обучение: Приготовление напитка&quot;<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 &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему &quot;Язык строителей&quot;<br> * *Log_CreateTopic(TOPIC_Language,LOG_NOTE);<br> * *// первый уровень языка<br> * *if(Language == LANGUAGE_1)<br> * *{<br> * * * *// освоить навык<br> * * * *PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_1] = TRUE;<br> * * * *// сделать запись &quot;Я владею Языком Крестьян. Это был обычный язык Строителей.&quot;<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> * * * *// запись &quot;Я владею Языком Воинов.&quot;<br> * * * *B_LogEntry(TOPIC_Language,LogText_Addon_Language_ 2);<br> * *}; *<br> * *if(Language == LANGUAGE_3)<br> * *{<br> * * * *PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_3] = TRUE;<br> * * * *// сделать запись &quot;Я владею Языком Жрецов.&quot;<br> * * * *B_LogEntry(TOPIC_Language,LogText_Addon_Language_ 3);<br> * *}; *<br> * *// вывод текста: &quot;Учится: язык строителей&quot;<br> * *PrintScreen(PRINT_LearnForeignLanguage,-1,-1,FONT_Screen,2);<br> * *// отобразить в окне характеристик<br> * *Npc_SetTalentSkill(oth,NPC_TALENT_FOREIGNLANGUAGE ,1);<br> * *return TRUE;<br>};<br><br>

16.08.2005 11:27

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 &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему &quot;Руны&quot;<br> * *Log_CreateTopic(TOPIC_TalentRunes,LOG_NOTE);<br> * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentRunes,&quot;Для создания магической руны, кроме необходимого заклинания мне еще нужны некоторые составляющие. С помощью этих составляющих и рунического камня я могу создать необходимую руну на руническом столе.&quot;);<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,&quot;Составляющие для руны 'СВЕТ': 1 золотая монета.&quot;);<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,&quot;Составляющие для руны 'ОГНЕННАЯ СТРЕЛА': 1 сера.&quot;);<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,&quot;Составляющие для руны 'ЛЕДЯНАЯ СТРЕЛА': 1 кварц.&quot;);<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,&quot;Составляющие для руны 'ЛЕЧИТЬ ЛЕГКОЕ РАНЕНИЕ': 1 лечебное растение.&quot;);<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,&quot;Составляющие для руны 'ВЫЗВАТЬ СКЕЛЕТ ГОБЛИНА': 1 кость гоблина.&quot;);<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,&quot;Составляющие для руны 'ОГНЕННЫЙ ШАР': 1 смола.&quot;);<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,&quot;Составляющие для руны 'МОЛНИЯ': 1 горный хрусталь.&quot;);<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,&quot;Составляющие для руны 'ВЫЗВАТЬ ВОЛКА': 1 шкура волка.&quot;);<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,&quot;Составляющие для руны 'ПОРЫВ ВЕТРА': 1 уголь.&quot;);<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,&quot;Составляющие для руны 'СОН': 1 болотник.&quot;);<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,&quot;Составляющие для руны 'ЛЕЧИТЬ СРЕДНЕЕ РАНЕНИЕ': 1 лечебная трава.&quot;);<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,&quot;Составляющие для руны 'УДАР МОЛНИИ': 1 горный хрусталь и 1 кварц.&quot;);<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,&quot;Составляющие для руны 'БОЛЬШОЙ ОГНЕННЫЙ ШАР': 1 сера и 1 смола.&quot;);<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,&quot;Составляющие для руны 'ВЫЗВАТЬ СКЕЛЕТ': 1 кость скелета.&quot;);<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,&quot;Составляющие для руны 'СТРАХ': 1 черный жемчуг.&quot;);<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,&quot;Составляющие для руны 'ЛЕДЯНАЯ ГЛЫБА': 1 кварц и 1 аквамарин.&quot;);<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,&quot;Составляющие для руны 'ШАРОВАЯ МОЛНИЯ': 1 сера и 1 горный хрусталь.&quot;);<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,&quot;Составляющие для руны 'ВЫЗВАТЬ ГОЛЕМА': 1 сердце каменного голема.&quot;);<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,&quot;Составляющие для руны 'УНИЧТОЖИТЬ НЕЖИТЬ': 1 святая вода.&quot;);<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,&quot;Составляющие для руны 'БОЛЬШАЯ ОГНЕННАЯ БУРЯ': 1 сера и 1 огненный язык.&quot;);<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,&quot;Составляющие для руны 'ОГНЕННАЯ БУРЯ': 1 сера и 1 смола.&quot;);<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,&quot;Составляющие для руны 'ЛЕДЯНАЯ ВОЛНА': 1 кварц и 1 аквамарин.&quot;);<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,&quot;Составляющие для руны 'ВЫЗВАТЬ ДЕМОНА': 1 сердце демона.&quot;);<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,&quot;Составляющие для руны 'ЛЕЧИТЬ СИЛЬНОЕ РАНЕНИЕ': 1 лечебный корень.&quot;);<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,&quot;Составляющие для руны 'ОГНЕННЫЙ ДОЖДЬ': 1 смола и 1 огненный язык.&quot;);<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,&quot;Составляющие для руны 'ДЫМ СМЕРТИ': 1 уголь и 1 черный жемчуг.&quot;);<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,&quot;Составляющие для руны 'ВОЛНА СМЕРТИ': 1 кость скелета и 1 черный жемчуг.&quot;);<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,&quot;Составляющие для руны 'АРМИЯ МРАКА': 1 кость скелета, 1 черный жемчуг, 1 сердце каменного голема и 1 сердце демона.&quot;);<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,&quot;Составляющие для руны 'УМЕНЬШИТЬ МОНСТРА': 1 кость гоблина и 1 клык тролля.&quot;);<br> * *};<br> * *if(spell == SPL_Whirlwind)<br> * *{<br> * * * *PLAYER_TALENT_RUNES[SPL_Whirlwind] = TRUE;<br> * * * *CreateInvItems(ScrollTrader,ItSc_Whirlwind,1);<br > * * * *// &quot;Ингредиенты для руны &quot;Смерч&quot;: 1 крыло&quot;<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 > * * * *// &quot;Ингредиенты для руны &quot;Водный кулак&quot;: 1 Аквамарин и 1 горный кристалл&quot;<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> * * * *// &quot;Ингредиенты для руны &quot;Ледяное копье&quot;: 1 Ледниковый кварц&quot;<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> * * * *// &quot;Ингредиенты для руны &quot;Гейзер&quot;: 1 Аквамарин&quot;<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> * * * *// &quot;Ингредиенты для руны &quot;Непогода&quot;: 1 ледниковый кварц и 1 крыло&quot;<br> * * * *B_LogEntry(TOPIC_TalentRunes,Log_Text_Addon_Talen tRune_Thunderstorm);<br> * *};<br> * *// вывод текста: &quot;Обучение: Создание руны&quot;<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 &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему &quot;Ковка&quot;<br> * *Log_CreateTopic(TOPIC_TalentSmith,LOG_NOTE);<br> * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentSmith,&quot;Для того, чтобы ковать оружие, мне необходимо немного сырой стали. Сначала я должен накалить сталь на огне, а затем придать необходимую форму. Для качественного оружия необходимы также некоторые составляющие, которые придадут оружию особенные свойства.&quot;);<br> * *// выучить соответствующее умение<br> * *if(waffe == WEAPON_Common)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_Common] = TRUE; *<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Для простого самокованного меча не требуется никаких дополнительных составляющих.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Special_01)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_01] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Добавление 1 части руды позволяет выковать меч: 'ДЛИННЫЙ РУДНЫЙ МЕЧ'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_2H_Special_01)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_01] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Добавление 2 части руды позволяет выковать меч: 'РУДНЫЙ ДВУРУЧНИК'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Special_02)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_02] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Добавление 2 части руды позволяет выковать меч: 'РУДНЫЙ МЕЧ ЧУДОВИЩА'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_2H_Special_02)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_02] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Добавление 3 части руды позволяет выковать меч: 'ТЯЖЕЛЫЙ ДВУРУЧНИК'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Special_03)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Добавление 3 части руды позволяет выковать меч: 'РУДНЫЙ БОЕВОЙ КЛИНОК'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_2H_Special_03)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_03] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Добавление 4 части руды позволяет выковать меч: 'ТЯЖЕЛЫЙ РУДНЫЙ БОЕВОЙ КЛИНОК'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Special_04)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Special_04] = TRUE; * <br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Если я добавлю 4 части руды и 5 частей крови дракона, то я выкую 'РУДНОГО УБИЙЦУ ДРАКОНОВ'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_2H_Special_04)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_2H_Special_04] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Если я добавлю 5 частей руды и 5 частей крови дракона, то я выкую 'БОЛЬШОГО РУДНОГО УБИЙЦУ ДРАКОНОВ'.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_01)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_01] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Я могу теперь выковать благородный меч.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_02)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_02] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Я могу теперь выковать благородный длинный меч.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_03)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_03] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Я могу теперь даже выковать рубиновый клинок.&quot;);<br> * *};<br> * *if(waffe == WEAPON_1H_Harad_04)<br> * *{<br> * * * *PLAYER_TALENT_SMITH[WEAPON_1H_Harad_04] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentSmith,&quot;Харальд научил меня ковать &quot;Эль Бастардо&quot; - одно из лучших одноручных оружий!&quot;);<br> * *};<br> * *// вывод текста: &quot;Обучение: Кузнечное дело&quot;<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 &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему &quot;Животные&quot;<br> * *Log_CreateTopic(TOPIC_TalentAnimalTrophy,LOG_NOTE );<br> * *// сделать запись<br> * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;Теперь я умею:&quot;);<br> * *// выучить соответствующее умение<br> * *if(trophy == TROPHY_Teeth)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Teeth] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...выры вать зубы.&quot;);<br> * *};<br> * *if(trophy == TROPHY_Claws)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...лома ть когти.&quot;);<br> * *};<br> * *if(trophy == TROPHY_Fur)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Fur] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...сним ать шкуры.&quot;);<br> * *};<br> * *if(trophy == TROPHY_ReptileSkin)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ReptileSkin] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;... Сдирать кожу с рептилий&quot;);<br> * *};<br> * *if(trophy == TROPHY_Heart)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Heart] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...выре зать сердца у големов и демонов.&quot;);<br> * *};<br> * *if(trophy == TROPHY_ShadowHorn)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ShadowHorn] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...отла мывать рог у мракорисов.&quot;);<br> * *};<br> * *if(trophy == TROPHY_FireTongue)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_FireTongue] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...выре зать огненный язык у огненных ящериц.&quot;);<br> * *};<br> * *if(trophy == TROPHY_BFWing)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFWing] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...отре зать крылья у кровяных шершней.&quot;);<br> * *};<br> * *if(trophy == TROPHY_BFSting)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFSting] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...выре зать жало у кровяных шершней.&quot;);<br> * *};<br> * *if(trophy == TROPHY_Mandibles)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Mandibles] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...выре зать жвало у ползунов и полевых жуков.&quot;);<br> * *};<br> * *if(trophy == TROPHY_CrawlerPlate)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_CrawlerPlate] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...сним ать панцирь с ползунов.&quot;);<br> * *};<br> * *if(trophy == TROPHY_DrgSnapperHorn)<br> * *{<br> * * * *PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DrgSnapperHorn] = TRUE;<br> * * * *B_LogEntry(TOPIC_TalentAnimalTrophy,&quot;...отла мывать рог у остеров.&quot;);<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,&quot;...сним ать чашую с драконов.&quot;);<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,&quot;...сцеж ивать кровь с драконов.&quot;);<br> * *};<br> * *// вывод текста: &quot;Обучение: Разделка зверей&quot;<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>

17.08.2005 14:49

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,&quot;T_PRACTICEMAGIC5&quot;); <br> * *Wld_PlayEffect(&quot;spellFX_HealShrine&quot;,her o,hero,0,0,0,FALSE);<br> * *Wld_PlayEffect(&quot;spellFX_INCOVATION_BLUE&quot ;,hero,hero,0,0,0,FALSE);<br> * *Snd_Play(&quot;WSP_Dead_A1&quot;);<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 &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// использовать очки обучения<br> * *oth.lp = oth.lp - kosten;<br> * *// создать в дневнике тему &quot;Ищущий Огонек&quot;<br> * *Log_CreateTopic(TOPIC_WispDetector,LOG_NOTE);<br> * *// сделать запись &quot;Мой Огонек может искать для меня следующие вещи:&quot;<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> * * * *// &quot;Оружие дальнего боя и амуниция&quot;<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> * * * *// &quot;Золото, ключи и предметы обихода&quot;<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> * * * *// &quot;Руны и свитки&quot;<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> * * * *// &quot;Кольца и амулеты&quot;<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> * * * *// &quot;Еда и растения&quot;<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> * * * *// &quot;Магические и другие напитки&quot;<br> * * * *B_LogEntry(TOPIC_WispDetector,LogText_Addon_WispL earned_POTIONS);<br> * *};<br> * *// вывод текста: &quot;Огонек научился&quot;<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) &amp;&amp; (talent != NPC_TALENT_SNEAK)<br> * * * *&amp;&amp; (talent != NPC_TALENT_ACROBAT) &amp;&amp; (talent != NPC_TALENT_PICKPOCKET)<br> * *{<br> * * * *Print(&quot;*** ERROR: Wrong Parameter ***&quot;);<br> * * * *return FALSE;<br> * *};<br> * *// если очков обучения недостаточно<br> * *if(oth.lp &lt; kosten)<br> * *{<br> * * * *// вывод текста: &quot;Недостаточное количество оч. обучения!&quot;<br> * * * *PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);<br> * * * *// учитель говорит ученику (SVM фраза) &quot;ГГ не хватает опыта&quot;<br> * * * *B_Say(slf,oth,&quot;$NOLEARNNOPOINTS&quot;);<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 > * * * *// вывод текста: &quot;Обучение: Вскрытие замков&quot;<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> * * * *// вывод текста: &quot;Обучение: Подкрадывание&quot;<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> * * * *// вывод текста: &quot;Учится: акробатика&quot;<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> * * * *// вывод текста: &quot;Обучение: Карманная кража&quot;<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 -&gt; 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,&quot;SPAWN_OW_SHADOWBEAS T_10_01&quot;) &lt; (4000 + tolerance))<br> * *{<br> * * * *// возвращается индекс точки<br> * * * *return LOC_ANGAR;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OW_ICEREGION_ENTRANC E_01&quot;) &lt; (3000 + tolerance))<br> * *{<br> * * * *return LOC_ICE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OW_PATH_046&quot;) &lt; (1800 + tolerance))<br> * *{<br> * * * *return LOC_SWAMP;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;CASTLE_5&quot;) &lt; (1500 + tolerance))<br> * *{<br> * * * *return LOC_FIRE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;MT16&quot;) &lt; (6500 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;MT13&quot;) &lt; (5500 + tolerance))<br> * *{<br> * * * *return LOC_LAKE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;DT_MAINGATE&quot;) &lt; (500 + tolerance))<br> * *¦¦ (Wld_GetPlayerPortalGuild() == GIL_DMT)<br> * *¦¦ ((Npc_GetDistToWP(hero,&quot;DT_E3_03&quot;) &lt; 1000) &amp;&amp; (Npc_GetHeightToNpc(self,hero) &gt; 1000))<br> * *{<br> * * * *return LOC_XARDAS;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OW_NEWMINE_03&quot;) &lt; (2500 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;OW_NEWMINE_03_B&quot;) &lt; (2500 + tolerance))<br> * *{<br> * * * *return LOC_FAJETHMINE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OW_MINE3_OUT&quot;) &lt; (1200 + tolerance))<br> * *{<br> * * * *return LOC_SILVESTROMINE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OW_PATH_266&quot;) &lt; (3000 + tolerance))<br> * *{<br> * * * *return LOC_GRIMESMINE;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OC_CENTER_02&quot;) &lt; (12000 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;OC_CENTER_05&quot;) &lt; (12000 + tolerance))<br> * *{<br> * * * *return LOC_BURG;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OC_ORCBARRIER_08&quo t;) &lt; (5000 + tolerance))<br> * *¦¦ (Npc_GetDistToWP(hero,&quot;PATH_OC_PSI_01&quot;) &lt; (5000 + tolerance))<br> * *{<br> * * * *return LOC_ORCBARRIER;<br> * *}<br> * *else if(Npc_GetDistToWP(hero,&quot;OW_PATH_BLOODFLY01_S PAWN01&quot;) &lt; (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,&quot;NW_CITY_HABOUR_KASER N_CENTRE_03&quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_KASERN_ARMORY_SH ARP&quot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_HABOUR_KASERN_CE NTRE_03&quot;);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_KASERN_ARMORY_SH ARP&quot;);<br> * * * *};<br> * *}<br> * *// виселица<br> * *else if(quarter == Q_GALGEN)<br> * *{<br> * * * *// расстояние до виселицы<br> * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_MERCHANT_PATH_33 _B&quot;);<br> * * * *// предел<br> * * * *if(dist &gt; 1900)<br> * * * *{<br> * * * * * *dist = 100000;<br> * * * *};<br> * *}<br> * *// рынок<br> * *else if (quarter == Q_MARKT)<br> * *{<br> * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_MERCHANT_PATH_36 &quot;);<br> * * * *if(dist &gt; 2300)<br> * * * *{<br> * * * * * *dist = 100000;<br> * * * *};<br> * *}<br> * *// храм<br> * *else if(quarter == Q_TEMPEL)<br> * *{<br> * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_MERCHANT_TEMPLE_ FRONT&quot;);<br> * *}<br> * *// нижний город<br> * *else if (quarter == Q_UNTERSTADT)<br> * *{<br> * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_MAINSTREET_05&qu ot;);<br> * *}<br> * *// гавань<br> * *else if (quarter == Q_HAFEN)<br> * *{<br> * * * *if(Npc_GetDistToWP(slf,&quot;NW_CITY_HABOUR_POOR_ AREA_PATH_07&quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_HABOUR_SMALLTALK _02&quot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_HABOUR_POOR_AREA _PATH_07&quot;);<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_HABOUR_SMALLTALK _02&quot;);<br> * * * *};<br> * *}<br> * *// верхний город<br> * *else if (quarter == Q_OBERSTADT)<br> * *{<br> * * * *if(Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_ 04&quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_16&q uot;))<br> * * * *&amp;&amp; (Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_04& quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_18&q uot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_04&q uot;);<br> * * * *};<br> * *<br> * * * *if(Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_ 16&quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_04&q uot;))<br> * * * *&amp;&amp; (Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_16& quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_18&q uot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_16&q uot;);<br> * * * *};<br> * * * *<br> * * * *if(Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_ 18&quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_04&q uot;))<br> * * * *&amp;&amp; (Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_18& quot;) &lt; Npc_GetDistToWP(slf,&quot;NW_CITY_UPTOWN_PATH_16&q uot;))<br> * * * *{<br> * * * * * *dist = Npc_GetDistToWP(slf,&quot;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 &lt;= C_GetDistToCenter(slf,Q_KASERNE))<br> * *&amp;&amp; (quartDist &lt;= C_GetDistToCenter(slf,Q_GALGEN))<br> * *&amp;&amp; (quartDist &lt;= C_GetDistToCenter(slf,Q_MARKT))<br> * *&amp;&amp; (quartDist &lt;= C_GetDistToCenter(slf,Q_TEMPEL))<br> * *&amp;&amp; (quartDist &lt;= C_GetDistToCenter(slf,Q_UNTERSTADT))<br> * *&amp;&amp; (quartDist &lt;= C_GetDistToCenter(slf,Q_HAFEN))<br> * *&amp;&amp; (quartDist &lt;= 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>

17.08.2005 17:01

Re: Уроки скриптологии
 
прослойка &nbsp; &nbsp; &nbsp; &nbsp; <br><br>Добавление от 08/17/05, в 17:21:30 <hr class="hr_agfc">немного покромсал тему. посмотрите, не прибил ли я чего лишнего. Резервную копию на всякий случай я сделал ;)

18.08.2005 11:17

Re: Уроки скриптологии
 
12. Функции организации диалогов с МОВами (Move Object).<br><br>Директория размещения файлов функций - B_Dialog_Mobsis<br><br> * *1. Функции использования предметов &quot;горячими&quot; клавишами.<br><br>Файл B_OnHotKey.d<br><br>// ************************************************** **************<br>// Функции вызова карты мира при нажатии &quot;горячей&quot; клавиши<br>// ************************************************** **************<br><br>// Найти наилучшую карту текущего уровня имеющуюся у ГГ<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение является переопределенным типом (C_Item -&gt; int)<br><br>func int B_GetBestPlayerMap()<br>{<br> * *// Описание функции: если ГГ имеет карту текущего уровня, то возвращается ссылка на неё.<br> * *// Последовательность опроса существующих карт уровня идет в порядке от подробных к частичным<br> * *if(CurrentLevel == NEWWORLD_ZEN)<br> * *{<br> * * * *if(Npc_HasItems(hero,ItWr_Map_NewWorld) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_NewWorld;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_Shrine_MIS) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_Shrine_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_Caves_MIS) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_Caves_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Ornaments_A ddon) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_NewWorld_Ornaments_Addon;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Dexter) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_NewWorld_Dexter;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_ShatteredGolem_MIS) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_ShatteredGolem_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_Orcelite_MIS) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_Orcelite_MIS;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_City) &gt;= 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) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_OldWorld;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Map_OldWorld_Oremines_MI S) &gt;= 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) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Map_AddonWorld;<br> * * * *}<br> * * * *else if(Npc_HasItems(hero,ItWr_Addon_TreasureMap) &gt;= 1)<br> * * * *{<br> * * * * * *return ItWr_Addon_TreasureMap;<br> * * * *};<br> * *};<br> * *return 0;<br>};<br><br>// Найти любую карту имеющуюся у ГГ<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение является переопределенным типом (C_Item -&gt; int)<br><br>func int B_GetAnyPlayerMap()<br>{<br> * *// Описание функции: если ГГ имеет любую карту, то возвращается ссылка на неё.<br> * *// Последовательность опроса существующих карт идет в порядке от подробных к частичным<br> * *if(Npc_HasItems(hero,ItWr_Map_NewWorld) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_Shrine_MIS) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_Shrine_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_Caves_MIS) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_Caves_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Ornaments_A ddon) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld_Ornaments_Addon;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_Dexter) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld_Dexter;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_ShatteredGolem_MIS) &gt;= 1)<br> * *{<br> * * * *return ItWr_ShatteredGolem_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_Orcelite_MIS) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_Orcelite_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_NewWorld_City) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_NewWorld_City;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_OldWorld) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_OldWorld;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_OldWorld_Oremines_MI S) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_OldWorld_Oremines_MIS;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Map_AddonWorld) &gt;= 1)<br> * *{<br> * * * *return ItWr_Map_AddonWorld;<br> * *}<br> * *else if(Npc_HasItems(hero,ItWr_Addon_TreasureMap) &gt;= 1)<br> * *{<br> * * * *return ItWr_Addon_TreasureMap;<br> * *};<br> * *return 0;<br>};<br><br>// Функция выбора карты мира, вызываемой &quot;горячей&quot; клавишей<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту, которая вызывается &quot;горячей&quot; клавишей<br>// Примечание: Вызывается только экзешником.<br>func int PLAYER_HOTKEY_SCREEN_MAP()<br>{<br> * *<br> * *// Внимание: переменная OldInstance является переопределенным типом (C_Item -&gt; int)<br> * *var int OldInstance;<br> * *// получить ссылку на последнюю просмотренную карту (далее - старая ссылка)<br> * *OldInstance = B_GetPlayerMap();<br> * *// если карта существует и ГГ её не имеет<br> * *if((OldInstance &gt; 0) &amp;&amp; (Npc_HasItems(hero,OldInstance) &lt; 1))<br> * *{<br> * * * *// удалить ссылку<br> * * * *OldInstance = 0;<br> * *};<br> * *// очистить глобальную ссылку на карту<br> * *B_SetPlayerMap(OldInstance);<br> * *// Внимание: переменная NewInstance является переопределенным типом (C_Item -&gt; 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 &lt;= 0)<br> * *{<br> * * * *// найти наилучшую карту текущего уровня имеющуюся у ГГ<br> * * * *NewInstance = B_GetBestPlayerMap();<br> * *};<br> * *// если новая и старая ссылки отсутствуют<br> * *if((NewInstance &lt;= 0) &amp;&amp; (OldInstance &lt;= 0))<br> * *{<br> * * * *// найти любую карту имеющуюся у ГГ<br> * * * *NewInstance = B_GetAnyPlayerMap();<br> * *};<br> * *// если новая ссылка инициализирована<br> * *if(NewInstance &gt; 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(&quot;DRINKBOTTLE&quot;);<br>};<br><br>// ************************************************** **************<br>// Функция употребления напитка повышения маны при нажатии &quot;горячей&quot; клавиши<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> * * * *&amp;&amp; (((hero.attribute[ATR_MANA_MAX])-(hero.attribute[ATR_MANA])) &gt;= 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> * * * *&amp;&amp; (((hero.attribute[ATR_MANA_MAX])-(hero.attribute[ATR_MANA])) &gt;= 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> * * * *&amp;&amp; (((hero.attribute[ATR_MANA_MAX])-(hero.attribute[ATR_MANA])) &gt;= 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(&quot;Нет напитка маны!&quot;);<br> * * * * * *};<br> * * * *}<br> * * * *else<br> * * * *{<br> * * * * * *Print(&quot;Максимум маны!&quot;);<br> * * * *};<br> * *};<br>};<br><br>// ************************************************** **************<br>// Функция употребления напитка повышения жизни при нажатии &quot;горячей&quot; клавиши<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> * * * *&amp;&amp; (((hero.attribute[ATR_HITPOINTS_MAX])-(hero.attribute[ATR_HITPOINTS])) &gt;= 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> * * * *&amp;&amp; (((hero.attribute[ATR_HITPOINTS_MAX])-(hero.attribute[ATR_HITPOINTS])) &gt;= 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> * * * *&amp;&amp; (((hero.attribute[ATR_HITPOINTS_MAX])-(hero.attribute[ATR_HITPOINTS])) &gt;= 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(&quot;Нет лечебного напитка!&quot;);<br> * * * * * * * *};<br> * * * * }<br> * * * * else<br> * * * * {<br> * * * * * * * *Print(&quot;Максимум жизненной энергии!&quot;);<br> * * * * };<br> * *};<br>};<br><br><br> * *2. Функции инициализации и получения ссылки на последнюю просмотренную карту.<br><br>Файл B_PlayerMap.d<br><br>// ************************************************** **************<br>// Функции инициализации и получения ссылки на последнюю просмотренную карту<br>// ************************************************** **************<br><br>// Внимание: переменная PlayerMapInstance является переопределенным типом (C_Item -&gt; int)<br>var int PlayerMapInstance; * * *// ссылка на карту<br><br>// Функция получения ссылки на карту<br>// ----------------------------------------------------------------<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение является переопределенным типом (C_Item -&gt; int)<br><br>func int B_GetPlayerMap()<br>{<br> * *return PlayerMapInstance;<br>};<br><br>// Функция инициализации ссылки на карту<br>// ----------------------------------------------------------------<br>// Аргумент: MapInstance - последняя просмотренная карта<br>// Возвращаемое значение: ссылка на карту<br><br>// Внимание: Возвращаемое значение и аргумент MapInstance являются переопределенными типами (C_Item -&gt; 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> * *// вывод текста &quot;Мне нужен ключ или отмычка&quot;<br> * *Print(PRINT_Picklock_or_KeyMissing);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br> * *// ГГ говорит сам себе (SVM фраза) &quot;Гм, у меня нет ни ключа, ни отмычки.&quot;<br> * *B_Say_Overlay(self,self,&quot;$PICKLOCKORKEYMISSI NG&quot;);<br>};<br><br>// ГГ не имеет ключа<br>func void PLAYER_MOB_MISSING_KEY()<br>{<br> * *// вывод текста &quot;Мне нужен ключ от этого замка&quot;<br> * *Print(PRINT_KeyMissing);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br> * *// ГГ говорит сам себе (SVM фраза) &quot;Без настоящего ключа я не открою!&quot;<br> * *B_Say_Overlay(self,self,&quot;$KEYMISSING&quot;); <br>};<br><br>// ГГ не имеет отмычки<br>func void PLAYER_MOB_MISSING_LOCKPICK()<br>{<br> * *// если ГГ не обучен работе с отмычками<br> * *if(Npc_GetTalentSkill(hero,NPC_TALENT_PICKLOCK) == FALSE)<br> * *{<br> * * * *// вывод текста &quot;У меня нехватает таланта&quot;<br> * * * *Print(PRINT_NoPicklockTalent);<br> * * * *// ГГ пожимает плечами<br> * * * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br> * * * *// ГГ говорит сам себе (SVM фраза) &quot;Я не умею взламывать замки ...&quot;<br> * * * *B_Say_Overlay(self,self,&quot;$NOPICKLOCKTALENT&q uot;);<br> * *}<br> * *else<br> * *{<br> * * * *// вывод текста &quot;Мне нужна отмычка&quot;<br> * * * *Print(PRINT_PicklockMissing);<br> * * * *// ГГ пожимает плечами<br> * * * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br> * * * *// ГГ говорит сам себе (SVM фраза) &quot;Пара отмычек помогли бы!&quot;<br> * * * *B_Say_Overlay(self,self,&quot;$PICKLOCKMISSING&qu ot;);<br> * *};<br>};<br><br>// Попытка ГГ открыть неоткрываемый МОВ<br>func void PLAYER_MOB_NEVER_OPEN()<br>{<br> * *// вывод текста &quot;Я не могу ничего сделать&quot;<br> * *Print(PRINT_NeverOpen);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br>};<br ><br>// ГГ не имеет соответствующего предмета для использования МОВа<br>func void PLAYER_MOB_MISSING_ITEM()<br>{<br> * *// вывод текста &quot;У меня нет соответствующего предмета&quot;<br> * *Print(PRINT_MissingItem);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br> * *// ГГ говорит сам себе (SVM фраза) &quot;Но чем?&quot;<br> * *B_Say_Overlay(self,self,&quot;$MISSINGITEM&quot;) ;<br>};<br><br>// Если МОВ уже используется другим НПС<br>func void PLAYER_MOB_ANOTHER_IS_USING()<br>{<br> * *// вывод текста &quot;Это сейчас занято&quot;<br> * *Print(PRINT_AnotherUser);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br>};<br ><br>// Если ГГ находится слишком далеко от МОВа<br>func void PLAYER_MOB_TOO_FAR_AWAY()<br>{<br> * *// вывод текста &quot;Я нахожусь слишком далеко&quot;<br> * *Print(PRINT_Toofar_Away);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br>};<br ><br>// Если ГГ подошел к МОВу не с той стороны<br>func void PLAYER_MOB_WRONG_SIDE()<br>{<br> * *// вывод текста &quot;Я нахожусь с другой стороны&quot;<br> * *Print(PRINT_WrongSide);<br> * *// ГГ пожимает плечами<br> * *AI_PlayAni(self,&quot;T_DONTKNOW&quot;);<br>};<br ><br>// ГГ не имеет денег для покупки предмета<br>func void PLAYER_TRADE_NOT_ENOUGH_GOLD()<br>{<br> * *// вывод текста &quot;У вас недостаточно золота, чтобы купить это.&quot;<br> * *Print(PRINT_Trade_Not_Enough_Gold);<br>};<br><br><br>

23.08.2005 14:05

Re: Уроки скриптологии
 
Ой, а где ещё две страницы? Их вроде как 12 было...<br><br>Пр-ка.

23.08.2005 16:15

Re: Уроки скриптологии
 
2Vendiga:
Цитата:

Ой, а где ещё две страницы? Их вроде как 12 было...
я же написал, что почистил ветку

09.09.2005 14:57

Re: Уроки скриптологии
 
Ой, а почему уроки прекратились? Что уже нечему учть? :(


Текущее время: 08:29. Часовой пояс GMT +4.
Страница 6 из 8 123456 78

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot

AGFC: Valley of Gothic © 2004-2022