CRAZY_STALKER666 36 Опубликовано 20 Октября 2016 Поделиться Опубликовано 20 Октября 2016 на расстояние 10 метров. Не больше не меньше. Как раз "==" тебе и нужно. Ни больше ни меньше Не соответствует правилам. Ссылка на комментарий
UnLoaded 313 Опубликовано 20 Октября 2016 Поделиться Опубликовано 20 Октября 2016 здесь есть не понимание принципов работы с подобными величинами. Ради бога, проясни не понимающим... Будем только рады... Ссылка на комментарий
7.9 174 Опубликовано 20 Октября 2016 Поделиться Опубликовано 20 Октября 2016 (изменено) При слишком точном сравнивании, значение параметра может никогда не быть равным точно 10.0 -- например: 10.000001, 9.999999 Изменено 20 Октября 2016 пользователем 7.9 всё легко Ссылка на комментарий
naxac 2 445 Опубликовано 21 Октября 2016 Поделиться Опубликовано 21 Октября 2016 @advisor890, if math.ceil(distance) == 10 then Или if math.floor(distance) == 10 then Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Kirgudu 1 204 Опубликовано 21 Октября 2016 Поделиться Опубликовано 21 Октября 2016 @advisor890, if math.abs(distance - 10) < 0.1 thenЧисло справа меньше - граница более чёткая, но больше вероятности её пропустить, число больше - граница более размытая, но вероятность определения повышается. Сам задай число для сравнения, исходя из баланса между точностью определения и вероятностью его срабатывания. 1 Инструмент Ссылка на комментарий
advisor890 1 Опубликовано 21 Октября 2016 Поделиться Опубликовано 21 Октября 2016 Пахас, Kirgudu. Спасибо! Ваши способы работают как надо. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 21 Октября 2016 Поделиться Опубликовано 21 Октября 2016 Требуеться убить несколько НПЦ. Пытаюсь так: function all_kill() local id_kl1 = my_sid.mil_mon_1 -- тут мы каждого получили local id_kl2 = my_sid.mil_mon_2 local id_kl3 = my_sid.mil_mon_3 local id_kl4 = my_sid.unknown local se_obj_1 = level.object_by_id(id_kl1) --- получили по ID local se_obj_2 = level.object_by_id(id_kl2) local se_obj_3 = level.object_by_id(id_kl3) local se_obj_4 = level.object_by_id(id_kl4) if se_obj_1 and se_obj_2 and se_obj_3 and se_obj_4 then se_obj_1:kill(se_obj_1) --- а правильно ли так? se_obj_2:kill(se_obj_2) se_obj_3:kill(se_obj_3) se_obj_4:kill(se_obj_4) end end Но вылетает с ссылкой на _g.script. Проблема однозначно тут: se_obj_1:kill(se_obj_1) --- а правильно ли так? se_obj_2:kill(se_obj_2) se_obj_3:kill(se_obj_3) se_obj_4:kill(se_obj_4) Но как правильно НПЦ передать - не знаю. Не соответствует правилам. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 21 Октября 2016 Поделиться Опубликовано 21 Октября 2016 @CRAZY_STALKER666, если в my_sid хранятся story_id, тогда так (для одного НПС): local se_obj = alife():story_object(sid) if se_obj then local obj = level.object_by_id(se_obj.id) obj:kill(obj) endгде sid - story_id убиваемого НПС. Инструмент Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 21 Октября 2016 Поделиться Опубликовано 21 Октября 2016 @Kirgudu, да все, разобрался. Код то рабочий, вылетало не из-за него... Не соответствует правилам. Ссылка на комментарий
Zander_driver 10 335 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 (изменено) local se_obj_1 = level.object_by_id(id_kl1) --- получили по ID Работать-то оно наверно будет без проблем, но мне глаз резануло) Обычно переменные с названием se_obj подразумевают серверный объект. А функция level.object_by_id возвращает клиентский. Потом при копании спустя время в своем же коде, попытках его модифицировать, развить, написать новый на его базе. Такие ляпы приводят к риску внезапных и порой трудновычисляемых багов. Изменено 22 Октября 2016 пользователем Zander_driver 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Карлан 1 049 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 тогда так (для одного НПС): Тогда вылетишь, если объект будет в оффлайне. Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 (изменено) Добрый день. При использовании предмета в переменную сохраняется определённое значение. Но вовремя загрузки сохранения, переменная опять становится равной нулю. Как этого избежать? Сохранять значение переменной в определенный файл? Но это не иррационально. Да и негде я такого не видел. Изменено 22 Октября 2016 пользователем Kober(BRUC) 1 Ссылка на комментарий
AndrewMor 527 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 Сохранять значение переменной в определенный файл? Использовать pstor для сохранения значения переменной. 1 1 Сталкер - наше всё! Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 @AndrewMor, можно, пожалуйста, поподробнее? Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 Обычно переменные с названием se_obj подразумевают серверный объект. А функция level.object_by_id возвращает клиентский. В контексте моей проблемы это роли не играет абсолютно, т.к стилистика для выбора названий - дело сугубо личное. Я мог бы его назвать mObject,iStalker и так далее. В функции эти имена имеют абсолютно символическое значение, после end они перестают использоваться где либо, а если вся функция на 100 процентов рабочая - то какой смысл ассоциировать их с серверным,клиентским обьектом, тем более что разницу я между ними понимаю только фигурально(одно работает на стороне сервера, другое клиента)... Не соответствует правилам. Ссылка на комментарий
AndrewMor 527 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 @Kober(BRUC), В качестве примера: local kolvo_irp = xr_logic.pstor_retrieve(db.actor, "kol_irp", 0) -- объявляем локальную переменную и читаем значение из pstor (его там нет, потому присваиваем 0). if kolvo_irp ~= "number" or kolvo_irp == nil then -- сравниваем ее значение с чем-либо, если нужно. kolvo_irp = 2 -- присваиваем ей другое значение xr_logic.pstor_store(db.actor, "kol_irp", kolvo_irp) -- сохраняем новое значение в pstor. end Может, пример и не сильно удачен. 1 Сталкер - наше всё! Ссылка на комментарий
Overfirst 630 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 Народ, вопрос по таймерам. Платформа ЗП. При зависании, как ни странно, таймер продолжает свою работу, почему так? У меня, допустим, камера летит 12 сек, а после должно начаться какое-то действие, чтобы без опозданий, а при подвисании таймер не останавливается. Как быть? Юзаю простейшим образом: on_timer = value | ... Ранее был известен под ником BoBaH_671. Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 @Kober(BRUC), Если нужно много хранить информации, то для этого подойдет se_stor от Artos`а. 1 Ссылка на комментарий
Kirgudu 1 204 Опубликовано 22 Октября 2016 Поделиться Опубликовано 22 Октября 2016 Тогда вылетишь, если объект будет в оффлайне.Согласен, не додумал. Инструмент Ссылка на комментарий
UnLoaded 313 Опубликовано 23 Октября 2016 Поделиться Опубликовано 23 Октября 2016 Юзаю простейшим образом: on_timer = value | ... Загляни в скрипт xr_logic, там увидишь, что этот самый on_timer сделан как и все остальное - на обычном апдейте, который дергается от объекта. А скриптовая подсистема всегда была самой чувствительной к любым подвисаниям, так что ищи другой способ идеальной синхронизации... 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти