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

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

Разумеется в приведёном примере надо выкинуть98% кода, но такой подход активно используется в модах. Вы же не думаете, что являетесь единственным, кто сталкивался с такой задачей?

 

Ладно, объясню.

Любому методу можно найти замену.

И я нашел, в моем случае артефакт просто работает из рюкзака(что вполне реалистично), а скрипты лишний раз не грузят апдейт актора.

И да, знаю что не я 1 с этим сталкивался. Но раз суть проблемы такова - подойдем к ней с другой стороны.

Не в обиду автора сего кода, но костыли использовать не очень хочется. Ну понятно дело без них никак, но чем меньше тем лучше.

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

Не соответствует правилам.

Ссылка на комментарий
костыли использовать не очень хочется

Вы мне не объясните, что такое "костыли"? Я понимаю, что это какой-то местный сленг, просто хотелось бы точно знать его значение, чтобы понять суть проблемы.

А по существу? Вы пошли своим путём, на мой взгляд не самым оптимальным, но это не очень важно. Главное Вы сами нашли решение. это замечательно.

Изменено пользователем Serge!
Ссылка на комментарий
А по существу?

Приспособил свой "костыль" (раз уж так это называется) :)

 

CRAZY_STALKER666

Я всё же спрошу на всякий случай про твой вопрос http://www.amk-team.ru/forum/topic/6185-skriptovanie/page-402#entry1048162.

Тебе конечно ответили что именно нужно сделать.

Я только не понял, - ты хочешь узнать почему так? Или уже знаешь? Ну или, как вариант, не хочешь знать?

Изменено пользователем Nazgool
Ссылка на комментарий

 

 

Я только не понял, - ты хочешь узнать почему так? Или уже знаешь? Ну или, как вариант, не хочешь знать?

Эмм... Отвечу:

Почему так получилось - не знаю. Узнать хочу. 


 

 

Вы мне не объясните, что такое "костыли"?

Костыль - метод-затычка, который помогает дойти до цели не самым умным\оптимальным\разумным\глюченым путём.

В данном случае, лично мне, не очень понравилось то что игре придется каждую итерацию цикла инвертарь ГГ перебирать. А вдруг там гора всего лежит?

Была бы возможность использовать X-Ray Extentions - было бы замечательно, но увы, такой возможности нет...

Не соответствует правилам.

Ссылка на комментарий

В данном случае, лично мне, не очень понравилось то что игре придется каждую итерацию цикла инвертарь ГГ перебирать. А вдруг там гора всего лежит?

Каждую итерацию не надо, артефакты сами с пояса на пояс не скачут. Надо только после закрытия инвентаря.

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

Ссылка на комментарий

 

 

Вы мне не объясните, что такое "костыли"?

Допустим задача. Засунуть объект в слот, скриптом.

Можно:

1) Написать в движке/взять готовый движковый метод. Для взятия указанного объекта в слот. Вызываем его - цель выполнена.

2) Написать комплекс скриптов, которые удаляют то что в слоте сейчас, удаляют то что из инвентаря надо положить в слот, затем спавнят то что надо положить в слот - т.к. слот пуст, оно туда автоматически запрыгивает, затем спавним то что из слота извлекли в инвентарь, и еще не забыть всякие свойства-параметры вроде заряженных в ствол патронов и нацепленных глушителей не потерять. Вот это - костыль.

Куча действий для достижения искомой цели окольными путями, с выполнением кучи всякого, не относящегося к поставленной задаче напрямую. Однако работает, и поставленную задачу - выполняет.

  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Народ, помогите обьяснить магию 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) 

То получим код, который уже не работает! По крайней мере чекер синтаксиса ругаеться непонятно на что...

Может я просто слепой, и не вижу очевидной вещи? Подскажите, пожалуйста.

Не соответствует правилам.

Ссылка на комментарий

@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
Изменено пользователем nasar75
  • Спасибо 1

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

Ссылка на комментарий

@CRAZY_STALKER666, нет там у тебя трёх «end». Есть это:

return true AND db.actor:give_info_portion("bar_bandit_death_all")
то есть на возврат идёт результат логического умножения true и результата выполнения функции. Не путай «and» и «end».

Почему синтакс-чекер ругается при замене функции? Возможно, ты просто делаешь опечатку, например, ошибочно ожидая третий «end», его и ставишь.

  • Спасибо 1
Ссылка на комментарий

Добрый день. Получаю из файла значение:

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"?

Моя цель, создать массив с значениями из ключа.

Изменено пользователем Kober(BRUC)
Ссылка на комментарий

@Kober(BRUC), наверно, ты хотел написать ini_file, а не system_ini?

Возвратит как одно значение, т.е. все, что там написано:

"One", "Two", "Three"

Если нужен массив, то разбивай строку по запятым, обрезая пробелы, через string.gfind или string.gmatch. Готовые функции для этого видел где-то в "Сборочном цехе" Изменено пользователем naxac
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

 

 

наверно, ты хотел написать ini_file

Да, именно так и хотел.

 

 

 

Возвратит как одно значение

То есть переменная будет равна этому?:

local names = "\"One\", \"Two\",\"Three\""
Ссылка на комментарий

Я помню, в моде АМК неписи крайне активно шарились по чужим тайникам, если они не были спрятаны черт знает куда. А сейчас играю в Зов Чернобыля, где такого нет. Вопрос - какой скрипт в АМК отвечал за обшаривание неписями тайников и как его без каких-либо загвоздок адаптировать к Зову Чернобыля? Если укажете хотя бы название скрипта(скриптов) - буду крайне признателен

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

Ссылка на комментарий

 

 

без каких-либо загвоздок адаптировать к Зову Чернобыля?

Без загвоздок не прокатит.

watcher_act.script

Не соответствует правилам.

Ссылка на комментарий

@CRAZY_STALKER666, если будут - то я обращусь сюда, чтобы помогли узнать причину) Спасибо большое.

 

@CRAZY_STALKER666, кстати, а за что вообще отвечает этот скрипт?

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

Ссылка на комментарий

Добрый день. 

Информация была взята из этого поста.

В save(bind_monster) сохраняю значение переменной:

packet:i_bool(self.inventory)

И соответственно в load получаю:

self.inventory = reader:i_bool()

Правильно ли я всё понял? 

Ссылка на комментарий

@Kober(BRUC),

packet:w_bool(self.inventory)

self.inventory = reader:r_bool()
От слов write (w_) и read (r_). Непонятно, откуда ты i_bool взял, разве что опечатка.

Кроме того, чтение из пакета этой переменной должно быть ровно в том же месте, что и запись в него (соблюдение порядка). Ну и переменная self.inventory при записи должна иметь значение.

Изменено пользователем Kirgudu
  • Спасибо 1
Ссылка на комментарий

@Kirgudu, nil - считается значением?

Про порядок. Допустим я сохранил первую переменную, а затем вторую. У нас появилась своеобразная очередь. Но нам доступен только конец очереди. То есть вторая переменная.?

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

×
×
  • Создать...