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 Ссылка на комментарий
abramcumner 1 175 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 P.S. Таймеры - не нужны ! ™ На самом деле тот же actor:give_game_news() задержку сам умеет, без всяких таймеров. Так что здесь осталось только по тому, что переносилось когда-то незадумываясь над смыслом переносимого.А give_game_news() с задержкой переживает сейв/лоад? А то так смс "доходить" не будут Ссылка на комментарий
Outfater 288 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 @svarog2741, как именно правильно? Можно здесь скопировать мои "правильные" строчки и показать? И почему вылетает, если правильно? Ссылка на комментарий
svarog2741 83 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 @Outfater, пфф. Извини, но моя психика не позволяет мне всё досконально расписывать. 2 1 НС - шлак, солянки - шлак. Ссылка на комментарий
Dennis_Chikin 3 661 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 2 abramcumner: ну, во-первых, при s/l и с таймером "доходить" не будет, по вполне очевидной причине. Во-вторых, надо проверить, конечно. Ибо голые подозрения к делу не пришьешь. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
abramcumner 1 175 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 2 abramcumner: ну, во-первых, при s/l и с таймером "доходить" не будет, по вполне очевидной причине.По какой? Амкашные таймеры сохраняются при сейв/лоаде. Ссылка на комментарий
Dennis_Chikin 3 661 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 (изменено) Сначала начинает идти игровое время, затем отрабатывают таймеры, потом идет загрузка торговли/озвучки для неписей. А на экране - все еще заставка. upd: не совсем представляю, как можно посчитать апдейты, прошедшие "под заставкой", но субъективно - более одного. Изменено 28 Мая 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
abramcumner 1 175 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 @Dennis_Chikin, ты так говоришь, как будто за время заставки проходит игровой день, а не один апдейт. Ссылка на комментарий
Outfater 288 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 @svarog2741, не позволяет психика? А по моему, ты просто не знаешь как правильно расписать - local porsh игра вообще не видит, нет такой команды. Только зря потратил время... Добавлено Dennis_Chikin, 28 Мая 2015 Я не совсем понимаю, по какой причине здесь кто-либо Вам чем-либо обязан. Документацию по языку можно найти на lua.org, ну или в соответствующей теме. Ссылка на комментарий
svarog2741 83 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 @Outfater,это не команда, а переменная. Её можно назвать как удобно. Я знаю два языка: C++ (ЯП) и Lua(Скриптовый язык). Добавлено svarog2741, 28 Мая 2015 И да, переменные можно как вне функции , так и внутри её регистрировать. НС - шлак, солянки - шлак. Ссылка на комментарий
abramcumner 1 175 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 (изменено) upd: не совсем представляю, как можно посчитать апдейты, прошедшие "под заставкой", но субъективно - более одного.Проверять на апдейте if xr_conditions.black_screen() then --заставка end Можно в это время таймеры не обсчитывать. Изменено 28 Мая 2015 пользователем abramcumner Ссылка на комментарий
Struck 61 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 По поводу фреймов перед стартом игры был занятный баг во многих модах с динамическими новостями, а именно при появлении самой картинки игры сразу валилось несколько сообщений из разных блоков. Подобным кодом это лечилось. @Dennis_Chikin, @abramcumner, мне кажется отклонение времени задержки отправления подобных сообщений не столь критично, как вы тут обсуждаете. @svarog2741, спасибо, но я как-нибудь сам разберусь что мне делать . Кокосячить можешь сколько угодно . Ссылка на комментарий
Outfater 288 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 (изменено) @Dennis_Chikin, да никто мне ни чем не обязан. @svarog2741, просто если не знаешь точно, то лучше не пытаться. Я уже и без луа разобрался как надо и всё сделал (там вообще по другому надо). Но за то, что пытались помочь - спасибо всем. Изменено 28 Мая 2015 пользователем Outfater Ссылка на комментарий
ed_rez 16 109 Опубликовано 28 Мая 2015 Поделиться Опубликовано 28 Мая 2015 Outfater, if has_alife_info ("test1") and has_alife_info ("test2") and has_alife_info ("test3") then smski.poluchil_porshend 1 Ссылка на комментарий
Outfater 288 Опубликовано 29 Мая 2015 Поделиться Опубликовано 29 Мая 2015 @ed_rez, у меня немного не так: if has_alife_info ("test1") and has_alife_info ("test2") and has_alife_info ("test3") then self.object:give_info_portion("test123") end если именно для сообщений на экран, то только через поршень. Ссылка на комментарий
svarog2741 83 Опубликовано 29 Мая 2015 Поделиться Опубликовано 29 Мая 2015 @Outfater,а знаю, но я другими способами делаю. Аля таблицей. НС - шлак, солянки - шлак. Ссылка на комментарий
vampirnik77 121 Опубликовано 31 Мая 2015 Поделиться Опубликовано 31 Мая 2015 Подскажите пожалуйста, как можно повесить метку на way point? Официальная страница проекта Neof-One Crew Ссылка на комментарий
Struck 61 Опубликовано 31 Мая 2015 Поделиться Опубликовано 31 Мая 2015 @vampirnik77, создать в его позиции объект, и на него уже вешать метку, но это выглядит несколько кощунственно. Лучше сразу добавь метод установки метки по координатам. Ссылка на комментарий
vampirnik77 121 Опубликовано 31 Мая 2015 Поделиться Опубликовано 31 Мая 2015 @Struck, А мне так и нужно)) Я в точку вей поинта спавню объект, а вот как на все это дела повещать метку не знаю) Официальная страница проекта Neof-One Crew Ссылка на комментарий
UnLoaded 313 Опубликовано 31 Мая 2015 Поделиться Опубликовано 31 Мая 2015 (изменено) спавню объект, а вот как на все это дела повещать метку не знаю Ф-ции пространства имен level: level.map_add_object_spot_ser(...) level.map_add_object_spot(...) Подробности - как всегда в "Справочнике по ф-циям и классам"... Изменено 31 Мая 2015 пользователем UnLoaded Ссылка на комментарий
vampirnik77 121 Опубликовано 1 Июня 2015 Поделиться Опубликовано 1 Июня 2015 (изменено) Возникла такая проблема, не могу удалить два одинаковых предмета из инветаря, пробовал так: xr_effects.remove_item(db.actor, nil, {"section"}) xr_effects.remove_item(db.actor, nil, {"section"}) и так: for i=1, 2 doxr_effects.remove_item(db.actor, nil, {"section"})end Удаляется только один. И это воистину удивительно, что удаляется хотя-бы один. Ибо сколько не искал в xr_effects удаление предметов, но так и не обнаружил. dc Стандартная функция в Зп. --Функция отнятия предмета у игрокаfunction remove_item(actor, npc, p)if (p and p[1]) == nil then abort("Wrong parameters in function 'remove_item'!!!") endlocal item = p[1]local obj = db.actor:object(item)if obj ~= nil thenalife():release(alife():object(obj:id()), true)elseabort("Actor has no such item!")endnews_manager.relocate_item(db.actor, "out", item)end Телепаты, вообще-то, в отпуске. Это во-первых. Во вторых, ну и зачем, если можно сразу написать local obj = db.actor:object( секция );obj = obj and alife():object(obj:id(); if obj then alife():release( obj, true ) end ? В третьих, логично. По тому как actor:object() два раза подряд вернет один и тот же предмет. если надо удалять сразу несколько, то делать через iterate_inventory()/inventory_for_each() - сформировать список подходящих по секции, затем удалять. dc Принято, понято, спасибо) (отблагодарил бы кнопочкой, но сообщение вроде как мое). Изменено 1 Июня 2015 пользователем Dennis_Chikin Официальная страница проекта Neof-One Crew Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти