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

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

А по существу?

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

 

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 ядер, 32 потока, 5.75 ГГц); 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 - считается значением?

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

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

@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()
то получишь ерунду. Изменено пользователем Kirgudu
  • Спасибо 1
Ссылка на комментарий

@Kirgudu,я возможно не правильно выразился. Но как "очередь", не могу назвать. Воспитанные люди стоят в очереди? Стоят. И не лезут из середины. Вот и здесь так же. Как встали, так и обслужили.

Спасибо.

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

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

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

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

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

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

Войти

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

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

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