Решил создать отдельную тему, т.к. постоянно писать одно и тоже - не комильфо
1) Открываем файл ui_main_menu.script посредством блокнота. Можно (лучше) через Notepad++. Вордом не открывать. Видим там такую вещь:
Код
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_F1 then self:OnButton_koord_viev() else
if dik == DIK_keys.DIK_Q then self:OnMessageQuitWin() end
end
добавляем после else вот такую конструкцию
Код
if dik == DIK_keys.DIK_F1 then self:OnButton_koord_viev() else
должно получится так:
Код
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_F1 then self:OnButton_koord_viev() else
if dik == DIK_keys.DIK_Q then self:OnMessageQuitWin() end
end
2) В конец файла добавляем эту непонятную схему
Код
function main_menu:OnButton_koord_viev() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 7000) end
3) сохраняем файл 4) убеждаемся, что игра видит измененные файлы путем того, что запускаем игру, загружаем сохранение/начинаем НГ, выходим в меню и нажимаем кнопку F1. Если при возврате в игру вы видите сообщение с координатами - все сделано правильно
Только что наткнулся на еще один способ отображения координат - на худе - и немедленно добавляю его сюда
Создайте новый скрипт, в него запишите следующую функцию:
Код
function show_coordinates() local hud = get_hud() local cs = hud:GetCustomStatic("cs_debug") if cs == nil then hud:AddCustomStatic("cs_debug", true) cs = hud:GetCustomStatic("cs_debug") end local lvid, gvid = db.actor:level_vertex_id(), db.actor:game_vertex_id() local pos, dir = db.actor:position(), db.actor:direction() local pos2 = level.vertex_position(lvid) local d = vector():sub(pos, pos2) local valid = (math.abs(d.x) <= 0.35 and math.abs(d.y) < 1.0 and math.abs(d.z) <= 0.35) local msg = string.format("lvid: %d\\n", lvid) .. string.format("gvid: %d\\n", gvid) .. string.format("pos: %f,%f,%f\\n", pos.x, pos.y, pos.z) .. string.format("dir: %f,%f,%f\\n", dir.x, dir.y, dir.z) .. "valid: " .. tostring(valid) if cs ~= nil then cs:wnd():SetText(msg) end end
Далее открываем bind_stalker.script и находим функцию actor_binder:update(delta) Напишем в ней после:
Код
local time = time_global() game_stats.update (delta, self.object)
Это:
Код
if t_coord < time then t_coord=0 t_coord = time + 250 имя_вашего_скрипта.show_coordinates() end
250 - это четверть секунды, т.е. четыре раза в секунду будет обновляться информация о координатах. Чуть не забыл, в папке config\ui в файле, например, "ui_custom_msgs.xml" в конце перед напишите:
Как получить координаты для спавна предмета или НПЦ. Скрипт сей найден на каком-то форуме, проверен и работает функция спавна имеет вид alife():create(section,position,levelvertex,gamevertex)
Где:
section - имя того/чего спавним
position,levelvertex,gamevertex - координаты, позиция вершины обьекта, и сектора карты.
Напишу подробно, как очень про100 их узнать:
Заходим, предварительно распаковав, в каталог gamedata/scripts/ И там в файле ui_main_menu.script в конце дописываем это:
Цитата
function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end
Теперь в игре идём на то место (или ногами или деморекордом), где спавним обьект, выходим в меню игры, и жмём на клавишу СОЗДАТЕЛИ (CREDITS) - соответственно нашему взоры не предстаёт никакой список создателей, а мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Всё - F12 или на бумажку.
By Pereiro, added by loxotron
Сообщение отредактировал XemorDio - Пятница, 02.08.2013, 12:14