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

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


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

Адаптация Худ Рук к 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

 



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

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

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


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

 

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

Cyclone

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Войти

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

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

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