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

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

 
 

Askar 

42 минуты назад, vader_33 сказал:

local outfit = db.actor:item_in_slot(6)
    if outfit then
        local cond = outfit:condition()

        .....
    end

это не подходит?

  • Жму руку 1

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 минуты назад, vader_33 сказал:

это не подходит?

Сейчас проверяю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar щас полистал lua_help, для получение брони есть отдельная функция, без прописывания слотов. А то их вечно меняют

local outfit = db.actor:get_current_outfit()

  • Спасибо 1

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Ошибку выдает


Дополнено 0 минут спустя

 

local outfit = db.actor:item_in_slot(6)
    if outfit then
        local cond = outfit:condition()

        .....
    end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar какую ошибку?


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : С:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...\games\stalker shoc\gamedata\scripts\posihion.script:39: bad argument #2 to 'format' (number expected, got userdata)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar а что  в 39 строчке?


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Строку вывожу 

string.format("Armor %f\\n", outfit)..  

 


Дополнено 1 минуту спустя

Использовал это 

local outfit = db.actor:get_current_outfit()

 

и это 

local outfit = db.actor:item_in_slot(6) if outfit then local cond = outfit:condition() ..... end

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar нужно переменную cond использовать, это значение состояния брони, а outfit  - это объект, а не текстовая информация

  • Спасибо 1

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
12 минут назад, vader_33 сказал:

нужно переменную cond использовать, это значение состояния брони

Это если использовать?

Спойлер

local outfit = db.actor:item_in_slot(6)
    if outfit then
        local cond = outfit:condition()

        .....
    end

 


Дополнено 1 минуту спустя

А если использовать 

local outfit = db.actor:get_current_outfit()

И выводить это так

string.format("Armor %f\\n", outfit)..

То все равно ошибку выдает

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar да, только без многоточия

string.format("Armor %f\\n", cond) 

Если будет ошибка - весь скрипт выложите, кусками сложно выявлять ошибки

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

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, vader_33 сказал:

только без многоточия

А для чего нужно многоточие? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, Askar сказал:

А для чего нужно многоточие? 

это просто обозначил, что вместо многоточия пишете свои действия


Дополнено 1 минуту спустя
4 минуты назад, Askar сказал:

И выводить это так

string.format("Armor %f\\n", outfit)..

То все равно ошибку выдает

не outfit надо выводить, это не текстовая информация, а целый объект. Для string.format нужна именно текстовая информация

  • Спасибо 1

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Последний пост


Дополнено 0 минут спустя

Я оттуда брал скрипт 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar выложите весь скрипт, так гадать насчет ошибки можно долго. Если не хотите в общий доступ выкладывать - в личку скиньте


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
	
function posihion_mod()
	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 out = db.actor:item_in_slot(6)  -- Это работает
--		if out then 
--			local condit = out:condition()
	
	local outfit = db.actor:get_current_outfit()   -- Это не работает
	
	local pos, dir = db.actor:position(), db.actor:direction()                  -- Присваиваем положение актера и направление взгляда                                  
	local msg =
				string.format("pos: %.2f,%.2f,%.2f\\n", pos.x, pos.y, pos.z) ..   -- Координаты ГГ
				string.format("health: %.2f\\n", db.actor.health)..               -- Жизнь   
				string.format("Armor %.2f\\n", outfit)

	if cs ~= nil then
		cs:wnd():SetText(msg)                                                   
	end
--end
end

 


Дополнено 4 минуты спустя

Если закоментировать эту строку, string.format("Armor %.2f\\n", outfit), скрипт запускается 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar  

Спойлер

смотрите, в Lua в пределах условия "if что-то then" локальные переменные не выносится. Поэтому, если надо определить какую-то переменную, нужно ее выносить вообще в начало функции. Так попробуйте


function posihion_mod()
	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 outfit = db.actor:get_current_outfit() 
 	local cond = 0
  		if outfit then
			local cond = outfit:condition()
			news_manager.send_tip(db.actor, cond, 0, "default", 8000)
		end
	
	local pos, dir = db.actor:position(), db.actor:direction()                  -- Присваиваем положение актера и направление взгляда                                  
	local msg =
				string.format("pos: %.2f,%.2f,%.2f\\n", pos.x, pos.y, pos.z) ..   -- Координаты ГГ
				string.format("health: %.2f\\n", db.actor.health)..               -- Жизнь   
				string.format("Armor %.2f\\n", cond)

	if cs ~= nil then
		cs:wnd():SetText(msg)                                                   
	end
--end
end

 

 

 

 

Изменено пользователем vader_33
  • Печаль 1

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Ошибка при вызове функции.

Ладно, спасибо большое за помощь.

И все равно не понятно почему не работает  local outfit = db.actor:get_current_outfit()

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar значит вообще всё выкладывайте, у себя в игре попробую. Отдельно определение состояния нормально работает


Дополнено 1 минуту спустя

Askar а щас какая ошибка и в какой строчке?

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

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, vader_33 сказал:

всё выкладывайте

Хорошо, завтра выложу, спасибо)

А тут есть какое то ограничение по кол-ву отметок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, Askar сказал:

А тут есть какое то ограничение по кол-ву отметок?

не знаю, выводил только около 5


В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ui_custom_msgs.xml

Спойлер

<cs_debug  x="450" y="80" width="600" height="100" complex_mode="1">
                <text font="graffiti22"  r="240" g="217" b="182" a="255" align="l"/>
       </cs_debug>

 bind_stalker.script  строку object_binder.update(self, delta) дописываем:

Спойлер

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

 

В папке gamedata/scripts файл posihion.script, это был предпоследний вариант

function posihion_mod()
	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 outfit = db.actor:get_current_outfit()   -- Это не работает
	
	local pos, dir = db.actor:position(), db.actor:direction()                  -- Присваиваем положение актера и направление взгляда                                  
	local msg =
				string.format("pos: %.2f,%.2f,%.2f\\n", pos.x, pos.y, pos.z) ..   -- Координаты ГГ
				string.format("health: %.2f\\n", db.actor.health)..               -- Жизнь   
				string.format("Armor %.2f\\n", outfit)

	if cs ~= nil then
		cs:wnd():SetText(msg)                                                   
	end
end

 

Это последнее, что изменил

function posihion_mod()
	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 outfit = db.actor:get_current_outfit() 
 	local cond = 0
  		if outfit then
			local cond = outfit:condition()
			news_manager.send_tip(db.actor, cond, 0, "default", 8000)
		end
	
	local pos, dir = db.actor:position(), db.actor:direction()                  -- Присваиваем положение актера и направление взгляда                                  
	local msg =
				string.format("pos: %.2f,%.2f,%.2f\\n", pos.x, pos.y, pos.z) ..   -- Координаты ГГ
				string.format("health: %.2f\\n", db.actor.health)..               -- Жизнь   
				string.format("Armor %.2f\\n", cond)

	if cs ~= nil then
		cs:wnd():SetText(msg)                                                   
	end
end

 


Дополнено 0 минут спустя
6 минут назад, vader_33 сказал:

только около 5

Понятно

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Askar ой, туплю. Если выносить переменную "local что-то" за "if .. then " потом эту переменную надо писать без local

     local cond = 0
          if outfit then
            cond = outfit:condition()
            news_manager.send_tip(db.actor, cond, 0, "default", 8000)
        end


Дополнено 2 минуты спустя

Askar у меня теперь работает 

Спойлер



function posihion_mod()
	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 outfit = db.actor:get_current_outfit() 
 	local cond = 0
  		if outfit then
			cond = outfit:condition()
			news_manager.send_tip(db.actor, cond, 0, "default", 8000)
		end
	
	local pos, dir = db.actor:position(), db.actor:direction()                  -- Присваиваем положение актера и направление взгляда                                  
	local msg =
				string.format("pos: %.2f,%.2f,%.2f\\n", pos.x, pos.y, pos.z) ..   -- Координаты ГГ
				string.format("health: %.2f\\n", db.actor.health)..               -- Жизнь   
				string.format("Armor %.2f\\n", cond)

	if cs ~= nil then
		cs:wnd():SetText(msg)                                                   
	end
end

 

 

ss_komp_05-12-21_02-41-31_(l01_escape).jpg

 

 

Изменено пользователем vader_33
  • Спасибо 2

В беге за рассветом приближаешь свой закат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
21 час назад, vader_33 сказал:

описатели текстур надо еще вписывать в файл system.ltx [texture_desc]

vader_33 , Спасибо, сработало


#free_SamArt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33  За что отвечает эта строка?

В 12.05.2021 в 02:43, vader_33 сказал:

news_manager.send_tip(db.actor, cond, 0, "default", 8000)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн