ZenGin Программы Модификации Ассеты Черновик Анимации PFX/VFX Регистрация Вход
AI_AimAt() ? G G
Функция исскуственного интеллекта.
Атакующий Npc целится из оружия дальнего радиуса поражения в целевого Npc.
AI_AlignToFP() ? G G
Функция исскуственного интеллекта.
Npc выравнивается на Freepoint по направлению стрелки заданной в Spacer.
AI_AlignToWP() ? G G
Функция исскуственного интеллекта.
Npc выравнивается на Waypoint по направлению стрелки заданной в Spacer.
AI_Ask() ? G G
Функция исскуственного интеллекта.
Определяет функцию вызываемую при утвердительном и отрицательном ответах.
AI_AskText() ? G G
Функция исскуственного интеллекта.
Определяет как Npc будет отвечать на сказанную фразу.
AI_Attack() ? GG
Функция исскуственного интеллекта.
Npc начинает сражаться.
AI_CanSeeNpc() ? G G
Функция исскуственного интеллекта.
Npc может увидеть другого Npc.
AI_CombatReactToDamage() ? G G
Функция исскуственного интеллекта.
Реакция Npc на повреждение во время боя.
AI_ContinueRoutine() ? GG
Функция исскуственного интеллекта.
Npc продолжает выполнение распорядка дня.
AI_Defend() ? GG
Функция исскуственного интеллекта.
Npc парирует удар противника.
AI_Dodge() ? GG
Функция исскуственного интеллекта.
Npc отклоняется назад.
AI_DrawWeapon() ? GG
Функция исскуственного интеллекта.
Npc обнажает экипированное оружие.
AI_DropItem() ? GG
Функция исскуственного интеллекта.
Npc выбрасывает из рюкзака указанный предмет.
AI_DropMOB() ? GG
Функция исскуственного интеллекта.
Npc выбрасывает имеющийся MOB.
AI_EquipArmor() ? GG
Функция исскуственного интеллекта.
Npc экипирует указанные доспехи из инвентаря.
AI_EquipBestArmor() ? GG
Функция исскуственного интеллекта.
Npc одевает лучшие доспехи из имеющихся в инвентаре.
AI_EquipBestMeleeWeapon() ? GG
Функция исскуственного интеллекта.
Npc экипирует лучшее оружие ближнего боя.
AI_EquipBestRangedWeapon() ? GG
Функция исскуственного интеллекта.
Npc экипирует лучшее оружие дальнего боя.
AI_FinishingMove() ? GG
Функция исскуственного интеллекта.
Npc убивает другого Npc.
AI_Flee() ? GG
Функция исскуственного интеллекта.
Npc убегает от противника.
AI_GotoFP() ? GG
Функция исскуственного интеллекта.
Npc перемещается в указанный Freepoint.
AI_GotoItem() ? GG
Функция исскуственного интеллекта.
Npc перемещается к предмету инвентаря.
AI_GotoNextFP() ? GG
Функция исскуственного интеллекта.
Npc перемещается в следующий указанный Freepoint.
AI_GotoNpc() ? GG
Функция исскуственного интеллекта.
Npc перемещается к другому Npc.
AI_GotoSound() ? GG
Функция исскуственного интеллекта.
Npc перемещается к источнику звука.
AI_GotoWP() ? GG
Функция исскуственного интеллекта.
Npc перемещается в указанный Waypoint.
AI_LookAt() ? GG
Функция исскуственного интеллекта.
Npc смотрит на объект или точку.
AI_LookForItem() ? GG
Функция исскуственного интеллекта.
Поиск предметов в инвентаре.
AI_LookAtNpc() ? GG
Функция исскуственного интеллекта.
Npc смотрит на другого Npc.
AI_Output() ? GG
Функция исскуственного интеллекта.
Функция диалога.
AI_OutputSVM() ? GG
Функция исскуственного интеллекта.
Функция SVM диалога.
AI_OutputSVM_Overlay() ? GG
Функция исскуственного интеллекта.
Функция перекрывающего SVM диалога.
AI_PlayAni() ? GG
Функция исскуственного интеллекта.
Npc проигрывает анимацию.
AI_PlayAniBS() ? GG
Функция исскуственного интеллекта.
Npc проигрывает анимацию для определения состояния тела.
AI_PlayCutscene() ? GG
Функция исскуственного интеллекта.
Проигрывание игрового ролика для Npc.
AI_PlayFX() ? G
Функция исскуственного интеллекта.
Проигрывание PFX эффектов.
AI_PointAt() ? GG
Функция исскуственного интеллекта.
Npc указывает на объект или точку.
AI_PointAtNpc() ? GG
Функция исскуственного интеллекта.
Npc указывает на другого Npc.
AI_PrintScreen() ? G
Функция исскуственного интеллекта.
Вывод на экран текстовой строки.
AI_ProcessInfos() ? GG
Функция исскуственного интеллекта.
Запуск диалога с вариантами ответов.
AI_QuickLook() ? GG
Функция исскуственного интеллекта.
Npc бросает быстрый взгляд на другого Npc.
AI_ReadyMeleeWeapon() ? GG
Функция исскуственного интеллекта.
Npc подготавливает оружие ближнего боя.
AI_ReadyRangedWeapon() ? GG
Функция исскуственного интеллекта.
Npc подготавливает оружие дальнего боя.
AI_ReadySpell() ? GG
Функция исскуственного интеллекта.
Npc подготавливает заклинание.
AI_RemoveWeapon() ? GG
Функция исскуственного интеллекта.
Npc прячет оружие.
AI_SetNpcsToState() ? GG
Функция исскуственного интеллекта.
Переводит всех окружающих Npc в указанное состояние.
AI_SetWalkmode() ? GG
Функция исскуственного интеллекта.
Установка режима перемещения Npc.
AI_ShootAt() ? GG
Функция исскуственного интеллекта.
Npc стреляет из оружия дальнего боя в другого Npc.
AI_Snd_Play() ? G
Функция исскуственного интеллекта.
Воспроизведение звукового файла для Npc.
AI_Snd_Play3D() ? G
Функция исскуственного интеллекта.
Воспроизведение звукового файла в 3D для Npc.
AI_StandUp() ? GG
Функция исскуственного интеллекта.
Перевод Npc в рабочую стойку с анимацией.
AI_StandUpQuick() ? GG
Функция исскуственного интеллекта.
Перевод Npc в рабочую стойку без анимации.
AI_StartState() ? GG
Функция исскуственного интеллекта.
Перевод Npc в новое состояние.
AI_StopAim() ? GG
Функция исскуственного интеллекта.
Npc прекращает целится из оружия дальнего боя.
AI_StopFX() ? G
Функция исскуственного интеллекта.
Остановка проигрывания PFX эффектов.
AI_StopLookAt() ? GG
Функция исскуственного интеллекта.
Npc прекращает смотреть на другого Npc или объект.
AI_StopPointAt() ? GG
Функция исскуственного интеллекта.
Npc прекращает указывать на другого Npc или объект.
AI_StopProcessInfos() ? GG
Функция исскуственного интеллекта.
Завершение режима диалога.
AI_TakeItem() ? GG
Функция исскуственного интеллекта.
Npc берет предмет инвентаря.
AI_TakeMOB() ? GG
Функция исскуственного интеллекта.
Npc берет MOB.
AI_Teleport() ? GG
Функция исскуственного интеллекта.
Npc переносится на указанное место в локации.
AI_TurnAway() ? GG
Функция исскуственного интеллекта.
Npc поворачивается к другому Npc спиной.
AI_TurnToNpc() ? GG
Функция исскуственного интеллекта.
Npc поворачивается к другому Npc лицом.
AI_TurnToSound() ? GG
Функция исскуственного интеллекта.
Npc поворачивается лицом к источнику звука.
AI_UnequipArmor() ? GG
Функция исскуственного интеллекта.
Npc убирает экипированные доспехи в инвентарь.
AI_UnequipWeapons() ? GG
Функция исскуственного интеллекта.
Npc убирает экипированное оружие инвентарь.
AI_UnreadySpell() ? GG
Функция исскуственного интеллекта.
Npc убирает активное заклинание в инвентарь.
AI_UseItem() ? GG
Функция исскуственного интеллекта.
Npc использует предмет инвентаря.
AI_UseItemToState() ? GG
Функция исскуственного интеллекта.
Npc использует предмет инвентаря до указанного состояния анимации.
AI_UseMOB() ? GG
Функция исскуственного интеллекта.
Npc использует MOB до указанного состояния анимации.
AI_Wait() ? GG
Функция исскуственного интеллекта.
Npc переводится в режим ожидания на несколько секунд.
AI_WaitForQuestion() ? GG
Функция исскуственного интеллекта.
Npc переводится в режим ожидания ответа.
AI_WaitMs() ? GG
Функция исскуственного интеллекта.
Npc переводится в режим ожидания на несколько милисекунд.
AI_WaitTillEnd() ? GG
Функция исскуственного интеллекта.
Npc ждет ответа на свою фразу.
AI_WhirlAround() ? GG
Функция исскуственного интеллекта.
Npc быстро поворачивается к другому Npc лицом.
AI_WhirlAroundToSource() ? GG
Функция исскуственного интеллекта.
Npc быстро поворачивается лицом к источнику.
Apply_Options_Audio() ? GG
Функция игрового меню.
Применить аудио настройки.
Apply_Options_Controls() ? GG
Функция игрового меню.
Применить настройки клавиатуры.
Apply_Options_Game() ? GG
Функция игрового меню.
Применить настройки параметров игры.
Apply_Options_Performance() ? GG
Функция игрового меню.
Применить настройки производительности.
Apply_Options_Video() ? GG
Функция игрового меню.
Применить настройки видео.
ConcatStrings() ? GG
Функция преобразования типов.
Объединение двух строк.
CreateInvItem() ? GG
Функция инвентаря.
Создать в инвентаре Npc указанный предмет.
CreateInvItems() ? GG
Функция инвентаря.
Создать в инвентаре Npc указанные предметы.
Doc_Create() ? GG
Функция документа.
Создать новый документ.
Doc_CreateMap() ? GG
Функция документа.
Создать новую карту локации.
Doc_Font() ? GG
Функция документа.
Задать шрифт для документа.
Doc_MapCoordinates() ? GG
Функция документа.
Определение координат для карты локации.
Doc_Open() ? GG
Функция документа.
Отобразить фоновый рисунок документа на экране.
Doc_Print() ? GG
Функция документа.
Отобразить текст документа на экране.
Doc_PrintLine() ? GG
Функция документа.
Вывести строку текста на странице документа.
Doc_PrintLines() ? GG
Функция документа.
Вывести многострочный текст на странице документа.
Doc_SetFont() ? GG
Функция документа.
Задать шрифт для страницы.
Doc_SetLevel() ? GG
Функция документа.
Задать игровую локацию для карты.
Doc_SetLevelCoords() ? G
Функция документа.
Задать границы области отображаемой на карте.
Doc_SetMargins() ? GG
Функция документа.
Установить отступ страницы.
Doc_SetPage() ? GG
Функция документа.
Настроить параметры страницы.
Doc_SetPages() ? GG
Функция документа.
Задает количество страниц для документа.
Doc_Show() ? GG
Функция документа.
Показать созданный документ на экране.
EquipItem() ? GG
Функция инвентаря.
Экипировать Npc предметом инвентаря.
ExitGame() ? GG
Общая игровая функция.
Закончить сеанс игры.
ExitSession() ? G
Общая игровая функция.
Закончить сеанс игры.
FloatToInt() ? GG
Функция преобразования типов.
Преобразование числа с плавающей точкой в целое.
FloatToString() ? GG
Функция преобразования типов.
Преобразование числа с плавающей точкой в строку.
Game_InitEngintl() ? G
Общая игровая функция.
Инициализация игры основанной на Акелловской локализации.
Game_InitEnglish() ? G
Общая игровая функция.
Инициализация англоязычной версии игры.
Game_InitGerman() ? G
Общая игровая функция.
Инициализация немецкой версии игры.
Hlp_CutscenePlayed() ? GG
Вспомогательная функция.
Информирует, проигрывался ли игровой ролик.
Hlp_GetInstanceID() ? GG
Вспомогательная функция.
Получить идентификатор инстанции Npc или объекта инвентаря.
Hlp_GetNpc() ? GG
Вспомогательная функция.
Получить ссылку на Npc.
Hlp_IsItem() ? GG
Вспомогательная функция.
Проверяет принадлежность предмета инвентаря к соответствующему типу.
Hlp_IsValidItem() ? GG
Вспомогательная функция.
Проверка предмета инвентаря на существование.
Hlp_IsValidNpc() ? GG
Вспомогательная функция.
Проверка Npc на существование.
Hlp_Random() ? GG
Вспомогательная функция.
Генерирование случайного числа.
Hlp_StrCmp() ? GG
Вспомогательная функция.
Сравнение двух строк.
InfoManager_HasFinished() ? GG
Функции диалогов.
Проверяет завершен ли диалог.
Info_AddChoice() ? GG
Функции диалогов.
Добавляет в меню диалога новую строку.
Info_ClearChoices() ? GG
Функции диалогов.
Удалить строки в диалоге.
IntToFloat() ? GG
Функции преобразования типов.
Преобразование целого числа в число с плавающей точкой.
IntToString() ? GG
Функции преобразования типов.
Преобразование целого числа в строку.
IntroduceChapter() ? GG
Общие игровые функции.
Вывести на экран окно новой главы.
Log_AddEntry() ? GG
Функция журнала квестов.
Сделать в теме новую запись.
Log_CreateTopic() ? GG
Функция журнала квестов.
Создать в разделе новую тему.
Log_SetTopicStatus() ? GG
Функция журнала квестов.
Установить статус темы.
Mdl_ApplyOverlayMDS() ? GG
Функция анимации модели.
Применить новую анимацию к Npc.
Mdl_ApplyOverlayMDSTimed() ? GG
Функция анимации модели.
Временно применить новую анимацию к Npc.
Mdl_ApplyRandomAni() ? GG
Функция анимации модели.
Запустить случайные анимации.
Mdl_ApplyRandomAniFreq() ? GG
Функция анимации модели.
Изменить частоту смены случайных анимаций.
Mdl_ApplyRandomFaceAni() ? GG
Функция анимации модели.
Запустить случайную лицевую анимацию.
Mdl_RemoveOverlayMDS() ? GG
Функция анимации модели.
Отключить указанную анимацию у Npc.
Mdl_SetModelFatness() ? GG
Функция анимации модели.
Настройка толщины модели Npc.
Mdl_SetModelScale() ? GG
Функция анимации модели.
Настройка масштаба модели Npc.
Mdl_SetVisual() ? GG
Функция анимации модели.
Настройка MDS модели Npc.
Mdl_SetVisualBody() ? GG
Функция анимации модели.
Настройка визуализации модели Npc.
Mdl_StartFaceAni() ? GG
Функция анимации модели.
Запуск лицевой анимации.
Mis_AddMissionEntry() ? GG
Функция миссии.
Создать новую миссию.
Mis_GetStatus() ? GG
Функция миссии.
Получить текущий статус миссии.
Mis_OnTime() ? GG
Функция миссии.
Проверка срока выполнения миссии.
Mis_RemoveMission() ? GG
Функция миссии.
Удалить миссию.
Mis_SetStatus() ? GG
Функция миссии.
Установить статус миссии.
MOB_CreateItems() ? GG
Функция инвентаря.
Создать в контейнере предметы инвентаря.
MOB_HasItems() ? GG
Функция инвентаря.
Получить количество предметов инвентаря в контейнере.
Npc_AreWeStronger() ? GG
Функция Npc.
Определение более сильного Npc.
Npc_CanSeeItem() ? GG
Функция Npc.
Определяет может ли Npc видеть предмет инвентаря.
Npc_CanSeeNpc() ? GG
Функция Npc.
Определяет может ли Npc видеть другого Npc.
Npc_CanSeeNpcFreeLOS() ? GG
Функция Npc.
Определяет может ли Npc видеть другого Npc по прямой.
Npc_CanSeeSource() ? GG
Функция Npc.
Определяет может ли Npc видеть источник звука.
Npc_ChangeAttribute() ? GG
Функция Npc.
Изменение значения атрибута Npc.
Npc_CheckAvailableMission() ? GG
Функция Npc.
Проверка доступных миссии у Npc.
Npc_CheckInfo() ? GG
Функция Npc.
Определяет, есть ли у Npc важная для игрока информация.
Npc_CheckOfferMission() ? GG
Функция Npc.
Проверка миссии в которой Npc может что-либо предложить.
Npc_CheckRunningMission() ? GG
Функция Npc.
Проверка активных миссий.
Npc_ClearAIQueue() ? GG
Функция Npc.
Удаление всех AI команд из очереди.
Npc_ClearInventory() ? G
Функция Npc.
Очищает весь инвентарь Npc.
Npc_CreateSpell() ? GG
Функция Npc.
Npc активирует заклинание.
Npc_DeleteNews() ? GG
Функция Npc.
Удаляет новость для Npc.
Npc_ExchangeRoutine() ? GG
Функция Npc.
Смена распорядка дня Npc.
Npc_GetActiveSpell() ? GG
Функция Npc.
Возврат номера активного заклинания.
Npc_GetActiveSpellCat() ? GG
Функция Npc.
Возврат номера категории активного заклинания.
Npc_GetActiveSpellIsScroll() ? G
Функция Npc.
Проверяется, является ли активное заклинание свитком.
Npc_GetActiveSpellLevel() ? GG
Функция Npc.
Возвращает уровень активного заклинания Npc.
Npc_GetAttitude() ? GG
Функция Npc.
Получить текущее отношении Npc к другому Npc.
Npc_GetBodyState() ? GG
Функция Npc.
Возврат состояния в котором находится Npc.
Npc_GetComrades() ? GG
Функция Npc.
Проверка, есть ли у Npc друзья.
Npc_GetDetectedMob() ? GG
Функция Npc.
Возврат имени активного MOB объекта.
Npc_GetDistToItem() ? GG
Функция Npc.
Получить расстояние между Npc и предметом инвентаря.
Npc_GetDistToNpc() ? GG
Функция Npc.
Получить расстояние между двумя Npc.
Npc_GetDistToPlayer() ? GG
Функция Npc.
Получить расстояние между Npc и главным героем.
Npc_GetDistToWP() ? GG
Функция Npc.
Получить расстояние между Npc и Waypoint.
Npc_GetEquippedArmor() ? GG
Функция Npc.
Получить ссылку на экипированные доспехи Npc.
Npc_GetEquippedMeleeWeapon() ? GG
Функция Npc.
Получить ссылку на экипированное оружие ближнего боя у Npc.
Npc_GetEquippedRangedWeapon() ? GG
Функция Npc.
Получить ссылку на экипированное оружие дальнего боя у Npc.
Npc_GetGuildAttitude() ? GG
Функция Npc.
Получить отношение гильдий двух Npc.
Npc_GetHeightToItem() ? G
Функция Npc.
Получить высоту между Npc и предметом инвентаря.
Npc_GetHeightToNpc() ? G
Функция Npc.
Получить высоту между двумя Npc.
Npc_GetInvItem() ? GG
Функция Npc.
Получить ссылку на предмет инвентаря Npc.
Npc_GetInvItemBySlot() ? G
Функция Npc.
Получить количество указанных предметов в инвентаре Npc.
Npc_GetLastHitSpellCat() ? G
Функция Npc.
Получить категорию последнего примененного заклинания Npc.
Npc_GetLastHitSpellID() ? G
Функция Npc.
Получить номер последнего примененного заклинания Npc.
Npc_GetLookAtTarget() ? G
Функция Npc.
Получить ссылку на Npc на которого смотрит другой Npc.
Npc_GetNearestWP() ? GG
Функция Npc.
Получить название Waypoint в котором находится Npc.
Npc_GetNewsOffender() ? GG
Функция Npc.
Получить ссылку на приступника события.
Npc_GetNewsVictim() ? GG
Функция Npc.
Получить ссылку на жертву события.
Npc_GetNewsWitness() ? GG
Функция Npc.
Получить ссылку на свидетеля события.
Npc_GetNextTarget() ? GG
Функция Npc.
Выполнить активный поиск цели.
Npc_GetNextWP() ? GG
Функция Npc.
Получить имя соседнего Waypoint по отношению к Npc.
Npc_GetPermAttitude() ? GG
Функция Npc.
Получить постоянное отношение одного Npc к другому.
Npc_GetPortalGuild() ? G
Функция Npc.
Получить номер гильдии владельца помещения.
Npc_GetPortalOwner() ? G
Функция Npc.
Получить ссылку на Npc владельца помещения.
Npc_GetReadiedWeapon() ? GG
Функция Npc.
Получить ссылку на оружие, которое Npc держит в руке.
Npc_GetStateTime() ? GG
Функция Npc.
Получить сколько секунд Npc находится в текущем состоянии анимации.
Npc_GetTalentSkill() ? GG
Функция Npc.
Получить уровень навыка.
Npc_GetTalentValue() ? GG
Функция Npc.
Получить количество единиц навыка.
Npc_GetTarget() ? GG
Функция Npc.
Проверка существования у Npc цели для атаки.
Npc_GetTrueGuild() ? GG
Функция Npc.
Получить номер гильдии Npc.
Npc_GiveInfo() ? GG
Функция Npc.
Проверяет, есть ли у Npc информация для Npc.
Npc_GiveItem() ? GG
Функция Npc.
Npc получает предмет инвентаря от другого Npc.
Npc_HasBodyFlag() ? GG
Функция Npc.
Проверить, установлен ли у Npc указанный флаг состояния.
Npc_HasDetectedNpc() ? GG
Функция Npc.
Проверить поддержку чувств у Npc.
Npc_HasEquippedArmor() ? GG
Функция Npc.
Проверить наличие у Npc экипированных доспехов.
Npc_HasEquippedMeleeWeapon() ? GG
Функция Npc.
Проверить наличие у Npc экипированного оружия ближнего боя.
Npc_HasEquippedRangedWeapon() ? GG
Функция Npc.
Проверить наличие у Npc экипированного оружия дальнего боя.
Npc_HasEquippedWeapon() ? GG
Функция Npc.
Проверить наличие у Npc экипированного оружия.
Npc_HasItems() ? GG
Функция Npc.
Возвращает количество указанных предметов в инвентаре у Npc.
Npc_HasNews() ? GG
Функция Npc.
Проверить знает ли Npc указанную новость.
Npc_HasOffered() ? GG
Функция Npc.
Проверяет есть ли у одного Npc предмет для передачи другому.
Npc_HasRangedWeaponWithAmmo() ? GG
Функция Npc.
Проверяет есть ли у Npc в руках или в инвентаре оружие дальнего боя с боеприпасами.
Npc_HasReadiedMeleeWeapon() ? GG
Функция Npc.
Проверяет держит ли Npc в руках оружие ближнего боя.
Npc_HasReadiedRangedWeapon() ? GG
Функция Npc.
Проверяет держит ли Npc в руках оружие дальнего боя.
Npc_HasReadiedWeapon() ? GG
Функция Npc.
Проверяет держит ли Npc в руках оружие.
Npc_HasSpell() ? GG
Функция Npc.
Проверяет может ли Npc использовать заклинание.
Npc_HasTalent() ? GG
Функция Npc.
Проверяет владеет ли Npc указанным талантом.
Npc_IsAiming() ? GG
Функция Npc.
Проверяет целится ли Npc в другого Npc оружием дальнего боя или магией.
Npc_IsDead() ? GG
Функция Npc.
Проверяет мертв ли Npc.
Npc_IsDetectedMOBOwnerByGuild() ? GG
Функция Npc.
Проверяет какой гильдии принадлежит MOB, который использует Npc.
Npc_IsDetectedMobOwnerByNpc() ? GG
Функция Npc.
Проверяет какому владельцу принадлежит MOB, который использует Npc.
Npc_IsDrawingSpell() ? G
Функция Npc.
Возвращает номер заклинания, которое использует Npc.
Npc_IsDrawingWeapon() ? GG
Функция Npc.
Возвращает номер оружия, которое Npc держит в руках.
Npc_IsInCutscene() ? GG
Функция Npc.
Определяет, находится ли Npc в игровом ролике во время его проигрывания.
Npc_IsInFightMode() ? GG
Функция Npc.
Определяет, находится ли Npc в боевом режиме.
Npc_IsInPlayersRoom() ? G
Функция Npc.
Определяет, находится ли Npc в помещении, которое принадлежит главному герою.
Npc_IsInRoutine() ? GG
Функция Npc.
Проверяет выполняет ли Npc указанный распорядок дня.
Npc_IsInState() ? GG
Функция Npc.
Запрос на текущее состояние анимации фигуры Npc.
Npc_IsNear() ? GG
Функция Npc.
Определяет, что Npc находится на расстоянии не далее 3 метров.
Npc_IsNewsGossip() ? GG
Функция Npc.
Проверяет, является ли новость для Npc сплетней.
Npc_IsNextTargetAvailable() ? GG
Функция Npc.
Выполнить активный поиск цели для Npc без инициализации переменных.
Npc_IsOnFP() ? GG
Функция Npc.
Проверяет, находится ли Npc в Freepoint точке с указанным именем.
Npc_IsPlayer() ? GG
Функция Npc.
Проверяет, находится ли Npc главным героем.
Npc_IsPlayerInMyRoom() ? GG
Функция Npc.
Проверяет, находится ли главный герой в помещении другого Npc, или гильдии этого Npc.
Npc_IsVoiceActive() ? GG
Функция Npc.
Определяет, разговаривает ли Npc в данный момент.
Npc_IsWayBlocked() ? GG
Функция Npc.
Проверяет наличие припятствий на пути Npc.
Npc_KnowsInfo() ? GG
Функция Npc.
Проверяет знает ли Npc указанную информацию или нет.
Npc_KnowsPlayer() ? GG
Функция Npc.
Проверяет знаком ли Npc с главным героем.
Npc_LearnSpell() ? GG
Функция Npc.
Npc выучил заклинание и может его использовать.
Npc_MemoryEntry() ? GG
Функция Npc.
Функция записывания новостей для Npc.
Npc_MemoryEntryGuild() ? GG
Функция Npc.
Функция записывания новостей для всей гильдии.
Npc_OwnedByGuild() ? GG
Функция Npc.
Проверка на принадлежность предмета инвентаря указанной гильдии.
Npc_OwnedByNpc() ? GG
Функция Npc.
Проверка на принадлежность предмета инвентаря указанному Npc.
Npc_PercDisable() ? GG
Функция Npc.
Функция отключения восприятия у Npc.
Npc_PercEnable() ? GG
Функция Npc.
Функция включения восприятия у Npc.
Npc_PerceiveAll() ? GG
Функция Npc.
Функция разрешает Npc воспринимать все объекты в зоне действия восприятия.
Npc_PlayAni() ? GG
Функция Npc.
Воспроизвести анимацию для Npc.
Npc_RefuseTalk() ? GG
Функция Npc.
Функция проверяет истек ли у Npc счетчик отказа от диалога.
Npc_RemoveInvItem() ? GG
Функция Npc.
Удаление предмета из инвентаря Npc и из игры.
Npc_RemoveInvItems() ? GG
Функция Npc.
Удаление указанного количества предметов из инвентаря Npc и из игры.
Npc_SendPassivePerc() ? GG
Функция Npc.
Функция посылки пассивного восприятия от Npc.
Npc_SendSinglePerc() ? GG
Функция Npc.
Функция посылки восприятия от Npc.
Npc_SetActiveSpellInfo() ? GG
Функция Npc.
Задает любое значение для активного заклинания.
Npc_SetAttitude() ? GG
Функция Npc.
Установить постоянное отношение одного Npc ко всем остальным.
Npc_SetKnowsPlayer() ? GG
Функция Npc.
Установить, что Npc знаком с главным героем.
Npc_SetPercTime() ? GG
Функция Npc.
Установка времени реакции Npc для активного восприятия.
Npc_SetRefuseTalk() ? GG
Функция Npc.
Установка счетчика отказа от диалога для Npc.
Npc_SetStateTime() ? GG
Функция Npc.
Функция установки времени нахождения Npc в указанном состоянии.
Npc_SetTalentSkill() ? GG
Функция Npc.
Установить уровень навыка.
Npc_SetTalentValue() ? GG
Функция Npc.
Установить количество единиц владения навыком.
Npc_SetTarget() ? GG
Функция Npc.
Установить Npc внутреннюю цель для поражения.
Npc_SetTeleportPos() ? G
Функция Npc.
Запомнить последнее положение Npc при телепортации.
Npc_SetTempAttitude() ? GG
Функция Npc.
Установить временное отношение Npc к другим Npc.
Npc_SetToFightMode() ? GG
Функция Npc.
Перевод Npc в режим боя с выбранным оружием.
Npc_SetToFistMode() ? GG
Функция Npc.
Перевод Npc в боевой режим.
Npc_SetTrueGuild() ? GG
Функция Npc.
Установить принадлежность Npc к гильдии.
Npc_StartItemReactModules() ? GG
Функция Npc.
Проверка модулей ItemReact для реакции на предметы инвентаря.
Npc_StopAni() ? G
Функция Npc.
Остановить проигрывание анимации Npc.
Npc_WasInState() ? GG
Функция Npc.
Запрос на предыдущее состояние фигуры Npc.
Npc_WasPlayerInMyRoom() ? GG
Функция Npc.
Проверка главного героя на нахождение в помещении Npc или гильдии.
Perc_SetRange() ? GG
Общие игровые функции.
Установка дальности пассивного восприятия.
PlayVideo() ? GG
Функция видео.
Показать видео файл.
PlayVideoEx() ? G
Функция видео.
Показать видео файл с выходом из сессии игры.
Print() ? GG
Функция вывода текста.
Вывод на экран строки текста.
PrintDebug() ? GG
Функция вывода текста.
Вывод строки текста через zSpy.
PrintDebugCh() ? GG
Функция вывода текста.
Вывод строки текста через zSpy для канала.
PrintDebugInst() ? GG
Функция вывода текста.
Вывод строки текста через zSpy для инстанции.
PrintDebugInstCh() ? GG
Функция вывода текста.
Вывод строки текста через zSpy для инстанции и канала.
PrintDialog() ? GG
Функция вывода текста.
Вывод строки текста в окно диалога.
PrintMulti() ? GG
Функция вывода текста.
В случайном порядке выводит одну из пяти строк указанных в качестве аргументов.
PrintScreen() ? GG
Функция вывода текста.
Вывод на экран строки текста с настройкой шрифта, размера и др.
Rtn_Exchange() ? GG
Функция распорядка дня.
Функция смены распорядка дня.
SetPercentDone() ? GG
Общая игровая функция.
Установить процент отображения полосы в окне загрузки игры.
Snd_GetDistToSource() ? GG
Функция звука.
Получить расстояние до источника звука.
Snd_IsSourceItem() ? GG
Функция звука.
Проверить, является ли предмет у Npc источником звука.
Snd_IsSourceNpc() ? GG
Функция звука.
Проверить, является ли Npc источником звука.
Snd_Play() ? GG
Функция звука.
Воспроизвести звуковой эффект.
Snd_Play3D() ? GG
Функция звука.
Воспроизвести звуковой эффект для Npc.
TA() ? GG
Функция распорядка дня.
Задать функцию распорядка дня.
TA_BeginOverlay() ? GG
Функция распорядка дня.
Начать выполнять описанный распорядок дня.
TA_CS() ? GG
Функция распорядка дня.
Функция, выполняемая последней в списке функций распорядка дня.
TA_EndOverlay() ? GG
Функция распорядка дня.
Закончить выполнять описанный распорядок дня.
TA_Min() ? GG
Функция распорядка дня.
Задать функцию распорядка дня по времени.
TA_RemoveOverlay() ? GG
Функция распорядка дня.
Удалить заявленный распорядок дня.
Tal_Configure() ? GG
Общая игровая функция.
Переопредилить значение таланта.
Update_ChoiceBox() ? GG
Функция игрового меню.
Сохранить новые значения аудио или видео параметров.
Wld_AssignRoomToGuild() ? GG
Функция игрового мира.
Установить гильдию владельцем пространства.
Wld_AssignRoomToNpc() ? GG
Функция игрового мира.
Установить Npc владельцем пространства.
Wld_DetectItem() ? GG
Функция игрового мира.
Функция инициализирует глобальную переменную Item.
Wld_DetectNpc() ? GG
Функция игрового мира.
Функция инициализирует глобальную переменную Npc.
Wld_DetectNpcEx() ? GG
Функция игрового мира.
Функция инициализирует глобальную переменную Npc с исключением главного героя из поиска.
Wld_DetectNpcExAtt() ? G
Функция игрового мира.
Функция инициализирует глобальную переменную Npc с исключением главного героя из поиска и учетом отношения Npc к гильдии.
Wld_DetectPlayer() ? GG
Функция игрового мира.
Проверка существования главного героя.
Wld_ExchangeGuildAttitudes() ? GG
Функция игрового мира.
Установить взаимоотношения между гильдиями.
Wld_GetDay() ? GG
Функция игрового мира.
Получить текущий день.
Wld_GetFormerPlayerPortalGuild() ? GG
Функция игрового мира.
Получить номер гильдии которой принадлежит покинутое помещение.
Wld_GetFormerPlayerPortalOwner() ? GG
Функция игрового мира.
Получить ссылку на Npc которому принадлежит покинутое помещение.
Wld_GetGuildAttitude() ? GG
Функция игрового мира.
Получить отношение между гильдиями.
Wld_GetMOBState() ? GG
Функция игрового мира.
Получить состояние MOB.
Wld_GetPlayerPortalGuild() ? GG
Функция игрового мира.
Получить номер гильдии которой принадлежит помещение.
Wld_GetPlayerPortalOwner() ? GG
Функция игрового мира.
Получить сылку на Npc которому принадлежит помещение.
Wld_InsertItem() ? GG
Функция игрового мира.
Разместить в игровом мире предмет инвентаря.
Wld_InsertNpc() ? GG
Функция игрового мира.
Разместить в игровом мире Npc.
Wld_InsertNpcAndRespawn() ? GG
Функция игрового мира.
Разместить в игровом мире Npc с респауном.
Wld_InsertObject() ? GG
Функция игрового мира.
Разместить в игровом мире виртуальный объект.
Wld_IsFPAvailable() ? GG
Функция игрового мира.
Поиск Freepoint по имени в радиусе 20 метров.
Wld_IsMOBAvailable() ? GG
Функция игрового мира.
Поиск MOB по имени в радиусе 10 метров.
Wld_IsNextFPAvailable() ? GG
Функция игрового мира.
Поиск следующего Freepoint по имени в радиусе 20 метров.
Wld_IsRaining() ? G
Функция игрового мира.
Проверить идет ли дождь.
Wld_IsTime() ? GG
Функция игрового мира.
Функция определяет, входит ли текущее время в указанный диапазон.
Wld_PlayEffect() ? GG
Функция игрового мира.
Проиграть визуальный эффект.
Wld_RemoveItem() ? GG
Функция игрового мира.
Удалить из мира предмет инвентаря по ссылке.
Wld_RemoveNpc() ? GG
Функция игрового мира.
Удалить из мира Npc по ссылке.
Wld_SendTrigger() ? GG
Функция игрового мира.
Послать триггер объекту игрового мира.
Wld_SendUntrigger() ? GG
Функция игрового мира.
Послать антриггер объекту игрового мира.
Wld_SetGuildAttitude() ? GG
Функция игрового мира.
Установить отношение между гильдиями.
Wld_SetMOBRoutine() ? GG
Функция игрового мира.
Перевести MOB в определенное состояние анимации.
Wld_SetObjectRoutine() ? GG
Функция игрового мира.
Перевести объект в определенное состояние анимации.
Wld_SetTime() ? GG
Функция игрового мира.
Установить текущее время игрового мира.
Wld_SpawnNpcRange() ? GG
Функция игрового мира.
Создать группу Npc вокруг другого Npc.
Wld_StopEffect() ? G
Функция игрового мира.
Остановить проигрывание визуального эффекта.

Полезные скрипты

Содержание +

Диалоги карманных краж для всех NPC -

Создание дополнительных гильдий +

Улучшенная функция генерирования случайных чисел +

Случайные атрибуты для NPC +

Автоматическое создание предметов +

Оригинальный скрипт необходимо заменить на этот. Тогда в вашей модификации вы сможете достать из инвентаря жертвы все вещи кроме доспехов. Теперь вы можете вызвать событие в момент извлечения объектов инвентаря. Можно к примеру реализовать успешный или неудачный поиск предметов.

Счетчик убитых существ +

Так как эта задача не из простых, то я представлю вам пример создания счетчика убитых существ.

В первую очередь нужно пересмотреть функцию ZS_Dead. Она хранится в папке [GOTHIC 2]\_work\data\Scripts\Content\AI\Human\ZS_Human. Здесь вносим изменения в раздел ХР:

Создадим функцию B_Counter() после B_GivePlayerXP. Таким образом мы создадим наш счетчик.

Создадим файл B_Counter.d и сохраним в папке [GOTHIC 2]\work\data\Scripts\Content\Story\B_Story.

При убийстве существа значение переменной увеличивается на 1. Теперь необходимо объявить переменную в файле Story_Globals.d. Ее можно ввести в любом месте файла. В своем уроке я объявлю ее в верхней части сценария.

После этого следует остальная часть файла.

Теперь необходимо добавить новый скрипт в Gothic.src. Для этого можно воспользоваться любым текстовым редактором и внести имя скрипта в раздел [GOTHIC 2]\_work\data\Scripts\Content.

На данный момент это самый важный раздел Gothic.src. Функция B_Counter не может стоять выше файла Story_Globals.d, так как переменная не будет обнаружена.

Завершим наш счетчик. Теперь мы создадим функцию, которая будет увеличивать силу ГГ на 5 после 30 убийств. Для этого снова откройте файл B_Counter.d и измените его.

Осталось определить константу PRINT_STEIGERUNG в файле Text.d.

Вот и все.

// ************************** // B_GiveDeathInv // // для людей и монстров // для монстров AnimalTrophy // self == жертва // other == атакующий // ************************** var int B_GiveDeathInv_amount; func void B_GiveDeathInv_GiveAllTheInv (var int slot) { var int amount; // Набор предметов инвентаря amount = Npc_GetInvItemBySlot(self, slot, slot); if item.mainflag == ITEM_KAT_ARMOR && amount > 0 { B_GiveDeathInv_GiveAllTheInv(slot + 1); } else if amount > 0 { var int itemInstance; itemInstance = Hlp_GetInstanceID(item); CreateInvItems (other, itemInstance , amount); Npc_RemoveInvItems (self,itemInstance,amount); B_GiveDeathInv_amount += amount; B_GiveDeathInv_GiveAllTheInv(slot); }; }; func void B_GiveDeathInv () { // EXIT IF... // Только в первый раз AIV_DeathInvGiven имеет значение FALSE, ниже оно меняется на TRUE if (self.aivar[AIV_DeathInvGiven] == TRUE) { return; }; // Распределение челюстей if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Teeth] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_WOLF) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_WARG) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_RAZOR) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND) { CreateInvItems (self, ItAt_Teeth , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK) { CreateInvItems (self, ItAt_SharkTeeth, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_TROLL) { CreateInvItems (self, ItAt_TrollTooth, 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK) { CreateInvItems (self, ItAt_TrollTooth, 4); }; }; // Распределение когтей if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_WARAN) { CreateInvItems (self, ItAt_Claw , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) { CreateInvItems (self, ItAt_Claw , 4); }; if (self.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) { CreateInvItems (self, ItAt_Claw , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_RAZOR) { CreateInvItems (self, ItAt_Claw , 2); }; if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) { CreateInvItems (self, ItAt_Claw , 4); }; if (self.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) { CreateInvItems (self, ItAt_Claw , 4); }; if (self.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND) { CreateInvItems (self, ItAt_Claw , 4); }; if (self.aivar[AIV_MM_REAL_ID] == ID_LURKER) { CreateInvItems (self, ItAt_LurkerClaw, 1); }; }; // Распределение шкур и меха if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Fur] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_SHEEP) { CreateInvItems (self, ItAt_SheepFur , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_WOLF) { CreateInvItems (self, ItAt_WolfFur , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) { CreateInvItems (self, ItAt_WolfFur , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_WARG) { CreateInvItems (self, ItAt_WargFur , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) { CreateInvItems (self, ItAt_ShadowFur , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_TROLL) { CreateInvItems (self, ItAt_TrollFur , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK) { CreateInvItems (self, ItAt_TrollBlackFur , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_Keiler) { CreateInvItems (self, ItAt_Addon_KeilerFur, 1); }; }; // Распределение кожи if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ReptileSkin] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_LURKER) { CreateInvItems (self, itat_LurkerSkin, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) { CreateInvItems (self, itat_LurkerSkin, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_RAZOR) { CreateInvItems (self, itat_LurkerSkin, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) { CreateInvItems (self, itat_LurkerSkin, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_WARAN) { CreateInvItems (self, itat_LurkerSkin, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) { CreateInvItems (self, itat_LurkerSkin, 1); }; // if (self.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK) { CreateInvItems (self, ItAt_SharkSkin , 1); }; }; // Распределение сердец if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Heart] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_STONEGOLEM) { CreateInvItems (self, ItAt_StoneGolemHeart , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_FIREGOLEM) { CreateInvItems (self, ItAt_FireGolemHeart , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_ICEGOLEM) { CreateInvItems (self, ItAt_IceGolemHeart , 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON) { CreateInvItems (self, ItAt_DemonHeart, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) { CreateInvItems (self, ItAt_DemonHeart, 1); }; }; // Рог мракориса if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ShadowHorn] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) { CreateInvItems (self, ItAt_ShadowHorn, 1); }; }; // Язык огненного ящера if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_FireTongue] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) { CreateInvItems (self, ItAt_WaranFiretongue, 1); }; }; // Крылья кровавой мухи if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFWing] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY) { CreateInvItems (self, ItAt_Wing, 2); }; }; // Жало кровавой мухи if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFSting] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY) { CreateInvItems (self, ItAt_Sting, 1); }; }; // Мандибулы Полевого хищника и краулера if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Mandibles] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_GIANT_BUG) { CreateInvItems (self, ItAt_BugMandibles, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER) { CreateInvItems (self, ItAt_CrawlerMandibles, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR) { CreateInvItems (self, ItAt_CrawlerMandibles, 1); }; }; // Панцирь краулера if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_CrawlerPlate] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER) { CreateInvItems (self, ItAt_CrawlerPlate, 1); }; if (self.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR) { CreateInvItems (self, ItAt_CrawlerPlate, 2); }; }; // Рог драконьего снеппера if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DrgSnapperHorn] == TRUE) { if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) { CreateInvItems (self, ItAt_DrgSnapperHorn, 2); }; }; // Распределение с самого начала if (self.aivar[AIV_MM_REAL_ID] == ID_MEATBUG) { CreateInvItems (self, ItAt_MeatbugFlesh, 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD) { CreateInvItems (self, ItAt_UndeadDragonSoulStone , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE) { CreateInvItems (self, ItAt_FireDragonHeart , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE) { CreateInvItems (self, ItAt_IceDragonHeart , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ROCK) { CreateInvItems (self, ItAt_RockDragonHeart , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_SWAMP) { CreateInvItems (self, ItAt_SwampDragonHeart , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_SKELETON){ CreateInvItems (self, ItAt_GoblinBone , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_SKELETON) { CreateInvItems (self, ItAt_SkeletonBone , 1); } // ADDON else if (self.aivar[AIV_MM_REAL_ID] == ID_BLATTCRAWLER) { CreateInvItems (self, ItAt_Addon_BCKopf , 1);}; // СЫРОЕ МЯСО В СКРИПТАХ NPC - HOGE // Инвентарь зеленого гоблина GoblinGreen_Randomizer = Hlp_Random (100); if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer == 0) { CreateInvItems (self, ItMi_SilverRing , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 5) { CreateInvItems (self, ItPl_Mushroom_01 , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 15) { CreateInvItems (self, Itmi_Gold , 5); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 30) { CreateInvItems (self, ItFo_Fish , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 50) { CreateInvItems (self, ItMi_Gold , 2); }; // Инвентарь черного гоблина GoblinBlack_Randomizer = Hlp_Random (100); if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer == 0) { CreateInvItems (self, ItMi_GoldRing , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 5) { CreateInvItems (self, ItFo_Fish , 1); } //CreateInvItems (self, ItPl_Dex_Herb_01 , 1); else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 15) { CreateInvItems (self, Itmi_Gold , 10); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 30) { CreateInvItems (self, ItPl_Mushroom_02 , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 50) { CreateInvItems (self, ItMi_Gold , 5); }; // Инвентарь орка Orc_Randomizer = Hlp_Random (10); // Орк воин if (self.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 0) { CreateInvItems (self, ItPo_Health_02 , 1); CreateInvItems (self, ItMI_Gold , 2); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 1) { CreateInvItems (self, ItPo_Health_01 , 1); CreateInvItems (self, ItFoMuttonRaw , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 2) { CreateInvItems (self, ItPo_Health_01 , 2); CreateInvItems (self, ItMI_Gold , 18); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 3) { CreateInvItems (self, ItFo_Booze , 1); CreateInvItems (self, ItMi_SilverRing , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 4) { CreateInvItems (self, ItPl_Health_Herb_01 , 1); CreateInvItems (self, ItMI_Gold , 4); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer <= 7) { CreateInvItems (self, ItMI_Gold , 9); }; // Орк шаман if (self.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 0) { CreateInvItems (self, ItPo_Mana_03 , 1); CreateInvItems (self, ItMI_Gold , 5); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 1) { CreateInvItems (self, ItPo_Mana_02 , 2); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 2) { CreateInvItems (self, ItPo_Mana_02 , 1); CreateInvItems (self, ItMi_Coal,1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 3) { CreateInvItems (self, ItPo_Mana_01 , 2); CreateInvItems (self, ItMI_Gold , 12); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 4) { CreateInvItems (self, ItPo_Mana_01 , 1); CreateInvItems (self, ItMi_Sulfur,1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer <= 8) { CreateInvItems (self,ItPl_Mana_Herb_02,2); CreateInvItems (self, ItMI_Gold , 8); }; // Элитный орк if (self.aivar[AIV_MM_REAL_ID] == ID_ORCELITE ) && (Orc_Randomizer == 0) { CreateInvItems (self,ItAt_WolfFur,1); CreateInvItems (self,ItPo_Health_03,1); CreateInvItems (self,ItFoMutton,2); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 1) { CreateInvItems (self,ItMi_GoldRing,1); CreateInvItems (self,ItPo_Health_01,1); CreateInvItems (self,ItMi_Gold,26); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 2) { CreateInvItems (self,ItSc_LightHeal,1); CreateInvItems (self,ItLSTorch,2); CreateInvItems (self,ItAt_Teeth,1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer <= 5) { CreateInvItems (self,ItMi_Gold,19); CreateInvItems (self,ItPo_Health_02,1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 6) { CreateInvItems (self,ItAt_WargFur,1); //CreateInvItems (self,ItPl_Strength_Herb_01,1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer <= 9) { CreateInvItems (self,ItMi_Gold ,22); CreateInvItems (self,ItPo_Health_01,1); }; // Демоны if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer == 0) { CreateInvItems (self, ItPo_Mana_03 , 2); CreateInvItems (self, ItMi_GoldRing , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer <= 2) { CreateInvItems (self, ItPo_Mana_03 , 1); CreateInvItems (self, ItPo_Health_02 , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer <= 6) { CreateInvItems (self, ItPo_Mana_02 , 2); CreateInvItems (self, ItMi_Pitch,1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON) { CreateInvItems (self, ItPo_Mana_02 , 1); CreateInvItems (self, ItPo_Health_02 , 1); }; // Лорд демонов if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) && (Orc_Randomizer <= 1) { CreateInvItems (self, ItPo_Mana_03 , 2); CreateInvItems (self, ItPo_Health_03 , 2); CreateInvItems (self, ItSc_SumDemon , 1); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) && (Orc_Randomizer <= 5) { CreateInvItems (self, ItPo_Mana_03 , 2); CreateInvItems (self, ItPo_Health_03 , 2); } else if (self.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) { CreateInvItems (self, ItPo_Mana_03 , 1); CreateInvItems (self, ItPo_Health_03 , 1); }; if Npc_IsPlayer(other){ // Другие предметы инвентаря B_GiveDeathInv_GiveAllTheInv (0); if B_GiveDeathInv_amount == 1 { PrintScreen(PRINT_ItemErhalten,-1,YPOS_ItemTaken,FONT_ScreenSmall,10); }else if B_GiveDeathInv_amount >1 { PrintScreen(PRINT_ItemsErhalten,-1,YPOS_ItemTaken,FONT_ScreenSmall,10); }; }; // AIV для распределения только одного предмета self.aivar[AIV_DeathInvGiven] = TRUE; }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // B_PickPocketInfos // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // // Вызывается из ZS_TALK --> вызов еще нужно будет формировать. // Описывает диалоги карманной кражи для всех NPC // Это диалоговое окно будет отображаться у всех NPC имеющих золото // // /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ************************************************************ // PICK POCKET // ************************************************************ instance DIA_PICKPOCKET(C_INFO) { nr = 900; condition = DIA_PICKPOCKET_Condition; information = DIA_PICKPOCKET_Info; permanent = TRUE; important = FALSE; }; func int DIA_PICKPOCKET_Condition() { if (Npc_GetTalentSkill (other,NPC_TALENT_PICKPOCKET) == TRUE) // Если ГГ знает карманную кражу && (self.aivar[AIV_PlayerHasPickedMyPocket] == FALSE) // и если NPC еще не был обворован && (Npc_HasItems(self,ItMi_Gold) >= 1)// и если у NPC есть золото && (NpcObsessedByDMT == FALSE) { return TRUE; }; }; func void DIA_PICKPOCKET_Info() { Info_ClearChoices (DIA_PICKPOCKET); Info_AddChoice (DIA_PICKPOCKET, DIALOG_ENDE ,DIA_PICKPOCKET_BACK); Info_AddChoice (DIA_PICKPOCKET, DIALOG_PICKPOCKET ,DIA_PICKPOCKET_DoIt); }; func void DIA_PICKPOCKET_DoIt() { var int randy; randy = Hlp_Random(Theftdiff); // Ловкость ГГ больше или равна ловкости NPC if ( (other.attribute[ATR_DEXTERITY] >= self.attribute[ATR_DEXTERITY] - Theftdiff) && (other.attribute[ATR_DEXTERITY] < self.attribute[ATR_DEXTERITY]) && randy >= Theftdiff / 2 ) || ( other.attribute[ATR_DEXTERITY] >= self.attribute[ATR_DEXTERITY]) { B_GiveInvItems (self, other, ItMi_Gold, Npc_HasItems(other,ItMi_Gold)); self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE; B_GiveThiefXP();//B_GivePlayerXP (XP_Ambient); Snd_Play ("Geldbeutel"); } else { B_ResetThiefLevel(); AI_StopProcessInfos(self); B_Attack (self, other, AR_Theft, 1); //реагирует несмотря на новости IGNORE_Theft }; Info_ClearChoices (DIA_PICKPOCKET); }; func void DIA_PICKPOCKET_BACK() { AI_StopProcessInfos(self); }; /* Напоминания const string Pickpocket_20 = "(Нет ничего проще, чем украсть его кошелек.)"; const string Pickpocket_40 = "(Украсть его кошелек будет довольно просто.)"; const string Pickpocket_60 = "(Пытаться украсть его кошелек довольно рискованно.)"; const string Pickpocket_80 = "(Украсть его кошелек будет довольно трудно.)"; const string Pickpocket_100 = "(Украсть его кошелек будет чертовски трудно.)"; const string Pickpocket_120 = "(Украсть его кошелек практически невозможно.)"; const string Pickpocket_20_Female = "(Нет ничего проще, чем украсть ее кошелек.)"; const string Pickpocket_40_Female = "(Украсть ее кошелек будет довольно просто.)"; const string Pickpocket_60_Female = "(Пытаться украсть ее кошелек довольно рискованно.)"; const string Pickpocket_80_Female = "(Украсть ее кошелек будет довольно трудно.)"; const string Pickpocket_100_Female = "(Украсть ее кошелек будет чертовски трудно.)"; const string Pickpocket_120_Female = "(Украсть ее кошелек практически невозможно.)"; */ func void B_PickPocketInfos () { //ВЫХОД ЕСЛИ... if Hlp_GetInstanceID(self) == Hlp_GetInstanceID(other) { return; }; // Функция DIA_PICKPOCKET.npc = Hlp_GetInstanceID(self); if self.aivar[AIV_Gender] == MALE { if self.attribute[ATR_DEXTERITY] < 40 { DIA_PICKPOCKET.description = Pickpocket_20; } else if self.attribute[ATR_DEXTERITY] < 60 { DIA_PICKPOCKET.description = Pickpocket_40; } else if self.attribute[ATR_DEXTERITY] < 80 { DIA_PICKPOCKET.description = Pickpocket_60; } else if self.attribute[ATR_DEXTERITY] < 100 { DIA_PICKPOCKET.description = Pickpocket_80; } else if self.attribute[ATR_DEXTERITY] < 120 { DIA_PICKPOCKET.description = Pickpocket_100;} else { DIA_PICKPOCKET.description = Pickpocket_120;}; } else { if self.attribute[ATR_DEXTERITY] < 40 { DIA_PICKPOCKET.description = Pickpocket_20_Female; } else if self.attribute[ATR_DEXTERITY] < 60 { DIA_PICKPOCKET.description = Pickpocket_40_Female; } else if self.attribute[ATR_DEXTERITY] < 80 { DIA_PICKPOCKET.description = Pickpocket_60_Female; } else if self.attribute[ATR_DEXTERITY] < 100 { DIA_PICKPOCKET.description = Pickpocket_80_Female; } else if self.attribute[ATR_DEXTERITY] < 120 { DIA_PICKPOCKET.description = Pickpocket_100_Female;} else { DIA_PICKPOCKET.description = Pickpocket_120_Female;}; }; }; // Constans.d Отрывок // ****************** // Гильдии // ****************** // Создание дополнительных гильдий const int AIV_GuildStufe = 90; const int GIL_STUFE_0 = 0; const int GIL_STUFE_1 = 1; const int GIL_STUFE_2 = 2; const int GIL_STUFE_3 = 3; const int GIL_STUFE_4 = 4; const int GIL_STUFE_5 = 5; const int GIL_STUFE_NONE = GIL_STUFE_0; const int GIL_STUFE_NEULING = GIL_STUFE_1; const int GIL_STUFE_KAEMPFER = GIL_STUFE_2; const int GIL_STUFE_KRIEGER = GIL_STUFE_3; const int GIL_STUFE_LEHRLING = GIL_STUFE_4; const int GIL_STUFE_MAGIER = GIL_STUFE_5; const int GIL_NONE = 0 ; // (Нет гильдии) const int GIL_HUMAN = 1 ; // Специальная гильдия -> Устанавливает константы для всех человеческих гильдий --> используется в Species.d const int GIL_ROT = 2; const int GIL_BLAU = 3; const int GIL_GRAU = 4; const int GIL_GRUEN = 5; const int GIL_SCHWARZ = 6; const int GIL_NOVIZE = 7; const int GIL_OUTLAENDER = 8; const int GIL_MAGIER_ROT = 10; const int GIL_MAGIER_BLAU = 11; const int GIL_MAGIER_GRAU = 12; const int GIL_MAGIER_GRUEN = 13; const int GIL_MAGIER_SCHWARZ = 14; const int GIL_HERO = 9; // Для примера я объединил несколько гильдий вместе // У нас пять отсортированных групп // Маги в нашем примере отличаются от остальных // Есть несколько суб-гильдий, а также гильдия именуемая Hero. // Гильдии могут враждовать между собой, но не нападают на ГГ. // Получаем старые гильдии const int GIL_OLD = 1; const int GIL_PAL = GIL_OLD ; // Паладин const int GIL_MIL = GIL_OLD ; // Ополченец const int GIL_VLK = GIL_OLD ; // Горожанин const int GIL_KDF = GIL_OLD ; // Маг const int GIL_NOV = GIL_OLD ; // Послушник const int GIL_DJG = GIL_OLD ; // Охотник на драконов const int GIL_SLD = GIL_OLD ; // Наемник const int GIL_BAU = GIL_OLD ; // Крестьянин const int GIL_BDT = GIL_OLD ; // Бандит const int GIL_STRF = GIL_OLD ; // Заключенный const int GIL_DMT = GIL_OLD ; // Ищущий const int GIL_OUT = GIL_OLD ; // Чужеземец const int GIL_PIR = GIL_OLD ; // Пират const int GIL_KDW = GIL_OLD ; // Маг воды // Конец старых гильдий const int GIL_EMPTY_D = 15 ; // НЕ ИСПОЛЬЗОВАТЬ! //- - - - - - - - - - - - - - - - - - - - - const int GIL_PUBLIC = 15 ; // Для общественных мест (Порталы) //- - - - - - - - - - - - - - - - - - - - - const int GIL_SEPERATOR_HUM = 16 ; Далее... Text.d Отрывок // **************************************************************************************** // Имена гильдий // ***************************************************************************************** var STRING TXT_GUILDS [GIL_MAX]; // Изменить имена гильдий в фокусе и имена заклинаний. (также в B_TEachTalentRunes!!) // И вот еще две вещи: // Npc_Globals.d: SetGuild_Text(); // ********************** if (Kapitel == 0) { Kapitel = 1; //HACK - Если вы вернется Ксардас не заговорит... }; // Guild_Text.d (Новый файл --> muss in die gothic.src) func void SetGuild_Text () { // Текстовые названия гильдий // Отладка (Клавиша G) TXT_GUILDS[0] = "Гильдии"; //--> Ввести все имена гильдий // Орки TXT_GUILDS[59] = "Орк" ; TXT_GUILDS[60] = "Орк" ; TXT_GUILDS[61] = "Орк нежить" ; TXT_GUILDS[62] = "Человек ящер" ; TXT_GUILDS[63] = "X" ; TXT_GUILDS[64] = "Y" ; TXT_GUILDS[65] = "Z" ; }; // Отрывок из данных NPC // - - - - - - NPC - - - - - - name = "Нодрог"; guild = GIL_MAGIER_ROT; id = 1401; voice = VOICE_NODROG; flags = NPC_FLAG_IMMORTAL; //NPC_FLAG_IMMORTAL или 0 npcType = NPCTYPE_MAIN; aivar[AIV_MagicUser] = MAGIC_ALWAYS; aivar[AIV_GuildStufe] = GIL_STUFE_MAGIER; // У такого подхода имеется ряд недостатков, так как // члены группы являются все теми же гильдиями /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Hlp_Rand // - - - - - - - - - - - - - - - - - - - - - - - - - - // // Новая функция случайных чисел вычисляется по ModuloMethode. // Reset осуществляется через функцию Hlp_Random. // Имеет неравномерное статическое распределение. // /////////////////////////////////////////////////////////////////////////////////////////////////////////////// var int start1; var int start2; var int start3; var int start4; var int start5; var int start6; var int start7; var int start8; func int Hlp_Rand (var int Obergrenze) { // Возвращаемое впоследствии значение var int ret; // Расчет случайных чисел ret = (start1*start2+start3) % Obergrenze; // Нейтрализация распределения start1 = (start4*start5+start6) % start7; start2 = (start1*ret+start3) % start8; return ret; }; func void Hlp_Rand_Resett () { start1 = Hlp_Random(1034); start2 = Hlp_Random(3345); start3 = Hlp_Random(7986); start4 = Hlp_Random(5624); start5 = Hlp_Random(3188); start6 = Hlp_Random(1655); start7 = Hlp_Random(6481); start8 = Hlp_Random(4263); }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // B_SetAttributesRandom // - - - - - - - - - - - - - - - - - - - - - - - - // // Установка случайных атрибутов // /////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* Напоминание - Отрывок из AI_Constants.d: Случайные атрибуты силы - - - - - - - - - - - - - - - - - - - const int COWARD = 0; //Ларс, NK & FK маги const int NORMAL = 1; //Легкий топор & Мечник, Слабые рабочие и некоторые разведчики const int STRONG = 2; //Тяжелый топор & Мечник, Сильные разведчики const int RAISED = 3; //Охраник, воин, маг const int MASTER = 4; //Лидеры */ func void B_SetAttributesRandom (var int nahKampf, var int fernKampf, var int magieKampf) { // - - - - - Сброс для Random - - - - - - Hlp_Rand_Resett(); var int rnd; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Общие атрибуты /////////////////////////////////////////////////////////////////////////////////////////////////////////////// if nahKampf == MASTER || fernKampf == MASTER || magieKampf == MASTER { self.fight_tactic = FAI_HUMAN_MASTER; // 40 - 60 rnd = Hlp_Rand(20); self.level = 40 + rnd; //не 0 из-за XP (10 * Level) } else if nahKampf == RAISED || fernKampf == RAISED || magieKampf == RAISED { self.fight_tactic = FAI_HUMAN_MASTER; // 30 - 50 rnd = Hlp_Rand(20); self.level = 30 + rnd; //не 0 из-за XP (10 * Level) } else if nahKampf == STRONG || fernKampf == STRONG || magieKampf == STRONG { self.fight_tactic = FAI_HUMAN_COWARD; // 20 - 40 rnd = Hlp_Rand(20); self.level = 20 + rnd; //не 0 из-за XP (10 * Level) } else if nahKampf == NORMAL || fernKampf == NORMAL || magieKampf == NORMAL { self.fight_tactic = FAI_HUMAN_NORMAL; // 10 - 30 rnd = Hlp_Rand(20); self.level = 10 + rnd; //не 0 из-за XP (10 * Level) } else //Alles COWARD { self.fight_tactic = FAI_HUMAN_COWARD; // 1 - 10 rnd = Hlp_Rand(9); self.level = 1 + rnd; //не 0 из-за XP (10 * Level) }; //- - - - - - После уровня - - - - - - - - - self.attribute[ATR_HITPOINTS_MAX] = (self.level + 1) * 10; self.attribute[ATR_HITPOINTS] = self.attribute[ATR_HITPOINTS_MAX]; // - - - - - - XP для NPC - - - - - - self.exp = (500*((self.level+1)/2)*(self.level+1)); self.exp_next = (500*((self.level+2)/2)*(self.level+2)); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Атрибуты ближнего боя /////////////////////////////////////////////////////////////////////////////////////////////////////////////// if nahKampf == NORMAL { // 10 - 60 rnd = Hlp_Rand(50); self.attribute[ATR_STRENGTH] = 10 + rnd; self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH]; // 10 - 29 --> NICHTMAL 30 rnd = Hlp_Rand(19); B_RaiseFightTalent (self, NPC_TALENT_1H, 10 + rnd); B_RaiseFightTalent (self, NPC_TALENT_2H, 10 + rnd); } else if nahKampf == STRONG { // 50 - 130 rnd = Hlp_Rand(80); self.attribute[ATR_STRENGTH] = 50 + rnd; self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH]; // mind. 30 - max 59 rnd = Hlp_Rand(29); B_RaiseFightTalent (self, NPC_TALENT_1H, 30 + rnd); B_RaiseFightTalent (self, NPC_TALENT_2H, 30 + rnd); } else if nahKampf == RAISED { // 120 - 180 rnd = Hlp_Rand(60); self.attribute[ATR_STRENGTH] = 120 + rnd; self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH]; // 60 - 80 rnd = Hlp_Rand(20); B_RaiseFightTalent (self, NPC_TALENT_1H, 60 + rnd); B_RaiseFightTalent (self, NPC_TALENT_2H, 60 + rnd); } else if nahKampf == MASTER { // 160 - 200 rnd = Hlp_Rand(40); self.attribute[ATR_STRENGTH] = 160 + rnd; self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH]; // 80 - 100 rnd = Hlp_Rand(20); B_RaiseFightTalent (self, NPC_TALENT_1H, 80 + rnd); B_RaiseFightTalent (self, NPC_TALENT_2H, 80 + rnd); } else { // max 10 rnd = Hlp_Rand(9); self.attribute[ATR_STRENGTH] = 1 + rnd; self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH]; B_RaiseFightTalent (self, NPC_TALENT_1H, 1 + rnd); B_RaiseFightTalent (self, NPC_TALENT_2H, 1 + rnd); }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Атрибуты дальнего боя /////////////////////////////////////////////////////////////////////////////////////////////////////////////// if fernKampf == NORMAL { // 10 - 60 rnd = Hlp_Rand(50); self.attribute[ATR_DEXTERITY] = 10 + rnd; self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY]; // 10 - 29 --> NICHTMAL 30 rnd = Hlp_Rand(19); B_RaiseFightTalent (self, NPC_TALENT_BOW, 10 + rnd); B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, 10 + rnd); } else if fernKampf == STRONG { // 50 - 130 rnd = Hlp_Rand(80); self.attribute[ATR_DEXTERITY] = 50 + rnd; self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY]; // mind. 30 - max 59 rnd = Hlp_Rand(29); B_RaiseFightTalent (self, NPC_TALENT_BOW, 30 + rnd); B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, 30 + rnd); } else if fernKampf == RAISED { // 120 - 180 rnd = Hlp_Rand(60); self.attribute[ATR_DEXTERITY] = 120 + rnd; self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY]; // 60 - 80 rnd = Hlp_Rand(20); B_RaiseFightTalent (self, NPC_TALENT_BOW, 60 + rnd); B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, 60 + rnd); } else if fernKampf == MASTER { // 160 - 200 rnd = Hlp_Rand(40); self.attribute[ATR_DEXTERITY] = 160 + rnd; self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY]; // 80 - 100 rnd = Hlp_Rand(20); B_RaiseFightTalent (self, NPC_TALENT_BOW, 80 + rnd); B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, 80 + rnd); } else { // max 10 rnd = Hlp_Rand(9); self.attribute[ATR_DEXTERITY] = 1 + rnd; self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY]; B_RaiseFightTalent (self, NPC_TALENT_BOW, 1 + rnd); B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, 1 + rnd); }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Атрибуты магии /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Внимание: В этом разделе предполагается, что AI умеет пользоваться магией (Просмотрите: B_SelectSpell.d) // Применяется иногда не к магам, например сторожа if magieKampf == NORMAL { self.aivar[AIV_MagicUser] = MAGIC_SOMETIMES; // 50 - 100 rnd = Hlp_Rand(50); self.attribute[ATR_MANA_MAX] = 50 + rnd; self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX]; self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX]; Npc_SetTalentSkill (self, NPC_TALENT_MAGE, 2); } // Только для магов: else if magieKampf == STRONG { self.aivar[AIV_MagicUser] = MAGIC_ALWAYS; // 90 - 180 rnd = Hlp_Rand(90); self.attribute[ATR_MANA_MAX] = 90 + rnd; self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX]; self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX]; Npc_SetTalentSkill (self, NPC_TALENT_MAGE, 3); } else if magieKampf == RAISED { self.aivar[AIV_MagicUser] = MAGIC_ALWAYS; // 170 - 260 rnd = Hlp_Rand(90); self.attribute[ATR_MANA_MAX] = 170 + rnd; self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX]; self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX]; Npc_SetTalentSkill (self, NPC_TALENT_MAGE, 4); } else if magieKampf == MASTER { self.aivar[AIV_MagicUser] = MAGIC_ALWAYS; // 250 - 300 rnd = Hlp_Rand(50); self.attribute[ATR_MANA_MAX] = 250 + rnd; self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX]; self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX]; Npc_SetTalentSkill (self, NPC_TALENT_MAGE, 6); } else // Alle NICHT-Magier { self.aivar[AIV_MagicUser] = MAGIC_NEVER; // max 10 rnd = Hlp_Rand(9); self.attribute[ATR_MANA_MAX] = 1 + rnd; self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX]; self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX]; Npc_SetTalentSkill (self, NPC_TALENT_MAGE, 0); }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Другие таланты /////////////////////////////////////////////////////////////////////////////////////////////////////////////// if fernKampf >= STRONG { Npc_SetTalentSkill (self, NPC_TALENT_PICKLOCK, TRUE); Npc_SetTalentSkill (self, NPC_TALENT_SNEAK, TRUE); Npc_SetTalentSkill (self, NPC_TALENT_ACROBAT, TRUE); Npc_SetTalentSkill (self, NPC_TALENT_PICKPOCKET, TRUE); }; if nahKampf >= STRONG { Npc_SetTalentSkill (self, NPC_TALENT_SMITH, TRUE); }; if nahKampf >= STRONG || fernKampf >= STRONG { Npc_SetTalentSkill (self, NPC_TALENT_TAKEANIMALTROPHY, TRUE); }; if magieKampf >= STRONG { Npc_SetTalentSkill (self, NPC_TALENT_RUNES, TRUE); Npc_SetTalentSkill (self, NPC_TALENT_ALCHEMY, TRUE); }; }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // B_SetAttributForWeapons // - - - - - - - - - - - - - - - - - - - - - - // // Случайное распределение атрибутов делает необходимым адаптацию персонажей к нужному оружию. // С помощью этого метода записываются новые значения атрибутов, чтобы использовать нужное оружие. // Для этого вторичная функция B_SetAttributForWeapon(waffe) не требуется. // /////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* Напомним обязательные атрибуты оружия (Classes.d) // Обязательные атрибуты для использования оружия VAR INT cond_atr [3] ; VAR INT cond_value [3] ; (constants.d) 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; // Регенерация HP в сек. const int ATR_REGENERATEMANA = 7; // Регенерация маны в сек. */ func void B_SetAttributForWeapon(var int waffenInstanz) { //- - - - - Resett for Random - - - - - - Hlp_Rand_Resett(); var int rnd; rnd = Hlp_Rand(10); // Выход: if waffenInstanz == nothing //NO_ARMOR является заменой 0 { return; } else { CreateInvItems (self, waffenInstanz, 1); }; if item.cond_atr[0] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[0] {self.attribute[ATR_HITPOINTS] = item.cond_value[0] + rnd; }; } else if item.cond_atr[0] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[0] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[0] + rnd; }; } else if item.cond_atr[0] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[0] {self.attribute[ATR_MANA] = item.cond_value[0] + rnd; }; } else if item.cond_atr[0] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[0] {self.attribute[ATR_MANA_MAX] = item.cond_value[0] + rnd; }; } else if item.cond_atr[0] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[0] {self.attribute[ATR_STRENGTH] = item.cond_value[0] + rnd; }; } else if item.cond_atr[0] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[0] {self.attribute[ATR_DEXTERITY] = item.cond_value[0] + rnd; }; } else if item.cond_atr[0] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[0] {self.attribute[ATR_REGENERATEHP] = item.cond_value[0] + rnd; }; } else if item.cond_atr[0] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[0] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[0] + rnd; }; }; if item.cond_atr[1] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[1] {self.attribute[ATR_HITPOINTS] = item.cond_value[1] + rnd; }; } else if item.cond_atr[1] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[1] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[1] + rnd; }; } else if item.cond_atr[1] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[1] {self.attribute[ATR_MANA] = item.cond_value[1] + rnd; }; } else if item.cond_atr[1] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[1] {self.attribute[ATR_MANA_MAX] = item.cond_value[1] + rnd; }; } else if item.cond_atr[1] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[1] {self.attribute[ATR_STRENGTH] = item.cond_value[1] + rnd; }; } else if item.cond_atr[1] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[1] {self.attribute[ATR_DEXTERITY] = item.cond_value[1] + rnd; }; } else if item.cond_atr[1] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[1] {self.attribute[ATR_REGENERATEHP] = item.cond_value[1] + rnd; }; } else if item.cond_atr[1] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[1] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[1] + rnd; }; }; if item.cond_atr[2] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[2] {self.attribute[ATR_HITPOINTS] = item.cond_value[2] + rnd; }; } else if item.cond_atr[2] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[2] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[2] + rnd; }; } else if item.cond_atr[2] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[2] {self.attribute[ATR_MANA] = item.cond_value[2] + rnd; }; } else if item.cond_atr[2] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[2] {self.attribute[ATR_MANA_MAX] = item.cond_value[2] + rnd; }; } else if item.cond_atr[2] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[2] {self.attribute[ATR_STRENGTH] = item.cond_value[2] + rnd; }; } else if item.cond_atr[2] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[2] {self.attribute[ATR_DEXTERITY] = item.cond_value[2] + rnd; }; } else if item.cond_atr[2] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[2] {self.attribute[ATR_REGENERATEHP] = item.cond_value[2] + rnd; }; } else if item.cond_atr[2] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[2] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[2] + rnd; }; }; EquipItem(self,waffenInstanz); }; func void B_SetAttributForWeapons(var int nahKampfWaffe, var int ferKampfWaffe) { if nahKampfWaffe != nothing { B_SetAttributForWeapon(nahKampfWaffe); }; if ferKampfWaffe != nothing { B_SetAttributForWeapon(ferKampfWaffe); }; };


Теги: Daedalus, программирование, скрипты

Добавил: Neromont (12.04.2019)

Просмотров: 110

Источник: http://wiki.worldofgothic.de/Daedalus/nuetzliches

Автор: MfG Mantragon

Рейтинг: 0.0/0

Всего комментариев: 0
avatar
Информационное окноx