Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Stalk15 27 Опубликовано 4 Января 2011 Поделиться Опубликовано 4 Января 2011 TRAMP14 Заюзай-ка ты програмку lua_cheker. Она ищит синтаксические ошибки. Сам пользуюсь регулярно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546162
TRAMP14 1 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 Я использовал 56 ошибок и ни одной я не понял Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546338
_Призрак_ 11 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 У луа_чекера есть такой грешок - он показывает ошибок больше чем есть. У меня бывало в скрипте по 50 ошибок - исправил 5-6 и луа чекер ни одной не нашел. Freedom Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546394
TRAMP14 1 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 Счас запусти тетсить новый скрипт - я вижу ошибок 2 (сам допустил специально) а он ни одной не нашёл Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546401
_Призрак_ 11 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 Это смотря какие ты ошибки сделал. Если ты написал вместо create - reate то луа чекер даже не заикнется. А если ты end пропустишь то он ругнется. Чекер указывает только на синтаксические ошибки Freedom Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546413
@"StreloK" 2 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 Здравствуйте может кто подсказать в чём ошибка - создал нпс, прописал ему путь патрулирования, а он стоит на одном месте и никуда не идёт. [ohran_dok_ohr1_look] points = p0,p1 p0:name = wp00 p0:flags = 0x1 p0:position = -72.874565,2.859914,241.272919 p0:game_vertex_id = 986683 p0:level_vertex_id = 4385 p1:name = wp01 p1:flags = 0x2 p1:position = -59.896366,2.236728,260.096558 p1:game_vertex_id = 101436 p1:level_vertex_id = 4385 [ohran_dok_ohr1_walk] points = p0,p1 p0:name = wp00 p0:flags = 0x1 p0:position = -72.874565,2.859914,241.272919 p0:game_vertex_id = 986683 p0:level_vertex_id = 4385 p0:links = p1(0) p1:name = wp01 p1:flags = 0x2 p1:position = -59.896366,2.236728,260.096558 p1:game_vertex_id = 101436 p1:level_vertex_id = 4385 p1:links = p0(1) [smart_terrains] none = true [logic] active = walker [walker] path_walk = ohran_dok_ohr1_walk path_look = ohran_dok_ohr1_look ПС Может ошибка из-за того что нпс спавнится из секции болот от ЧН, а сам находится на болотах из билда? Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546475
TRAMP14 1 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 (изменено) АААА ну я имя функции написал а саму функцию нет Строгое предупреждение от модератора kokkai Общение в таком духе следует вести в личке Добавлено через 68 мин.: проверьте пожалуйста функцию function delslot() local mel = db.actor:item_in_slot(3) local oItem = db.actor:object(mel) if oItem then db.actor:drop_item(oItem) alife():release(alife():object(oItem:id()), true) end end Функция удаления предмета находящегося в слоте. Составлял так. на коленке но мож правильная Изменено 5 Января 2011 пользователем kokkai Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546510
Garry_Galler 7 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 TRAMP14 Неправильная - метод object() (класса game_object) принимает как аргумент либо строку (секцию) либо число(порядковый номер в инвентаре). А ты ему пытаешься юзердату скормить. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546628
TRAMP14 1 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 (изменено) А как тогда? Сообщение от модератора kokkai Старайтесь избегать таких постов. Если не получаете удовлетворительного ответа, лучше задать вопрос уже в личке. Изменено 5 Января 2011 пользователем kokkai Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-546657
ColR_iT 171 Опубликовано 5 Января 2011 Поделиться Опубликовано 5 Января 2011 @"StreloK", могу предположить, что это не есть ошибка, а лишь непонятный косяк вызваный вот этим: p0:links = p1(0) напиши вместо этого так:p0:links = p1(1) и я уверен на 99% что у НПС появится дар "ходить". Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-547173
Garry_Galler 7 Опубликовано 6 Января 2011 Поделиться Опубликовано 6 Января 2011 (изменено) function delslot(slot) local item = db.actor:item_in_slot(slot) if item then db.actor:drop_item(item) -- дропить по моему не обязательно - я без этого обхожусь alife():release(alife():object(item:id()), true) end end Изменено 6 Января 2011 пользователем Garry_Galler Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-547538
TRAMP14 1 Опубликовано 8 Января 2011 Поделиться Опубликовано 8 Января 2011 Помогите заспавнить дом (здание типа как на АТП двухэтажное). Как мне всёравно - можно через скрипт, можно через спавн. Хочу базу для группировки сделать. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-548538
gruber 2 481 Опубликовано 8 Января 2011 Поделиться Опубликовано 8 Января 2011 (изменено) TRAMP14, Дом заспавнить можно(см прибой стори),но он как динамический объект не будет восприниматся нпс как препядствие и они все время будут пытатся пройти сквозь стену,в прибой стори эти дома как ловушка-там постоянно кто то застревает,да и аномалии там не редкость динамическиие есть правда выход (в том же прибое в некоторых местах) окружить место зоной и заставить нпс обходить ее(но тогда внутрь не зайдут) Изменено 8 Января 2011 пользователем gruber Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-548544
TRAMP14 1 Опубликовано 9 Января 2011 Поделиться Опубликовано 9 Января 2011 Появилась новая идея, но опыта нехватает. Можно ли каким нибудь способом запретить использовать определённый тип аптечек? Добавлено через 5 мин.: И есчо - будет такая функция работать? function item() local obj = obj:section() if obj == 'medkit' then alife():create("medkit", db.actor():position(), 1, db.actor:game_vertex_id(), db.actor:id()) end end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-550080
Stalk15 27 Опубликовано 9 Января 2011 Поделиться Опубликовано 9 Января 2011 (изменено) TRAMP14 Чоё ты спрашиваешь, будет работать функция или нет. Сам проверить не можешь? Функция у тебя кривая, что ты ей сделать хочешь? ------------------------------------------------ Сталкер ломать нехочется Чоё? Как ты можешь скриптом игру сломать. Хоть понял, что сказал? Если ты эту свою функцию вызовешь - вылетит. Потому что ты применяешь метод section() к какому-то obj, который у тебя == nil. Изменено 9 Января 2011 пользователем Stalk15 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-550123
TRAMP14 1 Опубликовано 9 Января 2011 Поделиться Опубликовано 9 Января 2011 (изменено) Сталкер ломать нехочется. А так профессионалы сразу скажут что тут неправильно. он у меня и так чудит. p/s/ Что такое - я не могу исправлять свои сообщения ? Сообщение от модератора kokkai Только в течение 15 мин. Добавлено через 29 мин.: Сообщение от модератора kokkai Только в течение 15 мин. Я сообщение написал - заметил ошибку и сразуже хотел нажать "Исправить" но такой кнопки не наблюдается Чоё? Как ты можешь скриптом игру сломать. Хоть понял, что сказал? Если ты эту свою функцию вызовешь - вылетит. Потому что ты применяешь метод section() к какому-то obj, который у тебя == nil. Чай не первый день скриптингом занимаюсь - после создания нескольких неписей (неудачных) чистая игра стала вылетать с вылетами логики. И ещё у бинокля появился индикатор патронов (откуда?) Изменено 9 Января 2011 пользователем kokkai Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-550130
_Призрак_ 11 Опубликовано 9 Января 2011 Поделиться Опубликовано 9 Января 2011 (изменено) TRAMP14 Функция работать не будет так как откуда у тебя появится obj? Расшифровываю: local obj = obj:section() 1. Эта строка может привести луа в бешенство. Лучше назови переменную obj_section 2. Для понятия представим что у тебя написанно local obj1 = obj:section() Откуда ты берешь obj? У тебя функция не принимает каких либо переменных, да и в скрипте ты этот obj никак не определяешь. Поэтому переменная obj1 всегда будет выдавать nil 3. Почему у тебя левел_вертикс =1? Разве так можно? Да и скрипт твой читерский - у тебя получится что ты аптечку использовал и у тебя сразу появляется еще одна в рюкзаке. А действие аптечки идет. З.Ы. По твоей функции видно что ты, так и быть не первый день скриптишь, а второй. Не обольщайся А то что у тебя игра стала вылетать - это обычное дело. Изменено 9 Января 2011 пользователем _Призрак_ Freedom Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-550348
TRAMP14 1 Опубликовано 9 Января 2011 Поделиться Опубликовано 9 Января 2011 Левел вертекс =1 это я с какогото урока скомуниздл функцию спавна в инвентарь. А хочу сделать я многоразовую аптечку только чтоб с каждым разом она меньше лиечила. К томуже - если я проверю у меня будет вылет и я всё равно полезу сюда за советом по решению. Так что лучше выложить щас чем потом копатся в логах. А по второму вопросу? Можно ли каким нибудь способом запретить использовать определённый тип аптечек? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-550420
ColR_iT 171 Опубликовано 9 Января 2011 Поделиться Опубликовано 9 Января 2011 TRAMP14, по поводу функции, у тебя и правда не совсем все правильно. Самый главный вопрос - откуда у тебя obj? _Призрак_ сказал верно, у тебя при использовании подобной функции будет ругань: attempt to index local 'obj' (a nil value) Так что тебе нужно либо в скрипте определить что такое этот obj, либо передоть его в эту функцию как параметр: function item(obj) Ребята действительно правы, не доконца понятно, для чего тебе эта функция нужна? Если просто синтаксически исправить тебе функцию, то вот: function item(obj) local obj = obj:section() if obj == "medkit" then alife():create("medkit", db.actor():position(), db.actor:level_vertex_id, db.actor:game_vertex_id(), db.actor:id()) end end но в таком случае тебе нужно передать в функцию параметр obj. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-550501
TRAMP14 1 Опубликовано 10 Января 2011 Поделиться Опубликовано 10 Января 2011 А я вё время думаю завчем в етих скобках пишт локальные так ето что луа не взбеслся. Можно ли каким нибудь способом запретить использовать определённый тип аптечек? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/65/#findComment-550841
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти