[AGFC: Valley of Gothic] М: Уроки скриптологии

Страница 2 из 8 12 345678
Поиск в этой теме:

Расширенный поиск
Старый 09.11.2004, 23:14   #41
Vam

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

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

2TycoooN:
Что конкретно значат эти отношения?
Если расположить в порядке агрессивности:
ATT_FRIENDLY, ATT_NEUTRAL, ATT_ANGRY, ATT_HOSTILE - то будет
1 - дружеские
2 - нейтральные
3 - сердитые
4 - враждебные
Это отношение одного NPC или PC к другому. А что под отношением подразумевать - задается скриптами.
Ответить с цитированием
Старый 10.11.2004, 10:52   #42
Vam

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

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

2Mitrich:
это нужно прописывать для каждого НПС индивидуально или можно задать для всех членов гильдии?
Можно и так и эдак, только нужно использовать разные функции.
Например: между гильдиями волков и падальщиков можно установить определенные отношения, а для конкретного (индивидуального) волка можно задать свои отношения.


int Wld_GetDay(); - получить текущий день, отсчет дней идет от дня старта (Gamestart) *= 0.
int Wld_IsTime(int hour1,int min1,int hour2,int min2); - возвращает 1, если текущее время находится между границами (hour1, min1 – нижняя граница, hour2, min2 – верхняя граница в часах и минутах), иначе возвращает 0.
void Wld_SetTime(int hour,int min); - установить текущее время в часах hour и минутах min. ***
void Wld_InsertNpc(int npcInstance,string spawnPoint); - разместить в мире одного NSC, где npcInstance – ссылка на NSC, spawnPoint – имя точки размещения (может быть как WP, так и FP).
void Wld_InsertNpcAndRespawn(int instance,string spawnPoint,int spawnDelay); - выполняется аналогично предыдущей функции, только *NSC после смерти будет оживлен в заданной точке через spawnDelay секунд. ***
void Wld_SpawnNpcRange(c_npc self,int npcInstance,int number,float time); - npc self около себя создает NSC (ссылка на него npcInstance) количеством number на время жизни time. Используется в заклинаниях вызова. ***
void Wld_RemoveNpc(int npcInstance); - удалить из мира NSC (ссылке на него npcInstance). ***

Продолжение следует.
Ответить с цитированием
Старый 11.11.2004, 12:05   #43
Vam

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

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

void Wld_InsertItem(int itemInstance,string spawnPoint); - разместить в мире один предмет, где itemInstance – ссылка на предмет, spawnPoint – имя точки размещения (может быть как WP, так и FP). В примечании к функции написано: «Осторожно, не функционирует! Предмет будет вставлен в центр мира.» В скриптах данная функция используется, осталось выяснить, как она работает.
int Wld_RemoveItem(c_item item); - удалить из мира предмет по item ссылке на него, возвращает 1 – успешное удаление, иначе – 0.
void Wld_InsertObject(string name,string point); - разместить в мире визуальный объект name в точке с именем point (может быть как WP, так и FP). ***
void Wld_SetObjectRoutine(int hour1,int min1,string objName,int state); - объект с именем objName (VOB объект) перейдет в состояние state в момент времени hour1, min1 (часы и минуты).
void Wld_SetMobRoutine(int hour1,int min1,string objName,int state); - выполняется как и предыдущая функция, только для MOB объекта.
void Wld_SendTrigger(string name); - активировать функцию VOB объекта с именем name. (Я не знаю где где прописаны эти функции). ***
void Wld_SendUntrigger(string name); - деактивировать функцию VOB объекта с именем name. ***
void Wld_ExchangeGuildAttitudes(string name); - установить взаимоотношения между гильдиями, где name – имя таблицы заданных отношений.

Продолжение следует.
Ответить с цитированием
Старый 12.11.2004, 12:18   #44
Vam

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

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

void Wld_AssignRoomToGuild(string s0,int guild); - размещает гильдию guild на пространстве s0.
void Wld_AssignRoomToNpc(string s0,c_npc roomowner); - размещает npc roomowner на пространстве s0.
c_npc Wld_GetPlayerPortalOwner();
int Wld_GetPlayerPortalGuild();
c_npc Wld_GetFormerPlayerPortalOwner();
int Wld_GetFormerPlayerPortalGuild();

Какие-то четыре функции, определяющие положение SC в пространстве, большего сказать, увы, не могу. *:(
void Wld_PlayEffect(string ???,instance ???,instance ???,int ???,int ???,int ???,int ???); - данная функция абсолютно нигде не применяется и не описана, поэтому ее действие и аргументы мне не известны. *** *:(
Ответить с цитированием
Старый 12.11.2004, 21:15   #45
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

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

2Vam:
Читаю, все отлично!
void Wld_PlayEffect(string ???,instance ???,instance ???,int ???,int ???,int ???,int ???);
Значит так, на примере, можно хотя бы наполовину понять, какие аргументы.
Wld_PlayEffect("spellFX_LIGHTSTAR_RED",  self, self, 0, 0, 0, FALSE );
1. Имя "скрипта" визуализации
2 и 3. Не совсем представляю, но что то для себя :)
4, 5, 6 это помоему координаты где играть эфект, здесь, т.е. прямо в "центре" ГГ, т.к. по X, Y, Z стоят  0
7.Пока тоже в завесе тайны...
Ответить с цитированием
Старый 13.11.2004, 19:07   #46
Vam

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

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

2finch:
2TycoooN:
Все понял! Ваши примеры из Готики 2. Я же, чтобы не мешать одно с другим, рассматриваю пока только Готику 1. Потом хотел просмотреть и выдать отличия и по Г2.
Учту ваши замечания.

14. Функции работы с NPC.

int Npc_GetTrueGuild(c_npc npc); - возвращает номер гильдии, к которой принадлежит npc.
int Npc_SetTrueGuild(c_npc npc,int guildID); - установить принадлежность npc к гильдии guildID.
void Npc_SetAttitude * * *(c_npc self,int att); - установить постояноое отношение att npc self ко всем остальным npc.
void Npc_SetTempAttitude(c_npc self,int att); - установить временное отношение att npc self ко всем остальным npc.
int Npc_GetAttitude(c_npc self,c_npc other); - получить любое отношение npc self к npc other.
int Npc_GetPermAttitude(c_npc self,c_npc other); - получить постоянное отношение npc self к npc other.
int Npc_GetGuildAttitude(c_npc self,c_npc other); - получить отношение npc self к npc other, как отношение между гильдиями, а не личностями.

Продолжение следует.
Ответить с цитированием
Старый 14.11.2004, 12:57   #47
Vam

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

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

void Npc_SetKnowsPlayer(c_npc self,c_npc player); - эта функция задает, что NSC self знаком с SC player (ГГ).
int Npc_KnowsPlayer(c_npc self,c_npc player); - проверить, знаком ли NSC self с SC player, возвращает True, если знаком, иначе False.
int Npc_OwnedByNpc(c_item item,c_npc npc); - проверить, принадлежит ли предмет item npc, возвращает 1, если принадлежит, иначе - 0.
int Npc_OwnedByGuild(c_item item,int guild); - - проверить, принадлежит ли предмет item гильдии guild, возвращает 1, если принадлежит, иначе - 0.
string Npc_GetNearestWP(c_npc self); - возвращает название WP, в которой расположен npc self.
string Npc_GetNextWP(c_npc self); - возвращает название соседней точки WP, рядом с которой расположен npc self.
int Npc_IsWayBlocked(c_npc self); - возвращает 1, если путь npc self прегражден препятствием, иначе – 0.
int Npc_IsOnFP(c_npc self,string name); - проверяет, находится ли npc self в точке FP с именем name, возвращает 1 – да, иначе – 0.

Продолжение следует.
Ответить с цитированием
Старый 15.11.2004, 04:34   #48
finch

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

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

2Vam: Если ты "шпрэхаешь" по-немецки, хочу посоветовать тебе вот этот сайт! Очень много полезной инфы, но у меня "языковой барьер"... :( Так что дерзай!
Ответить с цитированием
Старый 15.11.2004, 18:24   #49
Vam

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

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

2finch:
Спасибо за предложение, только у меня аналогичный барьер!  :(

int Npc_IsDead(c_npc n0); - возвращает 1, если npc n0 мертв, иначе – 0.
int Npc_KnowsInfo(c_npc self,int infoInstance); - возвращает TRUE, если npc self уже получил информацию infoInstance, иначе FALSE.
int Npc_CheckInfo(c_npc npc,int important); - проверяет, имеет ли NSC npc действительную информацию для игрока, в этом случае возвращается 1 и начинается диалог, иначе 0, где important – важность информации (1 – важная, 0 – обычная).
int NPC_GiveInfo(c_npc npc,int important); - работает аналогично предыдущей функции, есть какое-то отличие, но яего не понял.
int Npc_CheckAvailableMission(c_npc npc,int missionState,int important); - проверяет, имеет ли npc миссию в состоянии missionState (AVAILABLE, RUNNING) с важностью important, возвращает 1, если имеет, иначе – 0.
int Npc_CheckRunningMission(c_npc npc,int important); - работает аналогично предыдущей функции, только проверяется миссия в состоянии текущего выполнения.
int Npc_CheckOfferMission(c_npc npc,int important); - работает аналогично предыдущей функции, только проверяется миссия в которой npc может что-то предложить игроку.

Продолжение следует.
Ответить с цитированием
Старый 16.11.2004, 16:53   #50
Vam

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

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

int Npc_GetStateTime(c_npc self); - возвращает кол-во секунд, которые npc self находится в текущем состоянии, заданном в "Loop" цикле.
void Npc_SetStateTime(c_npc self,int seconds); - установить кол-во секунд seconds, как долго npc self может находится в этом состоянии.
int Npc_GetBodyState(c_npc self); - возвращает состояние, в котором находится npc self (BS_ константы).
int Npc_HasBodyFlag(c_npc self,int bodyFlag); - проверяет, установлен ли у npc self флаг состояния bodyFlag, возвращает 1, если установлен, иначе – 0.
int Npc_IsPlayer(c_npc player); - возвращает 1, если проверяемый npc player является ГГ.
int Npc_HasDetectedNpc(c_npc self,c_npc other); - возвращает 1, если npc self чувствует (видит, сышит и т.д.) npc other, иначе – 0.
int Npc_IsInState(c_npc self,func state); - запрос на текущее состояние фигуры npc self, где state – функция состояния фигуры, возвращает True, если npc находится в этом состоянии, иначе – False.
int WasInState(c_npc self,func state); - аналогично предыдущей функции, только запрос на предыдущее состояние фигуры npc.
int Npc_IsInRoutine(c_npc self,func state); - проверяет, находится ли npc self в функции state, возвращает True если находится, иначе – Fаlse.
void Npc_ExchangeRoutine(c_npc self,string routineName); - поменять у npc self распорядок дня routineName.

Продолжение следует.
Ответить с цитированием
Старый 17.11.2004, 11:01   #51
Vam

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

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

int Npc_IsInCutscene(c_npc self); - возвращает 1, если npc self находится во время проигрывания Cutscene, иначе – 0.
int Npc_IsVoiceActive(c_npc self); - возвращает 1, если npc self разговаривает, иначе – 0. ***
void Npc_ClearAIQueue(c_npc self); - удаляет все команды для npc self из очереди AI_Queue.
void Npc_PlayAni(c_npc self,string file); - воспроизвести файл анимации file для npc self. ***
void Npc_SetRefuseTalk(c_npc self,int timeSec); - установить счетчик отказа от диалога для npc self на timeSec секунд.
int Npc_RefuseTalk(c_npc self); - проверить, истек ли счетчик отказа от диалога для npc self, возвращает True, если счетчик не истек, иначе – False.
int Npc_IsNear(c_npc self,c_npc other); - возвращает 1, если npc other находится на расстоянии не менее 3 метров от npc self, иначе – 0.
int Npc_GetDistToNpc(c_npc npc1,c_npc npc2); - возвращает расстояние в см. между npc1 и npc2.
int Npc_GetDistToWP(c_npc self,string wpName); - возвращает расстояние в см. между npc self и WP wpName.
int Npc_GetDistToItem(c_npc self,c_item item); - возвращает расстояние в см. между npc self и предметом item.
int Npc_GetDistToPlayer(c_npc npc1); - возвращает расстояние в см. между npc1 и ГГ.

Продолжение следует.
Ответить с цитированием
Старый 18.11.2004, 11:35   #52
Vam

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

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

void Npc_MemoryEntry(c_npc self,int source,c_npc offender,int newsid,c_npc victim); - данная функция записывает для npc self новости, где source – источник новостей (определено два источника: NEWS_SOURCE_WITNESS – есть свидетель произошедшего, NEWS_SOURCE_GOSSIP – сплетня), newsid – идентификатор новости (определены новости: NEWS_MURDER * * *- убийство, NEWS_ATTACK – атака, NEWS_THEFT – воровство, NEWS_DEFEAT – поражение, NEWS_NERVE – переживание, *NEWS_INTERFERE – вмешательство, NEWS_HASDEFEATED – победа), offender – npc преступник, victim – npc жертва.
void * * *Npc_MemoryEntryGuild(c_npc self,int source,c_npc offender,int newsid,c_npc victimguild); - работает аналогично предыдущей функции, только жертвой является вся гильдия.
int Npc_HasNews(c_npc self,int newsID,c_npc offender,c_npc victim); - эта функция проверяет, имеет ли npc self новость с идентификатором newsID о жертве victim и преступнике offender, возвращает 1, если имеет, иначе – 0. (Вместо ненужных параметров можно *записать 0).
int Npc_IsNewsGossip(c_npc self,int newsNumber); - возвращает 1, если новость для npc self является сплетней, иначе – 0.
c_npc Npc_GetNewsWitness(c_npc self,int newsNumber); - возвращает ссылку на свидетеля в новости newsNumber для npc self.
c_npc Npc_GetNewsVictim(c_npc self,int newsNumber); - возвращает ссылку на жертву в новости newsNumber для npc self.
c_npc Npc_GetNewsOffender(c_npc self,int newsNumber); - возвращает ссылку на преступника в новости newsNumber для npc self.
int Npc_DeleteNews(c_npc self,int newsNumber); - удаляет новость newsNumber для npc self, возвращает 1, исли удаление успешно, иначе – 0. ***

Продолжение следует.
Ответить с цитированием
Старый 19.11.2004, 16:29   #53
Vam

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

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

void Npc_ChangeAttribute(c_npc self,int atr,int value); - изменяет значение атрибута atr на кол-во единиц value для npc self.
void Npc_CreateSpell(c_npc self,int spellnr); - *npc self создает заклинание spellnr, оно становится активным, но еще не применяется.
void Npc_LearnSpell(c_npc self,int spellnr); - npc self выучил заклинание spellnr и может его использовать.
int Npc_GetActiveSpell(c_npc self); - возвращает номер заклинания, которое имеет активным npc self, иначе - -1.
int Npc_GetActiveSpellCat(c_npc self); - возвращает номер категории активного заклинания у npc self. Существуют три категории заклинаний: SPELL_GOOD, SPELL_NEUTRAL, SPELL_BAD.
int Npc_SetActiveSpellInfo(c_npc npc,int i1); - задает любое значение i1 для активного заклинания у npc, это значение может использоваться в скриптах, экзешник на него не реагирует. Возвращаемое значение неизвестно.
int Npc_GetActiveSpellLevel(c_npc self); - возвращает уровень активного заклинания у npc self.
int Npc_HasSpell(c_npc self,int spellID); - возвращает 1, если npc self может использовать заклинание spellID, иначе – 0.

Продолжение следует.
Ответить с цитированием
Старый 20.11.2004, 10:35   #54
Vam

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

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

void Npc_PercEnable(c_npc self,int percID,func function); *- функция активации восприятия percID у npc self, где function – функция обработки восприятия.
void Npc_PercDisable(c_npc self,int percID); - функция деактивации восприятия percID у npc self.
void Npc_SetPercTime(c_npc self,float seconds); - установка времени реакции в секундах seconds npc self на событие для активного восприятия.
void Npc_SendPassivePerc(c_npc npc1,int Perc_type,c_npc npc2,c_npc npc3); - функция посылки пассивного восприятия Perc_type от npc1, где npc2 – жертва, npc3 – преступник.
void Npc_SendSinglePerc(c_npc self,c_npc target,int percID); - функция посылки восприятия *percID от npc self к npc target.
void Npc_PerceiveAll(c_npc self); - разрешает npc self воспринимать все объекты в зоне действия восприятия, затем можно использовать функции Wld_DetectNpc и Wld_DetectItem.
string Npc_GetDetectedMob(c_npc self); - возвращает имя MOB (Move Object) объекта, который распознал npc self. Например: если имя MOB объекта "DOOR_OCR_135", то функция возвратит "DOOR".
int Npc_CanSeeNpc(c_npc npc1,c_npc npc2); - возвращает True, если npc1 может видеть npc2, иначе – False.
int Npc_CanSeeNpcFreeLOS(c_npc self,c_npc other); - возвращает True, если npc self может видеть npc other по прямой, без учета угла обзора, иначе – False.
int Npc_CanSeeItem(c_npc npc1,c_item item); - возвращает True, если npc1 может видеть предмет item, иначе – False.
int Npc_CanSeeSource(c_npc self); - возвращает True, если npc self может видеть источник звука, иначе – False.

Продолжение следует.
Ответить с цитированием
Старый 21.11.2004, 11:41   #55
Vam

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

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

int Npc_IsPlayerInMyRoom(c_npc npc); - возвращает True, если npc находится в своем помещении или в помещении своей гильдии, иначе – False.
int Npc_WasPlayerInMyRoom(c_npc npc); - возвращает True, если npc находился в своем помещении или в помещении своей гильдии перед изменением своего положения, иначе – False.
int Npc_GetComrades(c_npc npc); - возвращает 1, если npc имеет друзей, иначе – 0. ***
int Npc_IsDetectedMobOwnedByNpc(c_npc user,c_npc owner); - возвращает значение > 0, если npc owner является владельцем MOBа, который использует npc user.
int Npc_IsDetectedMobOwnedByGuild(c_npc user,int ownerguild); - возвращает значение > 0, если гильдия ownerguild является владельцем MOBа, который использует npc user.
void Npc_GiveItem(c_npc self,c_item item,c_npc other); - npc self получает предмет item от npc other.
int Npc_StartItemReactModules(c_npc self,c_npc other,c_item item); - проверяет все модули ItemReact реакции на предмет item, полученный npc self от npc other, запускает соответствующую функцию Reaction и возвращает True, если находит модуль, иначе – False.
int Npc_HasOffered(c_npc self,c_npc other,int itemInstance); - проверяет, имеет ли npc other предмет itemInstance для передачи npc self, возвращает True, если предмет имеется, иначе – False.

Продолжение следует.
Ответить с цитированием
Старый 22.11.2004, 15:01   #56
Vam

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

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

c_item Npc_GetInvItem(c_npc self,int itemInstance); - получить ссылку на предмет, который имеет npc self с номером itemInstance.
int Npc_HasItems(c_npc n0,int itemInstance); - возвращает количетво предметов itemInstance у НПС n0.
int Npc_GetInvItemBySlot(c_npc self,int category,int slotNr); - возвращает кол-во предметов, которые находятся у npc self, где category – категория инвентаря (INV_WEAPON, INV_ARMOR, INV_RUNE, INV_MAGIC, INV_FOOD, INV_POTION, INV_DOC, INV_MISC), slotNr – номер слота предмета.
void Npc_RemoveInvItem(c_npc owner,int itemInstance); - предмет itemInstance удаляется из инвентаря npc owner и из игры.
void Npc_RemoveInvItems(c_npc owner,int itemInstance,int amount); - указанное кол-во amount предметов itemInstance удаляется из инвентаря npc owner и из игры.
с_item Npc_GetEquippedMeleeWeapon(c_npc n0); - возвращает оружие ближнего радиуса поражения, которым экипирован npc n0.
c_item Npc_GetEquippedRangedWeapon(c_npc n0); - возвращает оружие дальнего радиуса поражения, которым экипирован npc n0.
c_item Npc_GetEquippedArmor(c_npc n0); - возвращает доспехи, которыми экипирован npc n0.
int Npc_HasEquippedWeapon(c_npc self); - возвращает 1, если npc self экипирован оружием, иначе - 0.
int Npc_HasEquippedMeleeWeapon(c_npc self); - возвращает 1, если npc self экипирован оружием ближнего радиуса поражения, иначе - 0.
int Npc_HasEquippedRangedWeapon(c_npc self); - возвращает 1, если npc self экипирован оружием дальнего радиуса поражения, иначе - 0.
int Npc_HasEquippedArmor(c_npc self); - возвращает 1, если npc self экипирован доспехами, иначе - 0.

Продолжение следует.
Ответить с цитированием
Старый 23.11.2004, 11:54   #57
Vam

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

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

void Npc_SetToFistMode(c_npc self); - ставит npc self в режим кулачного боя.
void Npc_SetToFightMode(c_npc self,int weapon); - ставит npc self в режим боя с соответствующим оружием weapon.
int Npc_IsInFightMode(c_npc self,int fmode); - возвращает 1, если npc self находится в боевом режиме fmode, иначе - 0. Заданы следующие боевые режимы: FMODE_NONE – небоевой режим, FMODE_FIST – режим кулачного боя, FMODE_MELEE – боевой режим с оружием ближнего радиуса поражения, FMODE_FAR - боевой режим с оружием дальнего радиуса поражения, FMODE_MAGIC – боевой режим с магией.
c_item Npc_GetReadiedWeapon(c_npc n0); - возвращает ссылку на оружие, которое npc n0 держит в руке.
int Npc_HasReadiedWeapon(c_npc self); - возвращает 1, если npc self держит любое оружие в руке, иначе - 0.
int Npc_HasReadiedMeleeWeapon(c_npc self); - возвращает 1, если npc self держит в руке оружие ближнего радиуса поражения, иначе - 0.
int Npc_HasReadiedRangedWeapon(c_npc self); - возвращает 1, если npc self держит в руке оружие дальнего радиуса поражения, иначе - 0.
int Npc_HasRangedWeaponWithAmmo(c_npc npc); - возвращает 1, если npc self держит в руке или имеет в инвентаре оружие дальнего радиуса поражения с боеприпасами, иначе - 0.

Продолжение следует.
Ответить с цитированием
Старый 24.11.2004, 15:08   #58
Vam

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

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

int Npc_GetTarget(c_npc self); - возвращает True, если npc self имеет цель для поражения (в качестве цели выступает npc other), иначе – False.
int Npc_GetNextTarget(c_npc self); - выполняется активный поиск цели для npc self. Если цель находится, то она становится внутренней целью и записывается в переменную
other, если цель не найдена, то внутренняя цель удаляется и other становится недействительным. Критерий поиска цели - в качестве цели возмется враждебный противник, который не мертв или находится не в бессознательном состоянии. Возвращает True, если цель найдена, иначе – False. Внимание: Поиск основывается на активном восприятии npc self, поэтому, если активное восприятие не установлено, то сначала следует применять функцию Npc_PerceiveAll().
int Npc_IsNextTargetAvailable(c_npc self); - работает аналогично предыдущей функции, только ни внутренняя цель, ни переменная other не инициализируются.
void Npc_SetTarget(c_npc self,c_npc other); - устанавливает для npc self в качестве внутренней цели для поражения npc other.
int Npc_AreWeStronger(c_npc self,c_npc other); - выявляет более сильного npc среди self и other по следующему алгоритму: если сумма уровней всех npc (людей и монстров), которые враждебны к self и дружелюбны к other, более чем в два раза превышает сумму уровней всех npc (людей и монстров), которые дружелюбны к self и враждебны к other, то other сльнее и возвращается False, иначе сильнее self и возвращается True. Замечания: 1. npc, которые враждебны к обоим, не учитываются. 2. npc, который враждебен к одному и дружелюбен к другому, будет участвовать в подсчете два раза.
int Npc_IsAiming(c_npc self,c_npc other); - возвращает 1, если npc other целится в npc self из оружия дальнего радиуса поражения или магией, иначе – 0.

Продолжение следует.
Ответить с цитированием
Старый 26.11.2004, 18:22   #59
Vam

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

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

int Npc_GetTalentSkill(c_npc self,int talent); - возвращает уровень навыка talent, который имеет npc self. *** Определены следующие способности: NPC_TALENT_1H – владение одноручником, NPC_TALENT_2H – владение двуручником, NPC_TALENT_BOW – владение луком, NPC_TALENT_CROSSBOW – владение арбалетом, NPC_TALENT_PICKLOCK – умение вскрывать замки, NPC_TALENT_PICKPOCKET – карманная кража, NPC_TALENT_MAGE – владение магией, NPC_TALENT_SNEAK – умение подкрадываться, NPC_TALENT_REGENERATE – способность восстанавливать здоровье, NPC_TALENT_FIREMASTER – способность мастерски обращаться с огнем, NPC_TALENT_ACROBAT – акробатика.
int Npc_GetTalentValue(c_npc self,int talent); - возвращает кол-во единиц навыка talent, которые имеет npc self. ***
void Npc_SetTalentSkill(c_npc self,int talent,int level); - установить уровень level навыка talent, которым владеет npc self. ***
void Npc_SetTalentValue(c_npc self,int talent,int value); - установить кол-во единиц value навыка talent, которым владеет npc self. ***

Вот мы и закончили рассмотрение большого раздела – функции работы с NPC.  :)
Ответить с цитированием
Старый 27.11.2004, 21:36   #60
Vam

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

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

15. Функции искусственного интелекта (AI_ функции).

void AI_Wait(c_npc n0,float n1); - npc n0 переводится на n1 секунд в состояние ожидания, в этом состоянии он не делает ничего, но наносимый ущерб регистрируется и работает пассивное восприятие.
void AI_PlayAni(c_npc n0,string s0); - для npc n0 проигрывается файл анимации s0 (имя файла s0 обязательно пишется заглавными буквами).
void AI_StandUp(c_npc self); - если npc self находится в состоянии анимации, то проигрывается соответствующее движение, если npc self находится на MOBSI объекте (стул, кровать и т.д.), то он встает.
void AI_StandUpQuick(c_npc self); - в отличии от предыдущей функции никаких движений не проигрывается, npc self сразу переводится в стоячее состояние.
void AI_QuickLook(c_npc self,c_npc other); - npc self быстро бросает взгляд на npc other. Выполняется только движение головой в течение 2 секунд.
void AI_LookAt(c_npc self,string name); - npc self смотрит на определенную точку на местности или на объект, где *name – имя точки местности или имя VOB объекта.
void AI_LookAtNpc(c_npc self,c_npc other); - npc self смотрит на npc other.
void AI_StopLookAt(c_npc self); - npc self снова смотрит прямо перед собой.
void AI_PointAt(c_npc self,string name); - npc self указывает на определенную точку на местности или на объект, где *name – имя точки местности или имя VOB объекта.
void AI_PointAtNpc(c_npc self,c_npc other); - npc self указывает на npc other.
void AI_StopPointAt(c_npc self); - npc self прекращает указывать на что-нибудь или кого-нибудь.

Продолжение следует.
Ответить с цитированием
Старый 28.11.2004, 12:21   #61
Vam

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

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

void AI_TakeItem(c_npc self,c_item item); - npc self берет (принимает) предмет item.
void AI_DropItem(c_npc self,int itemid); - npc self выбрасывает на землю или на пол предмет itemid.
void AI_UseItem(c_npc self,int itemInstance); - npc self использует предмет itemInstance.
void AI_UseItemToState(c_npc self,int itemInstance,int state); - npc self использует предмет itemInstance до указанного состояния state (-1 – используется полностью).
void AI_TakeMob(c_npc self,string name); - npc self берет (принимает) MOB (рюкзак, корзину и т.д.) с именем name. ***
void AI_DropMob(c_npc self); - npc self выбрасывает на землю или на пол имеющийся MOB. ***
int AI_UseMob(c_npc self,string schemeName,int targetState); - npc self использует MOB с именем schemeName до указанного состояния targetState. Если указанное состояние у MOBа уже имеется, npc self приближается к нему, но ничего не делает.
void AI_Waitms(c_npc self,int msec); - npc self переводится на msec миллисекунд в состояние ожидания, в этом состоянии он не делает ничего, но наносимый ущерб регистрируется и работает пассивное восприятие. ***
void AI_CanSeeNpc(c_npc self,c_npc other,func see); - npc self может увидеть npc other, где see – какая-то функция (описания не нашел). ***

Продолжение следует.
Ответить с цитированием
Старый 29.11.2004, 10:41   #62
Vam

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

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

void AI_SetWalkmode(c_npc n,int n0); - установить режим передвижения n0 для npc n. Определены следующие режимы: NPC_RUN – бег, NPC_WALK – ходьба шагом, NPC_SNEAK – подкрадывание, NPC_RUN_WEAPON – бег с оружием, NPC_WALK_WEAPON – ходьба с оружием, NPC_SNEAK_WEAPON – подкрадывание с оружием.
void AI_GotoWP(c_npc n0,string s0); - npc n0 перемещается в указанную WP s0.
void AI_GotoFP(c_npc self,string fpName); - npc n0 перемещается в указанную FP fpName, расположенную в пределах 20 метров. Критерий поиска FP аналогичен используемому в функции Wld_IsFPAvailable.
void AI_GotoNextFP(c_npc self,string fpName); - работает аналогично предыдущей функции, только критерий поиска FP аналогичен используемому в функции Wld_IsNextFPAvailable.
void AI_GotoNpc(c_npc self,c_npc other); - npc self перемещается к npc other.
void AI_GotoItem(c_npc self,c_item item); - npc self перемещается к предмету item.
void AI_GotoSound(c_npc n0); - npc self перемещается к источнику звука.
void AI_Teleport(c_npc self,string waypoint); - телепортирует npc self в новую локацию waypoint.

Продолжение следует.
Ответить с цитированием
Старый 30.11.2004, 11:42   #63
Vam

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

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

void AI_TurnToNpc(c_npc n0,c_npc n1); - npc n0 поварачивается к npc n1 лицом.
void AI_TurnAway(c_npc n0,c_npc n1); - npc n0 поварачивается к npc n1 спиной.
void AI_WhirlAround(c_npc self,c_npc other); - npc self быстро поварачивается к npc other лицом. (Делает оборот).
void AI_WhirlAroundToSource(c_npc self); - npc self быстро поварачивается лицом к какому-то источнику. *** (Описания не нашел).
void AI_TurnToSound(c_npc self); - npc self поварачивается лицом к источнику звука.
void AI_AlignToWP(c_npc self); - npc self выравнивается в WP точке по направлению стрелки, заданной в Spacer.
void AI_AlignToFP(c_npc self); - npc self выравнивается в FP точке по направлению стрелки, заданной в Spacer. ***
void AI_Dodge(c_npc npc); - npc отклоняется назад. (Способ защиты при атаке противника).
void AI_PlayAniBS(c_npc npc,string aniname,int bodystate); - для npc проигрывается файл анимации aniname для определенного состояния тела bodystate.
void AI_PlayCutscene(c_npc self,string csName); - для npc self проигрывается Cutscene с именем csName, заданная в скриптах.

Продолжение следует.
Ответить с цитированием
Старый 01.12.2004, 11:36   #64
Vam

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

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

void AI_DrawWeapon(c_npc n0); - npc n0 вытаскивает оружие, которым экипирован.
void AI_RemoveWeapon(c_npc n0); - npc n0 прячет оружие.
void AI_ReadyMeleeWeapon(c_npc self); - npc self готовит оружие ближнего радиуса поражения к бою.
void AI_ReadyRangedWeapon(c_npc self); - npc self готовит оружие дальнего радиуса поражения к бою.
void AI_Attack(c_npc self); - npc self начинает сражение (эта функция должна вызываться внутри ZS_Attack_Loop). Атакуется внутренняя цель, которая была задана функцией Npc_SetTarget или Npc_GetNextTarget.
void AI_FinishingMove(c_npc self, c_npc other); - логическое завершение операции приближения (поворота) npc self к npc other.
void AI_Defend(c_npc self); - npc self парирует удар противника (защищается). Выполняется только во время атаки противника.
void AI_Flee(c_npc self); - npc self убегает от противника (эта функция должна вызываться внутри ZS_Loop). Предварительно функцией Npc_SetTarget должна быть установлена внутренняя цель, от которой npc self должен убежать.
void AI_AimAt(c_npc attacker, c_npc target); - npc attacker целится из оружия дальнего радиуса поражения в npc target.
void AI_StopAim(c_npc attacker); - npc attacker прекращает целиться из оружия дальнего радиуса поражения.
void AI_ShootAt(c_npc attacker, c_npc target); - npc attacker стреляет из оружия дальнего радиуса поражения в npc target.
void AI_CombatReactToDamage(c_npc self); - реакция npc self на повреждение во время боя. ***

Продолжение следует.
Ответить с цитированием
Старый 02.12.2004, 10:18   #65
Vam

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

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

void AI_LookForItem(c_npc self,int instance); - функция показывает определенный предмет instance, который имеется у npc self. (Например: золотой меч разрушения).
void AI_EquipBestMeleeWeapon(c_npc self); - в инвентаре npc self ищется самое лучшее оружие ближнего радиуса поражения и вешается на пояс.
void AI_EquipBestRangedWeapon(c_npc self); - в инвентаре npc self ищется самое лучшее оружие дальнего радиуса поражения и вешается на спину.
void AI_EquipBestArmor(c_npc self); - в инвентаре npc self ищутся и одеваются самые лучшие доспехи.
void AI_UnequipWeapons(c_npc self); - все экипированное оружие npc self убирается в инвентарь.
void AI_UnequipArmor(c_npc self); - одетые доспехи npc self убираются в инвентарь.
void AI_EquipArmor(c_npc self,int armor); - npc self одевает доспехи armor, которые должны находиться в его инвентаре. ***
void AI_ReadySpell(c_npc self,int spellID,int investMana); - npc self берет в руку заклинание spellID со стоимостью маны investMana.
void AI_UnreadySpell(c_npc self); - npc self прячет в инвентарь заклинание, которое имеет в руке.

Продолжение следует.
Ответить с цитированием
Старый 03.12.2004, 10:47   #66
Vam

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

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

void AI_Output(c_npc self, c_npc target,string outputName); - данная функция реализует диалог, npc self говорит фразу outputName для npc target. Текст фразы должен располагаться в скриптах в виде комментария к функции. (например: AI_Output() //текст фразы).
void AI_OutputSVM(c_npc self, c_npc target,string svmname); - данная функция реализует SVM (Standart Voice Module) диалог, npc self говорит фразу svmname для npc target. Текст фразы должен располагаться в скриптах в файле svm.d (в одном из соответствующих SVM_ модулей) в виде комментария к строке с именем svmname. (например: StopMagic = svmname; //текст фразы).
void AI_OutputSVM_Overlay(c_npc self, c_npc target,string svmname); - выполняется аналогично предыдущей функции, фраза выдается быстро, нет ожидания при разговоре следующей AI_ команды. Используется для комментариев перед сражением и во время сражения.
void AI_WaitTillEnd(c_npc self, c_npc other); - npc self ждет от npc other ответа на свою фразу. (Не выполняется перед функцией AI_OutputSVM_Overlay).
void AI_Ask(c_npc self,func anserYes,func answerNo); - определяет, как npc self будет отвечать на сказанную фразу, при выборе ответа «Да» - выполняется функция anserYes, иначе – функция answerNo. Эти функции должны быть описаны заранее.
void AI_AskText(c_npc self,func funcYes,func funcNo,string strYes,string strNo); - работает аналогично предыдущей функции, только для вариантов ответов (кроме функций) могут быть заданы фразы ответов strYes, strNo.
void AI_WaitForQuestion(c_npc self,func scriptFunc); - npc self ждет ответа или вопроса в течение 20 секунд, если в это время он поступает, то выполняется функция scriptFunc.

Продолжение следует.
Ответить с цитированием
Старый 04.12.2004, 14:30   #67
Vam

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

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

void AI_ProcessInfos(c_npc self); - эта функция запускает диалог для npc self с возможностью выбора вариантов ответов/вопросов. ***
void AI_StopProcessInfos(c_npc npc); - режим диалога npc npc, начатый предыдущей функцией, заканчивается.
void AI_StartState(c_npc self,func what,int stateBehaviour,string wpName); - переводит npc self в соответствующее состояние, описанное функцией what, где stateBehaviour = 0 – выполняется последовательность состояний, 1 – выполняется только функция конечного состояния, wpName – имя WP точки (если «», то состояние изменяется на месте расположения npc).
void AI_SetNpcsToState(c_npc self,func aiStateFunc,int radius); - переводит всех npc, находящихся от npc self на расстоянии radius сантиметров, в соответствующее состояние, описанное функцией aiStateFunc.
void AI_ContinueRoutine(c_npc self); - продолжает выполнение распорядка дня npc self.

Вот и всё, мы рассмотрели все базовые функции Готики1.
Если хотите еще что-нибудь «изучить» в скриптах, постараюсь в этом помочь.  ;)
Ответить с цитированием
Старый 16.12.2004, 11:28   #68
Vam

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

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

Тема седьмая: Встроенные функции Готики 2.

В основном в Готике 2 используются функции Готики 1, но есть несколько дополнительных функций, их мы и рассмотрим.

int AI_PrintScreen(string msg,int posx,int posy,string font,int timeSec); - выводит на экран строку текста msg (имя шрифта – font) с координатами posx, posy (диапазон от 0 до 99% размера экрана, -1 означает вывод по центру соответствующей оси экрана) на время timeSec (в секундах).
void AI_Snd_Play(c_npc self,string s0); - воспроизвести звуковой файл с именем s0 для npc self.
void AI_Snd_Play3D(c_npc self,c_npc n0,string s0); - воспроизвести звуковой файл с именем s0 для npc self.
void AI_PlayFX(c_npc self,c_npc n0,string s0); - воспроизвести видео-файл с именем s0 для npc self.
void AI_StopFX(c_npc self,string s0); - остановить воспроизведение видео-файла с именем s0 для npc self.
int PlayVideoEx(string video,int aa,int bb); - показать видео файл video (c расширением BIK), возвращает 1, если видео показано, 0 – в случае ошибки. Трактование параметров aa и bb не знаю, в скриптах они имеют значение TRUE и FALSE.
void ExitSession() – используется вместо функции ExitGame(), хотя она тоже сохранена.
int GameInitGerman() – просто всегда возвращает 1.
В английской версии экзешника еще есть функции - *int GameInitEnglish() и int GameInitEngintl(), их назначение мне неизвестно.

Продолжение следует.
Ответить с цитированием
Старый 17.12.2004, 12:58   #69
Vam

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

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

int Wld_DetectNpcExAtt(c_npc self,int instance,func aiState,int guild,int detectPlayer, int xxx); - эта функция инициализирует глобальную переменную скриптов other, отличную от NSC self, где instance – производная от класса c_npc, которая должна быть найдена и проинициализирована (-1 – любая производная), guild – гильдия, членом которой должен быть искомый npc (-1 – любая гильдия), aiState – функция AI состояния, в котором должен находится искомый npc (NOFUNC – любое AI состояние). Функция возвращает 1 в случае успешного завершения (other инициализирован найденным npc), 0 – неудача (other не определен), параметр detectPlayer указывает, исключить ли игрока (ГГ) из поиска (0 – исключить, 1 – нет). В этой функции, по сравнению с Wld_DetectNpcEx, добавлен параметр ххх, к сожалению мне про него ничего не известно (возможно это какой-нибудь атрибут).
int Wld_IsRaining(); – возвращает 1, если идет дождь, иначе – 0.
void Wld_StopEffect(string name); - останавливает проигрывание эффекта с именем name, запущенного функцией Wld_PlayEffect.
void Doc_SetLevelCoords(int Document,int Left,int Top,int Right,int Bottom); - устанавливает границы области, отображаемой на карте (границы задаются в абсолютных координатах уровня), где: * Document – обрабатываемый документ, Left, Top, Right и Bottom – задаваемые границы.
int Npc_GetLastHitSpellID(c_npc self); - возвращает номер заклинания, которое npc self применил последним.
int Npc_GetLastHitSpellCat(c_npc self); - возвращает категорию заклинания, которое npc self применил последним.
int Npc_GetActiveSpellIsScroll(c_npc self); - проверяет, является ли активное заклинание у npc self свитком, если да – возвращает 1, иначе – 0.
void Npc_ClearInventory(c_npc self); - очищает весь инвентарь у npc self.
int Npc_GetHeightToNpc(c_npc npc1,c_npc npc2); - возвращает расстояние в см. по высоте между npc1 и npc2.
int Npc_GetHeightToItem(c_npc self,c_item item); - возвращает расстояние в см. по высоте между npc self и предметом item.

Продолжение следует.
Ответить с цитированием
Старый 20.12.2004, 10:19   #70
Vam

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

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

c_npc Npc_GetLookAtTarget(c_npc self); - инициализирует глобальную переменную target ссылкой на npc, на которого смотрит *npc self.
void Npc_StopAni(c_npc self,string name); - остановить проигрывание файла анимации с именем *name для npc self.
int Npc_IsDrawingWeapon(c_npc self); - возвращает номер оружия, которое npc self держит в руках, иначе – 0.
int Npc_IsDrawingSpell(c_npc self); - возвращает номер заклинания, которое применяет npc self , иначе – 0.
int Npc_IsInPlayersRoom(c_npc self); - возвращает 1, если npc self находится в помещении, которое принадлежит ГГ, иначе – 0.
c_npc Npc_GetPortalOwner(c_npc self); - возвращает npc владельца помещения (области), в котором находится npc self.
int Npc_GetPortal Guild (c_npc self); - возвращает номер гильдии владельца помещения (области), в котором находится npc self.

Вот и все дополнительные функции, которые используются в Готике2.
Ответить с цитированием
Старый 17.01.2005, 19:50   #71
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Vam:
Я обеими руками "за"! :pivo: ;D
Имхо, было бы неплохо выкладывать здесь скрипты Готкик с собственными комментариями, объясняющими, что даннная строка скрипта значит. Было бы наглядно. у меня есть пример:

Функция ZS_Stand_WP - отвечает за выполнение TA_Stand_WP

func void ZS_Stand_WP() *//Функция подготовки к выполнению TA_Stand_WP
{
* Perception_Set_Normal();
* B_ResetAll(self);
* AI_SetWalkMode(self,NPC_WALK);
* AI_GotoWP(self,self.wp);
* AI_AlignToWP(self);
* self.aivar[AIV_TAPOSITION] = NOTINPOS;
};

func int ZS_Stand_WP_loop() *//Это функция выполняется циклически, пока НПС выполняет TA_Stand_WP
{
* var int random;
* if(self.aivar[AIV_TAPOSITION] == NOTINPOS) *//Блок для случая, если НПС не в "ISINPOS" (только в первый раз)
* {
* * *AI_PlayAni(self,"T_STAND_2_LGUARD"); *//Проигрывается анимация "T_STAND_2_LGUARD" (НПС примет "стойку")
* * *self.aivar[AIV_TAPOSITION] = ISINPOS;
* };
* if((Npc_GetStateTime(self) > 5) && (self.aivar[AIV_TAPOSITION] == ISINPOS)) *//После того, как НПС становится в "ISINPOS", каждые 5 секунд выполняется блок
* {
* * *random = Hlp_Random(10); *//Берется случайное число от 0 до 9
* * *if(random == 0) *//Если число было 0, проигрывается анимация "T_LGUARD_SCRATCH" (НПС "потянется")
* * *{
* * * * AI_PlayAni(self,"T_LGUARD_SCRATCH");
* * *}
* * *else if(random == 1) *//Если число было 1, проигрывается та же анимация, что и при 0
* * *{
* * * * AI_PlayAni(self,"T_LGUARD_STRETCH");
* * *}
* * *else if(random == 2) *//Если число было 2, проигрывается анимация "T_LGUARD_CHANGELEG" (НПС "меняет ногу")
* * *{
* * * * AI_PlayAni(self,"T_LGUARD_CHANGELEG");
* * *};
* * *Npc_SetStateTime(self,0); *//Время обнуляется, т.е. начинаются следующие 5 секунд
* }; *//Т.е. шанс, что НПС произведет какое-то действие раз в пять секунд - 3\10
* return LOOP_CONTINUE; *//Цикл замыкается, и функция "ZS_Stand_WP_loop" будет выполнена снова, и так будет пока НПС не получит команды прекритить выполнение "TA_Stand_WP"
};

func void ZS_Stand_WP_end()  //Функция завершения TA_Stand_WP
{
* AI_PlayAni(self,"T_LGUARD_2_STAND"); *//При получении НПС команды прекратить выполнение "TA_Stand_WP", проигрывается анимация "T_STAND_2_LGUARD" (НПС выйдет из "стойки")
};
Отправить личное сообщение для Ответить с цитированием
Старый 17.01.2005, 22:35   #72
Vam

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

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

Тема первая: Глобальные константы.

Практически все глобальные константы описаны в файле ..\_intern\constants.d

// Шрифты для функции PrintScreen
const string FONT_Screen * * * * * *= "FONT_OLD_20_WHITE.TGA"; * * *//обычный экранный шрифт
const string FONT_ScreenSmall * * *= "FONT_OLD_10_WHITE.TGA"; * * *//мелкий экранный шрифт
const string FONT_Book * * * * * * * * *= "FONT_10_BOOK.TGA"; * * * * * *//шрифт текста документов
const string FONT_BookHeadline * * *= "FONT_20_BOOK.TGA"; * * * * * *//шрифт заголовков документов

// Стоимость маны для всех свитков заклинаний
const int SPL_Cost_Scroll * * * * * *= 5;

// Индексы атрибутов НПС
const int ATR_HITPOINTS * * * * * * * * *= 0; //Текущая жизнь
const int ATR_HITPOINTS_MAX * * * * * *= 1; //Макс. жизнь
const int ATR_MANA * * * * * * * * * * * *= 2; //Текущая мана
const int ATR_MANA_MAX * * * * * * * * *= 3; //Макс. мана
const int ATR_STRENGTH * * * * * * * * *= 4; //Сила
const int ATR_DEXTERITY * * * * * * * * *= 5; //Ловкость
const int ATR_REGENERATEHP * * * * * *= 6; //Регенерация жизни в секунду
const int ATR_REGENERATEMANA * * *= 7; //Регенерация маны в секунду

const int ATR_INDEX_MAX * * * * * * * * *= 8; //Макс. размерность массива атрибутов НПС

// Флаги НПС
const int NPC_FLAG_FRIEND * * * * * *= 1 << 0; //Друг (не используется, заменен на aivar[])
const int NPC_FLAG_IMMORTAL * * * * * *= 1 << 1; //Неуязвимый
const int NPC_FLAG_GHOST * * * * * *= 1 << 2; //Полупрозрачный (эквивалентен флагу 'GhostAlpha' в Gothic.ini секция [INTERNAL])

// Режимы борьбы
const int FMODE_NONE * * * * * * * * *= 0; //Выключен
const int FMODE_FIST * * * * * * * * *= 1; //Кулачный бой
const int FMODE_MELEE * * * * * * * * *= 2; //Оружие ближнего радиуса поражения
const int FMODE_FAR * * * * * * * * * * * *= 5; //Оружие дальнего радиуса поражения
const int FMODE_MAGIC * * * * * * * * *= 7; //Магия

// Режимы передвижения
const int NPC_RUN * * * * * * * * * * * *= 0; * * * * * *//Бег
const int NPC_WALK * * * * * * * * * * * *= 1; * * * * * *//Ходьба
const int NPC_SNEAK * * * * * * * * * * * *= 2; * * * * * *//Подкрадывание
const int NPC_RUN_WEAPON * * * * * *= 0 + 128; * * *//Бег с оружием
const int NPC_WALK_WEAPON * * * * * *= 1 + 128; * * *//Ходьба с оружием
const int NPC_SNEAK_WEAPON * * * * * *= 2 + 128; * * *//Подкрадывание с оружием

// Флаги брони
const int WEAR_TORSO * * * * * * * * *= *1; //Верхняя часть туловища (Доспехи)
const int WEAR_HEAD * * * * * * * * * * * *= *2; //Голова (Шлем)
const int WEAR_EFFECT * * * * * * * * *= 16; //Оказывает эффект при ношении

// Категории инвентаря
const int INV_WEAPON * * * * * * * * *= *1; //Оружие
const int INV_ARMOR * * * * * * * * * * * *= *2; //Броня
const int INV_RUNE * * * * * * * * * * * *= *3; //Руны
const int INV_MAGIC * * * * * * * * * * * *= *4; //Магия
const int INV_FOOD * * * * * * * * * * * *= *5; //Продукты питания
const int INV_POTION * * * * * * * * *= *6; //Напитки
const int INV_DOC * * * * * * * * * * * *= *7; //Документы
const int INV_MISC * * * * * * * * * * * *= *8; //Разное
const int INV_CAT_MAX * * * * * * * * *= *9; //Макс. размерность категорий инвентаря

// Вместимость инвентаря (программой игнорируется, инвентарь неограниченный!)
const int INV_MAX_WEAPONS * * * * * *= * *6;
const int INV_MAX_ARMORS * * * * * * = * *2;
const int INV_MAX_RUNES * * * * * * * * *= 1000;
const int INV_MAX_FOOD * * * * * * * * *= * 15;
const int INV_MAX_DOCS * * * * * * * * *= 1000;
const int INV_MAX_POTIONS * * * * * *= 1000;
const int INV_MAX_MAGIC * * * * * * * * *= 1000;
const int INV_MAX_MISC * * * * * * * * *= 1000;

// Кол-во строк текста описания предметов
const int ITM_TEXT_MAX * * * * * * * * *= 6;

// Флаги предметов
// (категории)
const int ITEM_KAT_NONE * * * * * *= 1 << *0; //Прочее
const int ITEM_KAT_NF * * * * * *= 1 << *1; //Оружие ближнего радиуса поражения
const int ITEM_KAT_FF * * * * * *= 1 << *2; //Оружие дальнего радиуса поражения
const int ITEM_KAT_MUN * * * * * *= 1 << *3; //Боеприпасы (мульти)
const int ITEM_KAT_ARMOR * * *= 1 << *4; //Броня
const int ITEM_KAT_FOOD * * * * * *= 1 << *5; //Продукты питания (мульти)
const int ITEM_KAT_DOCS * * * * * *= 1 << *6; //Документы
const int ITEM_KAT_POTIONS * * *= 1 << *7; //Напитки
const int ITEM_KAT_LIGHT * * *= 1 << *8; //Источники света
const int ITEM_KAT_RUNE * * * * * *= 1 << *9; //Руны/Свитки заклинаний
const int ITEM_KAT_MAGIC * * *= 1 << 31; //Кольца/Амулеты/Пояса
const int ITEM_KAT_KEYS * * * * * *= ITEM_KAT_NONE; //Ключи
// (типы оружия)
const int ITEM_DAG * * * * * * * * *= 1 << 13; //Клинок (не используется)
const int ITEM_SWD * * * * * * * * *= 1 << 14; //Меч
const int ITEM_AXE * * * * * * * * *= 1 << 15; //Топор
const int ITEM_2HD_SWD * * * * * *= 1 << 16; //Друручный меч
const int ITEM_2HD_AXE * * * * * *= 1 << 17; //Двуручный топор
const int ITEM_SHIELD * * * * * *= 1 << 18; //Щит (не используется)
const int ITEM_BOW * * * * * * * * *= 1 << 19; //Лук
const int ITEM_CROSSBOW * * * * * *= 1 << 20; //Арбалет
// (типы магических предметов)
const int ITEM_RING * * * * * * * * *= 1 << 11; //Кольцо
const int ITEM_AMULET * * * * * *= 1 << 22; //Амулет
const int ITEM_BELT * * * * * * * * *= 1 << 24; //Пояс
// (атрибуты предметов)
const int ITEM_DROPPED * * * * * * = 1 << 10; //Выброшенный предмет (внутренний флаг!)
const int ITEM_MISSION * * * * * * = 1 << 12; //Предмет миссии
const int ITEM_MULTI * * * * * *= 1 << 21; //Складываемый по несколько штук
const int ITEM_NFOCUS * * * * * *= 1 << 23; //Не в фокусе (внутренний флаг!)
const int ITEM_CREATEAMMO * * *= 1 << 25; //Боеприпасы производятся сами (магически)
const int ITEM_NSPLIT * * * * * *= 1 << 26; //Неделимый предмет
const int ITEM_DRINK * * * * * *= 1 << 27; //Можно пить (не используется)
const int ITEM_TORCH * * * * * *= 1 << 28; //Факел
const int ITEM_THROW * * * * * *= 1 << 29; //Можно бросить (не используется)
const int ITEM_ACTIVE * * * * * *= 1 << 30; //Активный (внутренний флаг!)


В таком виде информация устроит?
Ответить с цитированием
Старый 18.01.2005, 14:49   #73
Vam

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

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

Продолжение...

// Типы наносимых повреждений
const int DAM_INVALID * * * * * *= 0 * * * * * * * * * * * * * * *; * * *//(применения не нашел)
const int DAM_BARRIER * * * * * *= 1 * * * * * * * * * * * * * * *; * * *//(применения не нашел)
const int DAM_BLUNT * * * * * * * * *= DAM_BARRIER * * *<< 1; * * *//Повреждение тупым оружием (молоты, дубины, кулаки)
const int DAM_EDGE * * * * * * * * *= DAM_BLUNT * * * * * *<< 1; * * *//Повреждение острым оружием (мечи, шпаги, топоры)
const int DAM_FIRE * * * * * * * * *= DAM_EDGE * * * * * *<< 1; * * *//Повреждение огнем
const int DAM_FLY * * * * * * * * *= DAM_FIRE * * * * * *<< 1; * * *//Повреждение нокаутом (после удара НПС отлетает и падает)
const int DAM_MAGIC * * * * * * * * *= DAM_FLY * * * * * *<< 1; * * *//Повреждение магией
const int DAM_POINT * * * * * * * * *= DAM_MAGIC * * * * * *<< 1; * * *//Точечное повреждение (луки, арбалеты)
const int DAM_FALL * * * * * * * * *= DAM_POINT * * * * * *<< 1; * * *//Повреждение от падения

// Индексы значений массива наносимых повреждений (имена индексов соответствуют именам типов)
const int DAM_INDEX_BARRIER * * *= 0 * * * * * * * * * * * * * * * * ;
const int DAM_INDEX_BLUNT * * *= DAM_INDEX_BARRIER + 1;
const int DAM_INDEX_EDGE * * *= DAM_INDEX_BLUNT * * *+ 1;
const int DAM_INDEX_FIRE * * *= DAM_INDEX_EDGE * * *+ 1;
const int DAM_INDEX_FLY * * * * * *= DAM_INDEX_FIRE * * *+ 1;
const int DAM_INDEX_MAGIC * * *= DAM_INDEX_FLY * * * * * *+ 1;
const int DAM_INDEX_POINT * * *= DAM_INDEX_MAGIC * * *+ 1;
const int DAM_INDEX_FALL * * *= DAM_INDEX_POINT * * *+ 1;
const int DAM_INDEX_MAX * * * * * *= DAM_INDEX_FALL * * *+ 1; * * *//Макс. размерность массива наносимых повреждений

// Другие константы наносимых повреждений
const int NPC_ATTACK_FINISH_DISTANCE * * * * * * * * *= 180; * * *//???
const int NPC_BURN_TICKS_PER_DAMAGE_POINT * * * * * *= 1000; //???
const int NPC_BURN_DAMAGE_POINTS_PER_INTERVALL * * *= 50; * * *//???
const int DAM_CRITICAL_MULTIPLIER * * * * * * * * * * * *= 2; * * *//Коэффициент умножения для критического повреждения (не употребляется)

const int BLOOD_SIZE_DIVISOR * * * * * * * * * * * * * * *= 1000; * * *//???
const int BLOOD_DAMAGE_MAX * * * * * * * * * * * * * * * * * *= 200; * * *//???

const int DAMAGE_FLY_CM_MAX * * * * * * * * * * * * * * * * * *= 2000; * * *//???
const int DAMAGE_FLY_CM_MIN * * * * * * * * * * * * *= 300; * * *//???
const int DAMAGE_FLY_CM_PER_POINT * * * * * * * * * * * *= 5; * * *//???

const int NPC_DAM_DIVE_TIME * * * * * * * * * * * * * * * * * *= 100; * * *//???

const int IMMUNE * * * * * * * * * * * * * * * * * * * * * * * *= -1; * * *//Иммунитет к повреждению

// На каком расстоянии НПС перестают сражаться
// Коэффициент к дистанции (BASE + дистанция поражения оружием)
const float NPC_COLLISION_CORRECTION_SCALER * * * * * *= 0.75;

// * * *Типы защиты (имена соответствуют типам наносимых повреждений)
const int PROT_BARRIER * * * * * * * * *= DAM_INDEX_BARRIER;
const int PROT_BLUNT * * * * * * * * *= DAM_INDEX_BLUNT;
const int PROT_EDGE * * * * * * * * * * * *= DAM_INDEX_EDGE;
const int PROT_FIRE * * * * * * * * * * * *= DAM_INDEX_FIRE;
const int PROT_FLY * * * * * * * * * * * *= DAM_INDEX_FLY;
const int PROT_MAGIC * * * * * * * * *= DAM_INDEX_MAGIC;
const int PROT_POINT * * * * * * * * *= DAM_INDEX_POINT;
const int PROT_FALL * * * * * * * * * * * *= DAM_INDEX_FALL;
const int PROT_INDEX_MAX * * * * * *= DAM_INDEX_MAX; * * *//Макс. размерность массива защиты

// Активные восприятия
const int PERC_ASSESSPLAYER * * * * * *= 1; * * *//Восприятие ГГ
const int PERC_ASSESSENEMY * * * * * *= 2; * * *//Восприятие врага
const int PERC_ASSESSFIGHTER * * *= 3; * * *//Восприятие в сражении
const int PERC_ASSESSBODY * * * * * *= 4; * * *//Восприятие тела
const int PERC_ASSESSITEM * * * * * *= 5; * * *//Восприятие предмета

// Чувства
const int SENSE_SEE * * * * * * * * * * * *= 1 << 0; * * *//Зрение
const int SENSE_HEAR * * * * * * * * *= 1 << 1; * * *//Слух
const int SENSE_SMELL * * * * * * * * *= 1 << 2; * * *//Обоняние

// Пассивные восприятия
const int PERC_ASSESSMURDER * * * * * * * * *= * * *6; * * *//Восприятие убийства
const int PERC_ASSESSDEFEAT * * * * * * * * *= * * *7; * * *//Восприятие поражения
const int PERC_ASSESSDAMAGE * * * * * * * * *= * * *8; * * *//Восприятие повреждения
const int PERC_ASSESSOTHERSDAMAGE * * *= * * *9; * * *//Восприятие других повреждений
const int PERC_ASSESSTHREAT * * * * * * * * *= *10; * * *//Восприятие угрозы
const int PERC_ASSESSREMOVEWEAPON * * *= *11; * * *//Восприятие от "зачехления" оружия
const int PERC_OBSERVEINTRUDER * * * * * *= *12; * * *//Восприятие наблюдения злоумышленника
const int PERC_ASSESSFIGHTSOUND * * * * * *= *13; * * *//Восприятие звука сражения
const int PERC_ASSESSQUIETSOUND * * * * * *= *14; * * *//Восприятие тихих звуков
const int PERC_ASSESSWARN * * * * * * * * *= *15; * * *//Восприятие предупреждения
const int PERC_CATCHTHIEF * * * * * * * * *= *16; * * *//Восприятие выгоды воровства
const int PERC_ASSESSTHEFT * * * * * * * * *= *17; * * *//Восприятие воровства
const int PERC_ASSESSCALL * * * * * * * * *= *18; * * *//Восприятие обращения (речь)
const int PERC_ASSESSTALK * * * * * * * * *= *19; * * *//Восприятие разговора
const int PERC_ASSESSGIVENITEM * * * * * *= *20; * * *//Восприятие торговли
const int PERC_ASSESSFAKEGUILD * * * * * *= *21; * * *//Восприятие "поддельной гильдии" (посылается при превращении НПС)
const int PERC_MOVEMOB * * * * * * * * * * * *= *22; * * *//Восприятие передвижения объекта (не НПС)
const int PERC_MOVENPC * * * * * * * * * * * *= *23; * * *//Восприятие передвижения НПС
const int PERC_DRAWWEAPON * * * * * * * * *= *24; * * *//Восприятие вытаскивания оружия
const int PERC_OBSERVESUSPECT * * * * * *= *25; * * *//Восприятие наблюдения подозреваемого
const int PERC_NPCCOMMAND * * * * * * * * *= *26; * * *//Восприятие команды НПС
const int PERC_ASSESSMAGIC * * * * * * * * *= *27; * * *//Восприятие магии
const int PERC_ASSESSSTOPMAGIC * * * * * *= *28; * * *//Восприятие прекращения колдовства
const int PERC_ASSESSCASTER * * * * * * * * *= *29; * * *//Восприятие колдующего (посылается при изменении маны)
const int PERC_ASSESSSURPRISE * * * * * *= *30; * * *//Восприятие неожиданности
const int PERC_ASSESSENTERROOM * * * * * *= *31; * * *//Восприятие входа в помещение (область)
const int PERC_ASSESSUSEMOB * * * * * * * * *= *32; * * *//Восприятие использования объекта (открытие двери, сундука)

// Способы распространения новостей
const int NEWS_DONT_SPREAD * * * * * * * * * * * * * * * * * * * * *= 0; * * *//Новости не распространяются
const int NEWS_SPREAD_NPC_FRIENDLY_TOWARDS_VICTIM * * *= 1; * * *//Друзьями жертвы
const int NEWS_SPREAD_NPC_FRIENDLY_TOWARDS_WITNESS * * *= 2; * * *//Друзьями свидетеля
const int NEWS_SPREAD_NPC_FRIENDLY_TOWARDS_OFFENDER * * *= 3; * * *//Друзьями обидчика
const int NEWS_SPREAD_NPC_SAME_GUILD_VICTIM * * * * * * * * *= 4; * * *//Гильдией жертвы

// Константы новостей
const int IMPORTANT * * * * * * * * *= 1; * * *//Важная новость

// Статусы информации
const int INF_TELL * * * * * * * * *= 0; * * *//Сказанная информация
const int INF_UNKNOWN * * * * * *= 2; * * *//Источник информации неизвестен

// Статусы миссий
const int LOG_RUNNING * * * * * *= 1; * * *//Миссия выполняется
const int LOG_SUCCESS * * * * * *= 2; * * *//Миссия успешно завершена
const int LOG_FAILED * * * * * *= 3; * * *//Миссия провалена
const int LOG_OBSOLETE * * * * * *= 4; * * *//Миссия завершена в другом направлении (был выбор вариантов завершения)

// Отношения
const int ATT_FRIENDLY * * * * * *= 3; * * *//Друг
const int ATT_NEUTRAL * * * * * *= 2; * * *//Нейтральный
const int ATT_ANGRY * * * * * * * * *= 1; * * *//Сердитый, злой
const int ATT_HOSTILE * * * * * *= 0; * * *//Враг


Может кто-нибудь подсказать, как сделать чтобы текст выводился ровными столбиками, а не прыгал туда-сюда? *:(
Ответить с цитированием
Старый 19.01.2005, 11:40   #74
Vam

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

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

Продолжение...


// Гильдии
const int GIL_NONE * * * * * * * * * * * * * * * * * *= 0; * * *//Отсутствует
const int GIL_HUMAN * * * * * * * * * * * * * * * * * *= 1; * * *//Люди (специальная гильдия, набор констант для этой гильдии описан в файле Species.d)
const int GIL_PAL * * * * * * * * * * * * * * * * * *= 1; * * *//Паладины
const int GIL_MIL * * * * * * * * * * * * * * * * * *= 2; * * *//Милиционеры
const int GIL_VLK * * * * * * * * * * * * * * * * * *= 3; * * *//Горожане
const int GIL_KDF * * * * * * * * * * * * * * * * * *= 4; * * *//Маги огня
const int GIL_NOV * * * * * * * * * * * * * * * * * *= 5; * * *//Маги послушники
const int GIL_DJG * * * * * * * * * * * * * * * * * *= 6; * * *//Охотники на драконов
const int GIL_SLD * * * * * * * * * * * * * * * * * *= 7; * * *//Ополчение
const int GIL_BAU * * * * * * * * * * * * * * * * * *= 8; * * *//Крестьяне
const int GIL_BDT * * * * * * * * * * * * * * * * * *= 9; * * *//Бандиты
const int GIL_STRF * * * * * * * * * * * * * * * * * *= 10; ** * *//Заключенные
const int GIL_DMT * * * * * * * * * * * * * * * * * *= 11; * * *//Черные маги
const int GIL_OUT * * * * * * * * * * * * * * * * * *= 12; ** * *//Чужеземцы
const int GIL_PIR * * * * * * * * * * * * * * * * * *= 13; * * *//Пираты
const int GIL_KDW * * * * * * * * * * * * * * * * * *= 14; * * *//Маги воды
const int GIL_EMPTY_D * * * * * * * * * * * * * * *= 15; * * *//(пусто)
//-----------------------------------------------
const int GIL_PUBLIC * * * * * * * * * * * * * * *= 15; ** * *//Публичная гильдия
//-----------------------------------------------

const int GIL_SEPERATOR_HUM * * * * * * * * * * * *= 16; * * *//Разделитель между людьми и животными

const int GIL_MEATBUG * * * * * * * * * * * * * * *= 17; * * *//Мясной жук
const int GIL_SHEEP * * * * * * * * * * * * * * * * * *= 18; * * *//Овца
const int GIL_GOBBO * * * * * * * * * * * * * * * * * *= 19; ** * *//Гоблин / Черный гоблин
const int GIL_GOBBO_SKELETON * * * * * * * * *= 20; * * *//Скелет гоблина
const int GIL_SUMMONED_GOBBO_SKELETON * * *= 21; * * *//Вызванный Скелет гоблина
const int GIL_SCAVENGER * * * * * * * * * * * * * * *= 22; ** * *//Падальщик / Зубастик
const int GIL_GIANT_RAT * * * * * * * * * * * * * * *= 23; * * *//Крыса
const int GIL_GIANT_BUG * * * * * * * * * * * * * * *= 24; * * *//Полевой жук
const int GIL_BLOODFLY * * * * * * * * * * * * * * *= 25; * * *//Кровяной шершень
const int GIL_WARAN * * * * * * * * * * * * * * * * * *= 26; ** * *//Ящерица / Огненная ящерица
const int GIL_WOLF * * * * * * * * * * * * * * * * * *= 27; ** * *//Волк / Варг
const int GIL_SUMMONED_WOLF * * * * * * * * * * * *= 28; * * *//Вызванный Волк
const int GIL_MINECRAWLER * * * * * * * * * * * *= 29; ** * *//Ползун / Воин ползунов
const int GIL_LURKER * * * * * * * * * * * * * * *= 30; * * *//Шныг
const int GIL_SKELETON * * * * * * * * * * * * * * *= 31; * * *//Скелет
const int GIL_SUMMONED_SKELETON * * * * * * * * *= 32; * * *//Вызванный Скелет
const int GIL_SKELETON_MAGE * * * * * * * * * * * *= 33; * * *//Маг скелетов
const int GIL_ZOMBIE * * * * * * * * * * * * * * *= 34; * * *//Зомби
const int GIL_SNAPPER * * * * * * * * * * * * * * *= 35; ** * *//Глорх / Остер / Расчленитель
const int GIL_SHADOWBEAST * * * * * * * * * * * *= 36; * * *//Мракорис
const int GIL_SHADOWBEAST_SKELETON * * * * * *= 37; * * *//Скелет мракориса
const int GIL_HARPY * * * * * * * * * * * * * * * * * *= 38; * * *//Гарпия
const int GIL_STONEGOLEM * * * * * * * * * * * *= 39; * * *//Каменный голем
const int GIL_FIREGOLEM * * * * * * * * * * * * * * *= 40; * * *//Огненный голем
const int GIL_ICEGOLEM * * * * * * * * * * * * * * *= 41; * * *//Ледяной голем
const int GIL_SUMMONED_GOLEM * * * * * * * * *= 42; * * *//Вызванный Голем
const int GIL_DEMON * * * * * * * * * * * * * * * * * *= 43; * * *//Демон / Лорд демонов
const int GIL_SUMMONED_DEMON * * * * * * * * *= 44; * * *//Вызванный Демон
const int GIL_TROLL * * * * * * * * * * * * * * * * * *= 45; ** * *//Троль / Черный троль
const int GIL_SWAMPSHARK * * * * * * * * * * * *= 46; ** * *//Болотожор
const int GIL_DRAGON * * * * * * * * * * * * * * *= 47; ** * *//Дракон
const int GIL_MOLERAT * * * * * * * * * * * * * * *= 48; ** * *//Кротокрыс

const int GIL_ALLIGATOR * * * * * * * * * * * * * * *= 49; * * *//Алигатор
const int GIL_SWAMPGOLEM * * * * * * * * * * * *= 50; * * *//Болотный голем
const int GIL_Stoneguardian * * * * * * * * * * * *= 51; * * *//Каменный сторож
const int GIL_Gargoyle * * * * * * * * * * * * * * *= 52; * * *//Пантера / Огненный дух мракориса
const int GIL_Empty_A * * * * * * * * * * * * * * *= 53; * * *//(пусто)
const int GIL_SummonedGuardian * * * * * * * * *= 54; * * *//Вызванный Каменный сторож
const int GIL_SummonedZombie * * * * * * * * *= 55; * * *//Вызванный Зомби
const int GIL_EMPTY_B * * * * * * * * * * * * * * *= 56; * * *//(пусто)
const int GIL_EMPTY_C * * * * * * * * * * * * * * *= 57; * * *//(пусто)

const int GIL_SEPERATOR_ORC * * * * * * * * * * * *= 58; * * *//Разделитель животных от орков

const int GIL_ORC * * * * * * * * * * * * * * * * * *= 59; * * *//Орк / Шаман орков / Воин орков
const int GIL_FRIENDLY_ORC * * * * * * * * * * * *= 60; * * *//Ур-Шак
const int GIL_UNDEADORC * * * * * * * * * * * * * * *= 61; * * *//Орк нежить
const int GIL_DRACONIAN * * * * * * * * * * * * * * *= 62; * * *//Ящер

const int GIL_EMPTY_X * * * * * * * * * * * * * * *= 63; * * *//(пусто)
const int GIL_EMPTY_Y * * * * * * * * * * * * * * *= 64; * * *//(пусто)
const int GIL_EMPTY_Z * * * * * * * * * * * * * * *= 65; * * *//(пусто)

const int GIL_MAX * * * * * * * * * * * * * * * * * *= 66; * * *//Макс. количество гильдий

// Класс описания гильдий
CLASS C_GILVALUES
{
* * *var int * * * * * *WATER_DEPTH_KNEE * * * * * *[GIL_MAX]; * * *//Глубина воды до колена
* * *var int * * * * * *WATER_DEPTH_CHEST * * * * * *[GIL_MAX]; * * *//Глубина воды до груди
* * *var int * * * * * *JUMPUP_HEIGHT * * * * * * * * *[GIL_MAX]; * * *//Высота прыжка
// * * *var int * * * * * *JUMPUP_FORCE * * * * * * * * *[GIL_MAX];
* * *var int * * * * * *SWIM_TIME * * * * * * * * * * * *[GIL_MAX]; * * *//Время плавания
* * *var int * * * * * *DIVE_TIME * * * * * * * * * * * *[GIL_MAX]; * * *//Время пребывания под водой
* * *var int * * * * * *STEP_HEIGHT * * * * * * * * * * * *[GIL_MAX]; * * *//Ширина шага
* * *var int * * * * * *JUMPLOW_HEIGHT * * * * * * * * *[GIL_MAX]; * * *//Высота низкого прыжка
* * *var int * * * * * *JUMPMID_HEIGHT * * * * * * * * *[GIL_MAX]; * * *//Высота среднего прыжка
* * *var int * * * * * *SLIDE_ANGLE * * * * * * * * * * * *[GIL_MAX]; * * *//Угол начала скольжения на наклонной плоскости
* * *var int * * * * * *SLIDE_ANGLE2 * * * * * * * * *[GIL_MAX]; * * *//???
* * *var int * * * * * *DISABLE_AUTOROLL * * * * * *[GIL_MAX]; * * *//???
* * *var int * * * * * *SURFACE_ALIGN * * * * * * * * *[GIL_MAX]; * * *//???
* * *var int * * * * * *CLIMB_HEADING_ANGLE * * * * * *[GIL_MAX]; * * *//Какие-то углы подъема
* * *var int * * * * * *CLIMB_HORIZ_ANGLE * * * * * *[GIL_MAX]; * * *//
* * *var int * * * * * *CLIMB_GROUND_ANGLE * * * * * *[GIL_MAX]; * * *//
* * *var int * * * * * *FIGHT_RANGE_BASE * * * * * *[GIL_MAX]; * * *//Какие-то диапазоны борьбы
* * *var int * * * * * *FIGHT_RANGE_FIST * * * * * *[GIL_MAX]; * * *//
* * *var INT ** * *FIGHT_RANGE_G * * * * * * * * *[GIL_MAX]; * * *//
* * *var int * * * * * *FIGHT_RANGE_1HS * * * * * * * * *[GIL_MAX]; * * *//
* * *var int * * * * * *FIGHT_RANGE_1HA * * * * * * * * *[GIL_MAX]; * * *//
* * *var int * * * * * *FIGHT_RANGE_2HS * * * * * * * * *[GIL_MAX]; * * *//
* * *var int * * * * * *FIGHT_RANGE_2HA * * * * * * * * *[GIL_MAX]; * * *//
* * *var int * * * * * *FALLDOWN_HEIGHT * * * * * * * * *[GIL_MAX]; * * *//Высота падения без повреждения
* * *var int * * * * * *FALLDOWN_DAMAGE * * * * * * * * *[GIL_MAX]; * * *//Повреждение от падения с высоты
* * *var int * * * * * *BLOOD_DISABLED * * * * * * * * *[GIL_MAX]; * * *//Уровень показа крови
* * *var int * * * * * *BLOOD_MAX_DISTANCE * * * * * *[GIL_MAX]; * * *//Макс. радиус брызг крови в см.
* * *var int * * * * * *BLOOD_AMOUNT * * * * * * * * *[GIL_MAX]; * * *//Количество крови
* * *var int * * * * * *BLOOD_FLOW * * * * * * * * * * * *[GIL_MAX]; * * *//???
* * *var string *BLOOD_EMITTER * * * * * * * * *[GIL_MAX]; * * *//Источник крови
* * *var string *BLOOD_TEXTURE * * * * * * * * *[GIL_MAX]; * * *//Текстура крови
* * *var int ** * *TURN_SPEED * * * * * * * * * * * *[GIL_MAX]; * * *//Скорость разворота
};

// Типы звуков
const int NPC_SOUND_DROPTAKE * * * * * * * * *= 1; * * *//Звук капель
const int NPC_SOUND_SPEAK * * * * * * * * * * * *= 3; * * *//Звук разговора
const int NPC_SOUND_STEPS * * * * * * * * * * * *= 4; * * *//Звук шагов
const int NPC_SOUND_THROWCOLL * * * * * * * * *= 5; * * *//Звук летящей стрелы, болта
const int NPC_SOUND_DRAWWEAPON * * * * * * * * *= 6; * * *//Звук доставаемого оружия
const int NPC_SOUND_SCREAM * * * * * * * * * * * *= 7; * * *//Звук крика
const int NPC_SOUND_FIGHT * * * * * * * * * * * *= 8; * * *//Звук сражения

// Типы материалов
const int MAT_WOOD * * * * * * * * * * * * * * * * * *= 0; * * *//Деревянный
const int MAT_STONE * * * * * * * * * * * * * * * * * *= 1; * * *//Каменный
const int MAT_METAL * * * * * * * * * * * * * * * * * *= 2; * * *//Металлический
const int MAT_LEATHER * * * * * * * * * * * * * * *= 3; * * *//Кожаный
const int MAT_CLAY * * * * * * * * * * * * * * * * * *= 4; * * *//Глиняный
const int MAT_GLAS * * * * * * * * * * * * * * * * * *= 5; * * *//Стеклянный

// Записи дневника
const int LOG_MISSION * * * * * * * * * * * * * * *= 0; * * *//Миссии
const int LOG_NOTE * * * * * * * * * * * * * * * * * *= 1; * * *//Заметки

// Другие константы
const int TIME_INFINITE * * * * * * * * * * * * * * *= -1000000 / 1000; *//Бесконечное время ???
const int NPC_VOICE_VARIATION_MAX * * * * * *= 10; * * * * * * * //Макс. кол-во голосов НПС

const float * * * TRADE_VALUE_MULTIPLIER * * * * * *= 0.15; * * * * * * * * *//Коэффициент стоимости предмета, которую платит торговец
const string TRADE_CURRENCY_INSTANCE * * *= "ITMI_GOLD"; * * *//Имя валюты для расчетов


DimaD
Тэг [code] не катит, меняет только шрифт и больше ничего. *:(
Ответить с цитированием
Старый 20.01.2005, 10:07   #75
Vam

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

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

Продолжение...

//************************************
// Заклинания
//************************************

// Константы категорий
const int SPELL_GOOD * * * * * *= 0; * *//Хорошее
const int SPELL_NEUTRAL * * * * = 1; * *//Нейтральное
const int SPELL_BAD * * * * * * = 2; * *//Плохое

// Константы управления
const int SPL_DONTINVEST * * * * * * * * * *= 0; * *//Дальнейшее инвестирование маны на зарядку заклинания невозможно (мало или нет маны)
const int SPL_RECEIVEINVEST * * * * * * * * = 1; * *//Нужное количество маны израсходовано на зарядку (заклинание готово к действию)
const int SPL_SENDCAST * * * * * * * * * * *= 2; * *//Старт заклинания с действием
const int SPL_SENDSTOP * * * * * * * * * * *= 3; * *//Заклинание заканчивается без эффекта (мало маны)
const int SPL_NEXTLEVEL * * * * * * * * * * = 4; * *//Переход на следующий уровень зарядки заклинания
const int SPL_STATUS_CANINVEST_NO_MANADEC * = 8; * *//Инвестированного количества маны недостаточно для перехода на следующий уровень
const int SPL_FORCEINVEST * * * * * * = 1 << 16; * *//Какой-то флаг управляющий инвестированием маны ???

// Константы цели
const int TARGET_COLLECT_NONE * * * * * * * * * = 0; * *//Цель определяется самим заклинанием
const int TARGET_COLLECT_CASTER * * * * * * * * = 1; * *//Цель - кастующий
const int TARGET_COLLECT_FOCUS * * * * * * * * *= 2; * *//Цель - визуальный объект в фокусе
const int TARGET_COLLECT_ALL * * * * * * * * * *= 3; * *//Цель - все объекты в радиусе поражения
const int TARGET_COLLECT_FOCUS_FALLBACK_NONE * *= 4; * *//Цель - визуальный объект в фокусе, при потере фокуса траектория устанавливается заклинанием
const int TARGET_COLLECT_FOCUS_FALLBACK_CASTER *= 5; * *//Цель - визуальный объект в фокусе, при потере фокуса целью становится кастующий
const int TARGET_COLLECT_ALL_FALLBACK_NONE * * *= 6; * *//Цель - все объекты в радиусе поражения, если объектов нет траектория устанавливается заклинанием
const int TARGET_COLLECT_ALL_FALLBACK_CASTER * *= 7; * *//Цель - все объекты в радиусе поражения, если объектов нет целью становится кастующий

const int TARGET_TYPE_ALL * * * = 1; * *//Цель - все и всё
const int TARGET_TYPE_ITEMS * * = 2; * *//Цель - предмет
const int TARGET_TYPE_NPCS * * *= 4; * *//Цель - НПС
const int TARGET_TYPE_ORCS * * *= 8; * *//Цель - орк
const int TARGET_TYPE_HUMANS * *= 16; * //Цель - человек
const int TARGET_TYPE_UNDEAD * *= 32; * //Цель - неуязвимый

// Идентификаторы заклинаний (ID)
// Руны Паладинов
const int SPL_PalLight * * * * * * *= 0; * *//Святой свет
const int SPL_PalLightHeal * * * * *= 1; * *//Малое лечение
const int SPL_PalHolyBolt * * * * * = 2; * *//Святая стрела
const int SPL_PalMediumHeal * * * * = 3; * *//Среднее лечение
const int SPL_PalRepelEvil * * * * *= 4; * *//Разогнать дьяволов
const int SPL_PalFullHeal * * * * * = 5; * *//Сильное лечение
const int SPL_PalDestroyEvil * * * *= 6; * *//Уничтожить дьяволов

// Руны Телепортации
const int SPL_PalTeleportSecret * * = 7; * *//Телепорт
const int SPL_TeleportSeaport * * * = 8; * *//Телепорт в гавань
const int SPL_TeleportMonastery * * = 9; * *//Телепорт к монастырю
const int SPL_TeleportFarm * * * * *= 10; * //Телепорт к помещику
const int SPL_TeleportXardas * * * *= 11; * //Телепорт к Ксардасу
const int SPL_TeleportPassNW * * * *= 12; * //Телепорт к проходу в Хоринисе
const int SPL_TeleportPassOW * * * *= 13; * //Телепорт к проходу в рудниковой долине
const int SPL_TeleportOC * * * * * *= 14; * //Телепорт в замок
const int SPL_TeleportOWDemonTower *= 15; * //Телепорт в старую башню демонов
const int SPL_TeleportTaverne * * * = 16; * //Телепорт к таверне
const int SPL_Teleport_3 * * * * * *= 17; * //(не используется)

// Круг 1
const int SPL_Light * * * * * * * * = 18; * //Свет
const int SPL_Firebolt * * * * * * *= 19; * //Огненная стрела
const int SPL_LightHeal * * * * * * = 21; * //Лечить легкое ранение
const int SPL_SummonGoblinSkeleton *= 22; * //Вызвать скелет гоблина
const int SPL_Zap * * * * * * * * * = 24; * //Молния

// Круг 2
const int SPL_Icebolt * * * * * * * = 20; * //Ледяная стрела
const int SPL_InstantFireball * * * = 23; * //Огненный шар
const int SPL_SummonWolf * * * * * *= 25; * //Вызвать волка
const int SPL_WindFist * * * * * * *= 26; * //Порыв ветра
const int SPL_Sleep * * * * * * * * = 27; * //Сон

// Круг 3
const int SPL_MediumHeal * * * * * *= 28; * //Лечить среднее ранение
const int SPL_LightningFlash * * * *= 29; * //Удар молнии
const int SPL_ChargeFireball * * * *= 30; * //Большой огненный шар
const int SPL_SummonSkeleton * * * *= 31; * //Вызвать скелет
const int SPL_Fear * * * * * * * * *= 32; * //Страх
const int SPL_IceCube * * * * * * * = 33; * //Ледяная глыба

// Круг 4
const int SPL_ChargeZap * * * * * * = 34; * //Шаровая молния
const int SPL_SummonGolem * * * * * = 35; * //Вызвать голема
const int SPL_DestroyUndead * * * * = 36; * //Уничтожить нежить
const int SPL_Pyrokinesis * * * * * = 37; * //Большая огненная буря (ошибка перевода ???)

// Круг 5
const int SPL_Firestorm * * * * * * = 38; * //Малая огненная буря (ошибка перевода ???)
const int SPL_IceWave * * * * * * * = 39; * //Ледяная волна
const int SPL_SummonDemon * * * * * = 40; * //Вызвать демона
const int SPL_FullHeal * * * * * * *= 41; * //Лечить сильное ранение

// Kreis 6
const int SPL_Firerain * * * * * * *= 42; * //Огненный дождь
const int SPL_BreathOfDeath * * * * = 43; * //Дым смерти
const int SPL_MassDeath * * * * * * = 44; * //Волна смерти
const int SPL_ArmyOfDarkness * * * *= 45; * //Армия мрака
const int SPL_Shrink * * * * * * * *= 46; * //Уменьшить монстра

// Свитки
const int SPL_TrfSheep * * * * * * *= 47; * //Превращение в овцу
const int SPL_TrfScavenger * * * * *= 48; * //Превращение в падальщика
const int SPL_TrfGiantRat * * * * * = 49; * //Превращение в крысу
const int SPL_TrfGiantBug * * * * * = 50; * //Превращение в полевого жука
const int SPL_TrfWolf * * * * * * * = 51; * //Превращение в волка
const int SPL_TrfWaran * * * * * * *= 52; * //Превращение в ящерицу
const int SPL_TrfSnapper * * * * * *= 53; * //Превращение в глорха
const int SPL_TrfWarg * * * * * * * = 54; * //Превращение в варга
const int SPL_TrfFireWaran * * * * *= 55; * //Превращение в огненную ящерицу
const int SPL_TrfLurker * * * * * * = 56; * //Превращение в шныга
const int SPL_TrfShadowbeast * * * *= 57; * //Превращение в мракориса
const int SPL_TrfDragonSnapper * * *= 58; * //Превращение в остера
const int SPL_Charm * * * * * * * * = 59; * //Забыть

// Круг 5
const int SPL_MasterOfDisaster * * *= 60; * //Святой удар

// ???
const int SPL_Deathbolt * * * * * * = 61; * //Стрела смерти
const int SPL_Deathball * * * * * * = 62; * //Шар смерти
const int SPL_ConcussionBolt * * * *= 63; * //Стрела сотрясения
const int SPL_Reserved_64 * * * * * = 64; * //
const int SPL_Reserved_65 * * * * * = 65; * //
const int SPL_Reserved_66 * * * * * = 66; * //
const int SPL_Reserved_67 * * * * * = 67; * //
const int SPL_Reserved_68 * * * * * = 68; * //
const int SPL_Reserved_69 * * * * * = 69; * //

// Заклинания магов воды
const int SPL_Thunderstorm * * * * *= 70; * //Шторм
const int SPL_Whirlwind * * * * * * = 71; * //Смерч
const int SPL_WaterFist * * * * * * = 72; * //Кулак воды
const int SPL_IceLance * * * * * * *= 73; * //Ледяное копье
const int SPL_Inflate * * * * * * * = 74; * //Раздуть
const int SPL_Geyser * * * * * * * *= 75; * //Гейзер
const int SPL_Waterwall * * * * * * = 76; * //Водяная стена
const int SPL_Reserved_77 * * * * * = 77;
const int SPL_Reserved_78 * * * * * = 78;
const int SPL_Reserved_79 * * * * * = 79;

// Заклинания Майя
const int SPL_Plague * * * * * * * *= 80; * //Чума
const int SPL_Swarm * * * * * * * * = 81; * //Рой
const int SPL_GreenTentacle * * * * = 82; * //Зеленые щупальца
const int SPL_Earthquake * * * * * *= 83; * //Землетрясение
const int SPL_SummonGuardian * * * *= 84; * //Создать стража
const int SPL_Energyball * * * * * *= 85; * //Шар энергии
const int SPL_SuckEnergy * * * * * *= 86; * //Украсть энергию
const int SPL_Skull * * * * * * * * = 87; * //Крик мертвых
const int SPL_SummonZombie * * * * *= 88; * //Создать зомби
const int SPL_SummonMud * * * * * * = 89; * //Вызвать Муда

// ...
const int SPL_Reserved_90 * * * * * = 90;
const int SPL_Reserved_91 * * * * * = 91;
const int SPL_Reserved_92 * * * * * = 92;
const int SPL_Reserved_93 * * * * * = 93;
const int SPL_Reserved_94 * * * * * = 94;
const int SPL_Reserved_95 * * * * * = 95;
const int SPL_Reserved_96 * * * * * = 96;
const int SPL_Reserved_97 * * * * * = 97;
const int SPL_Reserved_98 * * * * * = 98;
const int SPL_Reserved_99 * * * * * = 99;

const int MAX_SPELL * * * * * * * * = 100; * //59 (Gothic),68 (Gothic2),100 (G2Addon)

// *Массив имен классов заклинаний
const string spellFxInstanceNames[MAX_SPELL] =
{
* *"PalLight", * * * * * * // 0 * *SPL_PalLight
* *"PalHeal", * * * * * * *// 1 * *SPL_PalLightHeal
* *"PalHolyBolt", * * * * *// 2 * *SPL_PalHolyBolt
* *"PalHeal", * * * * * * *// 3 * *SPL_PalMediumHeal
* *"PalRepelEvil", * * * * // 4 * *SPL_PalRepelEvil
* *"PalHeal", * * * * * * *// 5 * *SPL_PalFullHeal
* *"PalDestroyEvil", * * * // 6 * *SPL_PalDestroyEvil
* *"Teleport", * * * * * * // 7 * *SPL_PalTeleportSecret
* *"Teleport", * * * * * * // 8 * *SPL_TeleportSeaport
* *"Teleport", * * * * * * // 9 * *SPL_TeleportMonastery
* *"Teleport", * * * * * * // 10 * SPL_TeleportFarm
* *"Teleport", * * * * * * // 11 * SPL_TeleportXardas
* *"Teleport", * * * * * * // 12 * SPL_TeleportPassNW
* *"Teleport", * * * * * * // 13 * SPL_TeleportPassOW
* *"Teleport", * * * * * * // 14 * SPL_TeleportOC
* *"Teleport", * * * * * * // 15 * SPL_TeleportOWDemonTower
* *"Teleport", * * * * * * // 16 * SPL_TeleportTaverne
* *"Teleport", * * * * * * // 17 * SPL_Teleport_3
* *"Light", * * * * * * * *// 18 * SPL_Light
* *"Firebolt", * * * * * * // 19 * SPL_Firebolt
* *"Icebolt", * * * * * * *// 20 * SPL_Icebolt
* *"Heal", * * * * * * * * // 21 * SPL_LightHeal
* *"SummonGoblinSkeleton", // 22 * SPL_SummonGoblinSkeleton
* *"InstantFireball", * * *// 23 * SPL_InstantFireball
* *"Zap", * * * * * * * * *// 24 * SPL_Zap
* *"SummonWolf", * * * * * // 25 * SPL_SummonWolf
* *"WindFist", * * * * * * // 26 * SPL_WindFist
* *"Sleep", * * * * * * * *// 27 * SPL_Sleep
* *"Heal", * * * * * * * * // 28 * SPL_MediumHeal
* *"LightningFlash", * * * // 29 * SPL_LightningFlash
* *"ChargeFireball", * * * // 30 * SPL_ChargeFireball
* *"SummonSkeleton", * * * // 31 * SPL_SummonSkeleton
* *"Fear", * * * * * * * * // 32 * SPL_Fear
* *"Icecube", * * * * * * *// 33 * SPL_IceCube
* *"ChargeZap", * * * * * *// 34 * SPL_ChargeZap
* *"SummonGolem", * * * * *// 53 * SPL_SummonGolem
* *"DestroyUndead", * * * *// 36 * SPL_DestroyUndead
* *"Pyrokinesis", * * * * *// 37 * SPL_Pyrokinesis
* *"Firestorm", * * * * * *// 38 * SPL_Firestorm
* *"Icewave", * * * * * * *// 39 * SPL_IceWave
* *"SummonDemon", * * * * *// 40 * SPL_SummonDemon
* *"Heal", * * * * * * * * // 41 * SPL_FullHeal
* *"Firerain", * * * * * * // 42 * SPL_Firerain
* *"BreathOfDeath", * * * *// 43 * SPL_BreathOfDeath
* *"MassDeath", * * * * * *// 44 * SPL_MassDeath
* *"ArmyOfDarkness", * * * // 45 * SPL_ArmyOfDarkness
* *"Shrink", * * * * * * * // 46 * SPL_Shrink
* *"Transform", * * * * * *// 47 * SPL_TrfSheep
* *"Transform", * * * * * *// 48 * SPL_TrfScavenger
* *"Transform", * * * * * *// 49 * SPL_TrfGiantRat
* *"Transform", * * * * * *// 50 * SPL_TrfGiantBug
* *"Transform", * * * * * *// 51 * SPL_TrfWolf
* *"Transform", * * * * * *// 52 * SPL_TrfWaran
* *"Transform", * * * * * *// 53 * SPL_TrfSnapper
* *"Transform", * * * * * *// 54 * SPL_TrfWarg
* *"Transform", * * * * * *// 55 * SPL_TrfFireWaran
* *"Transform", * * * * * *// 56 * SPL_TrfLurker
* *"Transform", * * * * * *// 57 * SPL_TrfShadowbeast
* *"Transform", * * * * * *// 58 * SPL_TrfDragonSnapper
* *"Charm", * * * * * * * *// 59 * SPL_Charm
* *"MasterOfDisaster", * * // 60 * SPL_MasterOfDisaster
* *"Deathbolt", * * * * * *// 61 * SPL_Deathbolt
* *"Deathball", * * * * * *// 62 * SPL_Deathball
* *"Concussionbolt", * * * // 63 * SPL_Concussionbolt
* *"Light", * * * * * * * *// 64 * SPL_Reserved_64
* *"Light", * * * * * * * *// 65 * SPL_Reserved_65
* *"Light", * * * * * * * *// 66 * SPL_Reserved_66
* *"Light", * * * * * * * *// 67 * SPL_Reserved_67
* *"Light", * * * * * * * *// 68 * SPL_Reserved_68
* *"Light", * * * * * * * *// 69 * SPL_Reserved_69
* *"Thunderstorm", * * * * // 70 * SPL_Thunderstorm
* *"Whirlwind", * * * * * *// 71 * SPL_Whirlwind
* *"Waterfist", * * * * * *// 72 * SPL_WaterFist
* *"IceLance", * * * * * * // 73 * SPL_IceLance
* *"Sleep", * * * * * * * *// 74 * SPL_Inflate
* *"Geyser", * * * * * * * // 75 * SPL_Geyser
* *"Firerain", * * * * * * // 76 * SPL_Waterwall
* *"Light", * * * * * * * *// 77 * SPL_Reserved_77
* *"Light", * * * * * * * *// 78 * SPL_Reserved_78
* *"Light", * * * * * * * *// 79 * SPL_Reserved_79
* *"Fear", * * * * * * * * // 80 * SPL_Plague
* *"Swarm", * * * * * * * *// 81 * SPL_Swarm
* *"Greententacle", * * * *// 82 * SPL_GreenTentacle
* *"Firerain", * * * * * * // 83 * SPL_Earthquake
* *"SummonGuardian", * * * // 84 * SPL_SummonGuardian
* *"Energyball", * * * * * // 85 * SPL_Energyball
* *"SuckEnergy", * * * * * // 86 * SPL_SuckEnergy
* *"Skull", * * * * * * * *// 87 * SPL_Skull
* *"SummonZombie", * * * * // 88 * SPL_SummonZombie
* *"SummonMud", * * * * * *// 89 * SPL_SummonMud
* *"Light", * * * * * * * *// 90 * SPL_Reserved_90
* *"Light", * * * * * * * *// 91 * SPL_Reserved_91
* *"Light", * * * * * * * *// 92 * SPL_Reserved_92
* *"Light", * * * * * * * *// 93 * SPL_Reserved_93
* *"Light", * * * * * * * *// 94 * SPL_Reserved_94
* *"Light", * * * * * * * *// 95 * SPL_Reserved_95
* *"Light", * * * * * * * *// 96 * SPL_Reserved_96
* *"Light", * * * * * * * *// 97 * SPL_Reserved_97
* *"Light", * * * * * * * *// 98 * SPL_Reserved_98
* *"Light" * * * * * * * * // 99 * SPL_Reserved_99
};

// Массив имен анимаций заклинаний
const string spellFxAniLetters[MAX_SPELL] =
{
* *"SLE", * * * * * * * * *// 0 * * SPL_PalLight
* *"HEA", * * * * * * * * *// 1 * * SPL_PalLightHeal
* *"FBT", * * * * * * * * *// 2 * * SPL_PalHolyBolt
* *"HEA", * * * * * * * * *// 3 * * SPL_PalMediumHeal
* *"FBT", * * * * * * * * *// 4 * * SPL_PalRepelEvil
* *"HEA", * * * * * * * * *// 5 * * SPL_PalFullHeal
* *"FIB", * * * * * * * * *// 6 * * SPL_PalDestroyEvil
* *"HEA", * * * * * * * * *// 7 * *SPL_PalTeleportSecret
* *"HEA", * * * * * * * * *// 8 * *SPL_TeleportSeaport
* *"HEA", * * * * * * * * *// 9 * *SPL_TeleportMonastery
* *"HEA", * * * * * * * * *// 10 * SPL_TeleportFarm
* *"HEA", * * * * * * * * *// 11 * SPL_TeleportXardas
* *"HEA", * * * * * * * * *// 12 * SPL_TeleportPassNW
* *"HEA", * * * * * * * * *// 13 * SPL_TeleportPassOW
* *"HEA", * * * * * * * * *// 14 * SPL_TeleportOC
* *"HEA", * * * * * * * * *// 15 * SPL_TeleportOWDemonTower
* *"HEA", * * * * * * * * *// 16 * SPL_TeleportTaverne
* *"HEA", * * * * * * * * *// 17 * SPL_Teleport_3
* *"SLE", * * * * * * * * *// 18 * SPL_Light
* *"FBT", * * * * * * * * *// 19 * SPL_Firebolt
* *"FBT", * * * * * * * * *// 20 * SPL_Icebolt
* *"HEA", * * * * * * * * *// 21 * SPL_LightHeal
* *"SUM", * * * * * * * * *// 22 * SPL_SummonGoblinSkeleton
* *"FBT", * * * * * * * * *// 23 * SPL_InstantFireball
* *"FBT", * * * * * * * * *// 24 * SPL_Zap
* *"SUM", * * * * * * * * *// 25 * SPL_SummonWolf
* *"WND", * * * * * * * * *// 26 * SPL_WindFist
* *"SLE", * * * * * * * * *// 27 * SPL_Sleep
* *"HEA", * * * * * * * * *// 28 * SPL_MediumHeal
* *"WND", * * * * * * * * *// 29 * SPL_LightningFlash
* *"FIB", * * * * * * * * *// 30 * SPL_ChargeFireball
* *"SUM", * * * * * * * * *// 31 * SPL_SummonSkeleton
* *"FEA", * * * * * * * * *// 32 * SPL_Fear
* *"FRZ", * * * * * * * * *// 33 * SPL_IceCube
* *"FIB", * * * * * * * * *// 34 * SPL_ChargeZap
* *"SUM", * * * * * * * * *// 35 * SPL_SummonGolem
* *"FIB", * * * * * * * * *// 36 * SPL_DestroyUndead
* *"FIB", * * * * * * * * *// 37 * SPL_Pyrokinesis
* *"FIB", * * * * * * * * *// 38 * SPL_Firestorm
* *"FEA", * * * * * * * * *// 39 * SPL_IceWave
* *"SUM", * * * * * * * * *// 40 * SPL_SummonDemon
* *"HEA", * * * * * * * * *// 41 * SPL_FullHeal
* *"FEA", * * * * * * * * *// 42 * SPL_Firerain
* *"FIB", * * * * * * * * *// 43 * SPL_BreathOfDeath
* *"MSD", * * * * * * * * *// 44 * SPL_MassDeath
* *"SUM", * * * * * * * * *// 45 * SPL_ArmyOfDarkness
* *"SLE", * * * * * * * * *// 46 * SPL_Shrink
* *"TRF", * * * * * * * * *// 47 * SPL_TrfSheep
* *"TRF", * * * * * * * * *// 48 * SPL_TrfScavenger
* *"TRF", * * * * * * * * *// 49 * SPL_TrfGiantRat
* *"TRF", * * * * * * * * *// 50 * SPL_TrfGiantBug
* *"TRF", * * * * * * * * *// 51 * SPL_TrfWolf
* *"TRF", * * * * * * * * *// 52 * SPL_TrfWaran
* *"TRF", * * * * * * * * *// 53 * SPL_TrfSnapper
* *"TRF", * * * * * * * * *// 54 * SPL_TrfWarg
* *"TRF", * * * * * * * * *// 55 * SPL_TrfFireWaran
* *"TRF", * * * * * * * * *// 56 * SPL_TrfLurker
* *"TRF", * * * * * * * * *// 57 * SPL_TrfShadowbeast
* *"TRF", * * * * * * * * *// 58 * SPL_TrfDragonSnapper
* *"FIB", * * * * * * * * *// 59 * SPL_Charm
* *"FIB", * * * * * * * * *// 60 * SPL_MasterOfDisaster
* *"FBT", * * * * * * * * *// 61 * SPL_Deathbolt
* *"FBT", * * * * * * * * *// 62 * SPL_Deathball
* *"FBT", * * * * * * * * *// 63 * SPL_Concussionbolt
* *"XXX", * * * * * * * * *// 64 * SPL_Reserved_64
* *"XXX", * * * * * * * * *// 65 * SPL_Reserved_65
* *"XXX", * * * * * * * * *// 66 * SPL_Reserved_66
* *"XXX", * * * * * * * * *// 67 * SPL_Reserved_67
* *"XXX", * * * * * * * * *// 68 * SPL_Reserved_68
* *"XXX", * * * * * * * * *// 69 * SPL_Reserved_69
* *"STM", * * * * * * * * *// 70 * SPL_Thunderstorm
* *"WHI", * * * * * * * * *// 71 * SPL_Whirlwind * * *
* *"WND", * * * * * * * * *// 72 * SPL_WaterFist
* *"FBT", * * * * * * * * *// 73 * SPL_IceLance
* *"SLE", * * * * * * * * *// 74 * SPL_Inflate * * * *
* *"WND", * * * * * * * * *// 75 * SPL_Geyser * * * * *
* *"FEA", * * * * * * * * *// 76 * SPL_Waterwall
* *"XXX", * * * * * * * * *// 77 * SPL_Reserved_77
* *"XXX", * * * * * * * * *// 78 * SPL_Reserved_78
* *"XXX", * * * * * * * * *// 79 * SPL_Reserved_79
* *"FBT", * * * * * * * * *// 80 * SPL_Plague
* *"FBT", * * * * * * * * *// 81 * SPL_Swarm * * * * *
* *"FRZ", * * * * * * * * *// 82 * SPL_GreenTentacle
* *"FEA", * * * * * * * * *// 83 * SPL_Earthquake
* *"SUM", * * * * * * * * *// 84 * SPL_SummonGuardian
* *"WND", * * * * * * * * *// 85 * SPL_Energyball
* *"WND", * * * * * * * * *// 86 * SPL_SuckEnergy
* *"WND", * * * * * * * * *// 87 * SPL_Skull
* *"SUM", * * * * * * * * *// 88 * SPL_SummonZombie * *
* *"SUM", * * * * * * * * *// 89 * SPL_SummonMud
* *"XXX", * * * * * * * * *// 90 * SPL_Reserved_90
* *"XXX", * * * * * * * * *// 91 * SPL_Reserved_91
* *"XXX", * * * * * * * * *// 92 * SPL_Reserved_92
* *"XXX", * * * * * * * * *// 93 * SPL_Reserved_93
* *"XXX", * * * * * * * * *// 94 * SPL_Reserved_94
* *"XXX", * * * * * * * * *// 95 * SPL_Reserved_95
* *"XXX", * * * * * * * * *// 96 * SPL_Reserved_96
* *"XXX", * * * * * * * * *// 97 * SPL_Reserved_97
* *"XXX", * * * * * * * * *// 98 * SPL_Reserved_98
* *"XXX" * * * * * * * * * // 99 * SPL_Reserved_99
};

Ответить с цитированием
Старый 21.01.2005, 10:00   #76
Vam

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

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

Продолжение...

// Таланты
const int NPC_TALENT_UNKNOWN * * * * * *= 0; * *//Отсутствует
const int NPC_TALENT_1H * * * * * * * * = 1; * *//Владение одноручным оружием
const int NPC_TALENT_2H * * * * * * * * = 2; * *//Владение двуручным оружием
const int NPC_TALENT_BOW * * * * * * * *= 3; * *//Владение луком
const int NPC_TALENT_CROSSBOW * * * * * = 4; * *//Владение арбалетом
const int NPC_TALENT_PICKLOCK * * * * * = 5; * *//Умение вскрывать замки
//const int NPC_TALENT_PICKPOCKET * * * = 6; * *//Карманная кража (из Готики 1, не используется)
const int NPC_TALENT_MAGE * * * * * * * = 7; * *//Маг
const int NPC_TALENT_SNEAK * * * * * * *= 8; * *//Подкрадывание
const int NPC_TALENT_REGENERATE * * * * = 9; * *//Регенерация
const int NPC_TALENT_FIREMASTER * * * * = 10; * //Владение огнем
const int NPC_TALENT_ACROBAT * * * * * *= 11; * //Акробатика
const int NPC_TALENT_PICKPOCKET * * * * = 12; * //Карманная кража
const int NPC_TALENT_SMITH * * * * * * *= 13; * //Кузнечное дело
const int NPC_TALENT_RUNES * * * * * * *= 14; * //Изготовление рун
const int NPC_TALENT_ALCHEMY * * * * * *= 15; * //Алхимия
const int NPC_TALENT_TAKEANIMALTROPHY * = 16; * //Разделка животных
const int NPC_TALENT_FOREIGNLANGUAGE * *= 17; * //Изучение иностранных языков
const int NPC_TALENT_WISPDETECTOR * * * = 18; * //Поиск предметов
const int NPC_TALENT_C * * * * * * * * *= 19; * //(пусто)
const int NPC_TALENT_D * * * * * * * * *= 20; * //(пусто)
const int NPC_TALENT_E * * * * * * * * *= 21; * //(пусто)

const int NPC_TALENT_MAX * * * * * * * *= 22; * //Макс. число талантов

// Массив талантов изготовления рун
var int PLAYER_TALENT_RUNES[MAX_SPELL];

// Уровни знаний иностранных языков
const int LANGUAGE_1 * * * *= 0;
const int LANGUAGE_2 * * * *= 1;
const int LANGUAGE_3 * * * *= 2;

const int MAX_LANGUAGE * * *= 3;

var int PLAYER_TALENT_FOREIGNLANGUAGE[MAX_LANGUAGE];

// Уровни поиска предметов
const int WISPSKILL_NF * * * * * * *= 0; * *//Поиск оружия ближнего радиуса поражения
const int WISPSKILL_FF * * * * * * *= 1; * *//Поиск оружия дальнего радиуса поражения
const int WISPSKILL_NONE * * * * * *= 2; * *//Поиск денег, ключей, предметов обихода
const int WISPSKILL_RUNE * * * * * *= 3; * *//Поиск рун и свитков
const int WISPSKILL_MAGIC * * * * * = 4; * *//Поиск колец и амулетов
const int WISPSKILL_FOOD * * * * * *= 5; * *//Поиск питания и растений
const int WISPSKILL_POTIONS * * * * = 6; * *//Поиск напитков всех видов

const int MAX_WISPSKILL * * * * * * = 7; * *//Макс. количество уровней поиска

var int PLAYER_TALENT_WISPDETECTOR [MAX_WISPSKILL];

// Режимы поиска предметов
var int WispSearching;
const int WispSearch_Follow * * * * = 1; * *//Огонек следует за вами
const int WispSearch_ALL * * * * * *= 2; * *//Ищет все, что может найти
const int WispSearch_POTIONS * * * *= 3; * *//Ищет напитки
const int WispSearch_MAGIC * * * * *= 4; * *//Ищет магические предметы
const int WispSearch_FOOD * * * * * = 5; * *//Ищет питание
const int WispSearch_NF * * * * * * = 6; * *//Ищет оружия ближнего радиуса поражения
const int WispSearch_FF * * * * * * = 7; * *//Ищет оружия дальнего радиуса поражения
const int WispSearch_NONE * * * * * = 8; * *//Ищет деньги
const int WispSearch_RUNE * * * * * = 9; * *//Ищет руны

// Алхимия
const int POTION_Health_01 * * * * *= 0; * *//Лечебная эссенция
const int POTION_Health_02 * * * * *= 1; * *//Лечебный экстракт
const int POTION_Health_03 * * * * *= 2; * *//Лечебный эликсир
const int POTION_Mana_01 * * * * * *= 3; * *//Эссенция маны
const int POTION_Mana_02 * * * * * *= 4; * *//Экстракт маны
const int POTION_Mana_03 * * * * * *= 5; * *//Эликсир маны
const int POTION_Speed * * * * * * *= 6; * *//Напиток ускорения
const int POTION_Perm_STR * * * * * = 7; * *//Эликсир силы
const int POTION_Perm_DEX * * * * * = 8; * *//Эликсир ловкости
const int POTION_Perm_Mana * * * * *= 9; * *//Постоянный напиток маны
const int POTION_Perm_Health * * * *= 10; * //Постоянный лечебный напиток
const int POTION_MegaDrink * * * * *= 11; * //Эмбарла Фиргасто
const int CHARGE_Innoseye * * * * * = 12; * //Зарядить Глаз
const int POTION_Mana_04 * * * * * *= 13; * //Чистая мана
const int POTION_Health_04 * * * * *= 14; * //Чистая жизненная энергия

const int MAX_POTION * * * * * * * *= 15; * //Макс. количество видов алхимии

var int PLAYER_TALENT_ALCHEMY[MAX_POTION];

// Кузнечное дело
const int WEAPON_Common * * * * * * = 0; * *//Простой самокованный меч

const int WEAPON_1H_Special_01 * * *= 1; * *//Рудный длинный клинок
const int WEAPON_2H_Special_01 * * *= 2; * *//Рудный двуручник
const int WEAPON_1H_Special_02 * * *= 3; * *//Рудный клинок чудовища
const int WEAPON_2H_Special_02 * * *= 4; * *//Тяжелый рудный двуручник
const int WEAPON_1H_Special_03 * * *= 5; * *//Рудный боевой клинок
const int WEAPON_2H_Special_03 * * *= 6; * *//Тяжелый рудный боевой клинок
const int WEAPON_1H_Special_04 * * *= 7; * *//Рудный потрошитель драконов
const int WEAPON_2H_Special_04 * * *= 8; * *//Большой рудный потрошитель драконов

const int WEAPON_1H_Harad_01 * * * *= 9; * *//Благородный меч
const int WEAPON_1H_Harad_02 * * * *= 10; * //Благородный длинный меч
const int WEAPON_1H_Harad_03 * * * *= 11; * //Рубиновый клинок
const int WEAPON_1H_Harad_04 * * * *= 12; * //Благородный меч чудовища

const int MAX_WEAPONS * * * * * * * = 13; * //Макс. количество видов создаваемого оружия

var int PLAYER_TALENT_SMITH[MAX_WEAPONS];

// Разделка животных
const int TROPHY_Teeth * * * * * * *= 0; * *//Взять зубы
const int TROPHY_Claws * * * * * * *= 1; * *//Взять когти
const int TROPHY_Fur * * * * * * * *= 2; * *//Взять шкуру
const int TROPHY_Heart * * * * * * *= 3; * *//Взять сердце
const int TROPHY_ShadowHorn * * * * = 4; * *//Взять рог мракориса
const int TROPHY_FireTongue * * * * = 5; * *//Взять огненный язык
const int TROPHY_BFWing * * * * * * = 6; * *//Взять крылья кровяного шершня
const int TROPHY_BFSting * * * * * *= 7; * *//Взять жало кровяного шершня
const int TROPHY_Mandibles * * * * *= 8; * *//Взять жвало
const int TROPHY_CrawlerPlate * * * = 9; * *//Взять панцирь ползуна
const int TROPHY_DrgSnapperHorn * * = 10; * //Взять рог остера
const int TROPHY_DragonScale * * * *= 11; * //Взять чешую дракона
const int TROPHY_DragonBlood * * * *= 12; * //Взять кровь дракона
const int TROPHY_ReptileSkin * * * *= 13; * //Взять кожу рептилии

const int MAX_TROPHIES * * * * * * *= 14; * //Макс. количество трофеев

var int PLAYER_TALENT_TAKEANIMALTROPHY[MAX_TROPHIES];

// ****************************************
// Шрифты для движка
// ****************************************
const string TEXT_FONT_20 * * * * * = "Font_old_20_white.tga";
const string TEXT_FONT_10 * * * * * = "Font_old_10_white.tga";
const string TEXT_FONT_DEFAULT * * *= "Font_old_10_white.tga";
const string TEXT_FONT_Inventory * *= "Font_old_10_white.tga";

// ****************************************
// Задержка текста при выводе в режиме диалога в мс на символ
// ****************************************
const float VIEW_TIME_PER_CHAR * * *= 550;

// ****************************************
// *Области игрового мира
// ****************************************
const int NEWWORLD_ZEN * * * * * * * * *= 1; * *//Хоринис с окрестностями
const int OLDWORLD_ZEN * * * * * * * * *= 2; * *//Весь Миненталь
const int DRAGONISLAND_ZEN * * * * * * *= 3; * *//Остров Драконов
const int ADDONWORLD_ZEN * * * * * * * *= 4; * *//Яркендар

// ****************************************
// Параметры камеры для показа предметов инвентаря
// ****************************************
const int INVCAM_ENTF_RING_STANDARD * * = 400;
const int INVCAM_ENTF_AMULETTE_STANDARD = 150;
const int INVCAM_ENTF_MISC_STANDARD * * = 200;
const int INVCAM_ENTF_MISC2_STANDARD * *= 250;
const int INVCAM_ENTF_MISC3_STANDARD * *= 500;
const int INVCAM_ENTF_MISC4_STANDARD * *= 650;
const int INVCAM_ENTF_MISC5_STANDARD * *= 850;
const int INVCAM_X_RING_STANDARD * * * *= 25;
const int INVCAM_Z_RING_STANDARD * * * *= 45;

Ответить с цитированием
Старый 21.01.2005, 23:27   #77
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2All:
Вот-с, собрал воедино все уроки Vam'a на этот момент, привел всё к общему знаменателю, так сказать, отредактировал кое-что, кое-где подправил.
HTML файл в архиве можно скачать тут
Разумеется, все права принадлежат Vam'у, а нелегальное копирование преследуется по закону :D :D :D
Отправить личное сообщение для Ответить с цитированием
Старый 22.01.2005, 16:31   #78
Vam

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

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

Тема вторая: Классы.
Предварительное рассмотрение классов было в начале уроков. Сейчас мы рассмотрим классы подробно.
Все классы описаны в файле ..\_intern\Classes.d

const int MAX_CHAPTER * *= 5; * //Макс. количество глав в игре (не используется)
const int MAX_MISSIONS * = 5; * //Макс. количество одновременно выполняемых миссий
const int MAX_HITCHANCE *= 5; * //Макс. размерность массива способностей владения видами оружия

// Класс параметров НПС
CLASS C_NPC
{
* *var int * * id; * * * * * * * * * * * * //Однозначный идентификатор, связывающий конкретного НПС с его параметрами
* *var string *name[5]; * * * * * * * * * *//Имя НПС, оно появляется на экране, если НПС находится в фокусе
* *var string *slot; * * * * * * * * * * * //(не используется) Можно использовать для хранения какой-нибудь строки текста!
* *var string *effect; * * * * * * * * * * //Имя визуального эффекта, привязанного к НПС
* *var int * * npcType; * * * * * * * * * *//Тип НПС (описывается в файле ..AI\AI_Intern\AI_Constants.d)
* *var int * * flags; * * * * * * * * * * *//Флаги НПС (NPC_FLAG_IMMORTAL, NPC_FLAG_GHOST)
* *var int * * attribute[ATR_INDEX_MAX]; * //Массив значений атрибутов (ATR_HITPOINTS, ATR_MANA, ATR_STRENGTH и т.д.)
* *var int * * HitChance[MAX_HITCHANCE]; * //Способность владения НПС определенным оружием
* *var int * * protection[PROT_INDEX_MAX]; //Массив значений защиты от определенных повреждений
* *var int * * damage[DAM_INDEX_MAX]; * * *//Массив значений наносимых повреждений
* *var int * * damagetype; * * * * * * * * //Тип повреждения (НПС наносит в данный момент)
* *var int * * guild; * * * * * * * * * * *//Принадлежность к гильдии
* *var int * * level; * * * * * * * * * * *//Уровень НПС
* *var func * *mission[MAX_MISSIONS]; * * *//(не используется)
* *var int * * fight_tactic; * * * * * * * //Тактика сражения (описывается в файле ..AI\AI_Intern\AI_Constants.d)
* *var int * * weapon; * * * * * * * * * * //(не используется)
* *var int * * voice; * * * * * * * * * * *//Номер голоса в диалогах
* *var int * * voicePitch; * * * * * * * * //Тональность голоса
* *var int * * bodymass; * * * * * * * * * //(не используется)
* *var func * *daily_routine; * * * * * * *//Функция распорядка дня
* *var func * *start_aistate; * * * * * * *//Функция начального AI состояния (ZS_ функции)
* *var string *spawnPoint; * * * * * * * * //Имя Waypoint, в котором рождается НПС
* *var int * * spawnDelay; * * * * * * * * //Задержка в секундах между смертью и возрождением НПС
* *var int * * senses; * * * * * * * * * * //Чувства (зрение, слух, обоняние)
* *var int * * senses_range; * * * * * * * //Диапазон чувств в см.
* *var int * * aivar[100]; * * * * * * * * //Массив значений AI переменных (описывается в файле ..AI\AI_Intern\AI_Constants.d), неиспользуемые индуксы могут использоваться для собственных целей.
* *var string *wp; * * * * * * * * * * * * //Текущий Waypoint, в котором находится НПС (отслеживается Gothic.exe)
* *var int * * exp; * * * * * * * * * * * *//Количество полученной экспы (только для ГГ)
* *var int * * exp_next; * * * * * * * * * //Количество экспы оставшееся до следующего уровня (только для ГГ)
* *var int * * lp; * * * * * * * * * * * * //Свободные очки обучения (только для ГГ)
* *var int * * bodyStateInterruptableOverride; //Флаг возможности прерывания действия НПС (если TRUE - НПС прервать нельзя)
* *var int * * noFocus; * * * * * * * * * *//Флаг, отвечающий за фокус (если TRUE и НПС находится в фокусе, то у НПС не показывается имя и количество жизни)
}; * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

// Класс Миссий (не используется) * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CLASS C_Mission * * * * * * * * * * * * * * * * * * * * * *
{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *var string *name;
* *var string *description;
* *var int * * duration;
* *var int * * important;
* *var func * *offerConditions;
* *var func * *offer;
* *var func * *successConditions;
* *var func * *success;
* *var func * *failureConditions;
* *var func * *failure;
* *var func * *obsoleteConditions;
* *var func * *obsolete;
* *var func * *running;
}; * * * * * * * * * * * * * * * * * * * * * * *

// Класс параметров предмета
CLASS C_Item
{
* *var int * * id; * * * * * * * * * * * * //Однозначный идентификатор, связывающий конкретный предмет с его параметрами
* *var string *name; * * * * * * * * * * * //Имя предмета, оно появляется на экране, если предмет находится в фокусе
* *var string *nameID; * * * * * * * * * * //(не используется) Можно использовать для хранения какой-нибудь строки текста!
* *var int * * hp,hp_max; * * * * * * * * *//???
* *var int * * mainflag; * * * * * * * * * //Флаги категории предмета
* *var int * * flags; * * * * * * * * * * *//Остальные флаги предметов
* *var int * * weight,value; * * * * * * * //Вес и стоимость предмета
* *var int * * damageType; * * * * * * * * //Тип наносимого повреждения (используется для оружия)
* *var int * * damageTotal; * * * * * * * *//Суммарное повреждение (используется для оружия)
* *var int * * damage[DAM_INDEX_MAX]; * * *//Величина ущерба по типам повреждений (используется для оружия)
* *var int * * wear; * * * * * * * * * * * //Флаги ношения предмета
* *var int * * protection[PROT_INDEX_MAX]; //Величина защиты от конкретных повреждений (используется для брони)
* *var int * * nutrition; * * * * * * * * *//(не используется)
* *var int * * cond_atr[3]; * * * * * * * *//Массив атрибутов, требуемых для применения
* *var int * * cond_value[3]; * * * * * * *//Массив значений атрибутов, требуемых для применения
* *var int * * change_atr[3]; * * * * * * *//(не используется)
* *var int * * change_value[3]; * * * * * *//(не используется)
* *var func * *magic; * * * * * * * * * * *//(не используется)
* *var func * *on_equip; * * * * * * * * * //Функция вызываемая при экипировке
* *var func * *on_unequip; * * * * * * * * //Функция вызывается, когда предмет снимается или убирается в инвентарь
* *var func * *on_state[4]; * * * * * * * *//Функции вызываемые при использовании предмета по видам состояний (видов состояний не обнаружил ???)
* *var func * *owner; * * * * * * * * * * *//Владелец предмета, записывается ID НПС (не понятен тип переменной FUNC ???)
* *var int * * ownerGuild; * * * * * * * * //Какой гильдии принадлежит предмет
* *var int * * disguiseGuild; * * * * * * *//(не используется)
* *var string *visual; * * * * * * * * * * //Имя .3DS файла текстур предмета
* *var string *visual_change; * * * * * * *//Имя .ASC файла визуальных эффектов при получении этого предмета
* *var string *effect; * * * * * * * * * * //Имя визуального эффекта, привязанного к предмету
* *var int * * visual_skin; * * * * * * * *//Вариация текстуры для .3DS файла текстур предмета
* *var string *scemeName; * * * * * * * * *//Внутреннее имя предмета
* *var int * * material; * * * * * * * * * //Материал предмета
* *var int * * munition; * * * * * * * * * //Тип заряда для оружия дальнего радиуса поражения
* *var int * * spell; * * * * * * * * * * *//Номер заклинания, которое вызывает данный предмет
* *var int * * range; * * * * * * * * * * *//Радиус поражения оружием ближнего боя
* *var int * * mag_circle; * * * * * * * * //Круг магии, к которому принадлежит предмет
* *var string *description; * * * * * * * *//Название предмета в инвентаре
* *var string *text[ITM_TEXT_MAX]; * * * * //Массив строк описания предмета в инвентаре
* *var int * * count[ITM_TEXT_MAX]; * * * *//Массив значений характеристик предмета в инвентаре (соответствует определенной текстовой строке)
* *// Характеристики изображения предмета в инвентаре
* *var int * * inv_zbias; * * * * * * * * *//Масштаб предмета в инвентаре
* *var int * * inv_rotx; * * * * * * * * * //Поворот предмета в инвентаре относительно оси X
* *var int * * inv_roty; * * * * * * * * * //Поворот предмета в инвентаре относительно оси Y
* *var int * * inv_rotz; * * * * * * * * * //Поворот предмета в инвентаре относительно оси Z
* *var int * * inv_animate; * * * * * * * *//Вращение предмета в инвентаре
}; * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Класс параметров фокуса
CLASS C_Focus * * * * * * * * * * * * * * * * * * * * * * *
{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *// для НПС * * * * * * * * * * * * * * * * * * * * *
* *var float * npc_longrange; * * * * * * *//Ширина
* *var float * npc_range1,npc_range2; * * *//Диапазон дальности
* *var float * npc_azi; * * * * * * * * * *//Азимут
* *var float * npc_elevdo,npc_elevup; * * *//Тангаж
* *var int * * npc_prio; * * * * * * * * * //Приоритет
* *// для предметов * * * * * * * * * * * * * * * * * * * * * *
* *var float * item_range1,item_range2; * *//Диапазон дальности
* *var float * item_azi; * * * * * * * * * //Азимут
* *var float * item_elevdo,item_elevup; * *//Тангаж
* *var int * * item_prio; * * * * * * * * *//Приоритет
* *// для MOB's * * * * * * * * * * * * * * * * * * * * * *
* *var float * mob_range1,mob_range2; * * *//Диапазон дальности
* *var float * mob_azi; * * * * * * * * * *//Азимут
* *var float * mob_elevdo,mob_elevup; * * *//Тангаж
* *var int * * mob_prio; * * * * * * * * * //Приоритет
};

// Класс параметров диалогов
CLASS C_INFO
{
* *var int * * npc; * * * * * * * * * * * *//ID НПС, которому принадлежит диалог
* *var int * * nr; * * * * * * * * * * * * //???
* *var int * * important; * * * * * * * * *//Флаг начала диалога (TRUE - диалог начинаешь ты, FALSE - с тобой)
* *var func * *condition; * * * * * * * * *//Функция проверки условий начала диалога (пока функция не возвратит TRUE, диалог не начнется)
* *var func * *information; * * * * * * * *//Функция управления диалогом
* *var string *description; * * * * * * * *//Строка, которая выводится в окно выбора вариантов ответов
* *var int * * trade; * * * * * * * * * * *//Возможность торговли (TRUE - возможно торговать, FALSE - нет)
* *var int * * permanent; * * * * * * * * *//Постоянность диалога (TRUE - диалог повторяется при каждом обращении, FALSE - однократный)
};

// Класс реакций на предметы (не используется)
CLASS C_ITEMREACT
{
* *var int * * npc;
* *var int * * trade_item;
* *var int * * trade_amount;
* *var int * * requested_cat;
* *var int * * requested_item;
* *var int * * requested_amount;
* *var func * *reaction;
};

// Класс параметров заклинаний
CLASS C_Spell
{
* *var float * time_per_mana; * * * * * * *//Время в мс, требуемое для инвестирования маны на один уровень
* *var int * * damage_per_level; * * * * * //Наносимый урон за уровень заклинания
* *var int * * damageType; * * * * * * * * //Тип повреждения
* *var int * * spellType; * * * * * * * * *//Категория заклинания
* *var int * * canTurnDuringInvest; * * * *//Возможность поворота во время инвестирования маны (TRUE - возможно)
* *var int * * canChangeTargetDuringInvest; * *//Возможность выбора цели во время инвестирования маны (TRUE - возможно)
* *var int * * isMultiEffect; * * * * * * *//Возможность мультиэффектов заклинания (множественные цели и др.)
* *var int * * targetCollectAlgo; * * * * *//Константа описания цели
* *var int * * targetCollectType; * * * * *//Тип цели заклинания
* *var int * * targetCollectRange; * * * * //Дальность действия
* *var int * * targetCollectAzi; * * * * * //Угол азимута
* *var int * * targetCollectElev; * * * * *//Угол тангажа
};

// ************************************************** **********
// Глобальные ссылки на классы
// ************************************************** **********

// Сам НПС и Другой НПС
INSTANCE self,other(C_NPC);

// НПС - жертва определенного действия (3ий в действии)
INSTANCE victim(C_NPC);

// Сам предмет
INSTANCE item(C_Item);

// Сам ГГ (игрок)
INSTANCE hero(C_NPC);

Ответить с цитированием
Старый 22.01.2005, 16:46   #79
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Vam:
var int * * nr; * * * * * * * * * * * * //???
Я в своей мини-редакции написал что это:

var int nr; * * * //опция диалога с большим nr будет отображаться в списке ниже

Отправить личное сообщение для Ответить с цитированием
Старый 23.01.2005, 13:53   #80
Vam

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

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

Тема третья: Искусственный интеллект.

Все функции, константы и переменные искусственного интелекта находятся в папке ..\AI

1. Константы AI.
Они описаны в файле ..\AI_Intern\AI_Constants.d

// **************************
// AIVAR - Константы для людей
// **************************

// ------ Новости и память ---------------------

const int * AIV_LastFightAgainstPlayer * * *= 0; * *//Параметры последнего сражения с ГГ
const int * * * FIGHT_NONE * * * * * * *= 0; * * * *//Сражения с ГГ не было
const int * * * FIGHT_LOST * * * * * * *= 1; * * * *//Сражение проиграно (победа ГГ)
const int * * * FIGHT_WON * * * * * * * = 2; * * * *//Сражение выиграно (победа НПС)
const int * * * FIGHT_CANCEL * * * * * *= 3; * * * *//Сражение прервано

const int * AIV_NpcSawPlayerCommit * * * * *= 1; * *//НПС видел какой криминал совершил ГГ
const int * * * CRIME_NONE * * * * * * *= 0; * * * *//Криминала не было
const int * * * CRIME_SHEEPKILLER * * * = 1; * * * *//ГГ убил овцу
const int * * * CRIME_ATTACK * * * * * *= 2; * * * *//ГГ сражался с НПС (параметры в AIV_LastFightAgainstPlayer)
const int * * * CRIME_THEFT * * * * * * = 3; * * * *//ГГ занимался воровством
const int * * * CRIME_MURDER * * * * * *= 4; * * * *//ГГ совершил убийство

const int * AIV_NpcSawPlayerCommitDay * * * = 2; * *//День, когда ГГ совершил криминал

// ------ Восприятие диалога -------------------
const int * AIV_NpcStartedTalk * * * * * * *= 3; * *//Устанавливается в TRUE, если НПС с важной информацией обращается к другому НПС

// ------ Диалог -------------------------------
const int * AIV_INVINCIBLE * * * * * * * * *= 4; * *//Устанавливается в TRUE в начале диалога для обоих НПС
const int * AIV_TalkedToPlayer * * * * * * *= 5; * *//Устанавливается в TRUE, если НПС уже разговаривал с ГГ

// ------ Карманная кража ----------------------
const int * AIV_PlayerHasPickedMyPocket * * = 6; * *//Устанавливается в TRUE, если ГГ залезал в карман НПС

// ------ Сражение -----------------------------
const int * AIV_LASTTARGET * * * * * * * * *= 7; * *//Ссылка на последнего атакованного НПС
const int * AIV_PursuitEnd * * * * * * * * *= 8; * *//Устанавливается в TRUE, если НПС закончил преследование

// ------ Причина нападения ------------
const int * AIV_ATTACKREASON * * * * * * * *= 9; * *//Причина нападения (по приоритетам)
const int * * * AR_NONE * * * * * * * * = 0; * * * *//Причины нет
const int * * * AR_LeftPortalRoom * * * = 1; * * * *//ГГ находится в помещении с ограниченным доступом
const int * * * AR_ClearRoom * * * * * *= 2; * * * *//ГГ находится в помещении другого НПС
const int * * * AR_GuardCalledToRoom * *= 3; * * * *//Вызвана охрана для защиты помещения
const int * * * AR_MonsterVsHuman * * * = 4; * * * *//Монстр сражается с человеком, ГГ помогает человеку
const int * * * AR_MonsterMurderedHuman = 5; * * * *//Монстр убил человека
const int * * * AR_SheepKiller * * * * *= 6; * * * *//Овца была атакована и убита (человеком или монстром)
const int * * * AR_Theft * * * * * * * *= 7; * * * *//ГГ что-то украл
const int * * * AR_UseMob * * * * * * * = 8; * * * *//ГГ использовал МОВ с флагом принадлежности другому НПС
const int * * * AR_GuardCalledToThief * = 9; * * * *//Вызвана стража по факту воровства ГГ
const int * * * AR_ReactToWeapon * * * *= 10; * * * //Преступник не убрал оружие после двукратного пердупреждения или пустился в бега
const int * * * AR_ReactToDamage * * * *= 11; * * * //Преступник ранил НПС
const int * * * AR_GuardStopsFight * * *= 12; * * * //Охрана прекращает атаковать преступника
const int * * * AR_GuardCalledToKill * *= 13; * * * //Вызвана охрана по факту убийства
const int * * * AR_GuildEnemy * * * * * = 14; * * * //НПС является врагом гильдии (человек или монстр)
const int * * * AR_HumanMurderedHuman * = 15; * * * //Человек убил человека
const int * * * AR_MonsterCloseToGate * = 16; * * * //Охрана ворот атакует враждебного монстра
const int * * * AR_GuardStopsIntruder * = 17; * * * //Охрана ворот атакует незваного гостя
const int * * * AR_SuddenEnemyInferno * = 18; * * * //Немедленная атака противника (невзирая на блокировку)
const int * * * AR_KILL * * * * * * * * = 19; * * * //ГГ убил НПС

// ------ Обыскивание трупов --------------------
const int * AIV_RANSACKED * * * * * * * * * = 10; * //Устанавливается TRUE, если труп обыскивается

// ------ Смерть --------------------------------
const int * AIV_DeathInvGiven * * * * * * * = 11; * //Устанавливается TRUE, если труп обыскан

// ------ Охрана --------------------------------
const int * AIV_Guardpassage_Status * * * * = 12; * //Статус предупреждений охраны
const int * * * GP_NONE * * * * * * * * = 0; * * * *//Нет предупреждений
const int * * * GP_FirstWarnGiven * * * = 1; * * * *//НПС получил первое предупреждение
const int * * * GP_SecondWarnGiven * * *= 2; * * * *//НПС получил второе предупреждение
const int * AIV_LastDistToWP * * * * * * * *= 13; * //Расстояние от WP охраны до точки, в которой НПС получил предупреждение
const int * AIV_PASSGATE * * * * * * * * * *= 14; * //TRUE - проход возможен, FALSE - проход запрещен

// ------ Предоставление экспы ------------------
const int * AIV_PARTYMEMBER * * * * * * * * = 15; * //Если TRUE, то экспа за убитых монстров сопровождавшим идет ГГ.
const int * AIV_VictoryXPGiven * * * * * * *= 16; * //Устанавливается TRUE, когда экспа за победу начислена

// ------ Пол -----------------------------------
const int AIV_Gender * * * * * * * * * * * *= 17; * //Пол НПС
const int * * * MALE * * * * * * * * * *= 0; * * * *//Мужской
const int * * * FEMALE * * * * * * * * *= 1; * * * *//Женский

// ------ Пища ----------------------------------
const int AIV_Food * * * * * * * * * * * * *= 18; * //Употребляемая пища
const int * * * FOOD_Apple * * * * * * *= 0; * * * *//Яблоко
const int * * * FOOD_Cheese * * * * * * = 1; * * * *//Сыр
const int * * * FOOD_Bacon * * * * * * *= 2; * * * *//Бекон
const int * * * FOOD_Bread * * * * * * *= 3; * * * *//Хлеб

// ------ Вспомогательные параметры для ТА ------
const int AIV_TAPOSITION * * * * * * * * * *= 19; * //Позиции выполненния ТА
const int * * * ISINPOS * * * * * * * * = 0; * * * *//НПС в позиции выполнения ТА
const int * * * NOTINPOS * * * * * * * *= 1; * * * *//НПС не в позиции выполнения ТА
const int * * * NOTINPOS_WALK * * * * * = 2; * * * *//НПС идет к точке выполнения ТА

// ------ Выбор заклинания ----------------------
const int AIV_SelectSpell * * * * * * * * * = 20; * //Случайное число, соответствующее заклинанию, выбранному НПС

// ------ Наблюдение ----------------------------
const int AIV_SeenLeftRoom * * * * * * * * *= 21; * //TRUE, если НПС наблюдает за своим помещением

//////////////////////////////////// * * * * * * * *//Переменные использующиеся при комментариях действий ГГ
var int Player_SneakerComment; * * * * * * * * * * *//ГГ крадется
var int Player_LeftRoomComment; * * * * * * * * * * //ГГ зашел в чужое помещение
var int Player_DrawWeaponComment; * * * * * * * * * //ГГ вытащил оружие
var int Player_GetOutOfMyBedComment; * * * * * * * *//ГГ лег на чужую кровать
////////////////////////////////////

// ------ Сражение со вторым противником --------
const int AIV_HitByOtherNpc * * * * * * * * = 22; * //Расстояние до другого НПС
const int AIV_WaitBeforeAttack * * * * * * *= 23; * //Если != 0, то вводится задержка перед атакой
const int AIV_LastAbsolutionLevel * * * * * = 24; * //Репутация ГГ для конкретной локации

// ----------------------------------------------
const int AIV_ToughGuyNewsOverride * * * * *= 25; * //НПС не имеет новостей о "жестком парне" (ГГ)

Ответить с цитированием
Страница 2 из 8 12 345678


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе

Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.


Текущее время: 08:52. Часовой пояс GMT +4.

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

AGFC: Valley of Gothic © 2004-2022

Яндекс.Метрика