Nazgool 250 Опубликовано 16 Ноября 2016 Поделиться Опубликовано 16 Ноября 2016 (изменено) А по существу? Приспособил свой "костыль" (раз уж так это называется) CRAZY_STALKER666 Я всё же спрошу на всякий случай про твой вопрос http://www.amk-team.ru/forum/topic/6185-skriptovanie/page-402#entry1048162. Тебе конечно ответили что именно нужно сделать. Я только не понял, - ты хочешь узнать почему так? Или уже знаешь? Ну или, как вариант, не хочешь знать? Изменено 16 Ноября 2016 пользователем Nazgool Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 17 Ноября 2016 Поделиться Опубликовано 17 Ноября 2016 Я только не понял, - ты хочешь узнать почему так? Или уже знаешь? Ну или, как вариант, не хочешь знать? Эмм... Отвечу: Почему так получилось - не знаю. Узнать хочу. Вы мне не объясните, что такое "костыли"? Костыль - метод-затычка, который помогает дойти до цели не самым умным\оптимальным\разумным\глюченым путём. В данном случае, лично мне, не очень понравилось то что игре придется каждую итерацию цикла инвертарь ГГ перебирать. А вдруг там гора всего лежит? Была бы возможность использовать X-Ray Extentions - было бы замечательно, но увы, такой возможности нет... Не соответствует правилам. Ссылка на комментарий
abramcumner 1 145 Опубликовано 17 Ноября 2016 Поделиться Опубликовано 17 Ноября 2016 В данном случае, лично мне, не очень понравилось то что игре придется каждую итерацию цикла инвертарь ГГ перебирать. А вдруг там гора всего лежит?Каждую итерацию не надо, артефакты сами с пояса на пояс не скачут. Надо только после закрытия инвентаря. Ну и каждый апдейт перебирать не получится - разделитель так быстро не спавнится. Ссылка на комментарий
Zander_driver 10 335 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 Вы мне не объясните, что такое "костыли"? Допустим задача. Засунуть объект в слот, скриптом. Можно: 1) Написать в движке/взять готовый движковый метод. Для взятия указанного объекта в слот. Вызываем его - цель выполнена. 2) Написать комплекс скриптов, которые удаляют то что в слоте сейчас, удаляют то что из инвентаря надо положить в слот, затем спавнят то что надо положить в слот - т.к. слот пуст, оно туда автоматически запрыгивает, затем спавним то что из слота извлекли в инвентарь, и еще не забыть всякие свойства-параметры вроде заряженных в ствол патронов и нацепленных глушителей не потерять. Вот это - костыль. Куча действий для достижения искомой цели окольными путями, с выполнением кучи всякого, не относящегося к поставленной задаче напрямую. Однако работает, и поставленную задачу - выполняет. 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. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 Народ, помогите обьяснить магию Lua-кода. Имеем такую штучку: function bar_bandit_death_cut() if db.actor:has_info("bar_cutbandit_death_l") and db.actor:has_info("bar_cutbandit_death_1") and db.actor:has_info("bar_cutbandit_death_2") then return true and db.actor:give_info_portion("bar_bandit_death_all") end end Она рабочая, задачу свою выполняет. НО На сколько я вижу, тут у нас лишний END. Мы закрываем функцию и условие if, но почему должно быть их 2, а их 3? Далее, если засунуть после строки "return true and" допустим: news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) То получим код, который уже не работает! По крайней мере чекер синтаксиса ругаеться непонятно на что... Может я просто слепой, и не вижу очевидной вещи? Подскажите, пожалуйста. Не соответствует правилам. Ссылка на комментарий
nasar75 3 868 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 (изменено) @CRAZY_STALKER666, может быть, так? function bar_bandit_death_cut() if db.actor:has_info("bar_cutbandit_death_l") and db.actor:has_info("bar_cutbandit_death_1") and db.actor:has_info("bar_cutbandit_death_2") then return true and db.actor:give_info_portion("bar_bandit_death_all") end news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) end или так? function bar_bandit_death_cut() if db.actor:has_info("bar_cutbandit_death_l") and db.actor:has_info("bar_cutbandit_death_1") and db.actor:has_info("bar_cutbandit_death_2") then return true and db.actor:give_info_portion("bar_bandit_death_all") and news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) end end Изменено 18 Ноября 2016 пользователем nasar75 1 AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64 правки Золотой Шар Ссылка на комментарий
Kirgudu 1 204 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 @CRAZY_STALKER666, нет там у тебя трёх «end». Есть это: return true AND db.actor:give_info_portion("bar_bandit_death_all")то есть на возврат идёт результат логического умножения true и результата выполнения функции. Не путай «and» и «end». Почему синтакс-чекер ругается при замене функции? Возможно, ты просто делаешь опечатку, например, ошибочно ожидая третий «end», его и ставишь. 1 Инструмент Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 18 Ноября 2016 Поделиться Опубликовано 18 Ноября 2016 @Kirgudu, всё, вижу) Глаз просто на автомате заменил AND на END) Не соответствует правилам. Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 (изменено) Добрый день. Получаю из файла значение: local ini = system_ini("gamedata//config//settings.ltx") local names = ini:r_string(all,valid_key) Где all - это секция, а valid_key - ключ в этой секции. Что будет, если прописать в ключ несколько значений? Например: [all] valid_key = "One", "Two", "Three" Что в итоге будет содержать локальная переменная names? Одну строку со значением: "OneTwoThree"? Моя цель, создать массив с значениями из ключа. Изменено 19 Ноября 2016 пользователем Kober(BRUC) Ссылка на комментарий
naxac 2 445 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 (изменено) @Kober(BRUC), наверно, ты хотел написать ini_file, а не system_ini? Возвратит как одно значение, т.е. все, что там написано: "One", "Two", "Three"Если нужен массив, то разбивай строку по запятым, обрезая пробелы, через string.gfind или string.gmatch. Готовые функции для этого видел где-то в "Сборочном цехе" Изменено 19 Ноября 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 наверно, ты хотел написать ini_file Да, именно так и хотел. Возвратит как одно значение То есть переменная будет равна этому?: local names = "\"One\", \"Two\",\"Three\"" Ссылка на комментарий
naxac 2 445 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 То есть переменная будет равна этому? Да. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
MegaStalker 66 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 Я помню, в моде АМК неписи крайне активно шарились по чужим тайникам, если они не были спрятаны черт знает куда. А сейчас играю в Зов Чернобыля, где такого нет. Вопрос - какой скрипт в АМК отвечал за обшаривание неписями тайников и как его без каких-либо загвоздок адаптировать к Зову Чернобыля? Если укажете хотя бы название скрипта(скриптов) - буду крайне признателен Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда... Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 без каких-либо загвоздок адаптировать к Зову Чернобыля? Без загвоздок не прокатит. watcher_act.script Не соответствует правилам. Ссылка на комментарий
MegaStalker 66 Опубликовано 19 Ноября 2016 Поделиться Опубликовано 19 Ноября 2016 (изменено) @CRAZY_STALKER666, если будут - то я обращусь сюда, чтобы помогли узнать причину) Спасибо большое. @CRAZY_STALKER666, кстати, а за что вообще отвечает этот скрипт? Изменено 20 Ноября 2016 пользователем BFG Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда... Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 Добрый день. Информация была взята из этого поста. В save(bind_monster) сохраняю значение переменной: packet:i_bool(self.inventory) И соответственно в load получаю: self.inventory = reader:i_bool() Правильно ли я всё понял? Ссылка на комментарий
Kirgudu 1 204 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 (изменено) @Kober(BRUC), packet:w_bool(self.inventory) self.inventory = reader:r_bool()От слов write (w_) и read (r_). Непонятно, откуда ты i_bool взял, разве что опечатка.Кроме того, чтение из пакета этой переменной должно быть ровно в том же месте, что и запись в него (соблюдение порядка). Ну и переменная self.inventory при записи должна иметь значение. Изменено 24 Ноября 2016 пользователем Kirgudu 1 Инструмент Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 @Kirgudu, nil - считается значением? Про порядок. Допустим я сохранил первую переменную, а затем вторую. У нас появилась своеобразная очередь. Но нам доступен только конец очереди. То есть вторая переменная.? Ссылка на комментарий
Kirgudu 1 204 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 (изменено) @Kober(BRUC), не уверен, что попытка записи в нетпакет значения nil, когда ожидается bool, не даст немедленную ошибку или отложенный сбой при загрузке. Пусть лучше кто-нибудь ещё уточнит, у меня нет сейчас возможности проверить. Если ты сохранил в нетпакет 2 переменных друг за другом, то там теперь лежат оба значения. При чём тут очередь? Смысл в том, что в каком порядке ты пишешь значения в нетпакет при сохранении, точно в таком же порядке ты их должен читать при загрузке. В таком же порядке и составе, без пропусков. Грубо говоря, если ты пишешь что-нибудь типа такого (обрати внимание на разные типы и, соответственно, длину значений в байтах): packet:w_bool(self.var1) packet:w_stringZ(self.var2) packet:w_float(self.var3)а потом пытаешься читать так: self.var1 = reader:r_bool() self.var3 = reader:r_float()то получишь ерунду. Изменено 24 Ноября 2016 пользователем Kirgudu 1 Инструмент Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 24 Ноября 2016 Поделиться Опубликовано 24 Ноября 2016 @Kirgudu,я возможно не правильно выразился. Но как "очередь", не могу назвать. Воспитанные люди стоят в очереди? Стоят. И не лезут из середины. Вот и здесь так же. Как встали, так и обслужили. Спасибо. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти