Несколько месяцев я наткнулся с одной проблемой, когда делал модификацию у меня нпс почему то были повёрнуты не туда куда нужно, рыскал в просторах интернета как же сделать чтобы нпс и т.д, были повёрнуты куда мне это нужно, спасибо одному человеку который подсказал даже функцию написал, его зовут Паша(Naxac), суть не в это. Давайте же приступим к практики.
Любой текстовый редактор, лучше NotePad++ он подсвечивает синтаксис Lua файл - ui_main_menu
Для начала создадим файл_ваше название в моём случае bind_direction
Открываем ваш_файл и файл под названием ui_main_menu
Вставляем эту функцию
Код
function get_dir() local dir = device().cam_dir news_manager.send_tip(db.actor, "load ~~ direction: x = 0, y = "..tostring(-dir:getH())..", z = 0", nil, nil, 30000) end
Так с скриптом bind_direction мы разобрались, теперь переходим к ui_main_menu, находим там функцию
Код
function main_menu:OnKeyboard(dik, keyboard_action) --virtual function CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) local bind = dik_to_bind(dik) local console = get_console()
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then if level.present() and (db.actor ~= nil) and db.actor:alive() then console:execute("main_menu off") end end
-- if dik == DIK_keys.DIK_S then -- self:OnButton_load_spawn()
-- else if dik == DIK_keys.DIK_C then --- у вас будет стоять биндер на клавишу Q место DIK_C можно за биндить любую клавишу ведь вся функция будет происходить в меню игры и выводиться уже в саму игру сообщением в вашу симуляцию. bind_direction.get_dir() --- это регистрирует от куда будет браться функция вместо моего bind_direction может быть ваш скрипт end
end
return true end
Теперь всё мы с скриптовой части уже закончили переходим уже к all.spawn
Для начала создадим нашего НПС надеюсь вы знаете как создать его чтобы я не расписовал подробно. Находим секцию своего нпс в моём случае
Код
[3358]
; cse_abstract properties section_name = stalker name = slaven_guard_1 position = 59.916691,0.517594,80.609863 direction = 0,-0.026383053511381,0 version = 118 script_version = 6
Находим две строки direction = 0,-0.026383053511381,0 И upd:o_torso = -0.026383053511381,0,0 Теперь к пояснениям почему у меня заданные числа стоят в разных комбинациях (-0.026383053511381) а вот почему в движке сталкера расчитанная странная система поворотов но не будет углубляться в историю, так ах да поясняю как работает эта система direction - Это поворот нашего НПС upd:o_torso - Это поворот тела -- хотя я сам не понял в чём разница Схема работы direction = X,Y,Z upd:o_torso = Y,X,Z -- то есть у нас значение Y просто поставленная в другом месте чтобы работал поворот нужно будет по такой системе работать Пример direction = 0,3,0 upd:o_torso = 3,0,0 То есть наш НЕПИСь или игрок направлен на ЮГ Заходим в игру, и выбираем ракурс куда будет поворачиваться ваш НЕПИСь и т.д Повернулись теперь выходим в меню игры, и нажимаем нашу забиндинную клавишу в моём случае это клавиша С Должен проиграть звук сообщения, и возвращаемся уже в саму игру. Вот так будет.
После того как сделали всё результат должен получиться такой в моём случае мой НЕПИСь Славен повёрнут по оси Y в таких координатах (-0.026383053511381).
Все предоставленные скриншоты из моего мода.
Добавлено (22.12.2016, 23:36) --------------------------------------------- Обидно изображения получились маленькие
Сообщение отредактировал Майор_Семецкий(Богдан) - Четверг, 22.12.2016, 23:36
direction - Это поворот нашего НПС upd:o_torso - Это поворот тела -- хотя я сам не понял в чём разница
Первое - это поворот серверного класса объекта Второе - это поворот клиентского класса объекта В оффлайн объект развёрнут в соответствии с параметром direction При переходе в он-лайн объект сразу разворачивается в соответствии с параметром o_torso. Теперь разница понятна?
Первое - это поворот серверного класса объекта Второе - это поворот клиентского класса объекта В оффлайн объект развёрнут в соответствии с параметром direction При переходе в он-лайн объект сразу разворачивается в соответствии с параметром o_torso. Теперь разница понятна?