Перейти к контенту
Malandrinus

X-Ray extensions

Рекомендуемые сообщения

@RayTwitty, добавил в начало, как ты и сказал, ну думаю сейчас опять вылет злостный будет... А ведь нет же! Взорвался БТР, как миленький. Спасибо огромное.

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

Ссылка на комментарий

Посмотрел - там в обоих аргументах будет nil всегда.

 

По идее, если добавить в car_fix.asm в 15 строку вот это:

call CGameObject__lua_game_object
mov esi, eax
а два пуша заменить на:

push esi
push esi
то в обоих аргументах будет объект машинки (тот же самый self.object, только костыль в скрипте не понадобится).
Ссылка на комментарий

 

 

а два пуша заменить на:

В строку 15 вроде вставил... Но тут много "пушей", какие именно?

Вот: 3467066.jpg

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

Ссылка на комментарий
@Ghost-2142, перед вызовом script_death_callback идут два пуша с ecx-регистром. Замени их на esi. Изменено пользователем RayTwitty
  • Спасибо 1
Ссылка на комментарий
; вызываем скриптовый колбек на смерть
    call CGameObject__lua_game_object
    mov esi, eax
    push    8h ; type = death
    mov     ecx, edi ; ecx = this
    call    CGameObject__callback ; eax = hit_callback
    xor     ecx, ecx
    push    esi
    push    esi
    push    eax ; callback

так?

Изменено пользователем _Val_
Ссылка на комментарий

@_Val_, да. По крайней мере у меня так...

 

@RayTwitty, сделал, как ты сказал, убрал костыль, побежал к БТР, выстрелил с РПГ, взорвал его. Круто. Спасибо ещё раз.

  • Согласен 1

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

Ссылка на комментарий

 

 

дождешься от них...

Видишь, самим придётся делать)... Ещё то чудо получится...

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

Ссылка на комментарий

Интересный глюк, в моей правки добавлены так же не сколько методов из ТЧ. В точности:

"set_obj_bone_visible"

"get_obj_bone_visible"

"set_hud_obj_bone_visible"

"get_hud_obj_bone_visible"

За работу двух последних не ручаюсь, но две первые работают как надо.

obj:set_obj_bone_visible(имя_косточки, булева)

булева = obj:get_obj_bone_visible(имя_косточки)

булева: true - кость видима, false - кость невидима.

Так вот, если задать кости "magazin" значение false объекту с классом CWeaponMagazined (просто оружие), то объект... взрывается(!)

Без образования ударной волны и осколков, т.е. сам метод explode не запускается. Но есть партикл и звук. Вот такие чудеса Зоны (движка).

С другими объектами этот  метод работает без особых глюков, правда с не которыми моделями сталкеров наблюдаются артефакты (искажения моделей). И ещё, если применить к живому сталкеру этот метод, то наблюдается сильное падения FPS (1-0.5).

Изменено пользователем НаноБот
  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

Подскажите пожалуйста, добавлялся в x-ray extensions какой-нибудь способ обездвижить главного героя? Я пока только остановился на установке walk_accel в 0. Не двигается, но может прыгать на месте. Что-то мне кажется, будто я встречал другой способ.

 

На мой взгляд вполне себе нормальный способ. Можно ещё и прыжки отключить, если jump_speed = 0.

Malandrinus

Изменено пользователем Malandrinus
Ссылка на комментарий

 

 

правда с не которыми моделями сталкеров наблюдаются артефакты (искажения моделей)

Искажения из-за мягкой привязки. Если будет жесткая привязка кости, то кость полностью пропадет из вида.

  • Согласен 1
Ссылка на комментарий

способ обездвижить главного героя?

Разбиндить кнопки передвижения?.. Изменено пользователем RayTwitty
Ссылка на комментарий

@TIGER_VLAD, скопирую сюда ответ тебе же:

Вот эта функция устанавливает walk_accel в нужное тебе значение:


function set_walk_accel(v)         db.actor:set_actor_float(nil, v, 1440) end

А про jump_speed забудь. Не меняется он с помощью x-ray extensions. Точнее, поменять не сложно, но это изменение никакого эффекта не оказывает.
 
На вот тебе, до кучи, еще (почти все взято из OGSE, еще раз спасибо им за это):

-- получение некоторых значений с плавающей запятой
-- параметры бега
function get_walk_accel()         return db.actor:get_actor_float(1440) end
function get_jump_speed()         return db.actor:get_actor_float(1444) end
function get_run_factor()         return db.actor:get_actor_float(1448) end
function get_run_back_factor()    return db.actor:get_actor_float(1452) end
function get_walk_back_factor()   return db.actor:get_actor_float(1456) end
function get_crouch_factor()      return db.actor:get_actor_float(1460) end
function get_climb_factor()       return db.actor:get_actor_float(1464) end
function get_sprint_factor()      return db.actor:get_actor_float(1468) end
function get_walk_strafe_factor() return db.actor:get_actor_float(1472) end
function get_run_strafe_factor()  return db.actor:get_actor_float(1476) end
-- параметры стрельбы
function get_disp_base()          return db.actor:get_actor_float(1484) end -- в радианах
function get_disp_aim()           return db.actor:get_actor_float(1488) end -- в радианах
function get_disp_vel_factor()    return db.actor:get_actor_float(1492) end
function get_disp_accel_factor()  return db.actor:get_actor_float(1496) end
function get_disp_crouch_factor() return db.actor:get_actor_float(1500) end
function get_disp_crouch_no_accel_factor()  return db.actor:get_actor_float(1504) end
-- получение некоторых целых и логических значений
-- режим прицеливания
function zoom_mode() return bit_and(db.actor:get_actor_int(nil, 1480), 1) end -- возвращает 0/1

-- установка некоторых значений
-- параметры бега
function set_sprint_factor(v)      db.actor:set_actor_float(nil, v, 1468) end
function set_jump_speed(v)         db.actor:set_actor_float(nil, v, 1444) end
function set_walk_accel(v)         db.actor:set_actor_float(nil, v, 1440) end
function set_run_factor(v)         db.actor:set_actor_float(nil, v, 1448) end
function set_run_back_factor(v)    db.actor:set_actor_float(nil, v, 1452) end
function set_walk_back_factor(v)   db.actor:set_actor_float(nil, v, 1456) end
function set_crouch_factor(v)      db.actor:set_actor_float(nil, v, 1460) end
function set_climb_factor(v)       db.actor:set_actor_float(nil, v, 1464) end
function set_walk_strafe_factor(v) db.actor:set_actor_float(nil, v, 1472) end
function set_run_strafe_factor(v)  db.actor:set_actor_float(nil, v, 1476) end
-- параметры стрельбы
function set_disp_base(v)          db.actor:set_actor_float(nil, v, 1484) end -- в радианах

function set_jump_power( v )
  db.actor:set_actor_condition_float( nil, v, 276 )
end
function set_walk_power( v )
  db.actor:set_actor_condition_float( nil, v, 284 )
end

  • Спасибо 2
Ссылка на комментарий
Разбиндить кнопки передвижения?..

ИМХО, лучше хотя бы этим воспользоваться методом, раз управления стейтами не вынесли в проект. Скорость то уменьшите в ноль, но камера все-равно будет дрыгаться при ходьбе, как при обычном движении.

Изменено пользователем SkyLoader
  • Нравится 1
Ссылка на комментарий

 

 

А про jump_speed забудь. Не меняется он с помощью x-ray extensions. Точнее, поменять не сложно, но это изменение никакого эффекта не оказывает.

Не совсем так. Если поставить jump_speed в 0, то прыгать всё-таки не будет, т.е. позволяет решить проблему обездвиживания. С другой стороны действительно факт, что любое значение, отличное от нуля, в итоге приводит к тому, что скорость прыжка просто остаётся постоянной из конфига. Если глянуть исходники, то там скорость прыжка при загрузке копируется куда-то в менеджер физики актора и видимо там уже используется. Поэтому и эффекта от перезаписи нет. При этом и то первое поле в самом объекте актора тоже в одном месте читается и используется, видимо поэтому нулевое значение всё-таки влияет. Короче, разработчики пыс тут в своём репертуаре, запутали и накосячили.


 

 

камера все-равно будет дрыгаться при ходьбе, как при обычном движении

Не будет, я проверил. Эффект покачиваения (боббинг) походу начинается с какого-то порога скорости.

  • Спасибо 1
  • Нравится 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
Эффект покачиваения (боббинг) походу начинается с какого-то порога скорости

Наверное, я чего-то не заметил, видимо в мувинге где-то запрещается стейт ходьбы, но я не увидел где. В боббинге все нормально, проверяется на dwMState&ACTOR_DEFS::mcAnyMove, проверок на скорость нет.

 

 

 

Если глянуть исходники, то там скорость прыжка при загрузке копируется куда-то в менеджер физики актора и видимо там уже используется.

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

Кто занимается проектом, помимо перезаписи jump_speed в классе актора сделайте вызов:

character_physics_support()->movement()->SetJumpUpVelocity(new_speed);

Изменено пользователем SkyLoader
Ссылка на комментарий

Кто-нибудь пробовал эти функции:

 function get_disp_base() return db.actor:get_actor_float(1484) end ,

 function set_disp_base(v) db.actor:set_actor_float(nil, v, 1484) end   ?

Ссылка на комментарий

Кто-нибудь использовал функции семейства

set_manual_grouping_on()
set_trade_filtration_on()
set_manual_highlight_on()

и иже с ними? Что-то я при их использовании, пытаясь установить запрет торговли и свою подсветку, никакого эффекта не вижу. Может там какая-нибудь хитрость есть?

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...