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

Худ ТЧ: Смена рук при смене костюма


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

Адаптация Худ Рук к AMK 1.4.1.

http://yadi.sk/d/Go7wRr6C2LYkr

Делалось с целью "посмотреть", поэтому торговля не правилась. В архиве есть папка "Всё у Сидора", для "посмотреть".

Звукам выстрела SIG550 и перезарядки ОС-14 добавлены OGG- комментарии.

  • Нравится 1

Antnigm, да просмотрел в своё время. Пока не могу заняться им.

neymeika, а кто автор? Выложить в шапку.

Можно ли его адаптировать под S.T.A.L.K.E.R. - Lost World - Troops of Doom



Я пытался У меня жук зеленый вылазиет постоянно, причину так и не нашел, кто может помогите

Атрем Мунгалов

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

Атрем Мунгалов

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

А теперь пожалуйста все то же самое и под спойлер.



Помогите вставить худ рук в S.T.A.L.K.E.R. - Lost World - Troops of Doom;



Это мой bind_stalker.script;

function init (obj)
xr_motivator.AddToMotivator(obj)
end

function actor_init (npc)
npc:bind_object(actor_binder(npc))
end

local game_difficulty_by_num = {
[0] = "gd_novice",
[1] = "gd_stalker",
[2] = "gd_veteran",
[3] = "gd_master"
}

lasthealth = 0
lasttime = 0
post_process = 0
save = false
local weapon_hide = false
local sWeather = "default"

class "actor_binder" (object_binder)
function actor_binder:__init (obj) super(obj)
self.bCheckStart = false
self.weather_manager = level_weathers.WeatherManager()
self.actor_detector = xr_detector.actor_detector()
end

function actor_binder:net_spawn(data)
level.show_indicators()
set_extensions_flags(31)

self.bCheckStart = true
self.weapon_hide = false -- спрятано или нет оружие при разговоре.
weapon_hide = false -- устанавливаем глобальный дефолтовый флаг.

if object_binder.net_spawn(self,data) == false then
return false
end

db.add_actor(self.object)

if self.st.disable_input_time == nil then
level.enable_input()
end

self.weather_manager:reset()

if(actor_stats.add_to_ranking~=nil)then
actor_stats.add_to_ranking(self.object:id())
end

--' Загружаем настройки дропа
death_manager.init_drop_settings()

if db.storage[db.actor:id()].pstor == nil then
db.storage[db.actor:id()].pstor = {}
end

sWeather = level.get_weather()
level.set_weather("ogsm", true)
game.start_tutorial("restore_sun")

local actor_comm = db.actor:character_community()
for k, v in pairs(xr_companion.companions) do
if v == actor_comm then
xr_companion.companions[k] = "companion"
end
end

return true
end

function actor_binder:net_destroy()
set_extensions_flags(0)
if actor_stats.remove_from_ranking ~= nil then
actor_stats.remove_from_ranking(self.object:id())
end

db.del_actor(self.object)

sr_light.clean_up ()

self.object:set_callback(callback.inventory_info, nil)
self.object:set_callback(callback.article_info, nil)
self.object:set_callback(callback.on_item_take, nil)
self.object:set_callback(callback.on_item_drop, nil)
self.object:set_callback(callback.use_object, nil)
self.object:set_callback(callback.task_state, nil)
self.object:set_callback(callback.level_border_enter, nil)
self.object:set_callback(callback.level_border_exit, nil)
self.object:set_callback(callback.take_item_from_box, nil)
self.object:set_callback(123, nil)
self.object:set_callback(124, nil)
self.object:set_callback(125, nil)
self.object:set_callback(126, nil)
self.object:set_callback(127, nil)
self.object:set_callback(130, nil)
self.object:set_callback(131, nil)
self.object:set_callback(132, nil)
self.object:set_callback(callback.hit, nil)

if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:destroy()
sr_psy_antenna.psy_antenna = false
end

xr_sound.stop_all_sound_object()

object_binder.net_destroy(self)
end

function actor_binder:reinit()
object_binder.reinit(self)

local npc_id = self.object:id()

db.storage[npc_id] = { }

self.st = db.storage[npc_id]
self.st.pstor = nil

self.next_restrictors_update_time = -10000

self.object:set_callback(callback.inventory_info, self.info_callback, self)
self.object:set_callback(callback.article_info, self.article_callback, self)
self.object:set_callback(callback.on_item_take, self.on_item_take, self)
self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)
self.object:set_callback(callback.use_object, self.use_object, self)
self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self)
self.object:set_callback(callback.task_state, self.task_callback, self)
self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)
self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)
self.object:set_callback(123, self.OnKey, self)
self.object:set_callback(124, self.OnKeyFree, self)
self.object:set_callback(125, self.OnKeyHold, self)
self.object:set_callback(126, self.OnWheelRotation, self)
self.object:set_callback(127, self.OnMouseMove, self)
self.object:set_callback(130, self.ItemToBelt, self)
self.object:set_callback(131, self.ItemToRuck, self)
self.object:set_callback(132, self.ItemToSlot, self)
self.object:set_callback(callback.hit, self.HitCallback, self)
end

--[[
Колбек на нажатие кнопки.
--]]
function actor_binder:OnKey(iButton)
tHold[iButton] = true
lwc_save.Press(iButton)
bind_car.Fuel(iButton)
end

--[[
Колбек на отпускание кнопки.
--]]
function actor_binder:OnKeyFree(iButton)
tHold[iButton] = nil
end

--[[
Колбек на удержание кнопки.
--]]
function actor_binder:OnKeyHold(iButton)

end

--[[
Колбек на вращение колёсика мыши.
--]]
function actor_binder:OnWheelRotation(iNumber)

end

--[[
Колбек на движение мыши.
--]]
function actor_binder:OnMouseMove(iNumber)

end

--[[
Коллбек на хит игрока.
--]]
function actor_binder:HitCallback(oVictim, iAmount, vLocalDirection, oWho, iBone)

end

--[[
Колбек перемещение предмета на пояс.
--]]
function actor_binder:ItemToBelt(oItem)
lwc_inventory.ItemToBelt(oItem)
end

--[[
Колбек перемещение предмета в рюкзак.
--]]
function actor_binder:ItemToRuck(oItem)
lwc_inventory.ItemToRuck(oItem)
end

--[[
Колбек перемещение предмета в слот.
--]]
function actor_binder:ItemToSlot(oItem)
lwc_inventory.ItemToSlot(oItem)
end

function actor_binder:take_item_from_box(box, item)
local story_id = box:story_id()
if not story_id then
return
end

treasure_manager.take_item_from_box(box, story_id)
end

function actor_binder:level_border_enter(npc, info_id)
self.actor_detector:actor_enter()
end

function actor_binder:level_border_exit(npc, info_id)
self.actor_detector:actor_exit()
end

function actor_binder:info_callback(npc, info_id)
--' Сюжет
level_tasks.proceed(self.object)
-- Отметки на карте
level_tasks.process_info_portion(info_id)

lwc.OnInfo(info_id)
end

function actor_binder:on_trade (item, sell_bye, money)
if sell_bye == true then
game_stats.money_trade_update (money)
else
game_stats.money_trade_update (-money)
end
end

function actor_binder:article_callback(npc, group, name)
if device().precache_frame > 1 then
return
end

if group == "Diary" then
news_manager.send_encyclopedy("diary", group)
SendTip("Заметка в журнале:", game.translate_string(name), nil, 7)
elseif group == "Mutants" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Заметка о мутантах:", game.translate_string(name), nil, 7)
elseif group == "Social" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Информация о группировке:", game.translate_string(name), nil, 7)
elseif group == "Artifacts" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Заметка об артефактах:", game.translate_string(name), nil, 7)
elseif group == "Anomalies" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Заметка об аномалиях:", game.translate_string(name), nil, 7)
elseif group == "Locations" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Информация о локации:", game.translate_string(name), nil, 7)
elseif group == "Zone-story" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("История Зоны:", game.translate_string(name), nil, 7)
elseif group == "Stories" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Местный фольклор:", game.translate_string(name), nil, 7)
elseif group == "memuars" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Личная заметка:", game.translate_string(name), nil, 7)
elseif group == "Found_PDA" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Скачаны данные:", game.translate_string(name), nil, 7)
elseif group == "st_operation_agroprom" or group == "LabX18_information" or group == "aes_military_task" then
news_manager.send_encyclopedy("encyclopedy", group)
SendTip("Заметка в журнале:", game.translate_string(name), nil, 7)
end
end

function actor_binder:on_item_take (obj)
level_tasks.proceed(self.object)
xrs_grenade.fake_pickup(obj)
lwc_inventory.ItemTake(obj)
end

function actor_binder:on_item_drop (obj)
level_tasks.proceed(self.object)
terrorizm.li(obj)
lwc_inventory.ItemDrop(obj)
end

function actor_binder:use_object(obj)
lwc_use.Use(obj)
medkit_use.Use(obj)
end

function actor_binder:task_callback(_task, _objective, _state)
task_manager.task_callback(_task:get_id(), _objective:get_idx(), _state)
if _objective:get_idx() == 0 then
if _state == task.fail then
news_manager.send_task(db.actor, "fail", _task, _objective)
elseif _state == task.completed then
task_manager.reward_by_task(_task)
news_manager.send_task(db.actor, "complete", _task, _objective)
else
news_manager.send_task(db.actor, "new", _task, _objective)
end
else
if _task:get_objective(0):get_state() == task.in_progress then
news_manager.send_task(db.actor, "update", _task, _objective)
end
end
end

function actor_binder:update(delta)
object_binder.update(self, delta)

game_stats.update(delta, self.object)

self.weather_manager:update()

-- апдейт схемы детектора
self.actor_detector:update()

-- апдейт звуковой схемы актера
xr_sound.update_actor()

-- Обновление отключения ввода с клавиатуры.
if self.st.disable_input_time ~= nil and
game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle
then
level.enable_input()
self.st.disable_input_time = nil
end

-- Апдейт прятание оружия игрока во время диалога
if weapon_hide == true or self.object:is_talking() then
if self.weapon_hide == false then
self.object:hide_weapon()
self.weapon_hide = true
end
else
if self.weapon_hide == true then
self.object:restore_weapon()
self.weapon_hide = false
end
end

-- обновление рестрикторов, которые под логикой, срабатывает через интервалы времени
local time = time_global()
if self.next_restrictors_update_time < time then
bind_restrictor.actor_update(delta)

-- Апдейтим наш телепорт
bind_mteleport.actor_update(delta)

self.next_restrictors_update_time = time + 200

task_manager.actor_update()
end

-- обновление пси-антенны
if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:update(delta)
end

if self.bCheckStart then
self.object:set_fastcall(BinderCrash)

if not has_alife_info("global_dialogs") then
self.object:give_info_portion("global_dialogs")
end

if not has_alife_info("level_changer_icons") then
self.object:give_info_portion("level_changer_icons")
end

lwc_start.Start()

self.bCheckStart = false
end

lwc.Update()
end

function actor_binder:save(packet)
object_binder.save(self, packet)

packet:w_u8(level.get_game_difficulty() )
xr_logic.pstor_save_all(self.object, packet)
self.weather_manager:save(packet)
sr_psy_antenna.save( packet )
treasure_manager.save(packet)
task_manager.save(packet)
self.actor_detector:save(packet)
lwc.Save(packet)

if packet:w_tell() >= 7000 then
Log("Размер пакета скорок превысит предел: "..packet:w_tell() )
end

lwc_timer.Add("Fix", "bind_monster.fix()", 5)
end

function actor_binder:load(reader)
object_binder.load(self, reader)

local game_difficulty = reader:r_u8()
if game_difficulty_by_num[game_difficulty] then
get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty])
else
abort("Испорчено сохранение игрока.")
end
xr_logic.pstor_load_all(self.object, reader)
self.weather_manager:load(reader)
sr_psy_antenna.load(reader)
treasure_manager.load(reader)
task_manager.load(reader)
self.actor_detector:load(reader)
lwc.Load(reader)
end

-- Weapon functions
function hide_weapon()
weapon_hide = true
end
function restore_weapon()
weapon_hide = false
end

function RestoreSun()
level.set_weather(sWeather)
end

function actor_binder:update(delta)
object_binder.update(self, delta)

-- DEBUG slowdown
-- slowdown.update()

local time = time_global()

game_stats.update (delta, self.object)

----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_item_take (obj)
level_tasks.proceed(self.object)
exo_weapons.update()
----------------------------------------------------------------------------------------------------------------------
function actor_binder:map_location_added_callback(spot_type_str, object_id)
if (false==app_ready()) or (device().precache_frame>1) then return end
--'news_manager.send_task(db.actor, "new")
end
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
function actor_binder:article_callback(npc, group, name)
--printf("article_callback [%s][%s]", group, name)
if device().precache_frame >1 then return end

if group == "Diary" then
news_manager.send_encyclopedy("diary", group)
else
news_manager.send_encyclopedy("encyclopedy", group)
end
end

if string.sub(obj:section(),1,8) == "grenade_" then
exo_weapons.change_grens_on_take(obj)
end

 



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

Изменено пользователем Ааз

Помогите адаптировать мод попод S.T.A.L.K.E.R. - Lost World - Troops of Doom

Помогите адаптировать мод попод S.T.A.L.K.E.R. - Lost World - Troops of Doom

Там есть новые костюмы, надо самому руки рисовать

Зачем их рисовать там есть черные руки камуфляж свитер и экза, на все виды экзы один и тот же худ рук идет как и на чистом небе, на чистом небе худ рук прописан через файл актера, а на этом моде через каждое оружие, тут скорее придется анимацию на каждый ствол маделить


под все типы рук, я делал, но у меня нет анимации перезарядки и поэтому у меня текстуры появляются, а стволы не заряжаются

 

Внимательно прочитай правила цитирования.

Cyclone

А есть адаптация смены перчаток к DMX 1.3.5?

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

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

  • Не нравится 1

У меня вопрос по рук худ2, почему когда подходишь к бандитам они стоят в стороне от валяющегося оружия, если быть точным мп5, побросали оружие и стоят с пистолетиками. В чем глюк???

Парни всем привет!
Я ничего не соображаю в мододелании, но я почитал тему и я так понимаю что проще сделать один худ на все костюмы? Подскажите :( , как сделать так чтобы худ рук был всегда в виде экзоскелета, а то уж очень разражает бегать в экзоскелете и видеть не то во что одет так сказать!
Заранее благодарен!)

Изменено пользователем OSARIN

И еще ребят вопрос есть, может он конечно здесь не к месту, но как убрать весь худ и в том числе и прицел, но оставив только отображение карты с нпс в округе?

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

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

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

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

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

Войти

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

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

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