Огромный спасиб за подробные разъяснения!
Про перк Mutate! я сходу не подумал. Да, тогда ситуация с перераспределением блокированных баллов предстаёт в другом свете и их действительно нельзя трогать.
Отправлено 08 июля 2017 - 21:55
Отправлено 13 июля 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, чтобы добавить время, когда участник группы использовал умение первой помощи, доктору или ремонт у тварей и добавил опыт при успешном использовании навыка. |
Отправлено 13 июля 2017 - 20:23
| QUOTE (Fakeman) |
| растолковать можешь, какое еще добавочное время), и что-то там с опытом не все понятно кому добавит ГГ? |
| QUOTE (Fakeman) |
| помница говорил тебе об этом) |
Отправлено 14 июля 2017 - 02:16
| QUOTE |
| При UsePartySkills=1 уже Сулик может оказывать помощь Вику, но мгновенно. При 2 лечение сопартийцами требует времени |
Отправлено 14 июля 2017 - 23:20
| QUOTE (Fakeman) |
|
сулик лечит мгновенно, т.е. время не увеличивается на 30 мин? если да то выпиливай первый вариант нафиг такая фигня нужна) |
| QUOTE (Fakeman) |
| сделай так 2+3=1 |
Отправлено 15 июля 2017 - 01:10
| QUOTE |
| Ну зачем такие крайности, время не добавляется, но и опыта нет. |
Отправлено 15 июля 2017 - 02:14
| QUOTE (Fakeman) |
| По механике движка время должно увеличиваться вне зависимости успешно ли полечил или нет. |
| CODE |
|
cmp eax, [ds:_obj_dude] jne .skip mov eax, 1800 call inc_game_time_in_seconds_ .skip: |
Отправлено 15 июля 2017 - 19:07
| QUOTE |
| Но только для ГГ |
Отправлено 15 июля 2017 - 21:02
| QUOTE (Fakeman) |
| т.е. в оригинале если нпс будет лечить вместо ГГ время не увеличивается? |
Отправлено 24 июля 2017 - 18:08
| 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|Тек. очки действия |
| 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 |
Отправлено 24 июля 2017 - 23:36
| QUOTE ("Fakeman") |
| я правда не пробовал добавлять 120 перк через перкс.ини, может оно и нельзя. |
Отправлено 25 июля 2017 - 01:20
| QUOTE (Fakeman) |
| Что-то мне кажется нельзя |
| QUOTE (Fakeman) |
|
| QUOTE (Fakeman) |
|
Это типа функция возвращает 0 если номер проверяемого перка больше 118? если да, то сфалл это как-то фиксит? |
Отправлено 25 июля 2017 - 03:58
| QUOTE |
| А так сделать функцию вроде set_critter_current_ap с +/- значением, которое модифицирует результат возвращаемый perk_level_ (по адресу 0x4229FF). |
| CODE |
|
write_int(0x4229FB, 0x01); < set level write_int(0x4229FF, 0x90909090); write_byte(0x422A03, 0x90); |
Отправлено 25 июля 2017 - 12:16
| QUOTE (Fakeman) |
| call perk_level_ < а это за NOPить |
| QUOTE (Fakeman) |
| set_pc_bonus_ap функция готова), потом попробую может не все так гладко как кажется. |
Отправлено 25 июля 2017 - 13:59
Отправлено 25 июля 2017 - 15:10
| QUOTE (Fakeman) |
| Так я собираюсь прямо из скрипта писать в двиг. |
| QUOTE (Fakeman) |
| Если запишу моv вместо call то что-то поломается в твоем исправлении? да и фиг сним)) |
| QUOTE (Fakeman) |
| Ты исходники собираешься выкладывать? |
| QUOTE (Fakeman) |
| Вот случится с тобой "беда" как с HRP |
| QUOTE (Fakeman) |
| потомже не исправишь в твоем сфале ничего. |
Отправлено 25 июля 2017 - 16:16
| QUOTE |
| Убедись сначала что там действительно код движка :-p |
| QUOTE |
| Что за беда там случилась? Полностью рабочий HRP, но без исходников? |
| QUOTE |
| Такой план, о мифических толпах мододелов (а в данном случае программистов) я наслышан :-p |
| QUOTE |
| если бы поломалось (к примеру отключишь перк), то ты вернул бы эксплоит с твоим доп бонусом сверху. |
Отправлено 25 июля 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 |
| QUOTE (Fakeman) |
| Ну да в том-то и беда что нет исходников. |
| 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); |
| QUOTE (Fakeman) |
| и как можно сделать чтобы работал фикс бага и моя правка, без изменения кода сфала? |
Отправлено 25 июля 2017 - 19:56
| QUOTE |
| Допустим кто-то тоже решил скриптово подправить результат перка |
| QUOTE |
| Потом подключился ты (ну так получилось что твой скрипт загрузился позже) |
| QUOTE |
| Вот Новарейн портировал: |
| QUOTE |
| Если убьёшь перк (ГГ не сможет его получить) и будешь просто подсовывать нужное тебе значение это провал. |
| CODE |
|
write_byte(0x4229FF, 0xB8); levelBonusMove := has_trait(TRAIT_PERK, dude_obj, PERK_bonus_move); write_int(0x422A00, 1 + levelBonusMove); |
Отправлено 25 июля 2017 - 21:11
| QUOTE (Fakeman) |
| Не это исключено, чтобы кто-то, что-то там делал) |
| QUOTE (Fakeman) |
| Кстати о порядке выполнения скриптов, заметил что сфаловские скрипты выполняются в порядке сортировки по имени скрипта, это очень хорошо, можно контролировать очередность. |
| QUOTE (Fakeman) |
| А в какой очередности выполняются родные скрипты фола, по названию или по порядковому номеру из script.lsl (у какого скрипта на одной карте будет приоритет выше)? |
| QUOTE (Fakeman) |
| О так это че старый фикс, и оно что не работало? |
| QUOTE |
| Если убьёшь перк (ГГ не сможет его получить) и будешь просто подсовывать нужное тебе значение это провал. |
| QUOTE (Fakeman) |
|
Crafty, как можно ли как-нибудь добавить игроку бонусные очки для передвижения (желтые поинты которые от перка даются) ? (по другому, можно ли скрыть перк у гг, чтобы он не отображался в списке) |
| Название темы | Форум | Автор | Статистика | Последнее сообщение | |
|---|---|---|---|---|---|
WL2: Детали: платформы и дополнения |
Новости | hamster |
|
|
|
Дополнения для Skyrim будут большими |
Новости | hamster |
|
|
|
Какой перевод в дополнениях для Fallout 3? |
Дело техники | glotokraya |
|
|
|
Модок \ собачка Леди - дополнения для ЧаВо |
Ты — Избранный | The Master |
|
|
|
Неполадка с дополнениями |
Дело техники | Hero of Wasteland |
|
|
0 пользователей, 1 гостей, 0 анонимных