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


Фотография

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


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

#1141 Fakeman

Fakeman

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

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

Отправлено 01 Апрель 2018 - 03:17

QUOTE
Не время сейчас, а там как карты лягут ;)

Это что перво апрельская шутка?))


#1142 Foxx

Foxx

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

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

Отправлено 01 Апрель 2018 - 16:12

Fakeman
Да там просто много работы, а у Crafty своих дел хватает (весна — рассада, огород и т.д.) :)))


#1143 Fakeman

Fakeman

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

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

Отправлено 06 Апрель 2018 - 02:32

CODE
skill_contest

Эта фигня работает?) если да то для чего она.

И почему how_much во втором фоле не работает, выключили за ненадобностью?

Это сообщение отредактировано Fakeman - 6 апреля 2018 | 02:41


#1144 Crafty

Crafty

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

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

Отправлено 06 Апрель 2018 - 04:43

QUOTE (Fakeman)
CODE
skill_contest
Эта фигня работает?) если да то для чего она.
"unimplemented", что касается остального, то "меньше знаешь — крепче спишь" :-p

QUOTE (Fakeman)
И почему how_much во втором фоле не работает, выключили за ненадобностью?
Всё работает :-p
Вот так выглядит do_check:
CODE
procedure do_check(variable who, variable check, variable modifier)
begin
 variable roll;
 if check >= STAT_st and check <= STAT_lu then begin
  modifier := modifier + get_critter_stat(who, check);
  roll := random(1, 10);
  Script.how_much := modifier - roll;
  if roll <= modifier then return ROLL_SUCCESS; else return ROLL_FAILURE;
 end
 return 0; // что действительно является ROLL_CRITICAL_FAILURE
end

Использование result := how_much(пофик_что_но_int) вернёт ту разницу.
Для roll_vs_skill использование how_much тоже вернёт разницу:
CODE
modifier := modifier + has_skill(who, skill);
if who == dude_obj and skill == SKILL_STEAL and sneak_success then modifier := modifier + 30;
roll := random(1, 100);
Script.how_much := modifier - roll;


#1145 Fakeman

Fakeman

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

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

Отправлено 06 Апрель 2018 - 05:22

Минут 10 пытался понять смысл и как использовать how_much нифига не понял.
Напиши своими словами а не псевдо кодом из движка.
....
В общем я так понял раз ей на аргумент пофиг то предполагаю, что её надо использовать сразу после do_check/roll_skill для оценки разницы между значением броска кубика и проверяемого стата/скилла, все верно?

Это сообщение отредактировано Fakeman - 6 апреля 2018 | 05:51


#1146 Crafty

Crafty

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

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

Отправлено 06 Апрель 2018 - 05:45

QUOTE (Fakeman)
В общем я так понял раз ей на аргумент пофиг то предполагаю, что её надо использовать после do_check/roll_skill и возвращает она разницу, разницу чего?
Да, после.
Вот у тебя 5 харизмы, а random(1,10) выбросил 1 — вернётся 4, а если выбросил 9, то вернётся -4.
QUOTE (Fakeman)
Минут 10 пытался понять смысл и как использовать how_much нифига не понял.
Напиши своими словами а не псевдо кодом из движка.
Ну я вот тоже хз какое у неё практическое применение, хотя в связке с roll_vs_skill вроде был какой-то смысл, но я не помню уже какой.


#1147 Fakeman

Fakeman

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

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

Отправлено 06 Апрель 2018 - 05:57

Понятненько, в принцепи применение ей можно найти — специфическое :-)


#1148 Fakeman

Fakeman

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

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

Отправлено 07 Апрель 2018 - 05:00

Действительно do_check не возвращает критические состояния...
Меня жестко обманули, я разочарован, я ухожу)

Отправлено: 7 апр 18 05:08
QUOTE
Поэтому последующие проверки на is_critical всегда неудачны. Их нужно заменить или на проверку результата с помощью how_much

Эээм, а каким таким местом how_much сможет вернуть вам критическую (не)удачу?

Это сообщение отредактировано Fakeman - 7 апреля 2018 | 05:09


#1149 Crafty

Crafty

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

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

Отправлено 07 Апрель 2018 - 05:32

QUOTE (Fakeman)
Действительно do_check не возвращает критические состояния...
Меня жестко обманули, я разочарован, я ухожу)
Прикол в том, что она активно используется в скриптах совместно с is_critical (двери/ловушки) и этот код никогда не выполнится.

QUOTE (Fakeman)
Эээм, а каким таким местом how_much сможет вернуть вам критическую (не)удачу?
Никаким, но если разница очень велика, то можно считать это критической [не]удачей. Понятное дело что при "крайних" значениях стата нужно что-то придумывать дополнительно. Потому и хз где её практически использовать.


#1150 Fakeman

Fakeman

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

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

Отправлено 07 Апрель 2018 - 18:11

Кстати how_much какая-то багованная, ломает последнюю объявленную переменную в процедуре, так что эта переменна похоже содержит неизвестное значение))
как бы еще чего серьезного она не натворила.

CODE
procedure roll_vs_stat(variable who, variable check_stat, variable modifier) begin

variable result     := do_check(who, check_stat, modifier),
          roll      := how_much, // отрицательные значения для неудачного результата броска кубика.
          stat      := get_critter_stat(who, check_stat),
          crit_type := (stat + modifier) - roll, // 1 - критическая удача, 10 - критическая неудача
          r_min     := 0,
          r_max     := 11,
          temp;

display_msg("look temp: " + temp);

в display_msg в лог выведется два раза фраза вот так "look temp: look temp: "

Это сообщение отредактировано Fakeman - 7 апреля 2018 | 18:11


#1151 Crafty

Crafty

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

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

Отправлено 07 Апрель 2018 - 19:12

QUOTE (Fakeman)
Кстати how_much какая-то багованная, ломает последнюю объявленную переменную в процедуре
Сам ломаешь ;) У how_much есть аргумент "пофик_что_но_int".


#1152 Fakeman

Fakeman

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

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

Отправлено 07 Апрель 2018 - 19:29

CODE
У how_much есть аргумент "пофик_что_но_int".

не компилируется с ним, может внутри компилятора автоматом подставляется.


#1153 Crafty

Crafty

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

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

Отправлено 07 Апрель 2018 - 19:42

QUOTE (Fakeman)
не компилируется с ним, может внутри компилятора автоматом подставляется.
Действительно не компилируется. В компиляторе не подставляется, в исходниках (в extra.c) how_much описана как функция без параметров.
Если напишешь pull, добавь ещё чтобы в optimize.c в IsProtectedProc добавили "Protect("desc_p_proc");" для F1 ;)


#1154 Fakeman

Fakeman

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

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

Отправлено 07 Апрель 2018 - 19:58

Т.е. то что не передается аргумент, от этого и имеется глюк в последней переменной?


#1155 Crafty

Crafty

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

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

Отправлено 07 Апрель 2018 - 20:13

QUOTE
Т.е. то что не передается аргумент, от этого и имеется глюк в последней переменной?
Типа того — движок достаёт аргумент из стэка, но в нашем случае этого аргумента в стэке нет и он трогает что не нужно ;)


#1156 Fakeman

Fakeman

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

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

Отправлено 07 Апрель 2018 - 20:21

может тогда легче движок поправить, все равно ненужен этот арг. хотя нафиг.
а для f1 это что за кочерга?

Это сообщение отредактировано Fakeman - 7 апреля 2018 | 20:24


#1157 Crafty

Crafty

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

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

Отправлено 07 Апрель 2018 - 20:46

QUOTE (Fakeman)
может тогда легче движок поправить, все равно ненужен этот арг. хотя нафиг.
Легче и правильнее всё же исправить компилятор :-p
QUOTE (Fakeman)
а для f1 это что за кочерга?
В F2 "description_p_proc", а в F1 "desc_p_proc".


#1158 Fakeman

Fakeman

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

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

Отправлено 07 Апрель 2018 - 23:15

В смысле там же через script_action вызывается соответствующая процедура для действия. или для описания это не работает.


#1159 Crafty

Crafty

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

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

Отправлено 08 Апрель 2018 - 00:23

QUOTE (Fakeman)
В смысле там же через script_action вызывается соответствующая процедура для действия. или для описания это не работает.
Неверная информация, основанная на демо-версии движка, что:
QUOTE
start — в Fallout2 вызывается при первом запуске скрипта, в Fallout1 — для каждого действия
Примечания:
В Fallout1 является главным обработчиком, через который вызываются все остальные. Типы действия передаются обработчику через параметр script_action, после чего происходит вызов нужного обработчика (обычно это делатеся через if-then-else). Номера обработчиков см. в Приложении.

У F1 такие же именные обработчики как и у F2, только вместо "description_p_proc" это "desc_p_proc" и нет "push_p_proc", "is_dropping_p_proc", "combat_is_starting_p_proc" и "combat_is_over_p_proc". Связка start+script_action является резервной и срабатывает если именного обработчика нет (вроде рассказывал об этом когда сделал "! Исправлено использование фиксированной позиции для вызова скриптовой процедуры start при отсутствии стандартного обработчика.").

Поэтому, на примере jennifer.ssl,:
CODE
procedure start
begin
 if (script_action == 21) then begin
  call look_at_p_proc();
 end
....
procedure look_at_p_proc
begin
end
проверка в start нафик не нужна, движок вызовет look_at_p_proc напрямую.


#1160 Fakeman

Fakeman

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

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

Отправлено 08 Апрель 2018 - 02:38

QUOTE
У F1 такие же именные обработчики как и у F2

Почему я постоянно в процедуре start вижу эти script_action, скрипты остались с демо-версии?
Вообще я кто-то не лезу в дебри F1, тут бы с F2 разобраться))




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

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


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

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

Рейтинг@Mail.ru