Помощь с Lua-скриптами
|
|
4044410 | Воскресенье, 26.01.2014, 21:47 | Сообщение # 346 |
Пфф...
Сообщений: 908
Награды: 20
Репутация: 67
Статус: Offline
| А можно ли файлы формата .blend перевести в pkmdl?
вместе мы как граната,а раздельно мы как осколки
|
|
| |
ItramariN | Воскресенье, 26.01.2014, 22:03 | Сообщение # 347 |
Аластор
Сообщений: 591
Награды: 12
Репутация: 55
Статус: Offline
| Цитата 4044410 ( ) А можно ли файлы формата .blend перевести в pkmdl? А можно ты сначала посмотришь на название темы?
Я люблю людей... особенно - убивать!^__^
|
|
| |
4044410 | Воскресенье, 26.01.2014, 22:06 | Сообщение # 348 |
Пфф...
Сообщений: 908
Награды: 20
Репутация: 67
Статус: Offline
| Цитата ItramariN ( ) А можно ты сначала посмотришь на название темы? Куда предлагаешь отправить сообщение?
вместе мы как граната,а раздельно мы как осколки
Сообщение отредактировал 4044410 - Воскресенье, 26.01.2014, 22:06 |
|
| |
Havcom | Воскресенье, 26.01.2014, 22:46 | Сообщение # 349 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Цитата 4044410 ( ) А можно ли файлы формата .blend перевести в pkmdl? Нет.
|
|
| |
Enfild | Воскресенье, 26.01.2014, 23:36 | Сообщение # 350 |
Инквизитор
Сообщений: 695
Награды: 15
Репутация: 51
Статус: Offline
| 4044410, помощь с 3dsMax, не? Это всё равно ближе к теме твоего запроса нежели луа-скрипты.
|
|
| |
Havcom | Воскресенье, 09.02.2014, 18:48 | Сообщение # 351 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Итак, мои юнные мастера по Lua, тут выискался новый глюк, в приюте карта "Скорость"(ускорение движения) не работает. Кто мне скажет, почему она не работает на этом уровне?
|
|
| |
Astaroth | Воскресенье, 09.02.2014, 19:03 | Сообщение # 352 |
Painkiller
Сообщений: 2111
Награды: 74
Репутация: 224
Статус: Offline
| Havcom, Вообщем дело в самом болоте рядом с приютом, а точнее в скриптах которые написаны в *.lua уровня, когда я стёр скрипты связанные с уроном и замедлением от болота, то карта скорость стала нормально работать.
В мире новостей PAINKILLER Модификаций
Сообщение отредактировал Astaroth - Воскресенье, 09.02.2014, 19:04 |
|
| |
Havcom | Воскресенье, 09.02.2014, 19:05 | Сообщение # 353 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Ну а по конкретнее, что именно не даёт карте нормально работать?
|
|
| |
Astaroth | Воскресенье, 09.02.2014, 19:07 | Сообщение # 354 |
Painkiller
Сообщений: 2111
Награды: 74
Репутация: 224
Статус: Offline
| Цитата Havcom ( ) Ну а по конкретнее, что именно не даёт карте нормально работать? Я думаю эти скрипты в Orphanage.lua Код ... self.swampDamage = 5 self.playerSlowDown = 0.3 self._lastTimeDamage = 0 ...
function o:Update() CLevel.Update(self)
if Player and Player.Health > 0 then SetPlayerSpeed(Player.PlayerSpeed) local dist = Dist2D(-900,100,Player._groundx,Player._groundz) --Game:Print(dist.." "..Player._groundy) if (Player._groundy < -27.0 and dist < 400) and ENTITY.PO_IsEnabled(Player._Entity) then
--local deep = -Player._groundy - 27.0 SetPlayerSpeed(Player.PlayerSpeed * self.playerSlowDown)
if self._lastTimeDamage + 20 < Game.currentTime then self._lastTimeDamage = Game.currentTime Player:OnDamage(self.swampDamage) end end end end
В мире новостей PAINKILLER Модификаций
|
|
| |
Havcom | Воскресенье, 09.02.2014, 20:29 | Сообщение # 355 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Эт я и сам понял, только зачем мне целую функцию вырезать, когда надо просто найти главную проблему.
|
|
| |
Astaroth | Воскресенье, 09.02.2014, 21:28 | Сообщение # 356 |
Painkiller
Сообщений: 2111
Награды: 74
Репутация: 224
Статус: Offline
| Havcom, Сама ошибка где-то тут: Код SetPlayerSpeed(Player.PlayerSpeed) SetPlayerSpeed(Player.PlayerSpeed * self.playerSlowDown) Испробовал кучи способов чтобы исправить, вроде бы заработало, но и случился другой баг, крч я не знаю как исправить. З.Ы. Если разберёшься, то напиши как исправить.
В мире новостей PAINKILLER Модификаций
|
|
| |
Havcom | Воскресенье, 09.02.2014, 21:29 | Сообщение # 357 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Astaroth, а ты знаешь, почему в этом месте происходит сбой карты?
|
|
| |
Astaroth | Воскресенье, 09.02.2014, 21:35 | Сообщение # 358 |
Painkiller
Сообщений: 2111
Награды: 74
Репутация: 224
Статус: Offline
| Havcom, В скриптах уровня используется скрипт 'Player.PlayerSpeed' и в скрипте карты таро тоже, может поэтому какая-та не состыковка.
В мире новостей PAINKILLER Модификаций
|
|
| |
Havcom | Понедельник, 10.02.2014, 02:10 | Сообщение # 359 |
Painkiller
Сообщений: 3029
Награды: 65
Репутация: 375
Статус: Offline
| Для того, чтобы решить проблему, нужно сперва понять, почему происходит сбой конкретно на этом уровне. Ты правильно указал на функцию SetPlayerSpeed(Player.PlayerSpeed), но так и не сказал, как можно решить проблему, просто предложив сперва снести всю функцию Update. Тогда бы потерялась возможность тормозить игрока, при попадании в зону болота, что не есть хорошо. Нельзя что-то исправлять, удаляя при этом что-то, не относящееся к проблеме. Так можно и пол игры удалить. Итак, чтобы ты всё понял, я начну с самого начала. Скорость игрока отпределяется функцией движка SetPlayerSpeed(), а задаётся она - переменной Player.PlayerSpeed. Карта таро вносит изменения в эту функцию: self.SpeedFactor = 1.5 local speed, jump = GetPlayerSpeed() SetPlayerSpeed( Player.PlayerSpeed * self.SpeedFactor, jump / self.SpeedFactor ) Переменная SpeedFactor умножает скорость игрока на указанное число и делит высоту прыжка, так как при большей скорости передвижения увеличивается высота прыжка. После активации карты, состав функции SetPlayerSpeed() изменяется и игрок начинает бегать быстрее. После окончания времени карт, в дело вступает функция Game:ResetGoldenCardsVars(), которая сбрасывает изменённую скорость игрока по умолчанию вот этой функцией: if self.SpeedFactor ~= 1 then local speed, jump = GetPlayerSpeed() if Player then SetPlayerSpeed( Player.PlayerSpeed, jump * self.SpeedFactor ) end end Если переменная self.SpeedFactor не равна единице, а на момент применения карты она равна 1.5, тогда состав функции SetPlayerSpeed() изменяется на то, что указано в условии, т.е. нормальная скорость передвижения. Так сбрасывается эффект этой карты по истечени времени и чуть ниже устанавливается новое значение для self.SpeedFactor, которое равно единице.
Далее, для болота у нас написана особая функция, которая оказывает влияние на скорость: function o:Update() -- if Player and Player.Health > 0 then SetPlayerSpeed(Player.PlayerSpeed) local dist = Dist2D(-900,100,Player._groundx,Player._groundz) if (Player._groundy < -27.0 and dist < 400) and ENTITY.PO_IsEnabled(Player._Entity) then SetPlayerSpeed(Player.PlayerSpeed * self.playerSlowDown) -- end end end
Для начала стоит рассказать о функции Update, как я понял, ты не знаешь, что она делает? Ответ кроется в самом названии. Она постоянно обновляет значения, которые в ней заданы. Примерно с такой же скоростью, с какой стреляет миниган. Добавь, например, в Update строку с воспроизведением какого-нить, очень короткого звука и ты услышишь, с какой скоростью этот звук воспроизводится! Ну и после этого тебе наверно должно стать понятно, почему карта тут не работает. Применяя её, значение функции SetPlayerSpeed() изменяется, как написано в Game.lua для этой карты и прям в то же мгновение заменяется тем, что покрашено красным чуть выше, поскольку функция Update постоянно обновляется. Таким образом скорость не меняется. А что надо сделать, чтобы решить проблему, так это просто. SetPlayerSpeed(Player.PlayerSpeed* Game.SpeedFactor) При использовании карты задействуется множитель Game.SpeedFactor и пока карта активна, его значение равно 1.5. Мы просто допишем множитель для функции update, чтобы он тоже учитивался в ней, таким образом он будет влиять на изменение скорости. Вот собсно и всё.
Сообщение отредактировал Havcom - Понедельник, 10.02.2014, 02:21 |
|
| |
Astaroth | Понедельник, 10.02.2014, 13:13 | Сообщение # 360 |
Painkiller
Сообщений: 2111
Награды: 74
Репутация: 224
Статус: Offline
| Havcom, Афигеть, ответ у меня под носом был, я писал в скрипте вот так SetPlayerSpeed(Player.PlayerSpeed * self.SpeedFactor) поэтому и не работало. Спасибо за разъяснение, теперь знаю что такое Update)
В мире новостей PAINKILLER Модификаций
|
|
| |