Stalk15
Я тебе про то, что значение bHas станет либо true, либо false (в функции для чего return'ы то стоят). Если значение true - есть все итемы в указанном тобой количестве.
Darien Fx
По поводу осторожности при работе с таблицами - полностью согласен.
Однако и удивляться по поводу "неверной" длины НЕ стОит. Ошибка НЕ в таблице операторе/функции определения размера тублице, а в его трактовке самим программером.
Если таблица имеет n полей с числовым значением, это количество и является размером таблицы. Иначе размером является самый большой числовой индекс со значением не-nil в таблице.
Так что ... можно занИлять хоть все эл-ты в таблице кроме последнего - ее размер, т.е. кол-во полей (хоть т с nil-значением) все равно будет прежним.
t[1] = nil - это НЕ удаление поля, а 'чистка' значения поля, БЕЗ измененния размера таблицы. table.remove - это уже 'чистка' поля таблицы (естественно и значения поля), т.е. изменение размера таблицы!
Так что внутри циклов использовать 'table.remove' действительно не стОит, а вот 'зачищать' поля/значения nil'ами вполне допустимо.
Ну а если программеру потребен НЕ размер таблицы, а кол-во полей/элементов с не-nil значением - то это уже итерацией по таблице делается или какой-нить сортировкой, что эквивалентно итерации.
Привет народ! Подскажите. Я взял из Сталкера "Зов Монолита" ogf модель м16 и текстуры её. Попытался внедрить в игру "Скрытая аномалия", всё сделал как при создании базового оружия. Но у меня всёравно плюётся игра.:-(
А конфиг-то ты выдрал?Лежит обычно в конфиг-веапонс (что за хрень у меня уже второй день язык не меняется о_О).Если ты прописовал модель стандартному конфигу,то насколько я знаю,работать ствол не будет.И ещё выдерни звуки,или положи в нужное место свои(звуки можно посмотреть в кофниге).
Хренову тучу времени потратил на столь элементарную вещь. Оказывается, оператор условия (в LUA) обязательно должен иметь только такую конструкцию:
IF .. THEN .. ELSE .. END
либо, без иначе
IF .. THEN .. END
В противном случае весь файл скрипта тупо не выполняется, причём без выдачи синтаксической ошибки.
Например я постоянно пытался использовать конструкции
IF .. THEN при использовании всего лишь одиного операнда, после чего не закрывал END-ом
либо
IF .. THEN оператор1, оператор2..
закрывая END-ом для дальнейшего использования ELSE .. END
Что оказалось в корне неправильно. IF всегда надо закрывать END-ом, а перед ELSE его ставить не надо.
Интересно у когонить такие геморои были, или это я один такой?
Alex-San
Может и не один, но тот кто читал мануалы по LUA знает:
Структуры управленияif, while и repeat имеют обычное значение и знакомый синтаксис:
stat ::= while exp1 do block end
stat ::= repeat block until exp1
stat ::= if exp1 then block {elseif exp1 then block} [else block] end Примечание: Выражение exp1 условия структуры управления может возвращать любое значение. Все значения, отличные от nil, рассматриваются как истина, только nil считается ложью.
С чего ты взял, что можно НЕ закрывать if в кодах Сталкера, который имеет, хоть и кастрированный, но компилятор LUA, - не ясно.
Ошибку и не должен выдавать, т.к. что все 'после then' считает block'ом ... до конца скрипта.
Фух, разобрался с нет пакетом для НПС :-) Пришлось помучиться с этим UPDATE, но amk и m_net_utils скрипты спасли.
Ещё интересно, что если установить сид НПСу пакетом, то он присвоится ему только после перезагрузки сейва / игры.
Кстати, никогда не понимал смысла двоетичий '::', которые в оф. справке чуть ли не в каждом примере.
отредактировал(а) Darien Fx: 14-07-2010 15:35 GMT3 час.
Darien Fx: ... если установить сид НПСу пакетом, то он присвоится ему только после перезагрузки сейва / игры
Неверный вывод.
Любой параметр, перезаписанный через нет-пакеты вступает в силу сразу же(!), пишешь же напрямую на 'сервер'.
Иной вопрос, что читать эти параметры с клиентских объектов следует с задержкой.
Приведи пример, на котором ты сделал ошибочный вывод. По парным двоеточиям в мануалах не просто пояснить, считай их верхним уровнем присвоения для конструкций. В Сталкере врядли понадобится, если не заниматься, например, инкапсуляцией иных языков в компилятор.
Artos
Установи**5001c54314580bda8be6**
...[/code]
В актор апдейт (что бы как только, так сразу):
[code]local npc = level_object_by_sid(93)
if npc then
get_console():execute("load # сид установлен")
end[/code]
Видимо не дождался. Но теперь понятно.
у меня вопрос. Как создать такого нпс, который будет все игнорировать (всех других НПС и мутантов) и чтоб те в свою очередь игнорировали этот вид НПС, плюс чтоб аномалии не действовали на этого НПС?
Last Day Mod Team work |==>>>ПОСЛЕДНИЙ ДЕНЬ
Кто понял с первого раза,
Тот ловит музу,
Когда каждая фраза
Ломает все сразу.
Интересно, а что нельзя получается просто денег у ГГ минусануть? Пробовал так:
db.actor:money() = db.actor:money() - какаянить_сумма
весь файл скрипта тупо нафиг не робит((( и ведь главно падла и не посылает, а молча так весь кусок кода в игнор. Принебрегает типо, ох уж и вредная дефка эта ЛУА, я с ней заэтасомовался))
Кончено можно и трансфертить бабло, и так наверно более правильно, но тут уже дело в принципе - "Нэ могут или нэ хотят?"
2 АРТОС
НАсчёт ЛУА-доков, ты конечно прав, в принципе. А по сути, у меня такаяже байда как и прежнего оратора, конструкции в описании типа"::" выводят меня из себя и наводят на мысли что их писали таджикские программисты)
Alex-San db.actor:money() = db.actor:money() ... --/ какая-то ... чушь! local iMoney = db.actor:money()--/ кол-во денег у актора db.actor:give_money(iMoney)--/ 'просто' дать денег актору db.actor:give_money(-iMoney)--/ 'просто' забрать деньги у актора db.actor:give_money(-db.actor:money())--/ 'просто' забрать все деньги у актора Читая мануалы, НЕ стоит пытаться сразу понять все и чертыхаться на непонятное. Многое становится понятно после неоднократного прочтения и при практической необходимости ...
Мой ник: Artos
И не стОит ники ни 'шифтовать', ни переводить на русский. Пишется так, как пишет владелец ника. Это и элеменарная сетевая этика и собственно: любое изменение в написании ника - это уже другой ник. Dietrich2009
У win win не как у всех, это НЕ 'лета', а кол-во месяцев (108:12=9) ... ;-)
Помогите плиз,как поставить визуал противогаза из вида от первого лица...Текстуры есть,просто надо как-то прописать "голым" костюмам путь на текстуру...Всмысле,что в моде есть костюмы с видом из маски,но на некоторых костюмах вида нету,а мне нужно еще парочке поставить...Юзаю мод Жесть.
Ну что сразу чушь то) Просто моё изучение програмирования в детстве закончилось на самом подходе к ООП, ну просто тогда они только появлялись. Посему процедурные замашки мне ближе к телу). Кстати для меня с моим "процедурным" детством, как раз конструкция типа
db.actor:give_money(-iMoney)
выглядит бредом. Ну чтож , будем адаптироваться) Кстати только что видел подобный метода в сырцах, малям не хватило самому допереть. Так что опять зенкую.
А насчёт имени, мне протсо так проще писать. Никакого другого смысла я в это не вкладываю.
добавлено спустя 1 минуту
2 ARAGORN666
Эт наврядли, 3-тий вид в Сталкере с рожденья кривой. А жаль(
отредактировал(а) Alex-San: 14-07-2010 18:13 GMT3 час.
#Artos : Alex-San db.actor:money() = db.actor:money() ... --/ какая-то ... чушь! local iMoney = db.actor:money()--/ кол-во денег у актора db.actor:give_money(iMoney)--/ 'просто' дать денег актору db.actor:give_money(-iMoney)--/ 'просто' забрать деньги у актора db.actor:give_money(-db.actor:money())--/ 'просто' забрать все деньги у актора
Не робит твоя конструкция. Как ты постоянно говоришь - "читаем ЛУАхелп", а там указано :
function money();
тоесть это метод который возвращает (от обьекта игры) количество денег, и только. Никакие параметры это функции НЕ ПЕРЕДАЮТСЯ!
Отсюда вопрос остаётся открытым - КАК СКРИПТОМ ПРИБАВИТЬ ГГ ДЕНЕГ?
Alex-San
Так а никто в money() и не передаёт парметры, им только получают текущее количество. Кол-во денег, которое ты хочешь плюсануть, передают в give_money(number). Т.е. так db.actor:give_money(1000) ты 'выплатишь' актору косарь.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.