Показать сообщение отдельно
Старый 14.06.2005, 08:31   #195
Vam

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

По умолчанию Re: Уроки скриптологии

* *11. Секретные книги аддона.

Файл IT_Addon_SecretBooks.d

//*************************
// Секретные книги аддона
//*************************

// коэффициенты стоимости "Книг знаний"
const int BookLp2 * * * = 2; * * * * * * * * * *// книга 1
const int BookLp3 * * * = 3; * * * * * * * * * *// книга 2
const int BookLp5 * * * = 5; * * * * * * * * * *// книга 3
const int BookLp8 * * * = 8; * * * * * * * * * *// книга 4
// коэффициенты стоимости книг "Собранный опыт"
const int BookXP250 * * = 250; * * * * * * * * *// книга 1
const int BookXP500 * * = 500; * * * * * * * * *// книга 2
const int BookXP1000 * *= 1000; * * * * * * * * // книга 3
// базовый коэффициент стоимости "Книг знаний"
const int LPMultiplier *= 1000;
// базовый коэффициент стоимости книг "Собранный опыт"
const int XPMultiplier *= 5;

//--------------------------------------
// Функция использования "Книг знаний"
//--------------------------------------
// Аргумент: constanze - приобретаемые очки обучения
func void UseLPBook(var int constanze)
{
* *// Примечание: первые две строки можно удалить, не используются
* *var int Wert;
* *Wert = constanze;
* *// если НПС ГГ
* *if(Npc_IsPlayer(self))
* *{
* * * *// ГГ говорит сам себе (SVM фраза) "Понимаю."
* * * *B_Say_Overlay(self,self,"$VERSTEHE");
* * * *// музыка повышения уровня
* * * *Snd_Play("Levelup");
* * * *// увеличить очки обучения
* * * *self.lp = self.lp + constanze;
* * * *var string ConcatText;
* * * *// создать строку "Оч. обучения + " + constanze
* * * *ConcatText = ConcatStrings(PRINT_LearnLP,IntToString(constanze) );
* * * *// вывести на экран
* * * *Print(ConcatText);
* *};
};

//--------------------------------------
// Функция использования книг "Собранный опыт"
//--------------------------------------
// Аргумент: constanze - приобретаемая экспа
func void UseXPBook(var int constanze)
{
* *// Примечание: первые две строки можно удалить, не используются
* *var int Wert;
* *Wert = constanze;
* *// если НПС ГГ
* *if(Npc_IsPlayer(self))
* *{
* * * *// ГГ говорит сам себе (SVM фраза) "Понимаю."
* * * *B_Say_Overlay(self,self,"$VERSTEHE");
* * * *// музыка повышения уровня
* * * *Snd_Play("Levelup");
* * * *// увеличить експу
* * * *self.exp = self.exp + constanze;
* * * *var string ConcatText;
* * * *// создать строку "Опыт + " + constanze
* * * *ConcatText = ConcatStrings(PRINT_XPGained,IntToString(constanze ));
* * * *// вывести на экран
* * * *Print(ConcatText);
* *};
};
* *
//--------------------------------------
// Прототип книг "Собранный опыт"
//--------------------------------------
PROTOTYPE ItWr_Addon_XPBook(C_ITEM)
{
* *name * * * * * * * *= * "Собранный опыт";
* *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ
* *flags * * * * * * * = * ITEM_MISSION;
* *visual * * * * * * *= * "ItWr_Book_02_01.3ds"; * * * * * * * * * * *
* *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа
* *scemeName * * * * * = * "MAPSEALED";
* *description * * * * = * name; * * * * * * * * * * * // "Собранный опыт"
* *TEXT[0] * * * * * * = * PRINT_XPGained; * * * * * * // "Опыт + "
* *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"
}; *

//--------------------------------------
// Собранный опыт (книга 1)
//--------------------------------------
INSTANCE ItWr_Addon_BookXP250(ItWr_Addon_XPBook)
{
* *value * * * * * * * = * (BookXP250 * XPMultiplier); // 1250
* *on_state[0] * * * * = * UseBookXP250; * * * * * * * // использовать
* *COUNT[0] * * * * * *= * BookXP250; * * * * * * * * *// 250
* *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 1250
};

// Получить за прочтение 250 экспы
func void UseBookXP250()
{
* *UseXPBook(BookXP250);
};

//--------------------------------------
// Собранный опыт (книга 2)
//--------------------------------------
INSTANCE ItWr_Addon_BookXP500(ItWr_Addon_XPBook)
{
* *value * * * * * * * = * (BookXP500 * XPMultiplier); // 2500
* *on_state[0] * * * * = * UseBookXP500; * * * * * * * // использовать
* *COUNT[0] * * * * * *= * BookXP500; * * * * * * * * *// 500
* *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 2500
};

// Получить за прочтение 500 экспы
func void UseBookXP500()
{
* *UseXPBook(BookXP500);
};

//--------------------------------------
// Собранный опыт (книга 3)
//--------------------------------------
INSTANCE ItWr_Addon_BookXP1000(ItWr_Addon_XPBook)
{
* *value * * * * * * * = * (BookXP1000 * XPMultiplier);// 5000
* *on_state[0] * * * * = * UseBookXP1000; * * * * * * *// использовать
* *COUNT[0] * * * * * *= * BookXP1000; * * * * * * * * // 1000
* *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 5000
};

// Получить за прочтение 1000 экспы
func void UseBookXP1000()
{
* *UseXPBook(BookXP1000);
};

//--------------------------------------
// Прототип "Книг знаний"
//--------------------------------------
PROTOTYPE ItWr_Addon_LPBook(C_ITEM)
{
* *name * * * * * * * *= * "Книга знаний";
* *mainflag * * * * * *= * ITEM_KAT_DOCS; * * * * * * *// документ
* *flags * * * * * * * = * ITEM_MISSION;
* *visual * * * * * * *= * "ItWr_Book_02_02.3ds"; * * * * * * * * * * *
* *material * * * * * *= * MAT_LEATHER; * * * * * * * *// кожа
* *scemeName * * * * * = * "MAPSEALED";
* *description * * * * = * name; * * * * * * * * * * * // "Книга знаний"
* *TEXT[0] * * * * * * = * PRINT_LearnLP; * * * * * * *// "Оч. обучения + "
* *TEXT[5] * * * * * * = * NAME_Value; * * * * * * * * // "Ценность:"
};

//--------------------------------------
// Книга знаний (1)
//--------------------------------------
INSTANCE ItWr_Addon_BookLP2(ItWr_Addon_LPBook)
{
* *value * * * * * * * = * (BookLp2 * LPMultiplier); * // 2000
* *on_state[0] * * * * = * UseBookLp2; * * * * * * * * // использовать
* *COUNT[0] * * * * * *= * BookLp2; * * * * * * * * * *// 2
* *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 2000
};

// Получить за прочтение 2 очка обучения
func void UseBookLp2()
{
* *UseLPBook(BookLp2);
};

//--------------------------------------
// Книга знаний (2)
//--------------------------------------
INSTANCE ItWr_Addon_BookLP3(ItWr_Addon_LPBook)
{
* *value * * * * * * * = * (BookLp3 * LPMultiplier); * // 3000
* *on_state[0] * * * * = * UseBookLp3; * * * * * * * * // использовать
* *COUNT[0] * * * * * *= * BookLp3; * * * * * * * * * *// 3
* *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 3000
};

// Получить за прочтение 3 очка обучения
func void UseBookLp3()
{
* *UseLPBook(BookLp3);
};

//--------------------------------------
// Книга знаний (3)
//--------------------------------------
INSTANCE ItWr_Addon_BookLP5(ItWr_Addon_LPBook)
{
* *value * * * * * * * = * (BookLp5 * LPMultiplier); * // 5000
* *on_state[0] * * * * = * UseBookLp5; * * * * * * * * // использовать
* *COUNT[0] * * * * * *= * BookLp5; * * * * * * * * * *// 5
* *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 5000
};

// Получить за прочтение 5 очков обучения
func void UseBookLp5()
{
* *UseLPBook(BookLp5);
};

//--------------------------------------
// Книга знаний (4)
//--------------------------------------
INSTANCE ItWr_Addon_BookLP8(ItWr_Addon_LPBook)
{
* *value * * * * * * * = * (BookLp8 * LPMultiplier); * // 8000
* *on_state[0] * * * * = * UseBookLp8; * * * * * * * * // использовать
* *COUNT[0] * * * * * *= * BookLp8; * * * * * * * * * *// 8
* *COUNT[5] * * * * * *= * value; * * * * * * * * * * *// 8000
};

// Получить за прочтение 8 очков обучения
func void UseBookLp8()
{
* *UseLPBook(BookLp8 );
};


* *12. Моллюски аддона.

Файл IT_Addon_Shells.d

//*************************
// Моллюски аддона
//*************************

// стоимость
const int Value_Shell_01 * * * * * *= *30; * * *// Гребешок
const int Value_Shell_02 * * * * * *= *60; * * *// Креветка
// кол-во вскрытых моллюсков
var int Shell_Opener;

// Функция вскрытия моллюска
func void B_OpenShell()
{
* *var int shellomizer;
* *// случайное число
* *shellomizer = Hlp_Random(100);
* *// кол-во открытых моллюсков++
* *Shell_Opener = (Shell_Opener + 1);
* *// если открыт 1 моллюск
* *if(Shell_Opener == 1)
* *{
* * * *// найти Жемчужину
* * * *B_PlayerFindItem(ItMi_Addon_WhitePearl,1);
* *}
* *// если открыт 25 моллюск
* *else if(Shell_Opener == 25)
* *{
* * * *// найти Черный жемчуг
* * * *B_PlayerFindItem(ItMi_DarkPearl,1);
* * * *
* *}
* *else // обнаружить с определенной вероятностью
* *{
* * * *if(shellomizer >= 80)
* * * *{
* * * * * *// найти Жемчужину
* * * * * *B_PlayerFindItem(ItMi_Addon_WhitePearl,1);
* * * *}
* * * *else if(shellomizer >= 55)
* * * *{
* * * * * *// найти Устрицу
* * * * * *B_PlayerFindItem(ItFo_Addon_Shellflesh,1);
* * * *}
* * * *else if(shellomizer >= 50)
* * * *{
* * * * * *// найти Аквамарин
* * * * * *B_PlayerFindItem(ItMi_Aquamarine,1);
* * * *}
* * * *else if(shellomizer >= 40)
* * * *{
* * * * * *// найти Кварц
* * * * * *B_PlayerFindItem(ItMi_Quartz,1);
* * * *}
* * * *else if(shellomizer >= 35)
* * * *{
* * * * * *// найти Горный хрусталь
* * * * * *B_PlayerFindItem(ItMi_Rockcrystal,1);
* * * *}
* * * *else if(shellomizer >= 25)
* * * *{
* * * * * *// найти Серу
* * * * * *B_PlayerFindItem(ItMi_Sulfur,1);
* * * *}
* * * *else // с вероятностью 0.25
* * * *{
* * * * * *// произнести SVM фразу "нечего унести ..."
* * * * * *B_Say_Overlay(self,self,"$NOTHINGTOGET02");
* * * * * *// вывести на экран текст "Нечего унести..."
* * * * * *AI_PrintScreen(PRINT_NOTHINGTOGET02,-1,YPOS_ItemGiven,FONT_ScreenSmall,2);
* * * *};
* *};
};

//--------------------------------------
// Гребешок
//--------------------------------------
INSTANCE ItMi_Addon_Shell_01(C_Item)
{
* *name * * * *= * "Гребешок";
* *mainflag * *= * ITEM_KAT_NONE; * * * * * * *// прочее
* *flags * * * = * ITEM_MULTI;
* *value * * * = * Value_Shell_01; * * * * * * // 30
* *visual * * *= * "ItMi_Shell_01.3ds";
* *material * *= * MAT_STONE; * * * * * * * * *// камень
* *scemeName * = * "MAPSEALED";
* *on_state[0] = * Use_Shell_01; * * * * * * * // использовать
* *description = * name; * * * * * * * * * * * // "Гребешок"
* *TEXT[5] * * = * NAME_Value; * * * * * * * * // "Ценность:"
* *COUNT[5] * *= * value; * * * * * * * * * * *// 30
* *INV_ZBIAS * = INVCAM_ENTF_MISC2_STANDARD; *
};

// Открыть Гребешок
func void Use_Shell_01()
{
* *B_OpenShell();
};

//--------------------------------------
// Креветка
//--------------------------------------
INSTANCE ItMi_Addon_Shell_02(C_Item)
{
* *name * * * *= * "Креветка";
* *mainflag * *= * ITEM_KAT_NONE; * * * * * * *// прочее
* *flags * * * = * ITEM_MULTI;
* *value * * * = * Value_Shell_02; * * * * * * // 60
* *visual * * *= * "ItMi_Shell_02.3ds";
* *material * *= * MAT_STONE; * * * * * * * * *// камень
* *scemeName * = * "MAPSEALED";
* *on_state[0] = * Use_Shell_02; * * * * * * * // использовать
* *description = * name; * * * * * * * * * * * // "Креветка"
* *TEXT[5] * * = * NAME_Value; * * * * * * * * // "Ценность:"
* *COUNT[5] * *= * value; * * * * * * * * * * *// 60
* *INV_ZBIAS * = INVCAM_ENTF_MISC2_STANDARD; *
};

// Открыть Креветку
func void Use_Shell_02()
{
* *B_OpenShell();
};

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