(sfall) дополнения
#641
Отправлено 14 октября 2016 - 19:44
#642
Отправлено 14 октября 2016 - 21:00
А почему в файл sslSyntaxRules.xshd нельзя добавить свою секцию с ключевыми словами, <KeyWords> ... </KeyWords> добавляешь возникает ошибка, там какой-то хардкод или я что-то делаю не так?
И не правильно сделана подсветка синтаксиса у
#define <макрос> эта строка с макросом не должна полностью подсвечиваться иначе код в макросе не подсвечивается.
Это сообщение отредактировано Fakeman - 14 октября 2016 | 21:03
#643
Отправлено 18 октября 2016 - 00:18
| QUOTE (Foxx) | ||
Это относится если только в скриптах типа gl*.int и hs_*.int они прописаны?
|
Чтобы вместо mve-мувиков проигрывались avi-мувики их имена должны быть такие же как определены в переменных Movie#, а переменная Mode в секции [Graphics] не должна быть равна 0.
| QUOTE (Fakeman) |
| А вот про головы я непонял, как это их нельзя паковать, есть какие-то не стандартные? Чуть раньше задавал вопрос про heads png, но я так понял по коду что сфалл конвертирует фрм в пнг и делает что-то там с палитрой это наверное работает когда включена опция Head32-bit, но что-то я какого-либо улучшения графикидля голов не замечаю. |
| QUOTE (Fakeman) |
| вот откуда он берет файлы для всплывающих флоатеров, и какой у них формат имени должен быть? |
| QUOTE (Foxx) |
| Я с начала с ней и пробовал, потом без неё, переносил wav/mp3 в папку DATA. Все равно не работает. |
| QUOTE (Fakeman) | ||
не, похоже просто не работает, так как там написано что:
|
| QUOTE (Phobos) |
| А по какому принципу работает новый параметр TimeScale? Я так понимаю он меняет скорость прироста игрового таймера в тиках (т.е. скрипты которые зависят от проверок времени не сломаются по идее)? |
В принципе исправляется добавлением дополнительной проверки на проигрывание анимации в следующей сценке. ECBDYGRD.SSL:
| CODE |
|
procedure doSequence begin ..... end else if (sequence == 8) then begin kill_critter(farmer, ANIM_chunks_of_flesh_sf); ..... float_msg(self_obj, mstr(108), FLOAT_MSG_NORMAL); sequence += 1; add_timer_event(self_obj, game_ticks(3), TIMER_SEQUENCE); end else if (sequence == 9) then begin |
| CODE |
|
procedure doSequence begin ..... end else if (sequence == 8) then begin if (anim_busy(guard1) or anim_busy(guard2) or anim_busy(farmer) or anim_busy(wife) or anim_busy(child)) == false then begin kill_critter(farmer, ANIM_chunks_of_flesh_sf); ..... float_msg(self_obj, mstr(108), FLOAT_MSG_NORMAL); sequence += 1; end add_timer_event(self_obj, game_ticks(1), TIMER_SEQUENCE); end else if (sequence == 9) then begin |
| QUOTE (Fakeman) |
| Еще этот TimeScale введет небольшой бардак в механику игры основанную на скриптах вот допустим в скрипте указано, что каждую минуту ГГ должен получать какой-то урон(рад) от радиации, то при TimeScale=x2 получается, что он уже будет получать его каждые 2 минуты игрового времени. |
| QUOTE (Fakeman) |
| Кстати а как насчет догмита она тоже будет взламывать/разминировать у нее скиллы по 22-27% ? )))))) |
#644
Отправлено 18 октября 2016 - 14:56
Воиспроизвести музыку главного меню в мп3 формате мне так и не удалось.
#645
Отправлено 18 октября 2016 - 18:52
| QUOTE (Fakeman) |
| Воиспроизвести музыку главного меню в мп3 формате мне так и не удалось. |
#646
Отправлено 18 октября 2016 - 19:08
| QUOTE (Crafty) |
| У меня начинает играть, через секунду обрывается. |
Это сообщение отредактировано Foxx - 18 октября 2016 | 19:47
#647
Отправлено 18 октября 2016 - 22:06
| QUOTE |
| Нет, как ГГ получал урон каждую минуту игрового времени, так и будет получать. |
Каким это таким способом?)
А как время действия/зависимость наркоты тоже также осталось или увеличивается?
Все никак рука не дотянется протестировать этот Shit-Time
-
Во протестировал, теперь ясно ты просто увеличил скорость тикам) выше 10 ставить смысла нет ибо все начинает глючить мобы дергаются при хождении, все начинают быстро разговаривать, это по сути тоже самое, что и SpeedMultiInitial только без анимации.
Это сообщение отредактировано Fakeman - 18 октября 2016 | 22:29
#648
Отправлено 18 октября 2016 - 22:16
| QUOTE (Fakeman) |
| а в какую вы папку клали mp3 у меня тишина. |
Брал любой MP3 и переименовывал в 06rokot. При начале новой игры в Неваде происходит рывок этой песни и обрывается.
| QUOTE (Fakeman) |
| А как время действия/зависимость наркоты тоже также осталось или увеличивается? |
Проверял так (просьба не смеяться):
Установил TimeScale=10.
Сделал специальный прошник-наркотик с временем действия: через 30 минут облучение и еще через 30 минут облучение.
И мотал время в Pip-Boy действие от наркоты такое же, как и при TimeScale=1
Только у NPC над бошками стали очень часто выскакивать всплывающие сообщения)) Но Crafty об этом предупреждал.
Это сообщение отредактировано Foxx - 18 октября 2016 | 22:41
#649
Отправлено 19 октября 2016 - 00:05
| QUOTE |
|
Проверял так (просьба не смеяться): |
Хаха нуб... не ну все правильно проверил).
| QUOTE |
| Только у NPC над бошками стали очень часто выскакивать всплывающие сообщения)) Но Crafty об этом предупреждал. |
так вроде же просили без этого, вот даже доказательства есть)
| QUOTE (Я) |
| ну вот в чем и вопрос, хотелось чтобы время шло быстрее, а все тики остались такими-же (прим.ред. по скорости). |
| QUOTE (Crafty) |
| Так и будет. |
#650
Отправлено 19 октября 2016 - 00:44
| QUOTE (Crafty) |
| Это возможно, но с побочным эффектом (хотя это нормально) все timed_event_p_proc тоже будут работать быстрее (к примеру, Вик чаще болтает флоатами). |
#651
Отправлено 19 октября 2016 - 00:58
| QUOTE (Fakeman) |
| Во протестировал, теперь ясно ты просто увеличил скорость тикам) выше 10 ставить смысла нет ибо все начинает глючить мобы дергаются при хождении, все начинают быстро разговаривать, это по сути тоже самое, что и SpeedMultiInitial только без анимации. |
Мобы не дёргаются даже при 1000, разговаривают как и раньше через определённый промежуток игрового времени. И да, по сути TimeScale и SpeedMultiInitial масло масляное ;-p
| QUOTE (Foxx) |
| Брал любой MP3 и переименовывал в 06rokot. |
| QUOTE (Fakeman) |
| ну вот в чем и вопрос, хотелось чтобы время шло быстрее, а все тики остались такими-же (прим.ред. по скорости). |
Прочитал оригинал:
| QUOTE |
|
I know you can modify the ddraw.ini to change the speed of the game, resulting in more fluid animations. Is there any setting anywhere in the game that changes the time scale? It currently seems 1:1, with 1 minute real world time equaling 1 minute in-game time when not traveling or waiting. Is it possible to quicken this to one second equals one minute, or whatever the user may apply? The dynamic of the days was one of the few things that bothered me about the game I hate how I can roll into Junktown, take out Morbid, save Killian, take out Gizmo, recruit Tycho, bust the Skulz.... all in the space of half an hour in-game. Video Game exposition is more concise and less nuanced than any real world negotiation/action, and I feel the time should reflect this succinctness. Well, sorry for ranting. Tl;dr is there any way to modify the time scale? |
| QUOTE (Crafty) |
| Так и будет. |
Это сообщение отредактировано Crafty - 19 октября 2016 | 01:17
#652
Отправлено 19 октября 2016 - 02:55
| QUOTE |
| А как ещё можно ускорить время не затрагивая тики, если последние и являются временем. |
Ну я как Профессионал с большой буквы в этом деле)) скажу, что нужно сделать переменную в которой тики будут вычисляться по формуле: Tics X TimeScale = NewTics
(но я так понимаю будет переполнение переменной раньше времени)
NewTics это тики которые нужны будут для времени в пип-бое. (не в курсах как там эти тики преобразуется в формат ЧЧ:ММ ДД/МM/ГГГГ).
При этом функции game_time_hour/get_day/get_month должны по видимому брать тики из новой переменной.
Еще вариант поковырять код который преобразует тики в формат времени для пип-боя и сделать там множитель равный TimeScale.
| QUOTE |
| Мобы не дёргаются даже при 1000 |
при 100 скриптовые у которых перемещение связанно через тики на таймере дергаются как под током))
и чтобы это исправить нужна проверка на AnimBusy
Имя параметру логичнее было бы дать TikcsSpeedMulti
Это сообщение отредактировано Fakeman - 19 октября 2016 | 15:58
#653
Отправлено 19 октября 2016 - 19:02
| QUOTE (Fakeman) |
|
скажу, что нужно сделать переменную в которой тики будут вычисляться по формуле: Tics X TimeScale = NewTics (но я так понимаю будет переполнение переменной раньше времени) NewTics это тики которые нужны будут для времени в пип-бое. (не в курсах как там эти тики преобразуется в формат ЧЧ:ММ ДД/МM/ГГГГ). При этом функции game_time_hour/get_day/get_month должны по видимому брать тики из новой переменной. Еще вариант поковырять код который преобразует тики в формат времени для пип-боя и сделать там множитель равный TimeScale. |
Тики содержатся в целочисленной беззнаковой (unsigned int, [0, +4 294 967 295]) переменной (_fallout_game_time) и десять раз в секунду увеличиваются на единицу. В понятный формат времени тики преобразуются простейшими делениями из расчёта значений:
| CODE |
|
/* Time Information (in Ticks) */ #define ONE_GAME_SECOND (10) #define ONE_GAME_MINUTE (60*ONE_GAME_SECOND) = 600 #define ONE_GAME_HOUR (60*ONE_GAME_MINUTE) = 36000 #define ONE_GAME_DAY (24*ONE_GAME_HOUR) = 864000 #define ONE_GAME_WEEK (7*ONE_GAME_DAY) = 6048000 #define ONE_GAME_MONTH (30*ONE_GAME_DAY) = 25920000 |
| QUOTE (Fakeman) |
| и чтобы это исправить нужна проверка на AnimBusy |
#654
Отправлено 19 октября 2016 - 22:29
| QUOTE |
| Не понимаю что в итоге должно выйти, причём тут пипбой и что ты ожидал увидеть. |
Ожидал увидеть, что скорость тиков останется такой-же, а время будет будет идти быстрее.
Смотри сейчас 1 сек равна 10 тикам соответственно у нас есть возможность влиять на время без увеличения скорости тиков, просто меняем константу которая указывает сколько в секунде тиков. (в движке же это заложено, не с потолка же они взяли 10 тиков).
К примеру ONE_GAME_SECOND равна 5 тикам, получаем прирост времени х2 при тех же количествах тиках в переменной _fallout_game_time а один игровой час(ONE_GAME_HOUR) должна будет равняться 18000 тикам.
Но есть побочка этого способа завязанная на механике в количестве тиксов, наркота будет действовать в два раза дольше, лечится игрок будет каждые 12 часов, восстанавливать +1 очко здоровья будет не в конце дня, а через день, и т.п. фигня.
Поэтому тут возникает вопрос, а так уж ли и нужно это увеличение времени с такой побочкой без правки всего этого?
Это сообщение отредактировано Fakeman - 19 октября 2016 | 22:56
#655
Отправлено 20 октября 2016 - 01:12
| QUOTE (Fakeman) |
| Ожидал увидеть, что скорость тиков останется такой-же, а время будет будет идти быстрее. |
Твой способ требует ненужных усилий по изменению движка и дополнительной правки скриптов (game_time + ONE_GAME_SECOND) при каждом изменении TimeScale, а единственный, помимо увеличения скорости течения времени, "профит" от всего этого увеличение лимита игрового времени (13*TimeScale). И это всё равно автоматически не решает проблему с анимацией в скриптовых сценках.
#656
Отправлено 20 октября 2016 - 02:46
| QUOTE |
| дополнительной правки скриптов (game_time + ONE_GAME_SECOND) при каждом изменении TimeScale, |
я и рассматривал это с позиции модмейкеров, что потребуется правка наркоты/скриптов относительно множителя.
| QUOTE |
| И это всё равно автоматически не решает проблему с анимацией в скриптовых сценках. |
разве должны быть какие-то проблемы, скорость и количество тиков(10:1) в скриптах остается такой же.
Ладно завязываем эту тему)
#657
Отправлено 20 октября 2016 - 03:56
| QUOTE (Fakeman) | ||
я и рассматривал это с позиции модмейкеров, что потребуется правка наркоты/скриптов относительно множителя.
|
#658
Отправлено 20 октября 2016 - 17:17
и start_gdialog(NAME, ptr_obj, mood, head, BACKGROUND)
вроде как багнута параметр mood игнорируется, и всегда при начале разговора показывает нам хорошую(GF/GP) физиономию. (по идеи должна быть нейтральная если уж не учитывать mood). возможно я ошибаюсь.
У голов еще есть не используемый суффикс V для плохой(BV) и хорошей(GV) головы, о котором ничего ни где не написано.
И еще такой вопрос не совсем относящийся к сфаллу.
в движке заложено ограничение на количество используемых frm в 4096, потому как в индификаторе frm pid для этого используется 12 бит, остальные 4 бита(ID1) используются под нужды криттеров и голов, для остальных типов не используется, и их значения могут быть любыми(если верить докам).
| CODE |
| Поля «Object type» и «Индекс в лист-файл» используются всегда, а поля «ID3», «ID2» и «ID1» могут игнорироваться в зависимости от значения поля «Object type». Значение не используемого бита может быть любым. |
Поэтому вопрос, возможно ли расширить указатель на индекс lst до полных 2-x байт (16 бит) для Тiles (реально не хватает 4к изображений
Сам формат карт вроде как поддерживает сохранение в нем 16-битого указателя на индекс фрм'ки.
| CODE |
|
На одну плитку приходится 4 байта. Структура плитки: RR RR TT TT где RR RR - это указатель плитки крыши (roof tile) по листфайлу master.dat\\art\tiles.,нависающей над плиткой пола, а TT TT - указатель плитки пола (floor tile) по тому же самому листфайлу. Данное решение позволяет использовать одни и те же плитки в качестве крыши и пола. |
Но в движке и маппере не учитывает эти 4 бита и показывает нам черную дырку в плитке если значение указателя больше 0FFF, можно это починить? (ну и соответственно в маппере то-же самое.)
Я тут пытался кое чего поискать но сам понимаешь ассемблер это не моя стихия) Вот есть такое очень похожее на нашего пациента
| CODE |
|
004B2A56 loc_4B2A56: ; square_render_floor_+197j 004B2A56 mov eax, [esp+44h+var_34] 004B2A5A mov ebx, [esp+44h+var_18] 004B2A5E mov edx, ds:_squares 004B2A64 add eax, esi 004B2A66 add edx, ebx 004B2A68 lea edi, ds:0[eax*4] 004B2A6F mov edx, [edx] 004B2A71 mov edx, [edx+edi] 004B2A74 and edx, 0F000h 004B2A7A shr edx, 0Ch 004B2A7D test dl, 1 004B2A80 jnz short loc_4B2AD4 |
логическая операция И, сдвиг на 12 бит и проверка результата если пациент здоров то по видимому рисуем тайл.
потом ниже кодом идете обнуление старших 4 битов
| CODE |
|
004B2AB1 mov eax, 4 ; ObjType Tiles 004B2AB6 and edx, 0FFFh ; Index |
Я убил jnz выше nop'пами тайлы пола появились, но старшие 4 бита все равно не учитываются. (и как позже выяснилось, тайлы пола все равно не дает рисовать HRP с ним черная дыра).
Крыша кстати изначально показывается, но 4 бита где-то обнуляются и показывается тайл начиная с первого индекса ну ты понял, а изменение кода на and edx, FFFFh не помогает. если в режиме отладки проверить рег. edx то там как раз то число что записано в карте вида RRTT.
Я там все что нашел по исправлял(исправлял прямо в exe) а толка никакого) в общем нид хелп!
И как быть с HRP?
Это сообщение отредактировано Fakeman - 22 октября 2016 | 19:01
#659
Отправлено 23 октября 2016 - 17:58
| QUOTE (Fakeman) |
| Сможешь довести до ума 32-битные головы? |
| QUOTE (Fakeman) |
|
и start_gdialog(NAME, ptr_obj, mood, head, BACKGROUND) вроде как багнута параметр mood игнорируется, и всегда при начале разговора показывает нам хорошую(GF/GP) физиономию. (по идеи должна быть нейтральная если уж не учитывать mood). возможно я ошибаюсь. |
У башки реакция хранится в нулевой локальной переменной её скрипта, и настроение вычисляется с помощью local_var(0) из скрипта цели:
| CODE |
|
if local_var(0) > 10 then mood := good_fidget; else if local_var(0) > -10 then mood := neutral_fidget; else mood := bad_fidget; |
| QUOTE (Fakeman) |
|
Поэтому вопрос, возможно ли расширить указатель на индекс lst до полных 2-x байт (16 бит) для Тiles (реально не хватает 4к изображений |
#660
Отправлено 23 октября 2016 - 19:13
| CODE |
| У башки реакция хранится в нулевой локальной переменной её скрипта, и настроение вычисляется с помощью local_var(0) из скрипта цели: |
Я вас понял.
| QUOTE |
| Посмотрю сначала у себя, там дофига менять... Если выйдет, то будет 16384 вместо 4096. |
С чем связанно именно 16348 а не 65535? для чего 1 бит оставлять, в качестве знака что ли?
вот эту надо функцию надо копать
004B2ACF call floor_draw_
я не смог в ней нормально разобраться где там обнуляются 4 бита.
пред ее вызовом в eax содержится значение вида 0400TTTT (это после правки art_id_)
что делает функция art_id_ ? я так понял что она общая для всех да?
| QUOTE |
| Ну и HRP может всё похерить. |
Ну тогда будем тайлы для крыши использовать, hrp вроде как не трогает их.
Это сообщение отредактировано Fakeman - 23 октября 2016 | 19:20
Похожие темы
| Название темы | Форум | Автор | Статистика | Последнее сообщение | |
|---|---|---|---|---|---|
WL2: Детали: платформы и дополнения |
Новости | hamster |
|
|
|
Дополнения для Skyrim будут большими |
Новости | hamster |
|
|
|
Какой перевод в дополнениях для Fallout 3? |
Дело техники | glotokraya |
|
|
|
Модок \ собачка Леди - дополнения для ЧаВо |
Ты — Избранный | The Master |
|
|
|
Неполадка с дополнениями |
Дело техники | Hero of Wasteland |
|
|
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных












