Кстати да, опыт. И ещё надо чтобы актёр взаггрился на игрока, а то ведь искусственно размещаемый взрыв считается ничейным.
Так что наносящий повреждения взрыв всё ж таки должен быть не любой, а специально сделанный. Назначаем ему скриптовый эффект с отмеченным No death dispell. В эффекте пишем SendAssaultAlarm, чтобы разозлить актёра и его друзей. Что с опытом. Можно чисто символически вписать RewardXP 1, просто чтобы что-то звякнуло. Можно долго и нудно скриптово выяснять, кого же мы только что прибили, мы ли его прибили, а то, может, он и раньше так лежал, написать формулу вычисления опыта в зависимости от уровня, типа, роста, веса и общей страшности и в конце выдавать точную дозу опыта.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1203
| Тема: Скрипты
написано: 24 ноября 2022, 15:02
| Отредактировано: JupiterJour - 24 ноября 2022, 15:14
Нет, оружейный эффект должен сработать на цели при попадании. И то, только если оружие наносит хотя бы единичку повреждения. То есть сейчас детонатор работает так: находим кого-нибудь, стреляем в него - и мины взрываются, если эффект имеет длительность. Если не имеет, то не взрываются, потому что эффект сам же сразу и обнуляет переменную. Всё, что требуется - это в скрипте Placed impact object'а (объектном скрипте) написать:
set C4DetonationQUEST.Detonation to 1
Disable
MarkForDelete
Далее. Вот тут лишнее:
set Detonate to C4DetonationQUEST.Detonation
Можно ж просто проверять саму квестовую переменную, не переписывая её постоянно в другую переменную:
if C4DetonationQUEST.Detonation == 1
Далее. Обнулять квестовую переменную из скрипта мины-активатора не нужно. Если мин больше одной, сработает первая, обнулит переменную - и всё, другие не сработают. Можно обнулить её в самом квесте, но не как сейчас сделано (а вдруг так совпадёт, что квестовый скрипт сработает раньше объектного?), а по таймеру, скажем, через секунду-две. Тогда, думаю, надо сделать так. Квест сделать изначально отключенным. Script processing delay сделать ему побыстрее - 0.1 или 0.05. Включать квест там же, где взводится переменная, в скрипте PIO - дописать туда StartQuest или лучше
if GetQuestRunning C4DetonationQUEST == 0
StartQuest C4DetonationQUEST
endif
Отключать квест и обнулять переменную по таймеру в самом квесте.
По-моему, с пустым "сигнальным" эффектом на игроке возни меньше, чем со всеми этими переменными и таймерами, но тут дело вкуса.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1204
| Тема: Скрипты
написано: 24 ноября 2022, 21:44
Скриптовый эффект для оружия, как и любой эффект для оружия накладывается на цель при попадании зачарованным оружием по этой цели. Если так и задумано, что для подрыва мины надо стрельнуть детонатором в случайно пробегающую мимо собаку, то всё нормально, можно ничего не менять. Если же надо, чтобы мина взрывалась при выстреле детонатором хоть в собаку, хоть в небо, хоть куда, то надо сколхозить в трёшке что-то вроде блока OnFire, чтобы скрипт запускался при любом выстреле вне зависимости от попадания в кого-то или во что-то. А единственный способ в трёшке запустить скрипт при выстреле вне зависимости от попадания- это подорвать прожектиль, разместить на его месте PIO и запустить скрипт на этом PIO.