Полная Версия: (sfall) дополнения
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
Fakeman
Держи карту с цветочком https://yadi.sk/d/zwrbLkl43KnmAH
Подойди в упор, и пусть цветок начнет метать в тебя шипы, увидишь частое попадание цветка самого в себя.
По наблюдениям если отойти на 1 гекс, то уже такого глюка не будет.

QUOTE
CanSeeAndHearFix

Что-то изменилось по сравнению с более ранним фикcом?
Crafty
QUOTE (Fakeman)
По наблюдениям если отойти на 1 гекс, то уже такого глюка не будет.
Такой дизайн — мультихексы в принципе не должны мочь использовать метание или оружие с летающими снарядами. Не исправить это без серьёзных усилий.

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

QUOTE (Fakeman)
Что-то изменилось по сравнению с более ранним фикcом?
Сейчас круто ;)
Fakeman
QUOTE
Такой дизайн — мультихексы в принципе не должны мочь использовать метание или оружие с летающими снарядами. Не исправить это без серьёзных усилий.

Мочь?) Тут правильно использовать функцию "не могут" XD
Ну они же его использую, тут же баг какой-то когда в плотную ГГ стоит.
На расстоянии ведь нет таких попаданий "самого в себя", а значит не все так и сложно как мне кажется)

QUOTE
Лучше сделай ситуацию "мультихекс нападает на мультихекса".

я пробовал не особо то и понятно, заходят ли они на друг друга.
Если и заходят, то я думаю нет смысла в этом исправлении, по мне лучше пусть заходят ибо начнется непроходимая давка в каких-нибудь узких проходах карт.

QUOTE
Сейчас круто ;)

А шкала крутости имеется?))
Crafty
QUOTE (Fakeman)
Мочь?) Тут правильно использовать функцию "не могут" XD
Ну они же его использую
Бегло глянул мультихексов (радскорпион, коготь смерти, брамин, ремонтный бот, кротокрыс, кентавр, фрэнк и турель охраны) и не могу вспомнить чтобы они использовали. Твоя ситуация с цветком искусственная и, как я полагаю, непредусмотрена дизайном.
Технически шип/граната удаляется из инвентаря и теряет свою принадлежность source, а поэтому source становится потенциальной целью.
У меня ну слишком мало попаданий цветка в самого себя, а те что есть может действительно являются DAM_HIT_SELF (hit yourself|попадание в себя) или DAM_RANDOM_HIT (hit randomly|попадание наугад).

QUOTE (Fakeman)
я пробовал не особо то и понятно, заходят ли они на друг друга.
И не должны. Наоборот, сейчас с фиксом, в теории, мультихекс подходя к другому мультихексу может оставить 2 чистых гекса вместо одного. Хотя скорее всего всё нормально ;)

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

QUOTE (Fakeman)
А шкала крутости имеется?))
Раньше уг было :-p
Fakeman
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
До фикса мультихекс мог блокировать, меня так король Крыыс под стенкой зажимал и не убежать.

Такс, ты что-то там под шаманил и теперь можно бегать по крайним гексам мультинеха? что-то я не понял...

QUOTE
Раньше уг было :-p

А можно взглянуть на различие между уг и крутостью?)
Crafty
QUOTE (Fakeman)
Такс, ты что-то там под шаманил и теперь можно бегать по крайним гексам мультинеха? что-то я не понял...
QUOTE (Fakeman)
А можно взглянуть на различие между уг и крутостью?)
Дак, пост, где описан алгоритм CanSeeAndHearFix глянь и сравни с старым исходником (могу и новый вариант исходника подкинуть если так будет удобнее сравнивать). Сразу заметишь что старый уг, а новый круто ;-p
chieftain
Несколько вопросов по конфигурированию 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
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
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
QUOTE
Нельзя технически как минимум из-за перка Mutate!

Вот — вот тоже об этом хотел написать, потом плюнул подумав что будут фразы — "я вырежу этот перк, вы только сделайте так” :)
chieftain
@Fakeman, @Crafty
Огромный спасиб за подробные разъяснения!
Про перк Mutate! я сходу не подумал. Да, тогда ситуация с перераспределением блокированных баллов предстаёт в другом свете и их действительно нельзя трогать.
Fakeman
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
QUOTE (Fakeman)
растолковать можешь, какое еще добавочное время), и что-то там с опытом не все понятно кому добавит ГГ?
Если ГГ лечит Вика первой помощью (неважно удачно или нет), то в игре проходит 30 минут. При UsePartySkills=1 уже Сулик может оказывать помощь Вику, но мгновенно. При 2 лечение сопартийцами требует времени, но при удачном ещё и добавит опыт ГГ. Вообще алгоритм никак не поменялся, просто отключаются проверки что это ГГ.
И наверное ещё 3 нужно добавить для отключения проверки расстояния.

QUOTE (Fakeman)
помница говорил тебе об этом)
Да-да, ty — животинки (Body_Type_Quadruped) исключаются.
Fakeman
QUOTE
При UsePartySkills=1 уже Сулик может оказывать помощь Вику, но мгновенно. При 2 лечение сопартийцами требует времени

сулик лечит мгновенно, т.е. время не увеличивается на 30 мин?
если да то выпиливай первый вариант нафиг такая фигня нужна)
сделай так 2+3=1
Crafty
QUOTE (Fakeman)
сулик лечит мгновенно, т.е. время не увеличивается на 30 мин?
если да то выпиливай первый вариант нафиг такая фигня нужна)
Ну зачем такие крайности, время не добавляется, но и опыта нет.

QUOTE (Fakeman)
сделай так 2+3=1
Та даже 3 не добавить, я вспомнил что были причины для этого — научное взаимодействие с объектами (компьютер).
Fakeman
QUOTE
Ну зачем такие крайности, время не добавляется, но и опыта нет.

По механике движка время должно увеличиваться вне зависимости успешно ли полечил или нет.
а то получается не рыба не мясо.
Crafty
QUOTE (Fakeman)
По механике движка время должно увеличиваться вне зависимости успешно ли полечил или нет.
Но только для ГГ, там как раз есть чёткие проверки:
CODE
cmp  eax, [ds:_obj_dude]
jne  .skip
mov  eax, 1800
call inc_game_time_in_seconds_
.skip:
Fakeman
QUOTE
Но только для ГГ

т.е. в оригинале если нпс будет лечить вместо ГГ время не увеличивается?
Crafty
QUOTE (Fakeman)
т.е. в оригинале если нпс будет лечить вместо ГГ время не увеличивается?
Ага — отключи UsePartySkills=0, Сулику сделай первую помощь главным скиллом и пусть бегает лечит Вика. А ты с помощью "?" время смотри.
И у Ленни же вроде лечение главный стат, можно на нём проверить.
Fakeman
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
QUOTE ("Fakeman")
я правда не пробовал добавлять 120 перк через перкс.ини, может оно и нельзя.
Я уже пытался на Неваде, не добавляется 120 перк через ini
Crafty
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
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
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
Так я собираюсь прямо из скрипта писать в двиг. И В скрипте будет будет узнаваться имеет ли гг перк, а потом прибавлять доп бонус сверху.
Если запишу моv вместо call то что-то поломается в твоем исправлении? — да и фиг сним))

Ты исходники собираешься выкладывать? Вот случится с тобой "беда" как с HRP, потомже не исправишь в твоем сфале ничего.
Crafty
QUOTE (Fakeman)
Так я собираюсь прямо из скрипта писать в двиг.
Убедись сначала что там действительно код движка :-p

QUOTE (Fakeman)
Если запишу моv вместо call то что-то поломается в твоем исправлении? — да и фиг сним))
Пфф, если бы поломалось (к примеру отключишь перк), то ты вернул бы эксплоит с твоим доп бонусом сверху.

QUOTE (Fakeman)
Ты исходники собираешься выкладывать?
Там бардак, приводить в порядок лень (да и не нужно никому).

QUOTE (Fakeman)
Вот случится с тобой "беда" как с HRP
Что за беда там случилась? Полностью рабочий HRP, но без исходников?

QUOTE (Fakeman)
потомже не исправишь в твоем сфале ничего.
Такой план, о мифических толпах мододелов (а в данном случае программистов) я наслышан :-p
Fakeman
QUOTE
Убедись сначала что там действительно код движка :-p

А что бывает такое что код сдвигается?)

QUOTE
Что за беда там случилась? Полностью рабочий HRP, но без исходников?

Ну да в том-то и беда что нет исходников.

QUOTE
Такой план, о мифических толпах мододелов (а в данном случае программистов) я наслышан :-p

Ты их не видишь? а они есть))))

QUOTE
если бы поломалось (к примеру отключишь перк), то ты вернул бы эксплоит с твоим доп бонусом сверху.

ничего не понял, так что-то будет не так работать? можешь показать код твоего исправления?
и как можно сделать чтобы работал фикс бага и моя правка, без изменения кода сфала?
Crafty
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
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
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
QUOTE
Дак пару часов как портировал.

Дак я слил с гитхаба ветки, и нету там ничего, и коммита на эту тему тоже не видно.

Я проверил исправление и нормально все работает с моим фиксом в движке, очки движения как и положено не восстанавливаются когда загружаешься.
Crafty
QUOTE (Fakeman)
Дак я слил с гитхаба ветки, и нету там ничего, и коммита на эту тему тоже не видно.
Носитесь с этим гитхабом как с писаной торбой ;-p
Тут Личный Ящик есть — Новарейн попросил показать последнее исправление, я отправил на асме, предупредив что ему придётся конвертировать в с-формат. Он конвертнул и прислал мне, а тут ты в чатике просишь показать исходник исправления. Я и показал портированную версию (решил тебе так тебе удобнее будет, чем на асме).
Ethereal
Фикс бага "Бонус Передвижения", дело полезное, конечно, но будьте любезны не вшивать его жестко, а вынести в "ини" файл. Некоторым этот баг, знаете ли, нравится. Кроме того, он иногда полезен при тестах карт.

По поводу лечения. Пора бы уже прикрутить зависимость количества останавливаемого здоровья к уровню навыка. А то, что на 60% 1-3ХП, что на 250 1-3ХП — стыд и срам, а не медицина. Смысла качать эти навыки, при таком раскладе, нет никакого. А если на каждые 10% навыка +1ХП — это уже другое дело! Причём обоим навыкам.
Fakeman
CODE
// Исправление видимости предмета только в активной руке игрока для op_critter_inven_obj_

Если это у тебя еще осталось, то можешь это вырезать, за ненадобностью.

QUOTE
Кроме того, он иногда полезен при тестах карт.

ты что так мимо вражин с загрузкой каждый раз проходишь?
-может пора уже научиться использовать скрипты для отладки, а не багоюзеть)
если прям так надо могу скрипт отладочный дать, будешь по клику по карте телепортироваться, и ненужных врагов килять, чтобы не мешали тестировать.
Ethereal
QUOTE
ты что так мимо вражин с загрузкой каждый раз проходишь?
-может пора уже научиться использовать скрипты для отладки, а не багоюзеть)
Я вообще считаю, что править нужно только те баги, что мешают игре. Остальные, использовать или нет — каждый сам для себя решает. Это не онлайн игра, где багоюз приводит к преимуществу над другими игроками.

Вот почему бы вам не заняться исправление бага Летунов, которые даже при физическом иммунитете снимают иногда ХП персонажу НЕ критическими ударами? Или, к примеру, багом очереди, когда при определённом ракурсе в цель попадает только одна пуля из 50? Или недоразвитые медицинские навыки до ума довести?
Crafty
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
QUOTE
"Нормальное" использование (взять два уровня перка, в бою пройти 4 гекса и сохранится, потом загрузить игру и снова пройти 4 гекса, повторять пока не надоест) уже вызывает беспокойство...


Я использовал это, если при операциях в городах (вынос семей в Рино, уничтожение банды Мецгера) напарники агрились на нейтралов и гражданских, что бы выйти с карты и прекратить бой. Что бы растолкать напарников, что бы не задевали очередями друг друга. Теперь, с возможностью лично ими руководить, мне уже пофиг, что вы с этим багом сделаете, поскольку само наличие Бонуса Передвижения уже не критично. Одна просьба — увеличьте количество бонусных очков движения до трёх за уровень, чтобы не отправить перк в анналы истории.

QUOTE
Уровень скилла влияет только на шанс удачного лечения, количество восстанавливаемого здоровья для первой помощи random((1+уровень_перка_целитель*4), (5+уровень_перка_целитель*10)), а для доктора random((4+уровень_перка_целитель*4), (10+уровень_перка_целитель*10)).
Сам перк Целитель ещё и даёт +40 к скиллу первой помощи.


Но по факту только перк Целитель увеличивает восстанавливаемое ХП. Всё же хотелось бы, что бы и навык это увеличивал.

QUOTE
Однако Летуны не используют патроны, а их тип наносимых повреждений — плазма


Вот это новость! Интересно, а показатель их рукопашного урона увеличивает их урон плазмой, или получается атака плазмой и физикой одновременно?

QUOTE
Crafty
QUOTE (Ethereal)
Интересно, а показатель их рукопашного урона увеличивает их урон плазмой, или получается атака плазмой и физикой одновременно?
Физики нет вообще. Просто выглядит это всё так странно из-за рукопашки.

В примере example_mods\DamageFormula был баг, сбрасывающий, при остутствии оружия, тип наносимых повреждений в физику :(

QUOTE (Ethereal)
Но по факту только перк Целитель увеличивает восстанавливаемое ХП. Всё же хотелось бы, что бы и навык это увеличивал.
Так тогда нужно и Целитель корректировать, а следом и хп ГГ: 100% в скилле дадут +10 к очкам лечения, что убивает ценность Целителя. Увеличить бонус Целителю, но у ГГ просто не будет такого большого количества хп чтобы это имело смысл.
Если и давать бонус к лечению, то куда меньше, к примеру, +1 за 50% скилла.
А ещё можно уменьшить количество неудачных попыток при лечении, чтобы был профит от высокого уровня навыка.
Fakeman
Вроде как идеальная формула, для врачевания)
CODE
((5 + (Целитель * 10)) + (Skill / (30 - (Целитель * 10))))

за каждые 30% дается +1хп, и целитель на это влияет давая по -10% за уровень.

И делается это все скриптом, просто кто-то не хочет познать науку скриптования, по не известным нам причинам).

QUOTE
Нпс уже не люди? ;) Страдают же ;-p

+1)))

QUOTE
Я использовал это, если при операциях в городах (вынос семей в Рино, уничтожение банды Мецгера) напарники агрились на нейтралов и гражданских, что бы выйти с карты и прекратить бой.

Видимо твоему напарнику не понравилось как тот нейтрал на него посмотрел, или может тот показал ему фак, ну мало ли чего там) ... а ты не давал напарникам замочить гребенного ненормала, не хороший ты человек, превращаешь своих напарников в роботов))
Ethereal
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
QUOTE
Так что 1 ХП за 10% нормально. Ну можно за 15%. Плюс 5-6 ХП за каждый уровень Целителя.

Так и получается 1хп за 10% но с Целителем 2го ур, получится что с 200% скила гг будет восстанавливать до 50 хп, что логично.
Без перка целителя максимум 12 хп , этот если брать значения из первой помощи.
Ethereal
QUOTE
Так и получается 1хп за 10% но с Целителем 2го ур, получится что с 200% скила гг будет восстанавливать до 50 хп, что логично.
Без перка целителя максимум 12 хп , этот если брать значения из первой помощи


200% умения Первой помощи — 20 ХП, + 10 от Целителя(2). И того 30.
210% умения Доктор — 7 ХП, + 10 от Целителя(2). И того 17, плюс лечение травм.

Учитывая, что умений такого уровня можно прокачать только на уровнях 30+ (если не страдать фигнёй забив кое-что на боевые навыки), когда ХП за 200, то лечение в 30 ХП — нормально более чем.

Аптечки и докторские чемоданы +3, МК2 +8 ХП.
А разброс ХП при лечении надо давно убрать на фиг.
Fakeman
CODE
Аптечки и докторские чемоданы +3, МК2 +8 ХП.

Это барахло дает только бонус к скилу.

QUOTE ("Crafty")
Уровень скилла влияет только на шанс удачного лечения

Как высчитывается этот шанс?
Crafty
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
QUOTE
В общем чего там тянуть — запилил переменную HealMultiplier в секции [Misc] (хотел в skills.ini), которая задаёт процент (0-100, но 0 понятно игнорируется, а потому 1-100) восстанавливаемого хп от максимального хп.


И что из этого выйдет? Навык, что на 60%, что на 250% будет одинаковое количество ХП восстанавливать? Только не надо напирать на шансы исцеления! Save\load убивает весь этот дурацкий рандом на корню.

Я-то хотел, что бы с прокачкой умения лечение улучшалось, а не стало уберным и без всяких умений.

QUOTE
Но убивает баланс на низких уровнях ГГ и ценность Целителя.


Наоборот. Если реализовать то, что я описал, то ценность целителя на мелких уровнях, как раз, станет больше, чем на поздних стадиях игры, ввиду того, что прокачать навык выше 120% крайне напряжно.
Crafty
Ещё подправил, и 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
Crafty, Ethereal прав ты какую-то фигню сотворил)
Идите на NC устройте там голосовалку, с обсуждением там и выяснится какой вариант более подходит, а не будет так, что одному надо +1 за 10%, другому побольше, третьему пофиг)
Crafty
QUOTE (Ethereal)
И что из этого выйдет?
Сохранится баланс для всех уровней, а навыки первой помощи и доктора останутся полезными и с ростом уровней.

QUOTE (Ethereal)
Только не надо напирать на шансы исцеления! Save\load убивает весь этот дурацкий рандом на корню.
А редактор так вообще убивает идиотизм с save/load :-p

QUOTE (Ethereal)
Я-то хотел, что бы с прокачкой умения лечение улучшалось, а не стало уберным и без всяких умений.
Ты хочешь сбалансировать навык для игры на 30+ уровне за счёт уберности на низких уровнях. Не могу припомнить сейчас на каком в среднем уровне завершается нормальное прохождение.

QUOTE (Ethereal)
Наоборот. Если реализовать то, что я описал, то ценность целителя на мелких уровнях, как раз, станет больше, чем на поздних стадиях игры, ввиду того, что прокачать навык выше 120% крайне напряжно.
Целитель остаётся ценным в течении всего нормального прохождения. В общем я не возьмусь за это, смотри в сторону hs_useskill, там делов на вечер даже без опыта ;-p
Fakeman
QUOTE
В общем я не возьмусь за это, смотри в сторону hs_useskill, там делов на вечер даже без опыта ;-p

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

и еще по шансу он один для двух скилов или там раздельно.
и вопрос по времени откату сколько требуется? а то не охото замерять.
Crafty
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 часа.
Ваш ответ: