Crafty
26 August 2016 | 03:14
QUOTE (Fakeman) |
как там насчет поработать над AI противников? |
В перспективе...
QUOTE (Fakeman) |
Такая просьба можно ли в двиге изменить чтобы отладочный лог не только отображался на экране но и писался одновременно в файл? |
Через 3 позже сделаю.
QUOTE (Fakeman) |
можешь поискать смещения в exe которые за это отвечают, а я уже сам у себя поменяю. |
Так не выйдет, там свою обработку нужно делать.
Fakeman
26 August 2016 | 14:07
CODE |
Так не выйдет, там свою обработку нужно делать. |
Во как, если там много заморочек с этим то ну его, не особо то оно так и важно обойдусь.
Тут еще маленькую бы доработку сделать при создании персонажа, если трейт отнимает -1 к стате то оно становится в 0 и с этим нулем можно начать игру, естественно после начало оно уже будет 1.
во общем проверку надо поставить такую-же как при статах выше 10.
проверить можно на олимпе с Фоксовким фиксом на мех.память, ну или самим там выставить.
и еще при -2 к стате там уже будет 99, имей это тоже ввиду.
В торговли в описании предметов в частности для стрелкового оружия добавить бы еще и информацию о его TTX. повреждения/мин СИЛ.
И еще возможно ли добавить строчку с отсутствующей информацией о защите от Energy в инвентарь игрока?
там правда строчку придется добавлять... но если место не хватит то можно удалить имя игрока)
Foxx
26 August 2016 | 14:34
Fakeman
QUOTE |
Тут еще маленькую бы доработку сделать при создании персонажа, если трейт отнимает -1 к стате то оно становится в 0 и с этим нулем можно начать игру, естественно после начало оно уже будет 1. во общем табличку надо поставить такую-же как при статах выше 10. и еще при -2 к стате там уже будет 99, имей это тоже ввиду. |
Лучше наверное блокировку поставить, чтобы статы ниже 1 не опускались. 0 всё равно в игре не используется.
Fakeman
26 August 2016 | 14:37
Нет просто блокировка не пойдет, проверка нужна как при 10+
попробуй и поймешь в чем разница.
хотя ты прав, нужна еще и блокировка на "ручную" отмотку меньше 1, иначе можно будет читерски использовать очки.
если сделать -1 к стате которая уже равна 1 то получается мы читерим на 1 очко, в этом случае должно быть 0 и проверка "что мы не можем начать игру". как-то так! Crafty разберется.
Ethereal
27 August 2016 | 18:04
Crafty
QUOTE |
Твоя правда неважно кто убивает, главное чтобы у ГГ был взят перк. Исправил, и "Наблюдательность" от ГГ при контроле тоже теперь наследуется (и в F1-версии), поскольку вполне уместный и безобидный перк. |
Наблюдательность на напарниках работает, а шкуры всё равно не дропаются. Хрен с ним. Будем отключать контроль при бое с гекко.
Кстати, есть скрипт "hs_ondeath.int" от Phobos2077, 75% шанс уничтожения оружия, патронов, стимуляторов и цел.порошков при смерти противника. Есть ещё неиспользуемый перк Хапуга. Что если этим же скриптом дать ему функцию снижение шанса потери лута у трупов? Сам перк сделать доступным в Perks.ini не проблема. Может в этом sfall помочь?
Fakeman
27 August 2016 | 19:37
QUOTE |
Может в этом sfall помочь? |
не надо крафти отвлекать от более важных дел) напишите фобосу пусть добавит хапугу в свой скрипт. там 5 мин делов.
Ethereal
27 August 2016 | 21:11
У него на nuclear-city последняя активность в конце Апреля. Я бы написал, но где его искать?
Fakeman
27 August 2016 | 22:39
он на забугорных сайтах тусит типа NMA.
Смотрю добавлены новые процедуры combat_is_starting_p_proc и combat_is_over_p_proc.
Crafty, ты там не в курсах событие SEQUENCING в combat_p_proc при каких условиях происходит, сколько не тестировал так и не получалось увидеть это событие. или это событие просто выключено?
COMBAT_SUBTYPE_SEQUENCING (3) проверяется боевая последовательность
чет мне кажется я у тебя уже это спрашивал, или нет..)
и еще хотел узнать о NPCsTryToSpendExtraAP что конкретно делает этот параметр?, тоже тестировал разницы в поведении НПС в бою не увидел.
Crafty
28 August 2016 | 01:32
QUOTE (Fakeman) |
не особо то оно так и важно обойдусь. |
Поздно :-p
QUOTE (Fakeman) |
и еще при -2 к стате там уже будет 99, имей это тоже ввиду. |
-1 отображается как положительное число. Исправил.
QUOTE (Fakeman) |
В торговли в описании предметов в частности для стрелкового оружия добавить бы еще и информацию о его TTX. повреждения/мин СИЛ.
И еще возможно ли добавить строчку с отсутствующей информацией о защите от Energy в инвентарь игрока? |
Слишком хлопотно :-p
QUOTE (Ethereal) |
Наблюдательность на напарниках работает, а шкуры всё равно не дропаются. |
Не верю. Перк есть у ГГ? Проверяй скрипты принадлежащие животинкам.
QUOTE (Fakeman) |
Смотрю добавлены новые процедуры combat_is_starting_p_proc и combat_is_over_p_proc. |
Фикс вызова процедуры start намного круче, потом соберусь с силами и опишу подробнее.
QUOTE (Fakeman) |
COMBAT_SUBTYPE_SEQUENCING (3) проверяется боевая последовательность чет мне кажется я у тебя уже это спрашивал, или нет..) |
Не спрашивал, не используется нигде.
QUOTE (Fakeman) |
и еще хотел узнать о NPCsTryToSpendExtraAP что конкретно делает этот параметр?, тоже тестировал разницы в поведении НПС в бою не увидел. |
Ну есть у тебя нпс с 10 ОД и какой-то пушкой при стрельбе из которой он тратит 6 ОД, с NPCsTryToSpendExtraAP=0 он разок выстрелил и стоит курит на том же месте, а с >0 повторно запускается процедура атаки нпс и он пытается использовать оставшиеся ОД бежит к тебе чтобы ударить. Ну и при следующем его ходе у него повысится точность, а когда добежит так кроме выстрелов будет ещё бить :-p
Fakeman
28 August 2016 | 02:01
Вы это как к QUOTE (Fakeman) добавляете ник?
Aгa уже поставил 3 и проверил)
QUOTE |
Ну и при следующем его ходе у него повысится точность, а когда добежит так кроме выстрелов будет ещё бить :-p |
не ну я то это понял, но что-то они как то не особо то и тратили свои оставшиеся очки, ладно.
QUOTE |
Фикс вызова процедуры start намного круче, потом соберусь с силами и опишу подробнее. |
не замечал никакого бага со start, только единственное что он 2 раза подряд выполняется.
QUOTE |
-1 отображается как положительное число. Исправил. |
проверил идеальное исправление, даже придраться не к чему)
Ethereal
28 August 2016 | 12:10
Crafty
QUOTE |
Не верю. Перк есть у ГГ? Проверяй скрипты принадлежащие животинкам. |
Всё там есть. И у напарников перк отображается, но не более того. Скрипты я не трогал, иначе они бы не работали вообще. Какие в РП есть, такие и остались.
Fakeman
QUOTE |
и еще хотел узнать о NPCsTryToSpendExtraAP что конкретно делает этот параметр?, тоже тестировал разницы в поведении НПС в бою не увидел. |
Главное, что он делает, это то, что после убиения одной цели, NPC и напарники, переключаются на другую враждебную цель. Стреляют, если есть ОД, или бегут к ней.
Crafty
QUOTE |
запускается процедура атаки нпс и он пытается использовать оставшиеся ОД бежит к тебе чтобы ударить. |
... выбегая, и часто перекрывая линию огня оставшимся сзади напарникам с автоматическим оружием, что не редко приводит к смерти выбежавшего. Подправить бы, чтобы с цели на цель переключался, но не бегал, если нет ОД на выстрел в обоих режимах стрельбы имеющегося оружия.
Crafty
29 August 2016 | 02:25
QUOTE (Fakeman) |
Вы это как к QUOTE (Fakeman) добавляете ник? |
[ quote = ник ] без пробелов.
QUOTE (Fakeman) |
не ну я то это понял, но что-то они как то не особо то и тратили свои оставшиеся очки, ладно. |
Ещё зависит от настроек AI пакета (AI.txt).
QUOTE (Fakeman) |
не замечал никакого бага со start, только единственное что он 2 раза подряд выполняется. |
"Видишь суслика? Нет. И я не вижу. А он есть!" © :-p
QUOTE |
Скриптовые действия ..... start в Fallout2 вызывается при первом запуске скрипта, в Fallout1 для каждого действия Примечания: В Fallout1 является главным обработчиком, через который вызываются все остальные. Типы действия передаются обработчику через параметр script_action, после чего происходит вызов нужного обработчика (обычно это делатеся через if-then-else). Номера обработчиков см. в Приложении. ..... int script_action возвращает действие, активировавшее этот скрипт (в скриптах Fallout2 не используется) Аргументы: нет Возвращаемое значение: номер стандартного обработчика (см. Приложение): Примечания: В Fallout1 играет важную роль. Используется в контексте обработчика start. |
Информация в примечаниях частично актуальна для демо-версии, поскольку даже процедуры start не существовало всегда вызывалась самая_первая_процедура с заданным параметром script_action.
Начиная с версии 1.0 и F1 и F2 стали использовать именные стандартные обработчики (start, spatial_p_proc и т.д.) только в F1 description_p_proc называется desc_p_proc (надо бы имя в sslc компилятор добавить 'Protect("desc_p_proc");'). Для совместимости способ вызова через самая_первая_процедура+script_action оставили, хотя подозреваю что подумывали отказаться в обоих движках остались неиспользуемые кусочки кода, которые должны были обрабатывать вариант отсутствия именного стандартного обработчика (в F1 для debug-режима даже сообщение осталось "Error: exec_script_proc: Can't Find script procedure!!!").
В общем алгоритм вызова обработчиков и в F1 и в F2 стал таким если есть именная процедура (destroy_p_proc и т.д.), то вызвать её, в противном случае установить script_action (18 для destroy_p_proc) и вызвать самую_первую_процедуру. Тут ошибочка и появилась.
Обычно именная процедура start описана как самая_первая_процедура, но в отдельных случаях это не так (декомпиляция и компиляция стандартного скрипта, в исходнике которого добавляется checkPartyMembersNearDoor в качестве самой_первой_процедуры, да даже бегло просмотрел существующие исходники и видел start не в качестве самой_первой_процедуры). Последствия слегка упомянуты в примечании к описанию critter_p_proc из BIS_help.html:
QUOTE |
critter_p_proc отвечает за поведение объекта в целом, выполняется постоянно (несколько раз в секунду). В качестве параметра получает fixed_param урон, нанесённый криттеру в последний ход. Примечание: если в скрипте криттера данная процедура отсутствует, то могут возникать глюки, например, в качестве этого обработчика может быть воспринята первая попавшаяся процедура, которая будет выполняться несколько раз в секунду. |
Не первая попавшаяся, а точно самая первая. Да и critter_p_proc не единственный пострадавший отсутствие любого именного стандартного обработчика при попытке его вызова приведёт к вызову самой_первой_процедуры+script_action, и повезёт если там вместо start окажется безобидная процедура.
Исправил теперь вместо фиксированного вызова самой_первой_процедуры движок сначала узнаёт номер процедуры start, а уже затем её вызывает.
Ethereal
29 August 2016 | 08:49
Теперь ещё выяснилось, что и хвосты с скорпионов то же не дропаются, если их убили подконтрольные напарники. Наверняка и Кладоискатель, увеличивающий количество монет, то же работать не будет. В Общем сплошной геморрой.
Есть предложение внести кнопку включения и выключения контроля напарников в меню игры, вместо Фильтра Ругани, или ещё куда. Или на какую-нибудь кнопку на "клаве" повесить.
Fakeman
30 August 2016 | 12:29
Кладоискатель скриптовай перк, незнаю как там дела с ним в рп, но оригинальном ф2 не везде он прописан, в общем можно сказать он по сути не везде работает. Только у караванщиков на случайках.
CraftyTак со Start понятно, а вот если в скрипте нет какого-то обработчика и произошло его событие, то какая тогда процедура выполняется, я надеюсь никакая? :)
Еще посмотри этот пост, там про AI & aimed shots
http://www.nma-fallout.com/threads/fo2-ai-...-taunts.206700/
Crafty
30 August 2016 | 23:53
QUOTE (Ethereal) |
Теперь ещё выяснилось, что и хвосты с скорпионов то же не дропаются, если их убили подконтрольные напарники. |
ZCLSCORP.SSL:
CODE |
procedure destroy_p_proc begin variable tail := 0; tail := create_object(PID_SCORPION_TAIL,0,0); add_obj_to_inven(self_obj,tail); end |
Вообще без разницы кто убил скорпиона. Не могу воспроизвести твою ситуацию по имеющимся данным у меня и в чистом F2 и в Fixed Edition всё дропается :-p
QUOTE (Fakeman) |
Tак со Start понятно, а вот если в скрипте нет какого-то обработчика и произошло его событие, то какая тогда процедура выполняется, я надеюсь никакая? :) |
Невнимателен :-p
QUOTE |
отсутствие любого именного стандартного обработчика при попытке его вызова приведёт к вызову самой_первой_процедуры+script_action |
Так в оригинале, сейчас (более полное описание) отсутствие любого именного стандартного обработчика при попытке его вызова приведёт к вызову процедуры (если она есть) start+script_action или же вызову самой_первой_процедуры+script_action (хотя в принципе это лишняя страховка).
QUOTE (Fakeman) |
Еще посмотри этот пост, там про AI & aimed shots |
НПС делают прицельные атаки, но там столько условий, что "обещанного три года ждут":
CODE |
1. Если у НПС меньше ОД, чем нужно для прицельной атаки, то пункт 7; 2. Если оружие в руках НПС не имеет режима прицельной атаки, то пункт 7; 3. Если бросок кубика 1-called_freq (из AI.TXT) не равен 1, то пункт 7; // вообще жесть 4. Если IQ у НПС меньше 3, 5, 7 (зависит от сложности боя: 3=Круто, 5=Нормально, 7=По-детски), то пункт 7; 5. Теперь бросок кубика 0-8 (Body_Head-Body_Uncalled) и результат используется в процедуре определения шанса попадания в эту часть тела; 6. Если шанс попадания >= min_to_hit (из AI.TXT), то return результат броска кубика из 5 пункта; 7. return Body_Torso; |
Fakeman
31 August 2016 | 02:46
пункт 4 думаю лишний можно вырезать)
QUOTE |
5. Теперь бросок кубика 0-8 (Body_Head-Body_Uncalled) и результат используется в процедуре определения шанса попадания в эту часть тела; |
ну и здесь подрезать 0-7, и если 3 то опять бросок)
CODE |
3. Если бросок кубика 1-called_freq (из AI.TXT) не равен 1, то пункт 7; // вообще жесть |
т.е. если всем поставить в ai called_freq=1 то вероятность будет 100%
а то что-то я думал что чем больше тем выше вероятность.
Fakeman
1 September 2016 | 17:26
CODE |
отсутствие любого именного стандартного обработчика при попытке его вызова приведёт к вызову самой_первой_процедуры+script_action |
провел тесты в маппере
создал скрипт для контейнера оставил там 2 процедуры
стандартную start и самую верхнею сделал test.
процедура test объявлена после start но физически расположена вверху скрипта.
при попытке осмотреть/открыть всегда выполняется первым start+script_action процедура, без стандартных процедур просто одна start.
если объявляем процедуру test первой
тогда уже start не выполняется, вместо нее выполняется test+script_action
если процедуры script_action отсутствует в скрипте, то просто выполняется одна test.
Вывод любая первая объявленная процедура выполняется всегда, и независимо есть ли в скрипте процедура стандартного обработчика.
бага в маппере(игре) можно было бы избежать если в начало define.h поместить строчку procedure start; //тупые BIS программеры)
ладно это уже в прошлом, но знать необходимо.
Crafty
1 September 2016 | 21:46
QUOTE (Fakeman) |
пункт 4 думаю лишний можно вырезать) |
Ну не скажи, всё же проверка уровня сложности игры.
QUOTE (Fakeman) |
ну и здесь подрезать 0-7, и если 3 то опять бросок) |
Лишняя суета из-за 3 пункта единица, Карл!
QUOTE (Fakeman) |
т.е. если всем поставить в ai called_freq=1 то вероятность будет 100% |
Верно.
QUOTE (Fakeman) |
Вывод любая первая объявленная процедура выполняется всегда, и независимо есть ли в скрипте процедура стандартного обработчика. |
Ну так а я что написал? :-p
start является стандартным обработчиком и вызывается при загрузке скрипта.
Fakeman
1 September 2016 | 22:32
QUOTE |
Лишняя суета из-за 3 пункта единица, Карл! |
единица это же целых 10% шанса.
Кстати прицельный в тело вроде как дает какой-то бонус? не в курсе где про это написано)
QUOTE |
Ну так а я что написал? :-p |
ты не растолковал более подробно)
Crafty
1 September 2016 | 23:26
QUOTE (Fakeman) |
единица это же целых 10% шанса. |
Не, речь о called_freq у Alien бросок кубика 1-300 и результат должен быть равен 1 (единица, Карл!). До 4 пункта ещё дойти нужно.
QUOTE (Fakeman) |
Кстати прицельный в тело вроде как дает какой-то бонус? не в курсе где про это написано) |
У него нет штрафа, а это бонус (BodyHit_* в ddraw.ini)
Fakeman
2 September 2016 | 00:19
QUOTE (Crafty) |
Не, речь о called_freq у Alien бросок кубика 1-300 и результат должен быть равен 1 (единица, Карл!). До 4 пункта ещё дойти нужно. |
подумал ты о 5 пункте.
ну 3 пункт то поправим, сделать в ini что-то типа регулятора
ai_called_freq_div=делитель
или сделать деление по натуральному логарифму
called_freq/log(called_freq)
о а что у не прицельного есть штраф) ?
Crafty
2 September 2016 | 02:48
QUOTE (Fakeman) |
о а что у не прицельного есть штраф) ? |
Нету, и вообще Body_Uncalled в compute_attack_ превращается в Body_Torso.
Fakeman
2 September 2016 | 10:09
Легким движением рук, брюки превращаются в шорты))
Я тут из твоего AutoQuickSave сделал просто AutoSave :)
все конечно замечательно, но можно это как-то подработать чтоб при включенном ExtraSave оно всегда сохраняло в первую страницу (слоты с номерами 1-10).
думаю нужно бы расширить значения AutoQuickSave до 11-20, что означало бы запись в первую страницу, в указанный слот.
так можно сделать?
конечно если тебе делать нечего, можешь попробовать реализовать AutoSave в сфале :)
Foxx
8 September 2016 | 16:06
Crafty возникла проблема:sFall2 1.7.17 (от 06.09.16) не хочет работать в Fallout: Nevada, выдает ошибку при запуске игры
http://i78.fastpic.ru/big/2016/0908/5f/9f6...cad195b725f.jpgsFall2 1.7.9 (от 24.08.16) работает нормально.
Пробовал и на оригинале Невады (без HiRes Patch) такая же фигня. При этом Fallout 2 и Olympus работают без проблем.
Crafty
8 September 2016 | 20:32
QUOTE (Foxx) |
возникла проблема |
Непорядок, поправил.
Foxx
8 September 2016 | 20:41
Всё работает)) Спасибо за оперативность.
Foxx
12 September 2016 | 00:57
Crafty у тебя в
ddraw.ini переменная "ObjCanSeeObj_ShootThru_Fix" по умолчанию включена, но с ней в Fallout: Nevada есть баг. Если её отключить баг исчезает))
Вот видео:
https://yadi.sk/d/IdfVZF2Sv3ZfUСейв я тоже на всякий случай кинул.
Fakeman
12 September 2016 | 03:49
QUOTE |
в ddraw.ini переменная "ObjCanSeeObj_ShootThru_Fix" по умолчанию включена, но с ней в Fallout: Nevada есть баг. Если её отключить баг исчезает)) |
да это не баг, просто скрипт невады не доработан и включает бой раньше времени. вернее вон те типы в синих штанах видят гг и врубают бой.
Foxx
12 September 2016 | 10:54
QUOTE (Fakeman) |
да это не баг, просто скрипт невады не доработан и включает бой раньше времени. вернее вон те типы в синих штанах видят гг и врубают бой. |
Понятно. Пойду на форуме отмечу данный факт.
Fakeman
12 September 2016 | 16:01
ага в неваду без этой настройки лучше играть.
ты заметил что с вкл. настройкой рейдер тебя через грузовик видит, а все потому, что разработчик не те блокираторы(не с тем флагом) по натыкал на карту.
-и грузовик еще простреливается, хотя за ним можно прятаться (без включенной опции).
А на том рейдерском "ринге" через ограждение сетки(стена) (без вкл.оциии) НПС не смогут увидеть ГГ, вот такой вот в движке косячек)
Foxx
14 September 2016 | 11:55
QUOTE (Fakeman) |
Во я наконец таки вспомнил нужную вещь которую надо пофиксить, это заблочить возможность менять уровень сложности в уже начатой игре. |
Хорошее предложение, а то глянул во многих прохождениях на youtube это используют как разрешенный чит (например взломать замок если навыка не хватает). Нечто подобное было и с наркотиками при подъеме навыков, но здесь Crafty исправил DrugExploitFix'ом, а тут не хочет((
QUOTE (Crafty) |
А ещё запретить пользоваться редактором сейвов? ;) Нет смысла. |
Редактором сейвы только гробить можно и умные люди им только в исключительных случаях пользуются, лично мне он интересен чисто для тестов.
Nordan
14 September 2016 | 12:42
Crafty, есть ли возможность узнать адреса по которым живут значения номеров приоритетных скиллов (те 3, что выбираются при создании персонажа)?
А еще лучше добавить функцию в сфалл для возврата номеров этих скиллов.
Fakeman
14 September 2016 | 13:47
QUOTE |
Хорошее предложение, а то глянул во многих прохождениях на youtube это используют как разрешенный чит |
Чит еще тот, но скритом можно заблочить смену сложности на более низкий уровень.
Ну как заблочить просто написать, ах ты читер поганый выключаем игру и форматируем диск))
Nordan, используй цикл while do для определения тагнутых скилов стандартная же функция есть. Можно еще их и в массив поместить, или в глобальные.
Да и где-то я встречал смешения по которым написаны тагнутые скилы хотя может мне это приснилось надо покопаться в базе.
А что-бы добавить новые функции ее еще нужно будет добавить в компилятор этим крафти точно не занимается.
Crafty
14 September 2016 | 20:47
QUOTE (Fakeman) |
ну 3 пункт то поправим, сделать в ini что-то типа регулятора ai_called_freq_div=делитель |
Сделал, кстати, давненько (AI_Called_Freq_Div в Misc), но в ini не добавлял (хз как озвучить суть, да ещё и перевести на заморский).
QUOTE (Fakeman) |
Я тут из твоего AutoQuickSave сделал просто AutoSave :) |
Автозапись по времени?
QUOTE (Fakeman) |
все конечно замечательно, но можно это как-то подработать чтоб при включенном ExtraSave оно всегда сохраняло в первую страницу (слоты с номерами 1-10). |
Почему именно первую?
Вот это
QUOTE |
! Исправлен функционал переменной ExtraSaveSlots. |
включило использование slotdat.ini в \SAVEGAME и запоминание текущей используемой страницы (ну и дополнительный бонус с запоминанием текущего слота даже если ExtraSaveSlots не используется).
QUOTE (Fakeman) |
думаю нужно бы расширить значения AutoQuickSave до 11-20, что означало бы запись в первую страницу, в указанный слот. так можно сделать? |
Можно расширить значение до максимума (10000) когда включён ExtraSaveSlots если AutoQuickSave=11, то при быстрозаписи увеличивать номер страницы. Но нагрузка на файловую систему будет (куча каталогов и файлов).
QUOTE (Foxx) |
Нечто подобное было и с наркотиками при подъеме навыков, но здесь Crafty исправил DrugExploitFix'ом, а тут не хочет(( |
Абуз эффектов от наркоты включён в движке (такой себе постоянный уровень сложности "По-детски") и отключить его в настройках игры нельзя.
Ну добавлю переменную в ini для отключения уровня сложности в уже начатой игре и вместо меню настроек игры будут менять значение в ini. Сделаю без переменной в ini и начнут обвинять в ущемлении прав ;)
QUOTE (Nordan) |
есть ли возможность узнать адреса по которым живут значения номеров приоритетных скиллов (те 3, что выбираются при создании персонажа)? |
0x668070, 0x668074, 0x668078, 0x66807C (последний для перка Tag!|Приз!).
QUOTE (Nordan) |
А еще лучше добавить функцию в сфалл для возврата номеров этих скиллов. |
QUOTE (Fakeman) |
используй цикл while do для определения тагнутых скилов стандартная же функция есть. |
CODE |
for (int SKILL = SKILL_SMALL_GUNS; SKILL <= SKILL_OUTDOORSMAN; SKILL++) { if (is_skill_tagged(SKILL)) display_msg("Bingo! = "+SKILL); } |
Fakeman
14 September 2016 | 22:25
QUOTE (Crafty) |
Автозапись по времени? |
по входу(переходу) на карту, с тайм-аутом.
QUOTE |
Почему именно первую? |
потому, что удобно)
а то получается, что автосэйвит в текущую страницу.
хотя может это тоже удобно)
QUOTE |
Можно расширить значение до максимума (10000) -если AutoQuickSave=11 |
O_o нахрена оно надо ?)
QUOTE |
0x668070, 0x668074, 0x668078, 0x66807C (последний для перка Tag!|Приз!). |
Так и запишем.
QUOTE |
Сделал, кстати, давненько (AI_Called_Freq_Div в Misc), но в ini не добавлял |
Если там обычное деление, то толку наверное от этого мало будет.
Отправлено: 14 сен 16 22:51
И еще по поводу бартера, если у криттера снят флаг торговли и скриптово войти в бартер, то получим абру-кодабру с интерфейсом, можно это поправить?
а то приходиться делать такую каку.
CODE |
set_proto_data(self_pid, PROTO_CR_FLAGS, get_proto_data(self_pid, PROTO_CR_FLAGS) BWOR CFLG_BARTER); gdialog_mod_barter(0); set_proto_data(self_pid, PROTO_CR_FLAGS, get_proto_data(self_pid, PROTO_CR_FLAGS) BWAND not(CFLG_BARTER)); |
Crafty
15 September 2016 | 00:16
QUOTE (Fakeman) |
хотя может это тоже удобно) |
Угу, AutoQuickSave=9 зашёл на новую карту, сохранился в 10 слот новой страницы, а потом квиксейвишься в остальные слоты этой страницы.
QUOTE (Fakeman) |
O_o нахрена оно надо ?) |
Ну сам предлагаешь расширить диапазон :-p
QUOTE (Fakeman) |
И еще по поводу бартера, если у криттера снят флаг торговли и скриптово войти в бартер, то получим абру-кодабру с интерфейсом, можно это поправить? а то приходиться делать такую каку. |
А в чём абракадабра проявляется? По коду gdialog_mod_barter() если у персонажа флаг не установлен, то просто выводится сообщение "Этот человек не будет с вами торговать."/"Это существо не может ничего нести.".
Да и проверку можно делать:
CODE |
if critter_can_barter(self_obj) then begin gdialog_mod_barter(0); end |
Fakeman
15 September 2016 | 01:06
QUOTE |
По коду gdialog_mod_barter() если у персонажа флаг не установлен, то просто выводится сообщение "Этот человек не будет с вами торговать."/"Это существо не может ничего нести.". |
Да может это тогда баг в движке, то что он открывает панель бартера, и нечего не пишет.
а ты попробуй и увидишь какая там абра-кадабра с интерфейсом. :P
хотя я вот скрин сделал чтоб тебя не утруждать.
http://i83.fastpic.ru/big/2016/0915/79/96f...02538d6cd79.jpgQUOTE |
Да и проверку можно делать: |
да нет у меня заход в бартер через диалог.
QUOTE |
Ну сам предлагаешь расширить диапазон :-p |
я не эту дикость предлагал)
QUOTE |
Угу, AutoQuickSave=9 зашёл на новую карту, сохранился в 10 слот новой страницы, а потом квиксейвишься в остальные слоты этой страницы. |
так не совсем понял почему в 10 слот новой страницы?
Как у тебя вообще AutoQuickSave работает? ты меня запутал...
Foxx
15 September 2016 | 01:51
AutoQuickSave работает так:
Если поставить например AutoQuickSave=9, то всегда первые девять слотов будут под быстрое сохранение, а десятое под нормальное. И так на каждой странице.
Nordan
15 September 2016 | 07:37
Crafty, спасибо за смещения, пригодятся.
А про is_skill_tagged я и не знал, кстати. Все время был убежден, что нельзя скриптово это сделать. :)
Видимо, когда я читал документацию по стандартным функциям, я не совсем понял что означает фраза "помечено ли заданное умение как tagged".
Да и все равно через смещения это проще и быстрее сделать.
Fakeman
15 September 2016 | 14:54
Nordan, у меня золотое правило я никогда нe буду использовать функционал сфала, если задачу можно реализовать стандартными функциями.
Ты же сам недавно упрекал сфалл в глючности и отказывался от его функций, ты изменил свое мнение?)
Nordan
17 September 2016 | 11:51
QUOTE |
Ты же сам недавно упрекал сфалл в глючности и отказывался от его функций, ты изменил свое мнение?) |
Я не отказывался от его функций, я просто хотел сказать то, что их нужно использовать рационально. Слишком сложные задачи вешать на него не стоит, просто потому что, не смотря на весь функционал, Sfall это костыль, и именно из-за этого возникают связанные с ним баги.
Crafty
17 September 2016 | 17:40
QUOTE (Fakeman) |
Да может это тогда баг в движке, то что он открывает панель бартера, и нечего не пишет. |
При скриптовом вызове gdialog_mod_barter(x) обрабатывается не сразу (в отличии от нажатия на кнопку бартера/клавишу "b") устанавливается новый "режим" диалога, а уже в обработчике "режим" включается.
QUOTE (Fakeman) |
да нет у меня заход в бартер через диалог. |
Вот потому и нужна проверка. Полагаю что по задумке авторов gdialog_mod_barter(x) должен был использоваться только на персонажах с установленным флагом торговли.
Добавил проверку, раз скриптово не хочешь :-p
Fakeman
17 September 2016 | 18:35
QUOTE |
Вот потому и нужна проверка. Добавил проверку, раз скриптово не хочешь :-p |
мне проверка ка бы не нужна, просто устанавливаю флаг перед gdialog_mod_barter вход в бартер только через диалог, аля как в Ressurection.
Поводу Hero Appearance Mod, у меня от него пукан полыхает) ... кто вообще придумал такой идиотизм собирать "пазл" из разных кусочков интерфейса) нельзя было взять оригинальный FRM и в фотошопе сделать все по человечески, был бы отдельный арт интерфейса под это дело. реализация вообще дебильная!
Crafty
17 September 2016 | 19:50
QUOTE (Fakeman) |
вход в бартер только через диалог, аля как в Ressurection. |
Кстати, да отличный способ отключения кнопки бартера.
Поменял способ проверки возможности торговли нет и окна правильно обрабатываются.
QUOTE (Fakeman) |
реализация вообще дебильная! |
"Мопед не мой я просто разместил объяву" © :-p
Fakeman
18 September 2016 | 22:21
CODE |
Поменял способ проверки возможности торговли нет и окна правильно обрабатываются. |
Спасибо.
Есть вопрос по перку Дитя Цветов он на движковом уровне работает? или его механику вырезали.
И по трейту "Привлекательность" он точно скриптовой? а то что-то меня терзают смутные сомнения, можно там глянуть...
QUOTE |
Это параметры, которые нельзя менять через set_critter_stat в скрипте. Патч, чтоб стало можно менять основные статы 9F947 7E EB 9F94C 7F EB |
Вот это я давно находил на форуме Невады, о каких таких параметрах идет речь, которые нельзя менять? -вроде как все можно менять.
Crafty
18 September 2016 | 23:59
QUOTE (Fakeman) |
Есть вопрос по перку Дитя Цветов он на движковом уровне работает? или его механику вырезали. |
Работает, хотя сам перк в таблице перков отключён (требуется 310 уровень). Поэтому если кто-то будет его использовать в скриптах, то ГГ будет получать скрытый перк со всеми плюшками.
QUOTE (Fakeman) |
И по трейту "Привлекательность" он точно скриптовой? а то что-то меня терзают смутные сомнения, можно там глянуть... |
Это который TRAIT_sex_appeal (13)? Точно скриптовый.
QUOTE (Fakeman) |
QUOTE | Это параметры, которые нельзя менять через set_critter_stat в скрипте. Патч, чтоб стало можно менять основные статы 0x4AF547 7E EB |
Вот это я давно находил на форуме Невады, о каких таких параметрах идет речь, которые нельзя менять? -вроде как все можно менять. |
Нельзя менять STAT_max_hp-STAT_poison_resist (7-32), вот достаточно подправить байт в движке чтобы можно было их менять через set_critter_stat.
Fakeman
19 September 2016 | 00:38
Не понял, почему у тебя уже другое смещение?.
a STAT_better_crit (16) я так понял у dude тоже не используется?
Когда уже дополнишь Changelog.txt новыми нововведениями?
Foxx
19 September 2016 | 12:27
QUOTE (Fakeman) |
Поводу Hero Appearance Mod, у меня от него пукан полыхает) ... кто вообще придумал такой идиотизм собирать "пазл" из разных кусочков интерфейса) |
Fakeman
19 September 2016 | 19:03
Crafty, прикрути к sfall_ver_build чтобы возвращала еще опознавательные знаки, что используется не ориг. версия, что-то в стиле #_CRAFTY
Foxx
19 September 2016 | 19:07
Там и так вроде пишется SFALL2, а в оригинальном просто SFALL.
UPD:
Я про меню написал, ты наверно имел ввиду что то другое. Sorry.