Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
Изменение репутации для пользователя Зафтрак_Яо-гая
Вопрос к тем, кто шарит специфических командах хавокского языка скриптов. 1) Как привязать скрипт к событию, когда персонажа разрывает на части (на модельке срабатывают декали). Есть ли триггер, позволяющий сделать бегин при разрезании существа на куски, или переменная, сообщающая разрезан труп персонажа или нет? 3) Какой скрипт отвечает за загрузку игры после смерти ГГ? 4) Можно ли отследить кто нанес игроку последний удар, фиксируется ли ID убийцы при срабатывании триггера Death?
То есть, если я, допустим, хочу сделать, чтобы игра загружалась после смерти ГГ только если его разорвало на части, а во всех иных случаях он потом очухивался ограбленный голышом посреди пустыни, а еще лучше в непростом положении в зависимости от фракции убийцы. Например, распятым на кресте легионерами, в тюрьме НКР, на вертеле над костром каннибалов итд.
Универсальная команда объявления числовой целочисленной переменной, способной принимать около 64000 значений, если точнее.
В жизни необходимо иметь три вещи: силу чтоб изменить то, что можешь улучшить; терпение чтоб не менять ничего, что не можешь улучшить; и мудрость, чтоб отличить одно от другого.
Изменение репутации для пользователя Artem13
Artem13Offline
Сообщение №8
написано: 13 декабря 2010, 12:30
| Отредактировано: Artem13 - 13 декабря 2010, 12:33
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
А про int... Мне чего-то не верится, что они обошлись без переменных меньшей памяти, чем указано в мануале. Иначе бы фолл бессовестно тормозил. В мануале могли не писать, так как от мододелов оптимизированных решений не ждут, и смешно будет раз инт у них меньше шорта (а это похоже так). Хотя может в Хавоке есть хитрости, динамически выделяющие память под переменные, но мне чего-то не вериться.
В жизни необходимо иметь три вещи: силу чтоб изменить то, что можешь улучшить; терпение чтоб не менять ничего, что не можешь улучшить; и мудрость, чтоб отличить одно от другого.
Изменение репутации для пользователя stalker992
stalker992Offline
Сообщение №10
написано: 13 декабря 2010, 15:08
| Отредактировано: stalker992 - 13 декабря 2010, 15:11
Мне бы хоть ненадолго, в любое время, кроме 90-х. Чтобы конфета была с ладошку, чтобы, упав с велосипеда, коленку разбить, чтобы на первое свидание сходить...
Так, на всякий случай тут напишу с чем столкнулся:
1. Изменение глобальных переменных не работает в любом MenuMode, а также в секции OnActivate. Я выходил из положения просто - присваивал нужное значение локальной переменной скрипта, а присваивание глобальной делал в секции GameMode с использованием конструкции doOnce. 2. Удаление через скрипт предмета-носителя этого скрипта в любом контейнере кроме инвентаря игрока может привести к вылету. Что при использовании RemoveItem, что при использовании RemoveMe.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Нужна помощь со скриптом. Честно говоря, разбираюсь в них через пень-колоду, поэтому и прошу помощи. Суть такова: нужно создать предмет, с помощью которого можно было бы заставить любого NPC следовать за игроком. Я думаю, что делать это нужно с помощью активатора Адепта (ID - WeapNVDetonatorLoyal) (только в данном случае при наводке взрывателя на NPC и нажатии ЛКМ NPC пошел за игроком), а реализовывать через добавление AI-пакета Follow. Данный инструмент планируется использовать для создания скриншотов, поэтому без разницы, что данный инструмент будет творить с NPC.
переменная int употребляется в скриптах и работает я видел рабочий скрипт где она употреблялась.
Но может быть по всякому. В компиляторе скриптов могут быть синонимы. То есть int может ничем не отличаться от short. Только непонятно на черта козе боян, это же не кроссплатформенный язык Тем более, что он не может брать памяти больше short, так как на него они уже выдали максимум (больше под виндой я не встречал). А инт меньше шорта, это какой-то бардак. Но что-то здесь не чисто. Ну не может прога с тучей жирных переменных нормально работать на 2 гб оперативки, а работает ведь. При том даже бинарные величины, они объявляют этим жирным шортом. Это вообще-то тревожный признак. Если там динамически память раздается, можно сильно фпс новыми переменными опустить. А если он при компиляции смотрит какие реально значения принимаются, и уменьшает память до нормального шорта - могут же вылезать баги из-за переменных, что должны расти по ходу игры.
В жизни необходимо иметь три вещи: силу чтоб изменить то, что можешь улучшить; терпение чтоб не менять ничего, что не можешь улучшить; и мудрость, чтоб отличить одно от другого.
Imperator3, тебе как срочно? Я потихоньку могу порыть в этом направлении, просто у меня нет опыта обработки неписей и врем5ени в будни тоже кот наплакал... Но есть Скрипты Морровинда для Чайников и там есть нечто подобное, можно попытаться найти аналогии.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Нужна помощь со скриптом. Честно говоря, разбираюсь в них через пень-колоду, поэтому и прошу помощи. Суть такова: нужно создать предмет, с помощью которого можно было бы заставить любого NPC следовать за игроком. Я думаю, что делать это нужно с помощью активатора Адепта (ID - WeapNVDetonatorLoyal) (только в данном случае при наводке взрывателя на NPC и нажатии ЛКМ NPC пошел за игроком), а реализовывать через добавление AI-пакета Follow. Данный инструмент планируется использовать для создания скриншотов, поэтому без разницы, что данный инструмент будет творить с NPC.
Не понятно, в чем проблема. Путь решения ты уже описал. Делаешь ИИ пакет фоллов, не приписанный ни одному неписю. В нем кондишен и приоритет прописываешь так, чтоб он выполнялся вперед всех остальных. Пишешь локальный скрипт на оружии, добавляющий ИИ пакет неписю. За основу тебе будет удобно взять скрипт от боксеркских перчаток, там тебе нужно только сокращение усталости заменить на добавление пакета (вроде AddAIPackage, посмотри в помощи), и сброс поведения (ResetAI). По крайней мере мне так видится решение этой проблемы. Ты напиши, что конкретно не понятно.
В жизни необходимо иметь три вещи: силу чтоб изменить то, что можешь улучшить; терпение чтоб не менять ничего, что не можешь улучшить; и мудрость, чтоб отличить одно от другого.
INKOGNITO, где-то, ворзможно на ГЕКК-вики (или ТЕС4), был раздел о работе с С-функциями, посмотри там. Поскольку я в скриптах не использую большое количество переменных, мне как то инт до лампочки был...
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
И все таки кто нибудь может помочь мне разобраться с int, как его правильно использовать(менять значение)?
- Переменная (Variable) Переменная позволяет вам хранить информацию в скрипте для использования ее в дальнейшем. Для использовании в скриптинге доступны три типа переменных, каждый из которых может сохранять разный тип информации:
- int / short / long Хранит целочисленные значения (целое число). Сюда относится диапазон от -2,147,483,648 до 2,147,483,647. - float Хранит числа с плавающей точкой (числа с десятичной дробью). Сюда относится диапазон от -3.402823x10^38 до -1.175494x10^-38, 0 и от 1.175494x10^-38 до 3.402823x10^38 - ref / reference Хранит FormID. Обычно используется для хранения RefID, отсюда и название ref/reference.
Прежде чем использовать переменную, мы должны ее объявить. Также как мы использовали ключевое слово "ScriptName", когда объявляли EditorID нашего скрипта, когда мы объявляем переменную, мы используем ключевое слово соответствующего типа переменной, который хотим использовать. После ключевого слова идет название переменной. Название для своей переменной мы можем выбирать произвольно, но в одном скрипте две переменные не могут иметь одинаковые названия, даже если они разных типов, и переменная не может иметь название идентичное какому либо объекту (например, я не могу присвоить переменной название "Lockpick", так как это название уже используется EditorID для объекта заколки). Давайте объявим переменную "ref", чтобы мы могли хранить значение, которое возвратит GetContainer для дальнейшего использования:
ScriptName MyScript
ref rContainer
Begin OnAdd ... End
Как вы можете видеть, объявление нашей новой переменной размещено в верхней части скрипта, вне нашего блока Begin/End. Все ваши объявления переменных должны происходить здесь, так же как объявление имени скрипта ScriptName. Заметьте, как я назвал свою переменную – я в виде префикса поставил букву "r" чтобы не забывать, что это "ref" переменная, и назвал ее согласно функции, которая возвращает для хранения RefID контейнера, который содержит заскриптованный предмет. Как вы назовете переменную, и что будете с ней делать далее – не имеет значения для компилятора скрипта, но очень важно для дальнейшей работы с кодом. Если все ваши переменные будут названы "Variable1", "Variable2" и т.д., тогда вероятно ваш скрипт будет весьма сложен для понимания.
Как только мы объявили переменную, ей автоматически присваивается значение 0. Для изменения значения переменной, мы должны использовать команду "set" (установить), которая заключается в использовании двух ключевых слов - "set" и "to". Например, если мы хоти установить, чтобы наша переменная "rContainer" возвращала значение GetContainer, мы должны записать это следующим образом:
set rContainer to GetContainer
Как вы можете видеть, команда "set" вводится в действие через ключевое слово "set", за которым следует название переменной, затем следует ключевое слово "to", и затем следует выражение. Значение переменной установится в виде результата выражения.
Изменение репутации для пользователя Nanten
NantenOffline
Сообщение №21
написано: 25 декабря 2010, 07:15
| Отредактировано: Nanten - 25 декабря 2010, 07:21
Помогите пожалуйста оформить скрипт подобного рода : "Попадание в голову -> Проверка надет ли шлем (из списка шлемов) -> применение эффекта ( -DT если шлема нет или +DT от шлема)" Или альтернативный с функцией разделения DT по частям тела.
можете подсказать скрипт на покупку робота (я сделал робота кампаньёна) терь хочу чтоб можно было ево купить, ток не одново а например 5 таких ну чтоб можно было покупать его копируя ещё и ещё, и нужно ли создать ещё компаньёнов роботов для этого ???
...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Здравствуйте! Помогите пожалуйста написать скрип для switch'ера, который при активации будет включать каждую лампочку по отдельности с интервалом в 1 сек. и воспроизводя звук OBJSwitchLights2D. --- в скриптах полный новичок, сам разобраться не смог.
не подскажете, почему может не сохранятся скрипт? т.е. дописываю скрипт, пытаюсь закрыть окно с ним, спрашивает сохранять или нет, жму да и все... окно не закрывается, скрипт, правда без названия появляется в списке, но при попытке перейти на другой скрипт, закрыть окно или сохранить изменения, вылазит тот же вопрос - сохранять/нет, жму да - снова ноль эмоций. ЗЫ: сорри за ламерский вопрос, но что-то никак не догоню)
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя RusQ
RusQOffline
Сообщение №26
написано: 4 января 2011, 12:49
| Отредактировано: RusQ - 4 января 2011, 12:50
slip Это могут быть не только ошибки в скрипте, а ошибка в G.E.C.K.'е. Установи geck-powerup-nv-0.1.3-beta, а лучше "ГЛЮКОИСПРАВИТЕЛЬ GECK v1.0", исправит не только проблему с сохранением скриптов, но и ещё несколько. Найти и то, и другое можно тут же, на ModGames.net ---- P.s. А с моей проблемой мне никто не поможет?
RusQ, Artem13, спасибо. ну тогда еще вопрос, т.к. там определенно где-то ошибка, но где я не вижу, кто-нибудь может кинуть работающий пример скрипта начала квеста по записке? ну или подсказать в каком из оригинальных квестов его можно найти (не все просто находила и проходила).
slip, выложи здесь по спойлером или отправь мне на мыло текст своего скрипта, я поясню где ошибки
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
slip, 1. создан ли сам квест aaagoodsprings? 2. имеет ли квест ступень с индексом 10? 3. Попробуй убрать скобки из if`а - редактор их иногда плохо переваривает. Просто убери - он нормально обрабатывает таки ситуации.
Всё, сегодня появлюсь только вечером.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)