Помощь с Lua-скриптами
|
|
BlooDFloweR | Понедельник, 01.10.2012, 17:54 | Сообщение # 151 |
Бакалавр
Сообщений: 1727
Награды: 76
Репутация: 316
Статус: Offline
| Havcom, в общем глушит блум GhostsFX, который собственно делает мобов прозрачными. Как это обойти пока не нарыл..
Rise of Evil - моя группа вконтакте
|
|
| |
printersoft | Среда, 03.10.2012, 20:06 | Сообщение # 152 |
Новичок
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
| Как добавить в аддон(BOOH) кнопки выбора глав???
|
|
| |
Havcom | Четверг, 04.10.2012, 06:27 | Сообщение # 153 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Quote (printersoft) Как добавить в аддон(BOOH) кнопки выбора глав??? Никак. Главы зарыты в движок. Хотя у меня как-то давно получилось изменить само меню, чтобы было не как в BOOH - 10 уровней с одной главой, а как в оригинале - 5 глав, по 6 уровней в каждой.
|
|
| |
printersoft | Четверг, 04.10.2012, 20:15 | Сообщение # 154 |
Новичок
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
| Quote (Havcom) Никак. Главы зарыты в движок. Хотя у меня как-то давно получилось изменить само меню, чтобы было не как в BOOH - 10 уровней с одной главой, а как в оригинале - 5 глав, по 6 уровней в каждой. А движок как раскомпилить?
Сообщение отредактировал printersoft - Четверг, 04.10.2012, 20:28 |
|
| |
BlooDFloweR | Четверг, 04.10.2012, 21:15 | Сообщение # 155 |
Бакалавр
Сообщений: 1727
Награды: 76
Репутация: 316
Статус: Offline
| printersoft, ни как)
Rise of Evil - моя группа вконтакте
|
|
| |
printersoft | Четверг, 04.10.2012, 21:49 | Сообщение # 156 |
Новичок
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
| Quote (BlooDFloweR) printersoft, ни как) А движок PainEngine можно скачать где-нибудь?
|
|
| |
Evgeniy | Четверг, 04.10.2012, 21:56 | Сообщение # 157 |
| Нет.
|
|
| |
Havcom | Среда, 17.10.2012, 01:05 | Сообщение # 158 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Проблема с музыкой при замедлении Глава вторая И вновь я возвращаюсь к этой проблеме. Как-то раз я попытался исправить этот недочёт и частично это получилось. Но недавно нашел всетаки недостатки своего исправления. Вместе с боевой музыкой играет амбиент. Вызывается загрузкой с чекпоинта или быстрого сохранения, да даже достаточно зайти в меню настроек звука и выйти. На многих уровнях впринципе "тихий" амбиент, поэтому не так заметно, а вот в лунопарке получается настоящая "каша". Вторая попытка исправить это досадное недоразумение.
Я провёл небольшой тест и вроде как всё нормально. Но сомнения всегда есть. Времени тщательно тестить сейчас нет, поэтому если кто заинтересован в исправлении этого косяка, помогайте.
Необходимо постоянно испытывать с замедлением, режимом демона, постоянно загружаться/сохраняться с чекпоинтов, быстрых сейвов. Делать всё это, находясь а пределах CMusicEnv бокса. И так далее. Если найдёте хоть какую-то странность, сразу сюда. ----------------- ----------------- ----------------- ----------------- Нашел косячок. Исправил. Перезалил.
Сообщение отредактировал Havcom - Воскресенье, 21.10.2012, 00:09 |
|
| |
BlooDFloweR | Среда, 17.10.2012, 08:01 | Сообщение # 159 |
Бакалавр
Сообщений: 1727
Награды: 76
Репутация: 316
Статус: Offline
| Havcom, а например есть косяк в Аду, когда некоторые фразы, которые при убийстве звучат не произносятся или обрезаются, это тоже сюда относится?
Rise of Evil - моя группа вконтакте
|
|
| |
Havcom | Четверг, 18.10.2012, 00:19 | Сообщение # 160 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Нет. Только проблемы с музыкой.
|
|
| |
dilettante | Воскресенье, 21.10.2012, 22:09 | Сообщение # 161 |
PK_GOD_and_KING
Сообщений: 170
Награды: 34
Репутация: 145
Статус: Offline
| Всем привет. Надеюсь, простят меня люди, чьи вопросы в ЛС всё ещё остаются без ответа. Совсем некогда. Но я не забыл. И в качестве небольшой компенсации решил сказать несколько слов по Zombie_Soldier. Однажды этот вопрос уже поднимался. А именно, зацикливание анимации входа персонажа на арену. Насколько я знаю, решения до сих пор не было и поэтому предлагаю свой вариант устранения ошибки:
CActor.lua (Data\LScripts\Classes)
В функции CActor:OnDamage() находим условие: if not self.AIenabled and self._isAnimating then self._animationBeforeHit = self.Animation end и изменяем его следующим образом: if not self.AIenabled and self._isAnimating and not self.Animation == "enter" then self._animationBeforeHit = self.Animation end
В этом случае нанесение урона "на входе" оборвёт анимацию "прыжка" анимацией "ранения" и дальше всё пойдёт, как положено. Если же есть желание проиграть анимацию "входа" до конца (она того стоит, ибо выглядит очень эффектно) сохранив при этом урон, то вносим изменения немного выше в той же функции. Находим строчку: if self.s_SubClass.Hits and not self._disableHits then и дополняем её вот так: if self.s_SubClass.Hits and not self._disableHits and not self.Animation == "enter" then
при этом ранее указанное условие if not self.AIenabled and self._isAnimating then менять не требуется - до него дело уже не дойдёт.
Ну, а если уже совсем по-простому, то можно взять и закомментировать строку self._animationBeforeHit = self.Animation. Но это, возможно, повлечёт нежелательные последствия в поведении каких-нибудь других объектов класса Actor.
|
|
| |
Doctor20 | Воскресенье, 21.10.2012, 23:07 | Сообщение # 162 |
Painkiller
Сообщений: 2307
Награды: 37
Репутация: 146
Статус: Offline
| Quote (dilettante) Всем привет. Надеюсь, простят меня люди, чьи вопросы в ЛС всё ещё остаются без ответа. Совсем некогда. Но я не забыл. И в качестве небольшой компенсации решил сказать несколько слов по Zombie_Soldier. Однажды этот вопрос уже поднимался. А именно, зацикливание анимации входа персонажа на арену. Насколько я знаю, решения до сих пор не было и поэтому предлагаю свой вариант устранения ошибки:
CActor.lua (Data\LScripts\Classes)
В функции CActor:OnDamage() находим условие: if not self.AIenabled and self._isAnimating then self._animationBeforeHit = self.Animation end и изменяем его следующим образом: if not self.AIenabled and self._isAnimating and not self.Animation == "enter" then self._animationBeforeHit = self.Animation end
В этом случае нанесение урона "на входе" оборвёт анимацию "прыжка" анимацией "ранения" и дальше всё пойдёт, как положено. Если же есть желание проиграть анимацию "входа" до конца (она того стоит, ибо выглядит очень эффектно) сохранив при этом урон, то вносим изменения немного выше в той же функции. Находим строчку: if self.s_SubClass.Hits and not self._disableHits then и дополняем её вот так: if self.s_SubClass.Hits and not self._disableHits and not self.Animation == "enter" then
при этом ранее указанное условие if not self.AIenabled and self._isAnimating then менять не требуется - до него дело уже не дойдёт.
Ну, а если уже совсем по-простому, то можно взять и закомментировать строку self._animationBeforeHit = self.Animation. Но это, возможно, повлечёт нежелательные последствия в поведении каких-нибудь других объектов класса Actor. Отлично! Надо будет попробывать! Слушай помощь нужна BloodFlower!
|
|
| |
BlooDFloweR | Воскресенье, 21.10.2012, 23:30 | Сообщение # 163 |
Бакалавр
Сообщений: 1727
Награды: 76
Репутация: 316
Статус: Offline
| dilettante, у тебя наиболее удачный вариант устранения этой ошибки) Havcom как то выкладывал свой вариант её устранении, но у него нельзя было причинить вред мобу пока анимация появления не закончится. Doctor20, я уже и без той проблемы загрузил его, так что не всё сразу) Пусть со своими делами разберётся, а игра то может и подождать)
Rise of Evil - моя группа вконтакте
|
|
| |
Havcom | Среда, 24.10.2012, 00:36 | Сообщение # 164 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Этот вариант намного лучше. И почему я раньше до этого не догадался? В который раз убеждаюсь в том, что сложные задачи решаются простыми способами.
dilettante, не мог бы заодно посмотреть, что там с музыкой? Вот уже сколько проверяю и никаких проблем не возникает. Неужто ли наконец ........ победа?! Добавлено (24.10.2012, 00:36) ---------------------------------------------
Quote (dilettante) В функции CActor:OnDamage() находим условие: if not self.AIenabled and self._isAnimating then self._animationBeforeHit = self.Animation end и изменяем его следующим образом: if not self.AIenabled and self._isAnimating and not self.Animation == "enter" then self._animationBeforeHit = self.Animation end В этом случае нанесение урона "на входе" оборвёт анимацию "прыжка" анимацией "ранения" и дальше всё пойдёт, как положено. Данный способ рассматривать не будем, так как обрыв анимации выглядит некрасиво. Перейдём сразу ко второму.
Quote (dilettante) Если же есть желание проиграть анимацию "входа" до конца (она того стоит, ибо выглядит очень эффектно) сохранив при этом урон, то вносим изменения немного выше в той же функции. Находим строчку: if self.s_SubClass.Hits and not self._disableHits then и дополняем её вот так: if self.s_SubClass.Hits and not self._disableHits and not self.Animation == "enter" then Данный способ хорош, но есть проблемка. Все враги теряют анимации ранения. Т.е. при стрельбе по ним анимация ранения не будет воспроизводиться. Противник просто будет идти и не реагировать на летящий в него свинец! А ведь хочется сделать так, чтоб монстр получал урон и анимация не сбивалась и проблем никаких ни с кем небыло в дальнейшем. Так как это сделать? Предлагаю свой способ.
Идём по адресу: (Data\LScripts\Templates\SpecialFX)
Находим файлик MonsterSpawnFromGround.CAction
Внутри видим примерно следующее:
o.Sequence = { {"Object:'FX_sground.CActor',false,px,py-1,pz,p.angle"}, {'AI:p,false'}, {"PSnd:'misc/spawn_ground',20,30"}, {'EnablePO:p,false'}, {'Anim:p,"enter",false,0'}, {'EnableDraw:p,true'}, {"WaitForAnim:p"}, {'AI:p,true'}, {'EnablePO:p,true'}, }
Набор экшенов, которые воспроизводятся по порядку при старте точки появления монстра. Добавляем новые строки:
o.Sequence = { {"Object:'FX_sground.CActor',false,px,py-1,pz,p.angle"}, {"L:p._disableHits = true"}, {'AI:p,false'}, {"PSnd:'misc/spawn_ground',20,30"}, {'EnablePO:p,false'}, {'Anim:p,"enter",false,0'}, {'EnableDraw:p,true'}, {"WaitForAnim:p"}, {'AI:p,true'}, {"L:p._disableHits = nil"}, {'EnablePO:p,true'}, }
disableHits - это экшен, который отключает анимацию ранения монстра. Вверху отключаем, а внизу восстанавливаем как было и получаем желаемый результат.
Сообщение отредактировал Havcom - Понедельник, 22.10.2012, 01:27 |
|
| |
dilettante | Среда, 24.10.2012, 01:57 | Сообщение # 165 |
PK_GOD_and_KING
Сообщений: 170
Награды: 34
Репутация: 145
Статус: Offline
| Havcom, вижу твоя наблюдательность - дотошность делает своё дело. Признаю проебоглазил, что во втором случае пропала анимация ранения. На самом деле следовало бы вместо and not self.Animation == "enter" использовать and self.Animation ~= "enter".
Чтож вариант с дополнительными Action'ами тоже применим. Но если уже говорить о корне проблемы, то Зомбаря в цикл отсылает вот эта функция:
if self._animationBeforeHit then if not self.AIenabled and not self._died then self:SetAnim(self._animationBeforeHit, true) end self._animationBeforeHit = nil end
Находится она в CActor:Tick(delta)
Возможно, я ошибаюсь, но как мне кажется нужно это для Actor'ов типа "ветряных мельниц". Ну, то есть имеющих некую основную анимацию и способных откликаться на ранения другой анимацией, но при этом они лишены "интеллекта". И вот эта функция и призвана, видимо, вернуть их после ранения к исходной анимации. Ну, а начинается то все как раз строчкой self._animationBeforeHit = self.Animation. И с точки зрения общей для всех монстров логики поведения, отключать следует именно её.
|
|
| |