Dennis_Chikin 3 658 Опубликовано 4 Января 2015 Поделиться Опубликовано 4 Января 2015 (изменено) С чего начинать и где взять. Установка Lua:http://www.amk-team.ru/forum/index.php?showtopic=11584&p=629106 Руководство «Программирование на языке Lua», третье издание:http://www.amk-team.ru/forum/index.php?showtopic=11584&p=905308 Изменено 2 Марта 2015 пользователем Kirgudu Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
KitkaT.Net 2 Опубликовано 24 Июля 2016 Поделиться Опубликовано 24 Июля 2016 @Malandrinus, я проверил, значение моей глобальной (ну получается в моем скрипте) переменной сбрасывается после перехода на другую локацию. Ничто не вечно под луной. Ссылка на комментарий
Карлан 1 049 Опубликовано 24 Июля 2016 Поделиться Опубликовано 24 Июля 2016 @KitkaT.Net, разумеется она сбрасывается. Модуль при загрузке игры переинициализируется, я уже не раз это говорил. И при загрузке игры без обращения к функции где идет рандомизация она у тебя будет равна nil. Делай рандомизацию непосредственно перед проверкой. 1 Ссылка на комментарий
KitkaT.Net 2 Опубликовано 24 Июля 2016 Поделиться Опубликовано 24 Июля 2016 @Карлан, ну рандомизировать то мне по логике квеста надо один раз, поэтому обойдусь инфопоршнями на каждый из случаев. Ладно, хотя бы разобрался из-за чего у меня такая ерунда происходила Ничто не вечно под луной. Ссылка на комментарий
Serge! 127 Опубликовано 24 Июля 2016 Поделиться Опубликовано 24 Июля 2016 (изменено) хотя бы разобрался из-за чего у меня такая ерунда происходила Попробуйте инициировать вашу "глобальну переменню" при её объявлении сразу радомнным значением, а не nil. А в фунции souls_died_armors_give_quest() рандомизацию уберите вообще. Эту переменную в Вашем случае можно вовсе сделать локальной для скрипта (не функции!), чтобы не засорять глобальную таблицу. Конечно это справедливо, если код, который Вы привели, действительно реальный, а не какой-то тестовый пример. И будет Вам счастье. --глобальная переменная для того чтобы фильтры заспавнились только в одном вертолете local FILTERS_PLACE=math.random(3) function souls_died_armors_give_quest() task_manager.get_task_manager():give_task("souls_died_armors_task") task_manager.get_task_manager():give_task("souls_died_armors_task_jup") task_manager.get_task_manager():give_task("souls_died_armors_task_zat") --task_manager.get_task_manager():give_task("souls_died_armors_task_zat2") --так как нельзя залезть на плато task_manager.get_task_manager():give_task("souls_died_armors_task_zat3") --[[ math.randomseed(os.time()) FILTERS_PLACE=math.random(3) --]] printf("FILTERS_PLACE= %s",FILTERS_PLACE) --news_manager.send_tip(db.actor, FILTERS_PLACE, nil, "seeker", nil, nil) end function searchingHeliJupiter(actor, npc) if xr_conditions.actor_in_zone(actor, npc, {"jup_b8_heli_4"}) then printf("FILTERS_PLACE= %s", FILTERS_PLACE) if FILTERS_PLACE==1 then db.actor:give_info_portion("soulsDiedArmorsHeliJupiterDone") db.actor:give_info_portion("soulsDiedArmorsHeliFounded") alife():create("dust_filter", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) alife():create("dust_filter", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) else db.actor:give_info_portion("soulsDiedArmorsHeliJupiterDone") news_manager.send_tip(db.actor, "no_filters2", nil, "seeker", nil, nil) end end end Делай рандомизацию непосредственно перед проверкой. Мысль безусловно верная, только фразу я бы сформулировал так: : "Делай рандомизацию непосредственно перед её использованием". Проверять можно когда угодно и где угодно, а вот её значение важно только в момент использования этой переменной Изменено 24 Июля 2016 пользователем Serge! Ссылка на комментарий
Graff46 598 Опубликовано 3 Августа 2016 Поделиться Опубликовано 3 Августа 2016 Я призадумался. Когда я начал изучать в ВУЗ'е вэб-программирование, то конечно же столкнулся с фреймворком "jQuery" в теории по этой библиотеке описывалось почему есть jQuery.js и jQuery_min.js. Дело все в представлении листинга "в одну строку" (Для Нотпад++ есть плагин JStool --> JS_min). Такое представление кода хоть и некрасива, но повышает скорость исполнения. Что если использовать эту ф-цию для критичных по времени участков кода в скриптах Сталкера? Ссылка на комментарий
Kirgudu 1 217 Опубликовано 3 Августа 2016 Поделиться Опубликовано 3 Августа 2016 (изменено) Сомнительное утверждение. Минимизация javascript кода имеет своей целью не повышение скорости исполнения, а повышение скорости загрузки скрипта с сервера на клиент за счёт уменьшения его размера. В случае обфускации - ещё и усложнение реверс-инжиниринга. И то и другое имеет слабое отношение к ускорению выполнения скрипта. Если требуется ускорить выполнение, лучше потратить свои усилия на оптимизацию кода, а не его минимизацию. Изменено 3 Августа 2016 пользователем Kirgudu 1 1 1 Инструмент Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 3 Августа 2016 Поделиться Опубликовано 3 Августа 2016 Вообще-то стоит еще понимать разницу между интерпретируемым и компилируемым кодом. И помнить, что такое инлайн, и где он есть, а где его нет. P.S. Идея копировать строки при передаче в функцию - явно не гуманности ради была реализована. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 27 Августа 2016 Поделиться Опубликовано 27 Августа 2016 p = t[k] or def[k] Если нет ни того, ни другого, у p сохраняется старое значение. 1.006 "Международный" с "макронопатчем". 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Nazgool 250 Опубликовано 7 Октября 2016 Поделиться Опубликовано 7 Октября 2016 (изменено) @Dennis_Chikin, Ещё с момента публикации хотел спросить, - "И зачем это нужно в принципе?"Я к чему. Все уже давно привыкли, что если нет ни того ни другого, то будет nil. И когда я так напишу, то и буду ожидать что 'p' станет 'nil'-ом. А оно не станет. Такое многим не понравиться. Lua stalker-а и без этого сильно не предсказуема. Хотя-я-я. В этом же стиле. Так что можно. А-а-а. Чего пишу-то. Пишу любителям SciTE. Замутил тут одну штуку. Давно хотел, да плевал, а тут вот ""з`явилася нагода". В общем добавил в меню 'Tools" выбор разных версий lua и быстрое переключение на эти версии с изменением подсветки синтаксиса и т.д. Дело в том, что все актуальные версии для платформ x86 и x64 у меня есть, а вот для luajit 1.1.5 есть только одна. На x86 у меня работает, значит нет для x64 (я имею в виду бинарники). Может у кого-то завалялась? Другие версии JIT (1,1,6-1,1,8) не интересуют. Да, если кому-то это нужно в SciTE, то милости прошу. Доделаем как это будет нужно и в конце концов правильно. А то леплю тут как придется Изменено 7 Октября 2016 пользователем Nazgool Ссылка на комментарий
abramcumner 1 159 Опубликовано 7 Октября 2016 Поделиться Опубликовано 7 Октября 2016 @Nazgool, luajit 1.x.x был же только под x86. Другие платформы появились только в luajit 2. Ссылка на комментарий
Nazgool 250 Опубликовано 7 Октября 2016 Поделиться Опубликовано 7 Октября 2016 @abramcumner, Вот я и думаю, почему у меня есть все, а этой нет. Спасибо. Буду знать и не искать Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 8 Октября 2016 Поделиться Опубликовано 8 Октября 2016 И когда я так напишу, то и буду ожидать что 'p' станет 'nil'-ом. А оно не станет. Такое многим не понравиться. А уж как я удивился, когда 5 лет работавший скрипт начал то чудеса выдавать, то вообще вылеты от сравнения таблицы с намбером... Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Zander_driver 10 334 Опубликовано 17 Октября 2016 Поделиться Опубликовано 17 Октября 2016 И чем дальше будут продвигаться успехи двиглоправов, тем больше там будет таких подводных камней сюрпризов, надо полагать? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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 Опубликовано 18 Октября 2016 Поделиться Опубликовано 18 Октября 2016 А уж как я удивился, когда 5 лет работавший скрипт начал то чудеса выдавать, то вообще вылеты от сравнения таблицы с намбером... Я точно помню, что тебе про это говорил еще когда ты со скриптом динамической погоды возился, у меня тогда он летал как фанера вот как-раз поэтому . У меня такое всегда дает nil, поэтому такие твои конструкции я тогда переписал на горячо тобою любимые cfg_get_string. Впрочем да, @Nazgool совершенно верно подметил про сталкерский луа, конкретно у нас есть абсолютно такой, наверное, пример который можно в учебники писать. Патерн есть один не нормальный, приведя его к нормальному виду луа радуется, а обычный сталкерский луа ругается. Опытным путем, установкой нового luajit (2.1.0), получена эта народная забава, патерн не работающий на каноничном luajit прекрасно заработал на новом, да еще как! То есть я веду к тому, что не стоит пытаться кого-то чем-то зацепить, но вот так вот есть и с этим ничего не поделать, логика работы действительно разная, причем как в явных моментах (исходя из официальной документации), так и в неявных., такой вот да, шарм сталкерского луа. Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 14 Ноября 2016 Поделиться Опубликовано 14 Ноября 2016 (изменено) Добрый день. Есть переменная и таблица заполненная значениями. Размер таблицы 26 элементов.Мне нужно проверить равно ли значение переменной значению элементов таблицы. Проверить с помощью конструкции if. Элементов аж 26, мне нужно все элементы перебирать или есть какой-то более простой способ?На ум приходит только это: for i=1, #tbl_name do if (tbl_name[i] == variable_name) then -- Наши действия... -- Остановили цикл: break end end Изменено 14 Ноября 2016 пользователем Kober(BRUC) Ссылка на комментарий
Zander_driver 10 334 Опубликовано 14 Ноября 2016 Поделиться Опубликовано 14 Ноября 2016 Ну в данном случае, так и делается.В некоторых случаях, если заранее известно что надо будет искать определенный элемент таблицы, проверять есть ли такой или нету, можно записывать данные не в значения, а в ключи таблицы. Например: local tbl = {} tbl["text_1"] = true tbl["text_2"] = true if tbl.text_1 then -- Наши действия... end Плюс такой конструкции в отсутствии цикла, но это не всегда применимо, требуется изначально затачивать таблицу под такие действия. 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. Ссылка на комментарий
User_X.A.R26 261 Опубликовано 22 Ноября 2016 Поделиться Опубликовано 22 Ноября 2016 Элементов аж 26, мне нужно все элементы перебирать или есть какой-то более простой способ?Вот статейка, в которой рассказано об аналоге оператора switch в ЯП по типу C\C++\C#\etc. Возможно найдёшь в ней что-то полезное для себя 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 24 Января 2017 Поделиться Опубликовано 24 Января 2017 Помнится, когда-то давно была рубка по поводу string.*( s, ... ) vs. s:*( ... )Сегодня внезапно обнаружил, что for ss in s:*() пытается скорее получить что-то из s, чем из s:*(){2.0}Удивился. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Kirgudu 1 217 Опубликовано 24 Января 2017 Поделиться Опубликовано 24 Января 2017 @Dennis_Chikin, local s = "test" for ss in s:gmatch("s") do print(ss) end ожидаемо возвращает "s". В чём подвох? Или не это имелось в виду? Инструмент Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 24 Января 2017 Поделиться Опубликовано 24 Января 2017 (изменено) LUA какой ? Сталкеровский ? Судя по работающему print(ss) - скорее нет. Изменено 24 Января 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти