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

Скриптование


Svoboда

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

Подскажите, как можно проверить оружие, нахоядщееся в слоте на наличие конкретного прицела, например wpn_addon_scope_night? Для ЗП.

 

С началом вроде все ясно:

 

if db.actor:item_in_slot(3) ~= nil and db.actor:item_in_slot(3):section() == "wpn_ak74" then
local wpn = db.actor:item_in_slot(3)

 

А вот дальше, как я понимаю стандартными функциями игры здесь не обойтись. Можно ли сделать желаемую проверку с помощью функции Get_Data_Weapon из sm_net_utils от Artos?

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

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


Ссылка на сообщение

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

 

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.

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

 

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

 

 

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

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


Ссылка на сообщение

ColR_iT, ошибка была в том, что в условии вместо == было =. renderer_r2 - это не новая переменная, а значение переменной ren, т.к. в консоле команда полностью выглядит вот так: renderer renderer_r2. И, соответственно, строка :

local ren = con:get_string("renderer")
запоминает не renderer, а значение данной команды: renderer_r2

Как я уже говорил, если просто выводить значение переменной renто выдается: renderer_r2, но, если прописать условие:

if ren == renderer_r2 then
news_manager.send_tip(db.actor, "%c[0,0,255,25] р2", nil, nil, 20000)
end
, то игра не реагирует.

 

Ну что за человек? facepalm.gif Пока носом не ткнёшь, так и будет писать одно и тоже...

Где ты там у себя же в условии увидел оператор присваивания вместо сравнения?

И заключи ты в конце концов предполагаемую строку renderer_r2 в кавычки!

P.S. Учи матчасть.

ColR_iT

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

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


Ссылка на сообщение

Где ты там у себя же в условии увидел оператор присваивания вместо сравнения?

Вот я тоже не пониманию, где ты в условии увидел оператор присваивания? 

 

И заключи ты в конце концов предполагаемую строку renderer_r2 в кавычки!

P.S. Учи матчасть.

И будет вылет сразу после запуска игры. 

 

ЗЫ Если сам не разбираешься, зачем писать-то тогда?

Изменено пользователем Stiingray
  • Не нравится 2

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


Ссылка на сообщение

Gun12, renderer_r2 - это не переменная, а значение команды renderer в консоле. Чтобы разъяснить ситуацию, вот скрипт с r2_gloss_factor (3 - это значение r2_gloss_factor):

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("r2_gloss_factor")
if ren == 3 then
news_manager.send_tip(db.actor, "%c[0,0,255,25] р2", nil, nil, 20000)
end
end
end

а вот с renderer:

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 
Изменено пользователем Stiingray
  • Не нравится 1

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


Ссылка на сообщение

Я уже разобрался, действительно не хватало кавычек. А после подстановки кавычек вылетало из-за другого.

 

А renderer_r2 - это значение render, также как 3 - значение r2_gloss_factor (это же консольные команды). Так что во втором случае все аналогично первому и что самое главное, теперь уже работает.

Изменено пользователем Stiingray
  • Не нравится 2

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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