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

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

Подскажите, что не правильно сделано:

 

local con = get_console()


local ren = con:get_string("renderer")
if ren = renderer_r2 then
    news_manager.send_tip(db.actor, "%c[0,0,255,25]рендер р2", nil, nil, 20000)
end

 

 

Какая ошибка - в логе не указывается.

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

Stiingray, неправильно написано условие.

if ren == "renderer_r2" then 

В логе должно быть как минимум то, что файл скрипта невалидный. Используй для проверки синтаксиса script Syntax Checker.

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

Gun12, только сейчас добрался до твоего 2-го экономного варианта конвертации таблиц в строку (первый работает без проблем). Сначала не мог понять, почему пропускаются проверки элементов извлеченных таблиц, вроде бы внешний вид такой же, как и до преобразования в строку... Оказалось, на выходе toTable получаем стринги (как я понял). Наверное, где-то не хватает tonumber или ещё чего. Подскажи, плиз.

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

Да, действительно я забыл про tonumber.

Найди в функции toTable :

 

for m in v:gmatch('%S+') do
    t2[k[n]] = to10(m)
    n = n+1
end

 

и замени на :

 

for m in v:gmatch('%S+') do
    local x = to10(m)
    t2[k[n]] = tonumber(x)
    n = n+1
end

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

Gun12, я уже пробовал вставлять tonumber, но на выходе большие числа были не те, что записывались в строку. Если я всё правильно вставил, то последнее твоё решение не помогло. Может дело во втором аргументе в tonumber(x, y) ?

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

Не нужен там никакой второй аргумент. У меня всё работает.

Можешь показать свою таблицу? Или дай несколько чисел, которые не правильно переводятся.

 

Да, ещё найди и замени вот ещё что (там лишнее поле создаётся) :

 

for i = 0, 9 do
    t100['0'..i] = char(240+i)
end

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

Gun12, попробовал поставить девятку. Результат не изменился. К примеру загоняю в строку: table1 = { [1]={id=5000,s=1,art=100} }. На выходе имеем: { [1]={id=800,s=1,art=160} }

Может конечно это у меня что-то не так сростается... но 1-й вариант ведь работает... В любом случае спасибо за помощь!

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

Твоя таблица у меня работает нормально.

Так что может ты не так что-то исправил, либо опять причуды lua а-ля сталкер.

Отправил тебе ЛС. Смотри там.

--------

Ага, таки ты всё-таки наисправлял... Пожалуйста.

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

Stiingray, неправильно написано условие.if ren == "renderer_r2" then 

В логе должно быть как минимум то, что файл скрипта невалидный. Используй для проверки синтаксиса script Syntax Checker.

Спасибо, исправил.

 

Теперь появилась другая проблема, когда назначаю данную проверку на нажатие клавиши в меню, то сообщение почему-то не выводится:

 

 

if level.present() and (db.actor ~= nil) and db.actor:alive() then

            if dik == DIK_keys.DIK_NUMPAD1 then

                 local con = get_console()

local ren = con:get_string("renderer")

if ren == renderer_r2 then

     news_manager.send_tip(db.actor, "%c[0,0,255,25] р2", nil, nil, 20000)

end

            end

        end

 

 

 

Но, без проверки условия значение ren выводится:

 

if level.present() and (db.actor ~= nil) and db.actor:alive() then

            if dik == DIK_keys.DIK_NUMPAD2 then

                local con = get_console()

local ren = con:get_string("renderer")

     news_manager.send_tip(db.actor, "%c[25,240,25,25] рендер "..ren.."", nil, nil, 20000)

            end

        end

 

 

ЗЫ Проверял Script syntax checker'ом

Изменено пользователем Stiingray
  • Нравится 1
Ссылка на комментарий

Stiingray, и что же ты исправил, если ошибка, на которую тебе указали так и осталась?

Данной условие:

if ren == renderer_r2 then
никогда не выполниться, т.к. ты пытаешь сравнить строку в переменной ren со значением nil, которое присвоено переменной renderer_r2. Поэтому сообщение и не выводится.

 

Теперь о менее приятном:

Во-первых, цитировать посты полностью не нужно, достаточно просто указать ник.

Во-вторых, используй теги для того чтобы выделить код, в шапке темы об этом моменте ясно написано.

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

Здравствуйте.

Решил вернуть имена и описания для каждого тайника (как это было в ТЧ): в trasure_mananger.script заменил в функции CTreasureManager:give_treasure(treasure_id, spawn) локальную local text = "Тайник\\n%c[255,155,238,23]" на local text = "%c[255,238,155,23]"..game.translate_string(self.name).."\\n".."%c[default]"..game.translate_string(self.description).

После функцию function CTreasureManager:__init()

function CTreasureManager:__init()


    self.name = utils.cfg_get_string(ini, section, "name", nil, true, "")
    self.description = utils.cfg_get_string(ini, section, "description", nil, true, "")
    self.items_spawned = false
    self.check_time = nil
    self.secrets = {}
    self.secret_restrs = {}
    self.items_from_secrets = {}
end

 

Добавил файл-описания st_trasure.xml из ТЧ и сделал чтоб его читала игра, но при начале новой игры получаю вылет:

 

FATAL ERROR

[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ...l.k.e.r. - Зов Припяти\gamedata\scripts\utils.script:170: attempt to concatenate local 'section' (a nil value)


stack trace:

001B:69737365 nvd3dum.dll

 

Как я понял, нужно для каждого тайника в st_trasure.xml нужно создать секцию описания name и description? Или не в ту сторону копать начал и описания от таких манипуляций я не получу?

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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

На сколько я понял, ты ничего не понял.

self.name = utils.cfg_get_string(ini, section, "name", nil, true, "")

self.description = utils.cfg_get_string(ini, section, "description", nil, true, "")

Вылет происходит из-за того, что ты передаёшь в функцию cfg_get_string первые два аргумента, которые не определены, другими словами их значения nil, о чём, собственно, в логе и сказано. Поэтому, если со скриптами не дружишь, то методом тыка можно долго добиваться результата.
Ссылка на комментарий

Работает ли в Сталкере библиотека ввода-вывода io?

 

Не уверен, но кажется только в ЗП.

ColR_iT

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

Пробую положить npc в анимацию после попадания.

B xr_motivator.script после function motivator_binder:hit_callback(obj, amount, local_direction, who, bone_index)callstack() поместил свой код.
.

if (bone_index == 15 or bone_index == 19) then 	--// попаданиe в кости головы.
local math = math
local rnd = math.random(1,10)
local say = ""
	
	if rnd <= 7 then   --// 70%  will result in heavy injury (Health reduced with script to 0.10%).
	obj.health =- 0.9
	say = "Heavy Injury"
--//state_mgr.set_state(obj, "wounded_heavy_3")
		obj:play_cycle("idle_to_wounded_1")

		elseif rnd == 8 or rnd == 9 then  --// 20% chance it will result in temporary stun (Play sitting/sleeping animation). 
		say = "Temporary Stun"
--//state_mgr.set_state(obj, "sit_ass")
		obj:play_cycle("idle_to_wounded_0")

		elseif rnd == 10 then  --// 10% chance it will just bounce off.
		say = "Ricochet"
	end
	news_manager.send_tip(db.actor, say, nil, nil, 2000)
end

Пробовал со state_mgr.set_state(obj, "sit_ass"), анимация начинает играть но быстро прерываетсям, наверное покрывается со state с более высоким приоритетом.
Тоже самое с obj:play_cycle("idle_to_wounded_0"), начинает играть и быстро прекращается.

 

Но если убрать все вражеские отношения (Чтобы враги не отвлекались) и стрельнут по npc  то анимация будет проигриватся корректно и раз положены в анимацию npc  в ней и останется.
Eсть ли какой то способ чтобы npc остался в этой анимации и не прерывал ее.

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

Не особо понимаю что значит "захватить его под скрипт", какие то примеры этого захвата под скрипт? И если можна так объяснить как для очень нового, я со скриптами от нескольких дней только знакомлюсь.

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

Тебе нужно добавить схему поведения. Или, возможно, допилить схему xr_wounded, чтобы она заработала так, как тебе нужно. Примеров таких схем в самой игре предостаточно, но если ты со скриптами несколько дней, то сложновато будет.

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

Речь была про функцию io...

ЗП, ЧН..

ТЧ, только в правленой версии...

6 патч от Macron-а?

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

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

Доброго времени суток.

Что-то никак не могу найти, "то ли лыжи не едут, то ли..."  :)

В общем, можно ли проверить существование файла и папки?

userbar368.png

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

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

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

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

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

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

Войти

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

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

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