Перейти к содержанию

Detron

Сталкеры
  • Публикаций

    16
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Detron


  1. 6 часов назад, denis2000 сказал:

    Detron Ну так функция очевидно возвращает вектор и работать с ним нужно соответственно как с вектором.

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

    local sun_temp = weather.get_value_vector("sun_color")
    printf(string.format("%s,%s,%s",sun_temp.x,sun_temp.y,sun_temp.z))

    Надеюсь, кому-то помогу. Наверное, первый раз, когда я потратил 2 дня, чтобы разобраться, а не 20 минут.


  2. denis2000 спасибо большое за разъяснение, хоть это я и знал. Но все равно спасибо!
    Ну а команда все же выводит числа, но в таком вот странном виде:

    [0.00833930168:0.00833930168:0.00833930168]

    Именно поэтому выдавало вылеты. Как это можно перевести в string или просто привести в нормальный вид?
    Чтобы это можно было записать и вывести хоть куда-то кроме консоли. Ума не приложу.


  3. В 23.09.2022 в 12:41, denis2000 сказал:

    Во первых в оригинале нет такой функции

    Да, все верно, это из Anomaly, но не суть.

    В 23.09.2022 в 12:41, denis2000 сказал:

    во вторых вызов движковой функции делается не так

    Разве level.get_time_hours() не считается движковой? Ведь я использую с ней такой же метод и все работает!
    И не только get_time_hours(), но и другие для level. А это, вроде бы как, движковая функция, в моем понимании. Но с weather.get_value_vector() облом... Хотя с weather.get_value_numric() тоже работает. В любом случаи, хотел бы поинтересоваться у знающего человека, как правильно делать вызов движковых. Буду очень благодарен!


  4. 1 час назад, WolfHeart сказал:

    Смотри 9 вариант

    Я знаю что значит эта ошибка. Я прошу объяснить как правильно вывести полученное.
    Ошибка вылезает только когда пытаюсь вывести, т.к. я делаю это неправильно.


  5. Нужна небольшая помощь с разъяснением. Имеется вот такая вот строчка для моего скрипта.

    local sun_settings = weather.get_value_vector("sun_color")

    По lua_help она выглядит так:

    function get_value_vector(string)

    Я немного не понимаю, что именно она мне выдает и в каком виде? По сути, должна выдавать числа.
    Если пытаюсь вставить ее в сообщение через news_manager для вывода в игре, то ловлю вылет.
    Пытался и через tostring конвертировать и через printf выводить, но тоже получал вылет...
    Не особо прошаренный в LUA, поэтому, наверняка, не понимаю очевидного.
    Как мне увидеть полученные значения и, еще лучше, вывести на экран через news_manager?

    Спойлер
    
    FATAL ERROR
     
    [error]Expression    : <no expression>
    [error]Function      : CScriptEngine::lua_error
    [error]File          : ..\xrServerEntities\script_engine.cpp
    [error]Line          : 191
    [error]Description   : fatal error
    [error]Arguments     : LUA error: No such operator defined
     
    stack trace:

     

     


  6. @denis2000, увы, но нет. kACCEL отвечает за медленную ходьбу/низкое приседание, а не за спринт.
    Это можно увидеть даже в user.ltx по назначенной кнопке. Боюсь, название кнопки спринта можно найти только в самом движке, ибо ни в одном скрипте оно не написано. Искал по ключевым словам через notepad++ и не нашел нужного.


  7. Не подскажите, как по key_bindings называется кнопка спринта?
    Пишу скрипт, где эту кнопку нужно отследить, а названия не знаю и найти не могу (в lua_help не указано).
    Попробовал подобрать, но такие как kRUN, kSPRINT и kSPRINT_TOGGLE не подошли.
    Кто-нибудь знает правильно название кнопки?


  8. 3 часа назад, Tolich сказал:

    Такой вопрос, как применить для ножа две текстуры? Первая текстура, когда ГГ достаёт нож (ходит с ним, пока не атакует) и вторая текстура, после атаки ножом.
    т.е. имеем две текстуры ножа: одна без крови, вторая с кровью. Хотелось бы обе использовать, для реалистичности. Может подобное уже где то реализовалось в модах?

    Довольно интересная идея. Не дохрена программист, но первое, что пришло в голову - сделать проверку на удар ножом по НПС и после срабатывания заменять обычный нож альтеративным окровавленным. А перед этим, естественно, ввести в игру второй точно такой же нож и подменять старый. Удалять старый из инвентаря и выдавать новый окровавленный. Возможно даже есть способ сделать проверку по удару ножом об воду и таким методом менять обратно (ходят легенды, что истинные гуру могут написать проверку на что угодно, но это не про меня). Немного топорный метод, но должен сработать. Еще где-то видел методы с подменой текстур, но не уверен, что без движковых правок оно работает. Попробовал бы за полчаса сам написать подобное, но компа под рукой нема (


  9. Задался таким вопросом. Можно ли в Сталкере сделать UI окна, которые можно двигать мышью? Может кто уже разбирал такой вопрос или знает ответ. Было бы интересно реализовать подобное в игре.

    • Лайк 1

  10. Всем доброго времени суток!



    Ищу опытного программиста Lua для помощи и консультации в написании и оптимизации скриптов для сюжетного проекта S.T.A.L.K.E.R. Потерянная Зона, находящегося на ранних стадиях разработки.

    Проект затрагивает как множество графических, так и геймплейных изменений, которые требуют множества сложных и оптимизированных скриптов для отлаженной работы. Увы, у меня мало опыта и познаний в Lua, и написание с оптимизацией без сторонней помощи займет очень много времени.

    Если вы хорошо владеете Lua и имеете желание поучаствовать в разработке мода - буду очень рад помощи!



    Спасибо за внимание!


  11. 4 часа назад, digital defender сказал:

    denis2000 По ходу, моя мечта не сбыточна(

    digital defender , makes your dream come true ))
    Удивлен, что другие не помогли

    Спойлер

     

    
    local switch = 1
    local iTimer = time_global() + 1000
    
    function on_game_start()
    	RegisterScriptCallback("actor_on_update",actor_on_update)
    end
    
    function actor_on_update()	
    local console = get_console()
    local hud = get_hud()
    if iTimer and iTimer < time_global() then
        if hud:GetCustomStatic("main_task") then
    		if switch == 1 then
    			console:execute("hud_draw 1")
    			switch = 2
    			iTimer = time_global() + 1000
    		else
    			console:execute("hud_draw 0")
    			switch = 1
    			iTimer = time_global() + 1000
    		end
    	end
    end
    end

    p.s. если не работает, то нужно просто вписать в bind_stalker для получения коллбэка

     

    • Мастер! 1

  12. Подскажите, что не так? Скрипт срабатывает всего один раз, выдавая в сообщения "mode 2" и "done". На изменение фактора дождя в дальнейшем он никак не реагирует. Но если не использовать "reset_mode", как проверку, то скрипт напротив срабатывает бесконечное количество раз, бесконечно присылая сообщения ГГ, даже если rain_realtime и rain_memory уже равны. Что я делаю не так?

    Спойлер
    
    
    local reset_mode = false
    local load_mode = 0
    local rain_memory = 0
    local rain_storage = 0.89512
    
    function on_game_start()
        RegisterScriptCallback("actor_on_update",actor_on_update)
    end
    
    function actor_on_update()
        local rain_realtime = math.ceil(level.rain_factor()*10)
    	if rain_realtime ~= rain_memory and reset_mode == false then
    		factor_controller(rain_realtime)
    		reset_mode = true
    	end
    end
    
    function factor_controller(rain_realtime)		
    local a = rain_realtime 						
    local b = rain_memory							
    local c = rain_storage							
    
    if a ~= b then									
    	if a > b then								
    		while a ~= b do							
    			b = b + 1							
    		end
    	elseif a < b then							
    		while a ~= b do							
    			b = b - 1
    		end
    	end
    end
    
    if a == b then									
    	while b ~= c do								
    		if b > c and c == 0 then				
    			load_mode = 0
    			c = b
    			news_manager.send_tip(db.actor, "mode 1", nil, nil, 30000)
    		elseif b > c and c ~= 0 then			
    			load_mode = 1
    			c = b
    			news_manager.send_tip(db.actor, "mode 2", nil, nil, 30000)
    		elseif b < c and b == 0 then			
    			load_mode = 0
    			c = b
    			news_manager.send_tip(db.actor, "mode 3", nil, nil, 30000)
    		elseif b < c and b ~= 0 then			
    			load_mode = 1
    			c = b
    			news_manager.send_tip(db.actor, "mode 4", nil, nil, 30000)
    		end
    	end
    end
    
    if a == c then
    	reset_mode = false
    	news_manager.send_tip(db.actor, "done", nil, nil, 30000)
    end
    
    end

     

     


  13. Господа-сталкеры, такой необычный вопрос. Можно ли заставить скрипт брать партиклы из другого .xr файла помимо particles.xr или же из папки particles?

    Вписываю в скрипт local dot = particles_object("effect//dot") и закидываю в папку particles папку effect с партиклом dot, чтобы в итоге получилось gamedata/particles/effect/dot.pe, но во время загрузки игра вылетает и выдает, что такого партикла не существует


  14. Братцы-сталкеры, подскажите. В Anomaly дождь все также работает через движок? Если да, то есть ли способ отслеживать начало дождя через скрипт и имеется ли возможность заспавнить и привязать партиклы к ГГ?