Fakeman
6 July 2017 | 01:26
Держи карту с цветочком
https://yadi.sk/d/zwrbLkl43KnmAHПодойди в упор, и пусть цветок начнет метать в тебя шипы, увидишь частое попадание цветка самого в себя.
По наблюдениям если отойти на 1 гекс, то уже такого глюка не будет.
Что-то изменилось по сравнению с более ранним фикcом?
Crafty
6 July 2017 | 16:51
QUOTE (Fakeman) |
По наблюдениям если отойти на 1 гекс, то уже такого глюка не будет. |
Такой дизайн мультихексы в принципе не должны мочь использовать метание или оружие с летающими снарядами. Не исправить это без серьёзных усилий.
Лучше сделай ситуацию "мультихекс нападает на мультихекса". Подозреваю что с фиксом (в последней версии "пока" включён, только не отмечено в ченджлоге) они даже будут бить друг друга, но выглядеть по-дурному будет два чистых гекса между ними.
QUOTE (Fakeman) |
Что-то изменилось по сравнению с более ранним фикcом? |
Сейчас круто ;)
Fakeman
6 July 2017 | 20:03
QUOTE |
Такой дизайн мультихексы в принципе не должны мочь использовать метание или оружие с летающими снарядами. Не исправить это без серьёзных усилий. |
Мочь?) Тут правильно использовать функцию "не могут" XD
Ну они же его использую, тут же баг какой-то когда в плотную ГГ стоит.
На расстоянии ведь нет таких попаданий "самого в себя", а значит не все так и сложно как мне кажется)
QUOTE |
Лучше сделай ситуацию "мультихекс нападает на мультихекса". |
я пробовал не особо то и понятно, заходят ли они на друг друга.
Если и заходят, то я думаю нет смысла в этом исправлении, по мне лучше пусть заходят ибо начнется непроходимая давка в каких-нибудь узких проходах карт.
А шкала крутости имеется?))
Crafty
7 July 2017 | 00:54
QUOTE (Fakeman) |
Мочь?) Тут правильно использовать функцию "не могут" XD Ну они же его использую |
Бегло глянул мультихексов (радскорпион, коготь смерти, брамин, ремонтный бот, кротокрыс, кентавр, фрэнк и турель охраны) и не могу вспомнить чтобы они использовали. Твоя ситуация с цветком искусственная и, как я полагаю, непредусмотрена дизайном.
Технически шип/граната удаляется из инвентаря и теряет свою принадлежность source, а поэтому source становится потенциальной целью.
У меня ну слишком мало попаданий цветка в самого себя, а те что есть может действительно являются DAM_HIT_SELF (hit yourself|попадание в себя) или DAM_RANDOM_HIT (hit randomly|попадание наугад).
QUOTE (Fakeman) |
я пробовал не особо то и понятно, заходят ли они на друг друга. |
И не должны. Наоборот, сейчас с фиксом, в теории, мультихекс подходя к другому мультихексу может оставить 2 чистых гекса вместо одного. Хотя скорее всего всё нормально ;)
QUOTE (Fakeman) |
Если и заходят, то я думаю нет смысла в этом исправлении, по мне лучше пусть заходят ибо начнется непроходимая давка в каких-нибудь узких проходах карт. |
До фикса мультихекс мог блокировать, меня так король Крыыс под стенкой зажимал и не убежать.
QUOTE (Fakeman) |
А шкала крутости имеется?)) |
Раньше уг было :-p
Fakeman
7 July 2017 | 01:31
QUOTE |
Твоя ситуация с цветком искусственная и, как я полагаю, непредусмотрена дизайном. |
Правильно в оригинальном F2 нет таких мобов.
QUOTE |
Технически шип/граната удаляется из инвентаря и теряет свою принадлежность source, а поэтому source становится потенциальной целью. |
Это и невооруженным глазом видно что source становится целью, только вот если отойти на 1 гекс, то почему то source уже не становиться "потенциальной целью", т.е. нету уже такого неадекватно частого попадания в себя.
CODE |
У меня ну слишком мало попаданий цветка в самого себя, а те что есть может действительно являются DAM_HIT_SELF (hit yourself|попадание в себя) или DAM_RANDOM_HIT (hit randomly|попадание наугад). |
Странно, у меня да бывает нету попаданий, а потом каждый ход, или через ход, ну не похоже что это DAM_HIT_SELF/DAM_RANDOM_HIT, я бы не жаловался) и это явно зависит от характеристик ГГ.
QUOTE |
в теории, мультихекс подходя к другому мультихексу может оставить 2 чистых гекса |
Это в теории) на практике я бы это заметил, так что нет такого, что 2 пустых остаются.
QUOTE |
До фикса мультихекс мог блокировать, меня так король Крыыс под стенкой зажимал и не убежать. |
Такс, ты что-то там под шаманил и теперь можно бегать по крайним гексам мультинеха? что-то я не понял...
А можно взглянуть на различие между уг и крутостью?)
Crafty
7 July 2017 | 02:13
QUOTE (Fakeman) |
Такс, ты что-то там под шаманил и теперь можно бегать по крайним гексам мультинеха? что-то я не понял... |
QUOTE (Fakeman) |
А можно взглянуть на различие между уг и крутостью?) |
Дак, пост, где описан алгоритм CanSeeAndHearFix глянь и сравни с старым исходником (могу и новый вариант исходника подкинуть если так будет удобнее сравнивать). Сразу заметишь что старый уг, а новый круто ;-p
chieftain
8 July 2017 | 04:18
Несколько вопросов по конфигурированию traits, если можно. :)
1. Можно ли сделать [опцию?], чтобы при выбраном Gifted ("Одарённый") можно было распределить все добавленные баллы Характеристик без ограничений (убрать ограничение, что их нельзя сделать меньше 2)?
2. Аналогично, если я в Perks.ini переопределяю Trait, например так:
[t8]
NoHardcode=1
Name=Challenged
Desc=You had difficult childhood, but you learned to compensate.
Image=72
StatMod=0|-1|1|-1|2|-1|3|-1|4|-1|5|-1|6|-1
я автоматически блокирую возможность при создании персонажа поднять Характеристику выше 9, а хотелось бы, чтобы все изменённые в разделе Traits баллы характеристик игрок мог бы двигать без ограничений, от 1 до 10.
3. Можно ли как-то без сложностей переопределить или доопределить для описания Trait'а в Perks.ini переменную PerkRate? Так, в примере выше, хотелось бы поставить PerkRate=2, чтобы в компенсацию за потерю 7 баллов Характеристик игрок получал Особенности каждые два уровня, а не каждые три, как обычно.
4. Сейчас в Perks.ini в разделе Traits можно напрямую рулить только Характеристиками (Stats) и Навыками (Skills). А можно ли по аналогии добавить [дополнительными переменными?] управление производными характеристиками (AC, DR, AP, Carry Weight, Melee Damage, Sequence, Critical Chance, количество получаемых за уровень очков Навыков)? Ведь оригинальные встроенные Traits умеют это делать...
Fakeman
8 July 2017 | 16:15
QUOTE |
Так, в примере выше, хотелось бы поставить PerkRate=2, чтобы в компенсацию за потерю 7 баллов Характеристик игрок получал Особенности каждые два уровня, а не каждые три, как обычно |
Учите скриптинг, там это одной функцией делается.
set_perk_freq({int value});
QUOTE |
4. Сейчас в Perks.ini в разделе Traits можно напрямую рулить только Характеристиками (Stats) и Навыками (Skills). А можно ли... |
давно можно. просто пишешь номер.
CODE |
// SPECIAL System stats #define STAT_st (0) #define STAT_pe (1) #define STAT_en (2) #define STAT_ch (3) #define STAT_iq (4) #define STAT_ag (5) #define STAT_lu (6) #define STAT_max_hp (7) /// strength, perception, endurance, charisma, intelligence, agility, /// luck, // luck MUST be the last basic stat
// derived stats #define STAT_max_move_points (8) #define STAT_ac (9) //#define STAT_unarmed_dmg (10) #define STAT_unused (10) #define STAT_melee_dmg (11) #define STAT_carry_amt (12) #define STAT_sequence (13) #define STAT_heal_rate (14) #define STAT_crit_chance (15) #define STAT_better_crit (16)
#define STAT_dmg_thresh (17) #define STAT_dmg_thresh_laser (18) #define STAT_dmg_thresh_fire (19) #define STAT_dmg_thresh_plasma (20) #define STAT_dmg_thresh_electrical (21) #define STAT_dmg_thresh_emp (22) #define STAT_dmg_thresh_explosion (23)
#define STAT_dmg_resist (24) #define STAT_dmg_resist_laser (25) #define STAT_dmg_resist_fire (26) #define STAT_dmg_resist_plasma (27) #define STAT_dmg_resist_electrical (28) #define STAT_dmg_resist_emp (29) #define STAT_dmg_resist_explosion (30) #define STAT_rad_resist (31) #define STAT_poison_resist (32) // poison_resist MUST be the last derived stat
// nonderived stats #define STAT_age (33) #define STAT_gender (34) // gender MUST be the last nonderived stat
#define STAT_current_hp (35) #define STAT_current_poison (36) #define STAT_current_rad (37) #define STAT_real_max_stat (38) |
QUOTE |
количество получаемых за уровень очков Навыков |
QUOTE |
1. Можно ли сделать [опцию?], чтобы при выбраном Gifted ("Одарённый") (убрать ограничение, что их нельзя сделать меньше 2)? 2. Аналогично, если я в Perks.ini переопределяю Trait, например так: я автоматически блокирую возможность при создании персонажа поднять Характеристику выше 9, а хотелось бы, чтобы все изменённые в разделе Traits баллы характеристик игрок мог бы двигать без ограничений, от 1 до 10. |
даже не знаю как это назвать, но это будет чистым доп.бустом к нужным игроку характеристикам.
Crafty
8 July 2017 | 21:12
QUOTE (chieftain) |
1. Можно ли сделать [опцию?], чтобы при выбраном Gifted ("Одарённый") можно было распределить все добавленные баллы Характеристик без ограничений (убрать ограничение, что их нельзя сделать меньше 2)? ..... я автоматически блокирую возможность при создании персонажа поднять Характеристику выше 9, а хотелось бы, чтобы все изменённые в разделе Traits баллы характеристик игрок мог бы двигать без ограничений, от 1 до 10. |
Нельзя технически как минимум из-за перка Mutate!|Мутация! взял gifted и выставил 1, а в игре Мутацию. Станет 0, и откуда 1 брать?
QUOTE (chieftain) |
чтобы в компенсацию за потерю 7 баллов Характеристик игрок получал Особенности каждые два уровня, а не каждые три, как обычно. |
QUOTE (gl_TraitPerkFreq.ssl) |
procedure start begin if game_loaded and dude_obj and has_trait(2, dude_obj, 8) then set_perk_freq(2); end |
QUOTE (Fakeman) |
QUOTE (chieftain) | Сейчас в Perks.ini в разделе Traits можно напрямую рулить только Характеристиками (Stats) и Навыками (Skills). А можно ли... |
давно можно. просто пишешь номер. |
Но только до "last derived stat", 33-37 использовать нельзя.
Fakeman
8 July 2017 | 21:31
QUOTE |
Нельзя технически как минимум из-за перка Mutate! |
Вот вот тоже об этом хотел написать, потом плюнул подумав что будут фразы "я вырежу этот перк, вы только сделайте так” :)
chieftain
8 July 2017 | 21:55
@Fakeman, @Crafty
Огромный спасиб за подробные разъяснения!
Про перк Mutate! я сходу не подумал. Да, тогда ситуация с перераспределением блокированных баллов предстаёт в другом свете и их действительно нельзя трогать.
Fakeman
13 July 2017 | 04:18
CODE |
;Set to 2 to add time when party member used the skill first aid, doctor or repair on critters and add experience at successful using skill.
; Установите значение 2, чтобы добавить время, когда участник группы использовал умение первой помощи, доктору или ремонт у тварей и добавил опыт при успешном использовании навыка. |
растолковать можешь, какое еще добавочное время), и что-то там с опытом не все понятно кому добавит ГГ?
И как там на счет всяких собак в парии они тоже применяют умения не свойственные им? помница говорил тебе об этом)
Crafty
13 July 2017 | 20:23
QUOTE (Fakeman) |
растолковать можешь, какое еще добавочное время), и что-то там с опытом не все понятно кому добавит ГГ? |
Если ГГ лечит Вика первой помощью (неважно удачно или нет), то в игре проходит 30 минут. При UsePartySkills=1 уже Сулик может оказывать помощь Вику, но мгновенно. При 2 лечение сопартийцами требует времени, но при удачном ещё и добавит опыт ГГ. Вообще алгоритм никак не поменялся, просто отключаются проверки что это ГГ.
И наверное ещё 3 нужно добавить для отключения проверки расстояния.
QUOTE (Fakeman) |
помница говорил тебе об этом) |
Да-да, ty животинки (Body_Type_Quadruped) исключаются.
Fakeman
14 July 2017 | 02:16
QUOTE |
При UsePartySkills=1 уже Сулик может оказывать помощь Вику, но мгновенно. При 2 лечение сопартийцами требует времени |
сулик лечит мгновенно, т.е. время не увеличивается на 30 мин?
если да то выпиливай первый вариант нафиг такая фигня нужна)
сделай так 2+3=1
Crafty
14 July 2017 | 23:20
QUOTE (Fakeman) |
сулик лечит мгновенно, т.е. время не увеличивается на 30 мин? если да то выпиливай первый вариант нафиг такая фигня нужна) |
Ну зачем такие крайности, время не добавляется, но и опыта нет.
QUOTE (Fakeman) |
сделай так 2+3=1 |
Та даже 3 не добавить, я вспомнил что были причины для этого научное взаимодействие с объектами (компьютер).
Fakeman
15 July 2017 | 01:10
QUOTE |
Ну зачем такие крайности, время не добавляется, но и опыта нет. |
По механике движка время должно увеличиваться вне зависимости успешно ли полечил или нет.
а то получается не рыба не мясо.
Crafty
15 July 2017 | 02:14
QUOTE (Fakeman) |
По механике движка время должно увеличиваться вне зависимости успешно ли полечил или нет. |
Но только для ГГ, там как раз есть чёткие проверки:
CODE |
cmp eax, [ds:_obj_dude] jne .skip mov eax, 1800 call inc_game_time_in_seconds_ .skip: |
Fakeman
15 July 2017 | 19:07
т.е. в оригинале если нпс будет лечить вместо ГГ время не увеличивается?
Crafty
15 July 2017 | 21:02
QUOTE (Fakeman) |
т.е. в оригинале если нпс будет лечить вместо ГГ время не увеличивается? |
Ага отключи UsePartySkills=0, Сулику сделай первую помощь главным скиллом и пусть бегает лечит Вика. А ты с помощью "?" время смотри.
И у Ленни же вроде лечение главный стат, можно на нём проверить.
Fakeman
24 July 2017 | 18:08
Crafty, как можно ли как-нибудь добавить игроку бонусные очки для передвижения (желтые поинты которые от перка даются) ?
(по другому, можно ли скрыть перк у гг, чтобы он не отображался в списке)
...
Что-то мне кажется нельзя, ибо смотрю на это дело, и думаю куда же тут можно впихнуть дополнительную прибавку к очкам действия)
CODE |
004229F0 mov edx, PERK_bonus_move ; Бонус движения 004229F5 call intface_update_ac_ 004229FA mov eax, ds:_obj_dude ; who 004229FF call perk_level_ ; Bonus Move|Бонус движения 00422A04 add eax, eax 00422A06 mov ds:_combat_free_move, eax 00422A0B mov edx, eax 00422A0D mov eax, [ebx+pobj.curr_mp] ; Current Action Points|Тек. очки действия
|
Кстати на вики баги с этим описаны.
- В бою при сохранении и загрузке эти ОД восстанавливаются, что даёт возможность неограниченно перемещаться по карте, не тратя «обычные» ОД;
- В Fallout 1, ход заканчивается после того, как кончились «основные» ОД, независимо от наличия дополнительных.
Пофиксить их не хочешь?
Отправлено: 24 июл 17 18:40 Воу я тут кое чего обнаружил, строка
cmp edx, 119Это типа функция возвращает 0 если номер проверяемого перка больше 118?
если да, то сфалл это как-то фиксит? или надо самим туда число по больше вписать.
я правда не пробовал добавлять 120 перк через перкс.ини, может оно и нельзя.
CODE |
; int __usercall perk_level_<eax>(int who<eax>, int perk<edx>) 00496B78 perk_level_ proc near ; pick_death_+6Cp ... 00496B78 test edx, edx 00496B7A jl short loc_496B81 00496B7C cmp edx, 119 00496B7F jl short loc_496B84 00496B81 00496B81 loc_496B81: ; perk_level_+2j 00496B81 xor eax, eax 00496B83 retn |
Foxx
24 July 2017 | 23:36
QUOTE ("Fakeman") |
я правда не пробовал добавлять 120 перк через перкс.ини, может оно и нельзя. |
Я уже пытался на Неваде, не добавляется 120 перк через ini
Crafty
25 July 2017 | 01:20
QUOTE (Fakeman) |
Что-то мне кажется нельзя |
Нормально нельзя ;-p
А так сделать функцию вроде set_critter_current_ap с +/- значением, которое модифицирует результат возвращаемый perk_level_ (по адресу 0x4229FF).
QUOTE (Fakeman) |
- В бою при сохранении и загрузке эти ОД восстанавливаются, что даёт возможность неограниченно перемещаться по карте, не тратя «обычные» ОД;
- В Fallout 1, ход заканчивается после того, как кончились «основные» ОД, независимо от наличия дополнительных.
Пофиксить их не хочешь? |
Та да, пофиксил ;)
QUOTE (Fakeman) |
Это типа функция возвращает 0 если номер проверяемого перка больше 118? если да, то сфалл это как-то фиксит? |
Да, возвращает 0, но не фиксит ибо нечего фиксить. Перков всего 119 (0-118), с чего бы там (и много ещё где) другому значению быть. В perks.ini номер 119 для примера, а по факту он игнорируется.
Скриптовые фейковые перки используют свою таблицу.
Fakeman
25 July 2017 | 03:58
QUOTE |
А так сделать функцию вроде set_critter_current_ap с +/- значением, которое модифицирует результат возвращаемый perk_level_ (по адресу 0x4229FF). |
То есть я прямо из скрипта туда могу записывать значение
вместо
mov eax, ds:_obj_dude
на
mov eax, level из скрипта
call perk_level_ < а это за NOPить
и оно типа будет думать что есть уже перк? какой я умный))
CODE |
write_int(0x4229FB, 0x01); < set level write_int(0x4229FF, 0x90909090); write_byte(0x422A03, 0x90);
|
set_pc_bonus_ap функция готова), потом попробую может не все так гладко как кажется.
Crafty
25 July 2017 | 12:16
QUOTE (Fakeman) |
call perk_level_ < а это за NOPить |
Можно прямо сюда mov eax, level write_byte(0x4229FF, 0xB8) и write_int(0x422A00, level). И стоит сначала прочитать и проверить предыдущее содержимое :-p
QUOTE (Fakeman) |
set_pc_bonus_ap функция готова), потом попробую может не все так гладко как кажется. |
Ага, не советую так изменять зашитый в движок алгоритм работы перка ;) Как минимум ты херишь последнее исправление игнорирования реального значения дополнительных ОД при загрузке в бою (там проверка что перк взят).
Хочешь спрятать перк от появления в списке доступных перков меняй через perks.ini или скриптово значение Level в сторону запредельного значения (100+), потом скриптово через critter_add_trait добровольно-принудительно давай в нужный момент перк и всё так же через нормально сделанную set_pc_bonus_ap меняй эффект.
К примеру, set_pc_bonus_ap(int value, bool force), где второе значение при FALSE будет добавлять [-]value к значению, которое вернёт perk_level_, а при TRUE будет его игнорировать и использовать только value.
Fakeman
25 July 2017 | 13:59
Так я собираюсь прямо из скрипта писать в двиг. И В скрипте будет будет узнаваться имеет ли гг перк, а потом прибавлять доп бонус сверху.
Если запишу моv вместо call то что-то поломается в твоем исправлении? да и фиг сним))
Ты исходники собираешься выкладывать? Вот случится с тобой "беда" как с HRP, потомже не исправишь в твоем сфале ничего.
Crafty
25 July 2017 | 15:10
QUOTE (Fakeman) |
Так я собираюсь прямо из скрипта писать в двиг. |
Убедись сначала что там действительно код движка :-p
QUOTE (Fakeman) |
Если запишу моv вместо call то что-то поломается в твоем исправлении? да и фиг сним)) |
Пфф, если бы поломалось (к примеру отключишь перк), то ты вернул бы эксплоит с твоим доп бонусом сверху.
QUOTE (Fakeman) |
Ты исходники собираешься выкладывать? |
Там бардак, приводить в порядок лень (да и не нужно никому).
QUOTE (Fakeman) |
Вот случится с тобой "беда" как с HRP |
Что за беда там случилась? Полностью рабочий HRP, но без исходников?
QUOTE (Fakeman) |
потомже не исправишь в твоем сфале ничего. |
Такой план, о мифических толпах мододелов (а в данном случае программистов) я наслышан :-p
Fakeman
25 July 2017 | 16:16
QUOTE |
Убедись сначала что там действительно код движка :-p |
А что бывает такое что код сдвигается?)
QUOTE |
Что за беда там случилась? Полностью рабочий HRP, но без исходников? |
Ну да в том-то и беда что нет исходников.
QUOTE |
Такой план, о мифических толпах мододелов (а в данном случае программистов) я наслышан :-p |
Ты их не видишь? а они есть))))
QUOTE |
если бы поломалось (к примеру отключишь перк), то ты вернул бы эксплоит с твоим доп бонусом сверху. |
ничего не понял, так что-то будет не так работать? можешь показать код твоего исправления?
и как можно сделать чтобы работал фикс бага и моя правка, без изменения кода сфала?
Crafty
25 July 2017 | 18:52
QUOTE (Fakeman) |
А что бывает такое что код сдвигается?) |
CODE |
Вот так выглядит оригинал (7 байт): 004229FF E8 74 41 07 00 call perk_level_ 00422A04 01 C0 add eax, eax
Допустим кто-то тоже решил скриптово подправить результат перка и всегда возвращать 5 (убив команду add). При этом он сильно не заморачивался и поменял порядок: 004229FF 90 nop 00422A00 90 nop 00422A01 B8 05 00 00 00 mov eax, 5
Потом подключился ты (ну так получилось что твой скрипт загрузился позже): 004229FF B8 02 00 00 00 mov eax, 2 00422A04 00 00 add [eax], al |
Это конечно извратный пример и всё может оказаться проще место куда ты будешь писать уже может использоваться, к примеру, HRP.
QUOTE (Fakeman) |
Ну да в том-то и беда что нет исходников. |
HRP рабочий, но исходников нет. Ай беда ;)
QUOTE (Fakeman) |
ничего не понял, так что-то будет не так работать? можешь показать код твоего исправления? |
Вот Новарейн портировал:
CODE |
static DWORD combat_free_move = 0x509;
static void __declspec(naked) combat_load_hook() { __asm { call db_freadInt_; test eax, eax; // Successful? jnz end; // No push PERK_bonus_move; pop edx; mov eax, dword ptr ds:[_obj_dude]; call perk_level_; test eax, eax; // Have the perk? jz end; // No mov eax, ds:[_combat_free_move]; // eax = real value mov combat_free_move, eax // Temporarily save xor eax, eax end: retn } }
static void __declspec(naked) combat_turn_hack() { __asm { mov edx, combat_free_move cmp edx, 0x509; // Is there a real value? je end; // No mov combat_free_move, 0x509; xchg edx, eax; end: mov ds:[_combat_free_move], eax; retn; } }
HookCall(0x420E93, &combat_load_hook); MakeCall(0x422A06, &combat_turn_hack, false); |
0x509 "случайное" магическое значение (сначало было -1).
QUOTE (Fakeman) |
и как можно сделать чтобы работал фикс бага и моя правка, без изменения кода сфала? |
Если убьёшь перк (ГГ не сможет его получить) и будешь просто подсовывать нужное тебе значение это провал.
PS. Говорят последняя версия крашится с "The instruction at 00467504 referenced memory at 00000730" при загрузке или старте новой игры в RP 2.3.3.
Fakeman
25 July 2017 | 19:56
QUOTE |
Допустим кто-то тоже решил скриптово подправить результат перка |
Не это исключено, чтобы кто-то, что-то там делал)
QUOTE |
Потом подключился ты (ну так получилось что твой скрипт загрузился позже) |
Кстати о порядке выполнения скриптов, заметил что сфаловские скрипты выполняются в порядке сортировки по имени скрипта, это очень хорошо, можно контролировать очередность. С хуками не совсем понятно, в каком скрипте будет выполнятся первым обработчик, но написано что в обратном порядке при их регистрации.
А в какой очередности выполняются родные скрипты фола, по названию или по порядковому номеру из script.lsl (у какого скрипта на одной карте будет приоритет выше)?
QUOTE |
Вот Новарейн портировал: |
О так это че старый фикс, и оно что не работало?
ты что-то меня запутал...я такого кода нигде не нашел в оригинале.
Отправлено: 25 июл 17 20:27
QUOTE |
Если убьёшь перк (ГГ не сможет его получить) и будешь просто подсовывать нужное тебе значение это провал. |
CODE |
write_byte(0x4229FF, 0xB8); levelBonusMove := has_trait(TRAIT_PERK, dude_obj, PERK_bonus_move); write_int(0x422A00, 1 + levelBonusMove); |
Не может быть никакого провала)
Crafty
25 July 2017 | 21:11
QUOTE (Fakeman) |
Не это исключено, чтобы кто-то, что-то там делал) |
Скриптово может и да, но HRP/sfall используешь? Знаешь какие места в памяти изменяются в зависимости от тех или иных значений переменных в инишниках? Лучше проверяй.
QUOTE (Fakeman) |
Кстати о порядке выполнения скриптов, заметил что сфаловские скрипты выполняются в порядке сортировки по имени скрипта, это очень хорошо, можно контролировать очередность. |
Не особо: я пользователь-пакостник, меняю gl_a/gl_b местами, и всё легенда изменилась :-p
QUOTE (Fakeman) |
А в какой очередности выполняются родные скрипты фола, по названию или по порядковому номеру из script.lsl (у какого скрипта на одной карте будет приоритет выше)? |
Ну для, к примеру, map_update_p_proc есть приоритет по типу скрипта s_system -> s_spatial -> s_time -> s_item -> s_critter. Дальше не изучал ;-p
QUOTE (Fakeman) |
О так это че старый фикс, и оно что не работало? |
Дак пару часов как портировал.
QUOTE |
Если убьёшь перк (ГГ не сможет его получить) и будешь просто подсовывать нужное тебе значение это провал. |
QUOTE (Fakeman) |
Crafty, как можно ли как-нибудь добавить игроку бонусные очки для передвижения (желтые поинты которые от перка даются) ? (по другому, можно ли скрыть перк у гг, чтобы он не отображался в списке) |
Fakeman
25 July 2017 | 21:45
QUOTE |
Дак пару часов как портировал. |
Дак я слил с гитхаба ветки, и нету там ничего, и коммита на эту тему тоже не видно.
Я проверил исправление и нормально все работает с моим фиксом в движке, очки движения как и положено не восстанавливаются когда загружаешься.
Crafty
25 July 2017 | 22:01
QUOTE (Fakeman) |
Дак я слил с гитхаба ветки, и нету там ничего, и коммита на эту тему тоже не видно. |
Носитесь с этим гитхабом как с писаной торбой ;-p
Тут Личный Ящик есть Новарейн попросил показать последнее исправление, я отправил на асме, предупредив что ему придётся конвертировать в с-формат. Он конвертнул и прислал мне, а тут ты в чатике просишь показать исходник исправления. Я и показал портированную версию (решил тебе так тебе удобнее будет, чем на асме).
Ethereal
26 July 2017 | 02:22
Фикс бага "Бонус Передвижения", дело полезное, конечно, но будьте любезны не вшивать его жестко, а вынести в "ини" файл. Некоторым этот баг, знаете ли, нравится. Кроме того, он иногда полезен при тестах карт.
По поводу лечения. Пора бы уже прикрутить зависимость количества останавливаемого здоровья к уровню навыка. А то, что на 60% 1-3ХП, что на 250 1-3ХП стыд и срам, а не медицина. Смысла качать эти навыки, при таком раскладе, нет никакого. А если на каждые 10% навыка +1ХП это уже другое дело! Причём обоим навыкам.
Fakeman
26 July 2017 | 03:56
CODE |
// Исправление видимости предмета только в активной руке игрока для op_critter_inven_obj_ |
Если это у тебя еще осталось, то можешь это вырезать, за ненадобностью.
QUOTE |
Кроме того, он иногда полезен при тестах карт. |
ты что так мимо вражин с загрузкой каждый раз проходишь?
-может пора уже научиться использовать скрипты для отладки, а не багоюзеть)
если прям так надо могу скрипт отладочный дать, будешь по клику по карте телепортироваться, и ненужных врагов килять, чтобы не мешали тестировать.
Ethereal
26 July 2017 | 07:14
QUOTE |
ты что так мимо вражин с загрузкой каждый раз проходишь? -может пора уже научиться использовать скрипты для отладки, а не багоюзеть) |
Я вообще считаю, что править нужно только те баги, что мешают игре. Остальные, использовать или нет каждый сам для себя решает. Это не онлайн игра, где багоюз приводит к преимуществу над другими игроками.
Вот почему бы вам не заняться исправление бага Летунов, которые даже при физическом иммунитете снимают иногда ХП персонажу НЕ критическими ударами? Или, к примеру, багом очереди, когда при определённом ракурсе в цель попадает только одна пуля из 50? Или недоразвитые медицинские навыки до ума довести?
Crafty
26 July 2017 | 09:59
QUOTE (Ethereal) |
Некоторым этот баг, знаете ли, нравится. Кроме того, он иногда полезен при тестах карт. |
"Нормальное" использование (взять два уровня перка, в бою пройти 4 гекса и сохранится, потом загрузить игру и снова пройти 4 гекса, повторять пока не надоест) уже вызывает беспокойство...
QUOTE (Ethereal) |
А то, что на 60% 1-3ХП, что на 250 1-3ХП стыд и срам, а не медицина. Смысла качать эти навыки, при таком раскладе, нет никакого. |
Уровень скилла влияет только на шанс удачного лечения, количество восстанавливаемого здоровья для первой помощи random((1+уровень_перка_целитель*4), (5+уровень_перка_целитель*10)), а для доктора random((4+уровень_перка_целитель*4), (10+уровень_перка_целитель*10)).
Сам перк Целитель ещё и даёт +40 к скиллу первой помощи.
QUOTE (Ethereal) |
Это не онлайн игра, где багоюз приводит к преимуществу над другими игроками. |
Нпс уже не люди? ;) Страдают же ;-p
QUOTE (Ethereal) |
Вот почему бы вам не заняться исправление бага Летунов, которые даже при физическом иммунитете снимают иногда ХП персонажу НЕ критическими ударами? |
Физический "иммунитет" не может превысить 90% (броня+психо*любое_количество), но с определёнными типами патронов (у которых dr_adjust >= 10, к примеру JHP) действительно может в финале расчёта (смотри example_mods\DamageFormula) достигнуть 100%+.
Однако Летуны не используют патроны, а их тип наносимых повреждений плазма. Психо не повышает сопротивляемость плазме.
QUOTE (Ethereal) |
Или, к примеру, багом очереди, когда при определённом ракурсе в цель попадает только одна пуля из 50? |
Руки дрожат :)
А как определяешь количество попавших пуль?
Ethereal
26 July 2017 | 10:33
QUOTE |
"Нормальное" использование (взять два уровня перка, в бою пройти 4 гекса и сохранится, потом загрузить игру и снова пройти 4 гекса, повторять пока не надоест) уже вызывает беспокойство... |
Я использовал это, если при операциях в городах (вынос семей в Рино, уничтожение банды Мецгера) напарники агрились на нейтралов и гражданских, что бы выйти с карты и прекратить бой. Что бы растолкать напарников, что бы не задевали очередями друг друга. Теперь, с возможностью лично ими руководить, мне уже пофиг, что вы с этим багом сделаете, поскольку само наличие Бонуса Передвижения уже не критично. Одна просьба увеличьте количество бонусных очков движения до трёх за уровень, чтобы не отправить перк в анналы истории.
QUOTE |
Уровень скилла влияет только на шанс удачного лечения, количество восстанавливаемого здоровья для первой помощи random((1+уровень_перка_целитель*4), (5+уровень_перка_целитель*10)), а для доктора random((4+уровень_перка_целитель*4), (10+уровень_перка_целитель*10)). Сам перк Целитель ещё и даёт +40 к скиллу первой помощи. |
Но по факту только перк Целитель увеличивает восстанавливаемое ХП. Всё же хотелось бы, что бы и навык это увеличивал.
QUOTE |
Однако Летуны не используют патроны, а их тип наносимых повреждений плазма |
Вот это новость! Интересно, а показатель их рукопашного урона увеличивает их урон плазмой, или получается атака плазмой и физикой одновременно?
Crafty
26 July 2017 | 11:35
QUOTE (Ethereal) |
Интересно, а показатель их рукопашного урона увеличивает их урон плазмой, или получается атака плазмой и физикой одновременно? |
Физики нет вообще. Просто выглядит это всё так странно из-за рукопашки.
В примере example_mods\DamageFormula был баг, сбрасывающий, при остутствии оружия, тип наносимых повреждений в физику :(
QUOTE (Ethereal) |
Но по факту только перк Целитель увеличивает восстанавливаемое ХП. Всё же хотелось бы, что бы и навык это увеличивал. |
Так тогда нужно и Целитель корректировать, а следом и хп ГГ: 100% в скилле дадут +10 к очкам лечения, что убивает ценность Целителя. Увеличить бонус Целителю, но у ГГ просто не будет такого большого количества хп чтобы это имело смысл.
Если и давать бонус к лечению, то куда меньше, к примеру, +1 за 50% скилла.
А ещё можно уменьшить количество неудачных попыток при лечении, чтобы был профит от высокого уровня навыка.
Fakeman
26 July 2017 | 16:43
Вроде как идеальная формула, для врачевания)
CODE |
((5 + (Целитель * 10)) + (Skill / (30 - (Целитель * 10)))) |
за каждые 30% дается +1хп, и целитель на это влияет давая по -10% за уровень.
И делается это все скриптом, просто кто-то не хочет познать науку скриптования, по не известным нам причинам).
QUOTE |
Нпс уже не люди? ;) Страдают же ;-p |
+1)))
QUOTE |
Я использовал это, если при операциях в городах (вынос семей в Рино, уничтожение банды Мецгера) напарники агрились на нейтралов и гражданских, что бы выйти с карты и прекратить бой. |
Видимо твоему напарнику не понравилось как тот нейтрал на него посмотрел, или может тот показал ему фак, ну мало ли чего там) ... а ты не давал напарникам замочить гребенного ненормала, не хороший ты человек, превращаешь своих напарников в роботов))
Ethereal
26 July 2017 | 20:54
QUOTE |
Так тогда нужно и Целитель корректировать, а следом и хп ГГ: 100% в скилле дадут +10 к очкам лечения, что убивает ценность Целителя. Увеличить бонус Целителю, но у ГГ просто не будет такого большого количества хп чтобы это имело смысл. Если и давать бонус к лечению, то куда меньше, к примеру, +1 за 50% скилла. А ещё можно уменьшить количество неудачных попыток при лечении, чтобы был профит от высокого уровня навыка. |
С неудачными попытками лечения сталкиваюсь редко. Видимо потому, что не пытаюсь лечить кого-либо с навыком меньше 100%. ХП у ГГ... на 30-40+ уровнях, когда ХП у ГГ 200 -300, а противники, с тяжелого и энергетического оружия, бьют в среднем по 25-80, появляется возможность поднять навык до 200%. Раньше и не получится. И когда тебе снесли половину ХП и восстанавливать нужно 100-150, лечение навыком по 5-10 выглядит как-то смешно, особенно учитывая то, что у нас всего от трёх до шести попыток. До 30+ уровня, навык до 200%, может поднять только специалист по нему. Так что 1 ХП за 10% нормально. Ну можно за 15%. Плюс 5-6 ХП за каждый уровень Целителя.
Можно ещё смешнее сделать Первая помощь 1 ХП за 10%, Доктор 1 ХП за 30%.
Fakeman
26 July 2017 | 21:50
QUOTE |
Так что 1 ХП за 10% нормально. Ну можно за 15%. Плюс 5-6 ХП за каждый уровень Целителя. |
Так и получается 1хп за 10% но с Целителем 2го ур, получится что с 200% скила гг будет восстанавливать до 50 хп, что логично.
Без перка целителя максимум 12 хп , этот если брать значения из первой помощи.
Ethereal
27 July 2017 | 00:39
QUOTE |
Так и получается 1хп за 10% но с Целителем 2го ур, получится что с 200% скила гг будет восстанавливать до 50 хп, что логично. Без перка целителя максимум 12 хп , этот если брать значения из первой помощи |
200% умения Первой помощи 20 ХП, + 10 от Целителя(2). И того 30.
210% умения Доктор 7 ХП, + 10 от Целителя(2). И того 17, плюс лечение травм.
Учитывая, что умений такого уровня можно прокачать только на уровнях 30+ (если не страдать фигнёй забив кое-что на боевые навыки), когда ХП за 200, то лечение в 30 ХП нормально более чем.
Аптечки и докторские чемоданы +3, МК2 +8 ХП.
А разброс ХП при лечении надо давно убрать на фиг.
Fakeman
27 July 2017 | 02:25
CODE |
Аптечки и докторские чемоданы +3, МК2 +8 ХП. |
Это барахло дает только бонус к скилу.
QUOTE ("Crafty") |
Уровень скилла влияет только на шанс удачного лечения |
Как высчитывается этот шанс?
Crafty
27 July 2017 | 08:51
QUOTE (Ethereal) |
на 30-40+ уровнях, когда ХП у ГГ 200 -300 |
Тю, так нормальное прохождение просто не рассчитано на такое.
QUOTE (Ethereal) |
Так что 1 ХП за 10% нормально. |
Но убивает баланс на низких уровнях ГГ и ценность Целителя.
Логичнее сделать процент (3%) восстанавливаемого хп в зависимости от максимального хп.
Первая помощь random((1+floor(target_max_hp/100*3)+уровень_перка_целитель*4), (5+floor(target_max_hp/100*3)+уровень_перка_целитель*10)).
Доктор random((4+floor(target_max_hp/100*3)+уровень_перка_целитель*4), (10+floor(target_max_hp/100*3)+уровень_перка_целитель*10)).
QUOTE (Fakeman) |
Как высчитывается этот шанс? |
is_success(roll_vs_skill(source, skill, get_critter_stat(source, STAT_crit_chance) + bonus_от_чемоданчика_сумки_etc));
Отправлено: 27 июл 17 11:49
В общем чего там тянуть запилил переменную HealMultiplier в секции [Misc] (хотел в skills.ini), которая задаёт процент (0-100, но 0 понятно игнорируется, а потому 1-100) восстанавливаемого хп от максимального хп. Ну и в формуле из-за особенности конвертации сопроцессором float в int вместо floor используется round (если дробная часть числа больше, либо равна 0,5, будет округление до ближайшего большего целого. Если дробная часть числа меньше 0,5, будет округление до ближайшего меньшего целого).
Придумайте складное описание и, возможно, название переменной, а тот так и останется недокументированной ;-p
Ethereal
27 July 2017 | 15:35
QUOTE |
В общем чего там тянуть запилил переменную HealMultiplier в секции [Misc] (хотел в skills.ini), которая задаёт процент (0-100, но 0 понятно игнорируется, а потому 1-100) восстанавливаемого хп от максимального хп. |
И что из этого выйдет? Навык, что на 60%, что на 250% будет одинаковое количество ХП восстанавливать? Только не надо напирать на шансы исцеления! Save\load убивает весь этот дурацкий рандом на корню.
Я-то хотел, что бы с прокачкой умения лечение улучшалось, а не стало уберным и без всяких умений.
QUOTE |
Но убивает баланс на низких уровнях ГГ и ценность Целителя. |
Наоборот. Если реализовать то, что я описал, то ценность целителя на мелких уровнях, как раз, станет больше, чем на поздних стадиях игры, ввиду того, что прокачать навык выше 120% крайне напряжно.
Crafty
27 July 2017 | 15:36
Ещё подправил, и round(target_max_hp/100*percent) теперь выглядит так:
CODE |
amount := round(target_max_hp/100*percent); if amount > 1 then amount := amount - 1; else amount := 0; |
Fakeman
27 July 2017 | 16:39
Crafty, Ethereal прав ты какую-то фигню сотворил)
Идите на NC устройте там голосовалку, с обсуждением там и выяснится какой вариант более подходит, а не будет так, что одному надо +1 за 10%, другому побольше, третьему пофиг)
Crafty
27 July 2017 | 16:42
QUOTE (Ethereal) |
И что из этого выйдет? |
Сохранится баланс для всех уровней, а навыки первой помощи и доктора останутся полезными и с ростом уровней.
QUOTE (Ethereal) |
Только не надо напирать на шансы исцеления! Save\load убивает весь этот дурацкий рандом на корню. |
А редактор так вообще убивает идиотизм с save/load :-p
QUOTE (Ethereal) |
Я-то хотел, что бы с прокачкой умения лечение улучшалось, а не стало уберным и без всяких умений. |
Ты хочешь сбалансировать навык для игры на 30+ уровне за счёт уберности на низких уровнях. Не могу припомнить сейчас на каком в среднем уровне завершается нормальное прохождение.
QUOTE (Ethereal) |
Наоборот. Если реализовать то, что я описал, то ценность целителя на мелких уровнях, как раз, станет больше, чем на поздних стадиях игры, ввиду того, что прокачать навык выше 120% крайне напряжно. |
Целитель остаётся ценным в течении всего нормального прохождения. В общем я не возьмусь за это, смотри в сторону hs_useskill, там делов на вечер даже без опыта ;-p
Fakeman
27 July 2017 | 17:07
QUOTE |
В общем я не возьмусь за это, смотри в сторону hs_useskill, там делов на вечер даже без опыта ;-p |
Нет там намного сложнее, нужно писать полностью всю обработку для скила, затраченное время, вывод сообщений, и все такое связанное.
думаешь зачем я у тебя просил шанс.
Хотя можно на все забить и по нубски сверху хп добавлять))
и еще по шансу он один для двух скилов или там раздельно.
и вопрос по времени откату сколько требуется? а то не охото замерять.
Crafty
27 July 2017 | 17:12
QUOTE (Fakeman) |
Ethereal прав ты какю-то фигню сотворил) |
Мог бы и посчитать ;-p
У меня есть два разных сейва 12 уровень с 72 хп и 25 уровень с 132 хп, и пускай ещё будет Чица первого уровня с 27 хп.
Для любого уровня ГГ с формулой по умолчанию удачное лечение первой помощью лечит от 1 до 5 без Целителя, а с двумя его уровнями от 9 до 25.
С HealMultiplier=3 для Чицы первого уровня всё так и останется 1-5. Для 12 уровня будет 2-6 и 10-26, а для 25 будет 4-8 и 12-28.
Подставь вместо 3 нужное тебе значение, к примеру 10 и получишь для 12 уровня 7-11 и 15-31, а для 25 уровня 13-17 и 21-37.
Отправлено: 27 июл 17 17:26
QUOTE (Fakeman) |
Нет там намного сложнее, нужно писать полностью всю обработку для скила, затраченное время, вывод сообщений, и все такое связанное. |
Там главная проблема что нет доступа к таблице попыток.
QUOTE (Fakeman) |
и вопрос по времени откату сколько требуется? |
Для сброса попыток? 24 часа.