Показать сообщение отдельно
Старый 27.05.2005, 10:34   #183
Vam

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

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

// ************************************************
// Инициализация талантов (умений)
// ------------------------------------------------
// Аргумент: slf - НПС
// ************************************************

func void B_GiveNpcTalents(var C_NPC slf)
{
* *// НПС владеет 6 кругом магии
* *Npc_SetTalentSkill(slf,NPC_TALENT_MAGE,6);
* *// НПС умеет взламывать замки
* *Npc_SetTalentSkill(slf,NPC_TALENT_PICKLOCK,1);
* *// НПС умеет подкрадываться
* *Npc_SetTalentSkill(slf,NPC_TALENT_SNEAK,1);
* *// НПС не обучен акробатике
* *Npc_SetTalentSkill(slf,NPC_TALENT_ACROBAT,0);
* *// НПС не обучен карманной краже
* *Npc_SetTalentSkill(slf,NPC_TALENT_PICKPOCKET,0);
* *// НПС обучен кузнечному делу
* *Npc_SetTalentSkill(slf,NPC_TALENT_SMITH,1);
* *// НПС может создавать руны
* *Npc_SetTalentSkill(slf,NPC_TALENT_RUNES,1);
* *// НПС владеет алхимией
* *Npc_SetTalentSkill(slf,NPC_TALENT_ALCHEMY,1);
* *// НПС не может разделывать животных
* *Npc_SetTalentSkill(slf,NPC_TALENT_TAKEANIMALTROPH Y,0);
};

... ёще файл

// *************************************
// Установка значений атрибутов НПС
// -------------------------------------
// Аргументы:
// * * *slf - НПС
// * * *kap - номер главы
// *************************************

func void B_SetAttributesToChapter(var C_NPC slf,var int kap)
{
* *// НПС владеет 6 кругом магии (Примечание: в принципе здесь лишняя, есть в предыдущей функции)
* *Npc_SetTalentSkill(slf,NPC_TALENT_MAGE,6);
* *// начало игры
* *if(kap == 0)
* *{
* * * *// уровень
* * * *slf.level = 3;
* * * *// атрибуты
* * * *slf.attribute[ATR_STRENGTH] * * * * = 10;
* * * *slf.aivar[REAL_STRENGTH] * * * * * *= 10;
* * * *slf.attribute[ATR_DEXTERITY] * * * *= 10;
* * * *slf.aivar[REAL_DEXTERITY] * * * * * = 10;
* * * *slf.attribute[ATR_MANA_MAX] * * * * = 1000;
* * * *slf.aivar[REAL_MANA_MAX] * * * * * *= 1000;
* * * *slf.attribute[ATR_MANA] * * * * * * = 1000;
* * * *slf.attribute[ATR_HITPOINTS_MAX] * *= 40;
* * * *slf.attribute[ATR_HITPOINTS] * * * *= 40;
* *};
* *// Глава 1
* *if(kap == 1)
* *{
* * * *slf.level = 10;
* * * *slf.attribute[ATR_STRENGTH] * * * * = 50;
* * * *slf.aivar[REAL_STRENGTH] * * * * * *= 50;
* * * *slf.attribute[ATR_DEXTERITY] * * * *= 50;
* * * *slf.aivar[REAL_DEXTERITY] * * * * * = 50;
* * * *slf.attribute[ATR_MANA_MAX] * * * * = 1000;
* * * *slf.aivar[REAL_MANA_MAX] * * * * * *= 1000;
* * * *slf.attribute[ATR_MANA] * * * * * * = 1000;
* * * *slf.attribute[ATR_HITPOINTS_MAX] * *= 160;
* * * *slf.attribute[ATR_HITPOINTS] * * * *= 160;
* *};
* *// Глава 2
* *if(kap == 2)
* *{
* * * *slf.level = 20;
* * * *slf.attribute[ATR_STRENGTH] * * * * = 100;
* * * *slf.aivar[REAL_STRENGTH] * * * * * *= 100;
* * * *slf.attribute[ATR_DEXTERITY] * * * *= 100;
* * * *slf.aivar[REAL_DEXTERITY] * * * * * = 100;
* * * *slf.attribute[ATR_MANA_MAX] * * * * = 1000;
* * * *slf.aivar[REAL_MANA_MAX] * * * * * *= 1000;
* * * *slf.attribute[ATR_MANA] * * * * * * = 1000;
* * * *slf.attribute[ATR_HITPOINTS_MAX] * *= 280;
* * * *slf.attribute[ATR_HITPOINTS] * * * *= 280;
* *};
* *// Глава 3
* *if(kap == 3)
* *{
* * * *slf.level = 30;
* * * *slf.attribute[ATR_STRENGTH] * * * * = 125;
* * * *slf.aivar[REAL_STRENGTH] * * * * * *= 125;
* * * *slf.attribute[ATR_DEXTERITY] * * * *= 125;
* * * *slf.aivar[REAL_DEXTERITY] * * * * * = 125;
* * * *slf.attribute[ATR_MANA_MAX] * * * * = 1000;
* * * *slf.aivar[REAL_MANA_MAX] * * * * * *= 1000;
* * * *slf.attribute[ATR_MANA] * * * * * * = 1000;
* * * *slf.attribute[ATR_HITPOINTS_MAX] * *= 400;
* * * *slf.attribute[ATR_HITPOINTS] * * * *= 400;
* *};
* *// Глава 4
* *if(kap == 4)
* *{
* * * *slf.level = 40;
* * * *slf.attribute[ATR_STRENGTH] * * * * = 150;
* * * *slf.aivar[REAL_STRENGTH] * * * * * *= 150;
* * * *slf.attribute[ATR_DEXTERITY] * * * *= 150;
* * * *slf.aivar[REAL_DEXTERITY] * * * * * = 150;
* * * *slf.attribute[ATR_MANA_MAX] * * * * = 1000;
* * * *slf.attribute[ATR_MANA] * * * * * * = 1000;
* * * *slf.aivar[REAL_MANA_MAX] * * * * * *= 1000;
* * * *slf.attribute[ATR_HITPOINTS_MAX] * *= 520;
* * * *slf.attribute[ATR_HITPOINTS] * * * *= 520;
* *};
* *// Глава 5
* *if(kap == 5)
* *{
* * * *slf.level = 50;
* * * *slf.attribute[ATR_STRENGTH] * * * * = 175;
* * * *slf.aivar[REAL_STRENGTH] * * * * * *= 175;
* * * *slf.attribute[ATR_DEXTERITY] * * * *= 175;
* * * *slf.aivar[REAL_DEXTERITY] * * * * * = 175;
* * * *slf.attribute[ATR_MANA_MAX] * * * * = 1000;
* * * *slf.aivar[REAL_MANA_MAX] * * * * * *= 1000;
* * * *slf.attribute[ATR_MANA] * * * * * * = 1000;
* * * *slf.attribute[ATR_HITPOINTS_MAX] * *= 640;
* * * *slf.attribute[ATR_HITPOINTS] * * * *= 640;
* *};
* *// Глава 6
* *if(kap >= 6)
* *{
* * * *slf.level = 60;
* * * *slf.attribute[ATR_STRENGTH] * * * * = 200;
* * * *slf.aivar[REAL_STRENGTH] * * * * * *= 200;
* * * *slf.attribute[ATR_DEXTERITY] * * * *= 200;
* * * *slf.aivar[REAL_DEXTERITY] * * * * * = 200;
* * * *slf.attribute[ATR_MANA_MAX] * * * * = 1000;
* * * *slf.aivar[REAL_MANA_MAX] * * * * * *= 1000;
* * * *slf.attribute[ATR_MANA] * * * * * * = 1000;
* * * *slf.attribute[ATR_HITPOINTS_MAX] * *= 760;
* * * *slf.attribute[ATR_HITPOINTS] * * * *= 760;
* *};
* *// кол-во экспы
* *slf.exp * * * * * * = (500*((slf.level+1)/2)*(slf.level+1));
* *slf.exp_next * * * *= (500*((slf.level+2)/2)*(slf.level+1));
};

... ёще файл

// *************************************
// Установка значений боевых навыков
// -------------------------------------
// Аргументы:
// * * *slf - НПС
// * * *percent - процент умения
// *************************************

func void B_SetFightSkills(var C_NPC slf,var int percent)
{
* *// установить владение одноручником
* *B_RaiseFightTalent(slf,NPC_TALENT_1H,percent);
* *// установить владение двуручником
* *B_RaiseFightTalent(slf,NPC_TALENT_2H,percent);
* *// установить владение луком
* *B_RaiseFightTalent(slf,NPC_TALENT_BOW,percent);
* *// установить владение арбалетом
* *B_RaiseFightTalent(slf,NPC_TALENT_CROSSBOW,percen t);
};

... ёще файл

// ***********************************************
// Визуализация тела НПС
// -----------------------------------------------
// Аргументы:
// * * *slf - НПС
// * * *gender - пол
// * * *headMesh - файл изображения головы
// * * *faceTex - номер текстуры лица
// * * *bodyTex - номер текстуры тела
// * * *armorInstance - ссылка на броню
// ***********************************************

func void B_SetNpcVisual(var C_NPC slf,var int gender,var string headMesh,var int faceTex,var int bodyTex,var int armorInstance)
{
* *// установить пол НПС
* *slf.aivar[AIV_Gender] = gender;
* *// установить модель поведения
* *Mdl_SetVisual(slf,"HUMANS.MDS");
* *// если мужчина
* *if(gender == MALE)
* *{
* * * *// построить изображение мужчины
* * * *Mdl_SetVisualBody(slf,"hum_body_Naked0",bodyTex,0 ,headMesh,faceTex,0,
armorInstance);
* * * *// если сила < 50
* * * *if(slf.attribute[ATR_STRENGTH] < 50)
* * * *{
* * * * * *// задать масштаб изображения (слабый мужчина уже)
* * * * * *Mdl_SetModelScale(slf,0.9,1,1);
* * * *};
* * * *// если сила > 100
* * * *if(slf.attribute[ATR_STRENGTH] > 100)
* * * *{
* * * * * *// задать масштаб изображения (сильный мужчина шире)
* * * * * *Mdl_SetModelScale(slf,1.1,1,1);
* * * *};
* *}
* *else // женщина
* *{
* * * *// если текстура тела мужская
* * * *if(bodyTex >= 0) && (bodyTex <= 3)
* * * *{
* * * * * *// перейти на женскую текстуру
* * * * * *bodyTex = bodyTex + 4;
* * * *};
* * * *// построить изображение женщины
* * * *Mdl_SetVisualBody(slf,"Hum_Body_Babe0",bodyTex,0, headMesh,faceTex,0,a
rmorInstance);
* *};
};

... ёще файл

// ********************
// Прототип НПС людей
// ********************

prototype Npc_Default(C_NPC)
{
* *// инициализация атрибутов
* *attribute * [ATR_STRENGTH] * * * * *= 10;
* *aivar * * * [REAL_STRENGTH] * * * * = 10;
* *attribute * [ATR_DEXTERITY] * * * * = 10;
* *aivar * * * [REAL_DEXTERITY] * * * *= 10;
* *attribute * [ATR_MANA_MAX] * * * * *= 10;
* *aivar * * * [REAL_MANA_MAX] * * * * = 10;
* *attribute * [ATR_MANA] * * * * * * *= 10;
* *attribute * [ATR_HITPOINTS_MAX] * * = 40;
* *attribute * [ATR_HITPOINTS] * * * * = 40;
* *// инициализация талантов
* *HitChance * [NPC_TALENT_1H] * * * * = 0;
* *HitChance * [NPC_TALENT_2H] * * * * = 0;
* *HitChance * [NPC_TALENT_BOW] * * * *= 0;
* *HitChance * [NPC_TALENT_CROSSBOW] * = 0;
* *// инициализация защиты
* *protection *[PROT_EDGE] * * * * * * = 0;
* *protection *[PROT_BLUNT] * * * * * *= 0;
* *protection *[PROT_POINT] * * * * * *= 0;
* *protection *[PROT_FIRE] * * * * * * = 0;
* *protection *[PROT_MAGIC] * * * * * *= 0;
* *// тип наносимого повреждения - тупое оружие (кулаки)
* *damagetype * * * * * * * * * * * * *= DAM_BLUNT;
* *// активные чувства и диапазон чувств
* *senses * * * * *= * SENSE_HEAR ¦ SENSE_SEE;
* *senses_range * *= * PERC_DIST_ACTIVE_MAX;
* *// время преследования
* *aivar[AIV_MM_FollowTime] = NPC_TIME_FOLLOW;
* *// дистанция прекращения сражения
* *aivar[AIV_FightDistCancel] = FIGHT_DIST_CANCEL;
* *// действия НПС можно прерывать
* *bodyStateInterruptableOverride = FALSE;
};

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