|
QUOTE (Fakeman) |
|
ну вот тут как раз бы и надо увеличить, а то эти вообще злоядлые курильщики с восприятием 6-7 (15 гексов) резня у них за спиной происходит, а они отдыхают)
|
Там не только завязка на "видимости", ещё куча условий отбора цели... К примеру, то, что сейчас меняет SmarterAI можно заметить если есть сопартийцы их просто выносить будут очень быстро если они бегают далеко от ГГ.
|
QUOTE (Fakeman) |
|
объясни мне принцип работы сфалла, вот есть MakeCall(addr, func, true);
|
Так это не сфалл это ассемблер.
|
QUOTE (Fakeman) |
с помощью нее я смогу сделать ассембл. вставку в код? addr это адрес в движке с которого будет вызваться моя вставки(func)?
|
Да, да.
|
QUOTE (Fakeman) |
|
а команда которая непосредственна находится в addr будет выполнена или нет?
|
Нет, а поэтому её нужно будет выполнить в твоей вставке. И размер вызова твоей вставки равен 5 байтам.
|
QUOTE (Fakeman) |
и на какой потом адрес происходит возврат из вставки, на след за addr или продолжает с addr? и для чего нужен третий аргумент функции MakeCall
|
Если true, то это вызов функции (call) и возврат из функции будет через retn на addr+5, а если false то это переход по адресу (jmp) и возврат нужно будет указать в твоей вставке.
Если речь о умножении на 3, то с последней версией это не сработает я переписал оригинальную функцию с дополнениями.
Используй хуковый скрипт, не? Вот аналог оригинальной движковой is_within_perception_ в F2, hs_withinperception.ssl:
|
CODE |
procedure start;
procedure start begin if not init_hook then begin variable source := get_sfall_arg, target := get_sfall_arg, original := get_sfall_arg; variable distance, perception, result; result := 0; if target != 0 then begin perception := get_critter_stat(source, 1); // STAT_pe if combat_is_initialized then distance := perception * 2; else distance := perception; if call_offset_r2(0x412BEC, source, target) then begin // can_see_(source, target) distance := perception * 5; if (read_int(target+0x26) bwand 2) != 0 then distance := distance / 2; // target.flags3 & TransGlass_? end if target == dude_obj then begin if call_offset_r0(0x42E3F4) then begin // is_pc_sneak_working_ distance := distance / 4; if has_skill(target, 8) > 120 then distance := distance - 1; // SKILL_SNEAK end else if call_offset_r1(0x42E2F8, 0) then distance := distance * 2 / 3; // is_pc_flag_(Sneak_) end if call_offset_r2(0x48BBD4, target, source) <= distance then result := 1; // obj_dist_(target, source) end // if original != result then display_msg(obj_name(source)+"->"+obj_name(target)+": "+original+"!="+result); // для отладки return result; end end
|
|
QUOTE (Foxx) |
|
есть ли в движке какие-нибудь различия у режимов холодного оружия: Свинг, Укол? Или это сделано, так для антуража.
|
Хз, искать лень. Может и нет и единственное отличие в анимации. Думаю в вики/etc это уже описано.
Это сообщение отредактировано Crafty - 3 октября 2016 | 21:03