Stiingray 4 Опубликовано 16 Сентября 2012 (изменено) Подскажите, как можно проверить оружие, нахоядщееся в слоте на наличие конкретного прицела, например 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? Изменено 16 Сентября 2012 пользователем Stiingray Поделиться этим сообщением Ссылка на сообщение
Stiingray 4 Опубликовано 15 Апреля 2013 Подскажите, что не правильно сделано: 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 4 Опубликовано 19 Апреля 2013 (изменено) 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'ом Изменено 19 Апреля 2013 пользователем Stiingray 1 Поделиться этим сообщением Ссылка на сообщение
Stiingray 4 Опубликовано 26 Апреля 2013 (изменено) 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, то игра не реагирует. Ну что за человек? Пока носом не ткнёшь, так и будет писать одно и тоже... Где ты там у себя же в условии увидел оператор присваивания вместо сравнения? И заключи ты в конце концов предполагаемую строку renderer_r2 в кавычки! P.S. Учи матчасть. ColR_iT Изменено 26 Апреля 2013 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
Stiingray 4 Опубликовано 26 Апреля 2013 (изменено) Где ты там у себя же в условии увидел оператор присваивания вместо сравнения? Вот я тоже не пониманию, где ты в условии увидел оператор присваивания? И заключи ты в конце концов предполагаемую строку renderer_r2 в кавычки! P.S. Учи матчасть. И будет вылет сразу после запуска игры. ЗЫ Если сам не разбираешься, зачем писать-то тогда? Изменено 26 Апреля 2013 пользователем Stiingray 2 Поделиться этим сообщением Ссылка на сообщение
Stiingray 4 Опубликовано 26 Апреля 2013 (изменено) 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 Изменено 26 Апреля 2013 пользователем Stiingray 1 Поделиться этим сообщением Ссылка на сообщение
Stiingray 4 Опубликовано 26 Апреля 2013 (изменено) Я уже разобрался, действительно не хватало кавычек. А после подстановки кавычек вылетало из-за другого. А renderer_r2 - это значение render, также как 3 - значение r2_gloss_factor (это же консольные команды). Так что во втором случае все аналогично первому и что самое главное, теперь уже работает. Изменено 26 Апреля 2013 пользователем Stiingray 2 Поделиться этим сообщением Ссылка на сообщение