Перейти к содержимому


Фотография

(sfall) дополнения


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 1246

#461 Ethereal

Ethereal

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 212 сообщений

Отправлено 13 августа 2016 - 11:55

QUOTE
Нужно конечно постараться апнуться во время боя :-p


Запросто! :-p А вообще эфект был интересным. Пахнет новой системой раскачки напарников, как ГГ, с перками и выбором специализации. Ну, это так, фантазии любителя Fallout Tactics. :D

Это сообщение отредактировано Ethereal - 13 августа 2016 | 11:58


#462 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 13 августа 2016 - 15:36

Bitner
QUOTE
Теперь кружок появляется внизу а не сверху.
Разобрался и исправил, теперь и в релизной версии тоже.
При создании локации "машина без топлива" движок использует "заготовку" уже существующей локации, а именно Арройо. Поэтому и наследует оттуда сообщение о Великом Мосте.
Относительно двух последних рядов: размер квадратика на мировой карте 50x50, по горизонтали их 28 штук или 1400 (28*50), а по вертикали 30 штук или 1500 (30*50). В процедуре установки позиции локации на мировой карте (она, кстати, используется в wm_area_set_pos()) перепутана (внезапно?) переменная при проверке по горизонтали:
CODE
if (xPos >= 0) and (yPos < 1400) then begin
а должно быть
CODE
if (xPos >= 0) and (xPos < 1400) then begin
Поэтому процедура никода не выполняется, если yPos принадлежит двум последним рядам.
Однако даже после исправления можно вызвать этот баг, если "припарковать" машину без топлива в самом углу нижнего правого квадратика — это исправлять хлопотно.

Ethereal
QUOTE
Запросто!
Да ладно :-p Для тестов в бою использовал подбрасывание дров в самогонный аппарат Виски Боба. И вот охота, вместо уничтожения врагов, тратить ОД на это? :-p


#463 Ethereal

Ethereal

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 212 сообщений

Отправлено 13 августа 2016 - 19:44

Crafty
QUOTE
Да ладно :-p Для тестов в бою использовал подбрасывание дров в самогонный аппарат Виски Боба. И вот охота, вместо уничтожения врагов, тратить ОД на это? :-p


Если есть команда из пяти рыл, то там и без ГГ есть кому врагов отстреливать. Тем более там отродясь ничего опасного не водилось (ну, до моего вмешательства. Подсадил туда несколько огненных...). Сам наткнулся на этот баг, когда Короля Крыс убил и апнулся. Потом повторилось с Сальваторе. А про самогонный аппарат забыл. Последне годы мегамод мучал и только недавно пересел на Fallout 2 — Fixed Edition и пришлось много вспоминать.

Кстати, от идеи управления отображением брони на напарниках, в "NPC Armor" моде, отказался окончательно?


#464 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 13 августа 2016 - 23:45

QUOTE
Поэтому процедура никода не выполняется, если yPos принадлежит двум последним рядам.
Однако даже после исправления можно вызвать этот баг, если "припарковать" машину без топлива в самом углу нижнего правого квадратика

не совсем понял философию этого глюка O_o
а зачем тут ограничение на 1400 по xPos? что если карта больше оригинала? :)
попробовал покататься по двум линиям 29-30 и больше, все нормально машина появляется под позицией игрока. это без твоего исправления, катался не в оригинале.

В общем если увеличить количество тайлов карты по горизонтали то бага не происходит.

Это сообщение отредактировано Fakeman - 14 августа 2016 | 02:36


#465 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 14 августа 2016 - 13:56

Ethereal
QUOTE
Кстати, от идеи управления отображением брони на напарниках, в "NPC Armor" моде, отказался окончательно?
Почему, просто времени нет.

Fakeman
QUOTE
не совсем понял философию этого глюка O_o
Полная проверка выглядит примерно так:
CODE
if (xPos >= 0) and (xPos < xMax) then begin
 if (yPos >= 0) and (yPos < yMax) then begin
xMax и yMax рассчитываются, я упростил для понимания.


#466 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 15 августа 2016 - 20:34

QUOTE
Имя файла со звуковым эффектом оружия имеет следующий вид:

wSuffix1Suffix2Index1Suffix3XXIndex2.acm

где
    Suffix1 — Действие
    Suffix2 — Sound ID
    Index1  — Режим оружия
    Suffix3 — Материал цели в которую попал заряд
    Index2  — Существуют файлы с Index2 = '1' и Index2 = '2'.

В коде существует возможность получения файлов только с Index2 = '1'.
Автор считает, что файлы с Index2 = 2 не используются Fallout либо эти файлы загружаются явным образом.

Можешь подтвердить сие написанное Anchorite, что звуковые файлы с индексом значение которых равно 2 не используются движком?
я многие звуки там никогда не слышал, может стоить подключить файлы с индексом=2, чтобы движок их тоже проигрывал.

Это сообщение отредактировано Fakeman - 15 августа 2016 | 23:02


#467 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 15 августа 2016 - 22:49

QUOTE
Можешь подтвердить сие написанное Anchorite, что звуковые файлы с индексом значение которых равно 2 не используются движком?
Да, зашито намертво ;)
QUOTE
я многие звуки там никогда не слышал, может стоить подключить файлы с индексом=2, чтобы движок их тоже проигрывал?
Добавил на посмотреть в отладочных версиях бросок кубика (1-2) при выборе файла со звуковым эффектом оружия. Прикольно. Но потом надо будет доделать чтобы при отсутствии файлов с Index2 = 2 использовался Index2 = 1.


#468 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 15 августа 2016 - 23:02

QUOTE
Добавил на посмотреть в отладочных версиях бросок кубика (1-2) при выборе файла со звуковым эффектом оружия.

Там в основном файлы с индех=2 есть только для атаки и попадании во что-то.
а если новые(свои) добавлять оно будет видеть или нет?

и кстати там еще есть звуки для дверей/контейнеров которые движок не использует с символом 'N' — отомкнуть замок(unlock), должны использоваться при взломе замков — и по видимому в функции unlock_obj. если там не сложно и не лень то можно бы тоже сделать. (хотя это нафиг не надо)

И кстати по поводу anim() — я конечно многое чего не понял что ты там о ней писал о каких-то там зарезервированных движковых анимаций и п.р... :)
но эта функция не вызывает бага во время боя, если ее использовать не в обработчика damage_p_proc. — это так на всяк случай для информации, мало ли чего.

и если не сложно зайди в эту тему може чего подскажешь по палитре, как там двиг ее берет.
mve, палитра и субтитры

Это сообщение отредактировано Fakeman - 16 августа 2016 | 00:45


#469 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 17 августа 2016 - 01:15

QUOTE
Там в основном файлы с индех=2 есть только для атаки и попадании во что-то.
Ещё есть WAB1XXX3.ACM, думал расширить кубик до 3, но чёрт с ним.
Добавил и в релизные версии с проверкой файлов.

QUOTE
а если новые(свои) добавлять оно будет видеть или нет?
Если правильно добавить с изменением SNDLIST.LST, то почему бы и не видеть.

QUOTE
и кстати там еще есть звуки для дверей/контейнеров которые движок не использует с символом 'N' — отомкнуть замок(unlock), должны использоваться при взломе замков — и по видимому в функции unlock_obj. если там не сложно и не лень то можно бы тоже сделать. (хотя это нафиг не надо)
Тут хитро, движок в принципе не использует звуки для snd_unlocked (SNDOOR* и INCNTNR*) и snd_used (SUDOOR* и IUCNTNR*, даже файлов нет). Нужно самому прописывать в скриптах дверей/контейнеров проигрывание snd_unlocked с помощью не шибко документированной (в BIS_help.html её нет, в fop_lite.chm есть) функции sfx_build_open_name(ObjectPtr who, int gsound_sfx_scenery_action), что-то вроде:
CODE
procedure use_skill_on_p_proc begin
.....
if (action_being_used == SKILL_LOCKPICK) and (obj_is_locked(target_obj)) and (is_success(roll_vs_skill(source_obj, SKILL_LOCKPICK, -20))) then begin
 obj_unlock(target_obj);
 play_sfx(sfx_build_open_name(target_obj, snd_unlocked));
А ведь ещё есть sfx_build_ambient_name(), sfx_build_interface_name(), sfx_build_item_name() и sfx_build_scenery_name()...

QUOTE
это так на всяк случай для информации, мало ли чего.
В курсе ;)

Это сообщение отредактировано Crafty - 17 августа 2016 | 03:31


#470 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 17 августа 2016 - 14:01

QUOTE
в fop_lite.chm есть) функции sfx_build_open_name(ObjectPtr who, int gsound_sfx_scenery_action)

О, а где взять этот fop_lite.chm ? — может там еще че есть полезное. нашел у себя в старых архивах.
за функцию спасибо не знал о такой. а компилятор о таких знает?)

Еще просьба доработать хук бартера, чтобы он еще получал стоимость предложенных товаров игроком, но только в случае когда была бы нажата кнопка "обмена", в остальных случаях -1.
т.е. нужен такой алгоритм: игрок нажимает кнопку обмен > возвращается значение суммы его(игрока) товаров > после неких подсчетов в скрипте я подсовываю(возвращаю через set_sfall_return) торгашу новое значение, после чего происходит обмен как обычно.
Такое возможно?
Cуть данной доработки, в том чтобы немного изменить систему торговли с нпс,
вот почему игрок должен давать всегда больше денег торгашу за его товар?!несправедливо это, пускай и торгаш при определенных условиях(карма/репа/отношение/харизма и.т.п) уступает игроку несколько десятков единиц монет.

Это сообщение отредактировано Fakeman - 17 августа 2016 | 21:56


#471 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 18 августа 2016 - 01:49

QUOTE
за функцию спасибо не знал о такой. а компилятор о таких знает?)
Знает.

Из интересного в свете темы бартера — в движке есть только две бартерные функции для использования в скриптах: gdialog_set_barter_mod(int barter_mod) и gdialog_barter(int barter_mod) — первая устанавливает значение модификатора бартера, а вторая запускает режим бартера с заданным модификатором (если не указан, то равен 0). Однако из-за странного определения в DEFINE.H:
CODE
#define gdialog_barter gdialog_mod_barter(0)
в том же BIS_help.html вместо gdialog_barter() описан gdialog_mod_barter() и его понимают компиляторы и используют в скриптах.

QUOTE
Еще просьба доработать хук бартера, чтобы он еще получал стоимость предложенных товаров игроком, но только в случае когда была бы нажата кнопка "обмена", в остальных случаях -1.
Хочешь чтобы у продаваемых ГГ вещей можно было изменять их общую стоимость? Но почему такая привязка к кнопке, да и как это поможет если кнопка не используется?
Ничего обещать не буду, пока не улавливаю профит :-p

QUOTE
Cуть данной доработки, в том чтобы немного изменить систему торговли с нпс, вот почему игрок должен давать всегда больше денег торгашу за его товар?!несправедливо это, пускай и торгаш при определенных условиях(карма/репа/отношение/харизма и.т.п) уступает игроку несколько десятков единиц монет.
Это же делается с помощью изменения модификатора бартера, не? Хорошая репа — положительный модификатор и дешевле товары, плохая — отрицательный и дороже.

Drobovik'у отвечал тут, сейчас поразглядывал подробнее как всё работает.
Кнопка торговли использует текущее значение модификатора бартера, но при начале разговора модификатор бартера сбрасывается в 0, поэтому можно жульничать. Однако решение есть — использовать gdialog_set_barter_mod() с нужным значением (переменная или проверка кармы/репы) в самом начале talk_p_proc.


#472 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 18 августа 2016 - 03:06

QUOTE
Ничего обещать не буду, пока не улавливаю профит :-p
Это же делается с помощью изменения модификатора бартера, не? Хорошая репа — положительный модификатор и дешевле товары, плохая — отрицательный и дороже.

Да модификаторы влияют на цену товаров, но это не то что я "хотю".
а хотю я так: вот приходишь ты к барыге на базар, и торгуешься с ним ну с торговались(за это твои модификаторы отвечают), и тут у тебя раз и пару гривен не хватает, говоришь ему -мля потерял, а тот такой -ну ладно раз ты такой клевый мужик прощаю тебе пару гривен, давай сюда свой хлам. :)

QUOTE
Хочешь чтобы у продаваемых ГГ вещей можно было изменять их общую стоимость?
Но почему такая привязка к кнопке, да и как это поможет если кнопка не используется?

Нет не у игрока. Итоговую стоимость которую предлагает барыга и можно менять через set_sfall_return, просто нет возможности узнать на какую сумму ГГ выложил своего товара.
Кнопка не входа в бартер, а кнопка "обмена товаров".
Т.е. технически это выглядит так, в тот момент когда игрок нажимает кл. "обмен" мы должны получить суммарную стоимость всех вещей ГГ на столе бартера (это белыми цифрами снизу там написано). и в этот момент в скрипте подсовывается(меняется) суммарная стоимость товаров у барыги — в итоге барыга думает что стоимость его товаров равна продаваемых ГГ.
тут правда я узнал о косяке, хуг работает немного не так как мне надо, когда нажимаешь кл. "обмен" то хуг срабатывает уже после сделки(продажи), а нужно до. — так шо наверное облом.

и всякие модификаторы gdialog_set_barter_mod() тут не причем, не знаю зачем ты о них завел разговор)

Это сообщение отредактировано Fakeman - 18 августа 2016 | 03:45


#473 Ethereal

Ethereal

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 212 сообщений

Отправлено 18 августа 2016 - 14:27

Crafty, скачал sfall2 по ссылке в начале темы "16 августа 2016 г., 23:54:16" (вроде последний), но у меня стоит Fallout 2 — Fixed Edition и для обновления sfall в нём правильно, откуда ddraw.dll перекидывать, из корня папки "sfall2", или из "debugging"?

Перекинул из "debugging" и нашёл глюк, в бою при управлении напарником иногда слетает прицельный выстрел. Кроме того, иногда отображается оружие ГГ при переключении режимов стрельбы.

Звуки нереально порадовали!

Это сообщение отредактировано Ethereal - 18 августа 2016 | 14:37


#474 Foxx

Foxx

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 120 сообщений

Отправлено 18 августа 2016 - 16:16

QUOTE
Ethereal
откуда ddraw.dll перекидывать, из корня папки "sfall2", или из "debugging"?

Надо из корня, в папке debugging отладочная версия.

Это сообщение отредактировано Foxx - 18 августа 2016 | 16:16


#475 Ethereal

Ethereal

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 212 сообщений

Отправлено 18 августа 2016 - 17:38

Перекинул правильно. Глюк с оружием остался. Он только у меня?

Это сообщение отредактировано Ethereal - 18 августа 2016 | 17:38


#476 Foxx

Foxx

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 120 сообщений

Отправлено 18 августа 2016 - 18:50

Лично я никогда не пользовался "ControlCombat", т.к. люблю играть без напарников. Да и вообще прохладно отношусь к тактическо-командным играм, тем более когда изначально в них это было не предусмотрено:)

Это сообщение отредактировано Foxx - 18 августа 2016 | 18:51


#477 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 18 августа 2016 - 22:03

QUOTE (Fakeman)
ну ладно раз ты такой клевый мужик прощаю тебе пару гривен, давай сюда свой хлам.
Жирновато выходит — сначала торговец может дать скидку на свой товар, а потом ещё и простить нехватку средств у покупателя :-p Но дело твоё, добавил три аргумента:
CODE
critter arg7 - указатель на "стол" с предложенными игроком товарами
int     arg8 - общая стоимость предложенных игроком товаров (отдельно можно узнать количество денег с помощью item_caps_total(arg7))
int     arg9 - 1 если была нажата кнопка "предложения обмена" не сопартийцу, иначе 0.
Ну и тестовый hs_barterprice.ssl для примера:
CODE
procedure start;

procedure start begin
 if not init_hook then begin
  variable
   source := get_sfall_arg,
   target := get_sfall_arg,
   target_mod_price := get_sfall_arg,
   target_table := get_sfall_arg,
   target_caps := get_sfall_arg,
   target_org_price := get_sfall_arg,
   source_table := get_sfall_arg,
   source_org_price := get_sfall_arg,
   offer := get_sfall_arg;
  display_msg("t_mod_price="+target_mod_price+", t_caps="+target_caps+", t_org_price="+target_org_price+", s_caps="+item_caps_total(source_table)+", s_org_price="+source_org_price+", offer="+offer);
 end
end

QUOTE (Fakeman)
и всякие модификаторы gdialog_set_barter_mod() тут не причем, не знаю зачем ты о них завел разговор)
Потому что это намного важнее, конечно если не планируешь убивать кнопку торговли, как сделали в "Fallout 1.5: Resurrection" (правда забыли ещё и клавишу 'b' отрубить).
Есть у тебя, к примеру, положительно нейтральный торгаш поднимающий цены отрицательному ГГ. Что-то вроде процедуры NodeXXX:
CODE
if (global_var(GVAR_PLAYER_REPUTATION) < 0) then begin
 gdialog_mod_barter(-20);
end
else begin
 gdialog_mod_barter(0);
end
Вот без дополнительной инициализации модификатора при начале разговора
CODE
procedure talk_p_proc begin
 if (global_var(GVAR_PLAYER_REPUTATION) < 0) then begin
  gdialog_set_barter_mod(-20);
 end
можно жульничать с кнопкой обмена, и тут речь не о паре монет пойдёт ;)

QUOTE (Ethereal)
в бою при управлении напарником иногда слетает прицельный выстрел.
Включил напарнику прицельный выстрел, но при следующем его ходе у него откат на неприцельный? Неудивительно, испоьзуются переменные принадлежащие ГГ.
QUOTE (Ethereal)
Кроме того, иногда отображается оружие ГГ при переключении режимов стрельбы.
Да ладно ;-p


#478 Ethereal

Ethereal

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 212 сообщений

Отправлено 18 августа 2016 - 22:38

Crafty
QUOTE
Да ладно ;-p


Вот и вот. Кастет есть только у ГГ в втором слоте. Причём глюк появляется не сразу. У меня четверо отстрелялись до этого. В первый раз, двое.

Это сообщение отредактировано Ethereal - 18 августа 2016 | 22:44


#479 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 19 августа 2016 - 00:54

QUOTE
Жирновато выходит — сначала торговец может дать скидку на свой товар, а потом ещё и простить нехватку средств у покупателя :-p

Ну так это грубо говоря надо еще торгашу лизнуть, чтобы он вам простил)
Все проверил, чит работает как надо, спасибо!


#480 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 19 августа 2016 - 03:11

QUOTE (Ethereal)
Вот и вот. Кастет есть только у ГГ в втором слоте. Причём глюк появляется не сразу. У меня четверо отстрелялись до этого. В первый раз, двое.
Это часом не после убийства врага напарником и у напарника ничего нет во втором слоте? Но соглашусь — такое возможно. Добавил кое-чего ;)
QUOTE (Ethereal)
в бою при управлении напарником иногда слетает прицельный выстрел.
Думаю можно будет сделать запоминание режима для напарников (но только в F2-версии)...

Это сообщение отредактировано Crafty - 20 августа 2016 | 02:10




Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

Рейтинг@Mail.ru