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 Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Апреля 2010 Поделиться Опубликовано 27 Апреля 2010 из функции, я получил имена всех объектов инвентаря,и их надо вывести в окно Так и в чём проблема? Метод статика SetText(<текст для вывода>). Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Struck 61 Опубликовано 29 Апреля 2010 Поделиться Опубликовано 29 Апреля 2010 malandrinus, я туплю видать , мне в скобках писать вызов своей функции? Ссылка на комментарий
Malandrinus 615 Опубликовано 30 Апреля 2010 Поделиться Опубликовано 30 Апреля 2010 (изменено) Struck, Не понимаю я твоего вопроса. Ты хочешь визуализировать список предметов из инвентаря, так? Тебе надо: - перебрать предметы в инвентаре, получить их имена, секции, идентификаторы, что угодно. - сформировать из этих имён одну строку с разделителями "\n" - создать статик и установить его текст функцией SetText(<собранная ранее строка>) что из перечисленного вызывает сложность? Изменено 30 Апреля 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
DiXares 1 Опубликовано 30 Апреля 2010 Поделиться Опубликовано 30 Апреля 2010 Как сделать типа массива объектов и занести в него все предметы актора? Массив так делается?: local massiv_objects = {} Ссылка на комментарий
Malandrinus 615 Опубликовано 30 Апреля 2010 Поделиться Опубликовано 30 Апреля 2010 TREWKO, Да так. Заносишь объекты функцией table.insert или как в ассоциативный массив по ключу. А вообще тебе сюда Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
DiXares 1 Опубликовано 30 Апреля 2010 Поделиться Опубликовано 30 Апреля 2010 Это теперь понятно, а как отследить все объекты инвентаря? Ссылка на комментарий
Darien 0 Опубликовано 30 Апреля 2010 Поделиться Опубликовано 30 Апреля 2010 TREWKO local massiv_objects = {} function check() npc:iterate_inventory(function (tmp, item) if item then table.insert(massiv_objects, item:section()) end end, npc) end Где npc - онлайн НПС. Функция заполнит таблицу названиями итемов из рюкзака. Ссылка на комментарий
Ирбис 183 Опубликовано 1 Мая 2010 Поделиться Опубликовано 1 Мая 2010 Прошу помощи по следующим вопросам : 1 Что именно писать в строчке экшн скелета диалога чтобы при нажатии этого диалога нпс бил по лицу?требуется именно название конкретной функции скрипта rx_facer 2 Где и что прописать для получения скриптового запрета на сон во время выброса?Из огсм уже пробовал - ругается на новые строчки,не знаю почему,поэтому прошу подсказать какие именно строчки нужны. 3 Как исправить вылет при переходе на новые локации из за динамических аномалий?где что прописывать?при переходе игра ругается на скрипт аномалий и указывает на "?" . 4 Как поставить скриптовую заплатку от вылета который происходит когда при уже полном поясе нажать на патроны 2 раза?чтобы игра при заполненных ячейках не вылетала при нажатии а просто не реагировала. Замедляю полураспад души стержнями музыки Ссылка на комментарий
Гость max_max_08 Опубликовано 2 Мая 2010 Поделиться Опубликовано 2 Мая 2010 По третьему можно попробовать уменьшить радиус алайф. Ссылка на комментарий
AKKK1 6 Опубликовано 4 Мая 2010 Поделиться Опубликовано 4 Мая 2010 А combat_ignore = combat_ignore Непомагает ? 3.3.6. Секция combat_ignore Если NPC в этой схеме то он, не переходит в боевой режим. В любой другой схеме: [walker] combat_ignore_cond = {+info –info =func !func} – условия для игнорирования боя (если написать always, то в данной схеме игрок будет игнорировать бой всегда, пока не перейдет в схему, где бой не игнорируется). как пример часть логики Шустрого ;Шустрый [logic@esc_lager_shustryi] active = camper@esc_lager_prisoner combat_ignore = combat_ignore [camper@esc_lager_prisoner] path_walk = prisoner_walk path_look = prisoner_look combat_ignore_cond = always def_state_campering = prisoner on_info = {=esc_bandits_die} remark@esc_lager_help on_info2 = {+tutorial_wounded_give_info} sleeper4@esc_lager meet = no_meet danger = danger_condition@shustryi Ссылка на комментарий
andrewrap 1 Опубликовано 4 Мая 2010 Поделиться Опубликовано 4 Мая 2010 combat ignore секция должна работать, сам ставил новому нпс, он игнорирует всё. А как выглядить логика снайпера, который стоит и стреляет, не двигаясь? Разработка Andrew's Pack Mod V0.5.. Ссылка на комментарий
AKKK1 6 Опубликовано 4 Мая 2010 Поделиться Опубликовано 4 Мая 2010 как-то так свободовец на вышке [camper1@mil_freedom_sniper3] path_walk = camp_walk10 path_look = camp_look10 radius = 20 on_info = {-mil_freedom_under_attack} walker1@mil_freedom_sniper3 sniper = true wounded = wounded_ignore@mil_sniper [danger_condition@mil_freedom_sniper3] ignore_distance = 0 ignore_types = corpse Ссылка на комментарий
Kirag 39 Опубликовано 5 Мая 2010 Поделиться Опубликовано 5 Мая 2010 andrewrap Чтобы совсем не двигался... По-хорошему, надо бы новую комбат-схему написать, она давным-давно востребована. Логика на словах простая - "стой, придурок, где поставили, и стреляй во все, что заметишь". В принципе, в комбат-схеме зомбей есть что-то похожее - в тот момент, когда зомб знает, где цель, и эта цель близко, он именно так себя и ведет. Жаль, у меня руки коротки в АИ копаться... Спецы по АИ возьмите на заметку, плиз Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Arhara 32 Опубликовано 7 Мая 2010 Поделиться Опубликовано 7 Мая 2010 AKKK1, Уж лучше использовать логику Крота - тому вообще всё до фени - и враги, и монстры. Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
AKKK1 6 Опубликовано 9 Мая 2010 Поделиться Опубликовано 9 Мая 2010 Arhara да действительно так кто нибуть знает что означает выделенная секция [2212] ; cse_abstract properties section_name = smart_terrain name = val_smart_bandit_3 position = -157.100021362305,1.30701446533203,-187.956161499023 direction = -0.0479185096919537,0.00413977820426226,0.0862113907933235 ; cse_alife_object properties game_vertex_id = 862 distance = 9.09999942779541 level_vertex_id = 8628 object_flags = 0xffffff3e custom_data = <<END [smart_terrain] type = general_lager capacity = 5 communities = dolg cond = {+bar_darklab_document_done} stay = medium [random_task] defend_target = 3001 END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 1 ; cse_alife_space_restrictor properties restrictor_type = 0 ; se_smart_terrain properties Ссылка на комментарий
gruber 2 481 Опубликовано 9 Мая 2010 Поделиться Опубликовано 9 Мая 2010 Пару раз в игре встречал НПС манекены-т.е стоит без движения толкнуть-падает интересно как это реализовано (такие есть на арене и Сидорович на ЧАЭС2) Ссылка на комментарий
Сталкер@Гашетка 0 Опубликовано 10 Мая 2010 Поделиться Опубликовано 10 Мая 2010 Рассжуйте пожалуйста: что и как отвечает за спаун оружия в ЗП на локах (какие файлы). Еслы быть точнее: как сделать чтобы на одной Локации у неписей были только Хлам, на Другой получше встречались пушки! Как дать торговцам знаю, а как всем неписям? Неругайтесь сильно, ибо научился только изменить стартовый инвентарь ГГ и ассортимент торговцев остальное юзаю потихоньку . КРУЧУ... ВЕРЧУ... - ВЫИГРАТЬ ХОЧУ!!! Ребята, хоть я не из Долга, и не поощряю их действий! Но впоследнее время мутанты совсем оборзели! Давайти с ними бороться, ибо Сталкер, никогда не должен терпеть это отродье! Мы должны Будить их и уничтожать - непроходим мимо, неждем пока они не размножились, и не сожрали нас совсем! Сократим порождения ЗОНЫ в виде: бюрреров, кровососов, псин, Хомячков, и прочего дерьма, что набежало сюда и чуствует себя как дома, указывая нам, Сталкерам - что нам делать! Место им - прямиком в АД! Ссылка на комментарий
AKKK1 6 Опубликовано 10 Мая 2010 Поделиться Опубликовано 10 Мая 2010 (изменено) Сталкер@Гашетка Файлы character_desc_general character_desc_zaton character_desc_jupiter character_desc_pripyat character_desc_underpass папка gamedata\configs\gameplay возможно что то в алл спавне напрямую прописанно Изменено 10 Мая 2010 пользователем AKKK1 Ссылка на комментарий
sk0rpi0n 0 Опубликовано 10 Мая 2010 Поделиться Опубликовано 10 Мая 2010 (изменено) Помогите пожалуйста!) Как спавнить аномалии? В ЗП... Мне нужно Без all.spawn, он не распаковывается...не распаковывается тот, который из новых локаций( Изменено 10 Мая 2010 пользователем sk0rpi0n Ссылка на комментарий
Darien 0 Опубликовано 11 Мая 2010 Поделиться Опубликовано 11 Мая 2010 (изменено) sk0rpi0n function spawn() local var = spawn_anom(anom_mine, radius, pos, get_lv, get_gv, power) -- название аномалии, радиус её действия, позиция, лв, гв, мощность end function spawn_anom(anom_name,plosh,position,level_vertex_id,game_vertex_id,powers_a,time_danger os) -- последний параметр не передаём local obj = alife():create(anom_name,position,level_vertex_id,game_vertex_id) local pac = net_packet() obj:STATE_Write(pac) local game_vertex_id = pac:r_u16() local distance = pac:r_float() local direction = pac:r_u32() local level_vertex_id = pac:r_u32() local object_flags = pac:r_s32() local custom_data = pac:r_stringZ() local story_id = pac:r_s32() local spawn_story_id = pac:r_s32() local shape_count = pac:r_u8() for i=1,shape_count do local shape_type = pac:r_u8() if shape_type == 0 then local center = pac:r_vec3() local plosh = pac:r_float() else local box = pac:r_matrix() end end local restrikror_type = pac:r_u8() local powers = pac:r_float() local owner_id = pac:r_s32() local on_off_mode_enabled_time = pac:r_u32() local on_off_mode_disabled_time = pac:r_u32() local on_off_mode_shift_time = pac:r_u32() local offline_interactive_radius = pac:r_float() local artefact_spawn_places_count = pac:r_u16() local artefact_position_offset = pac:r_s32() local last_spawn_time_present = pac:r_u8() if pac:r_elapsed()~= 0 then abort("left=%d",pac:r_elapsed()) end pac:w_begin(game_vertex_id) pac:w_float(distance) pac:w_u32(direction) pac:w_u32(level_vertex_id) pac:w_u32(object_flags) pac:w_stringZ(custom_data) pac:w_s32(story_id) pac:w_s32(spawn_story_id) pac:w_u8(1) pac:w_u8(0) local sphere_center = vector() sphere_center:set(0,0,0) pac:w_vec3(sphere_center) pac:w_float(plosh) pac:w_u8(restrikror_type) if powers_a ~= nil then powers = powers_a end pac:w_float(powers) if time_dangeros == nil then owner_id = bit_not(0) else owner_id = time_dangeros end pac:w_u32(owner_id) pac:w_u32(on_off_mode_enabled_time) pac:w_u32(on_off_mode_disabled_time) pac:w_u32(on_off_mode_shift_time) pac:w_float(offline_interactive_radius) pac:w_u16(artefact_spawn_places_count) pac:w_u32(artefact_position_offset) pac:w_u8(last_spawn_time_present) pac:r_seek(0) obj:STATE_Read(pac,pac:w_tell()) return obj end Вызывать функцию spawn(). А да, при приближении к ней экран не будет приобретать цвет например пси-воздействия(электра) или жарки. За такие эффекты на экране отвечает ещё один тип аномалий со словом '_field_', который не наносит хита. Я делал так - проверял, какая эта аномалия через string.find(поиск знаков/букв в строке), и спавнил в эту же точку аномалию 'field' с соотв. эффектом. Изменено 11 Мая 2010 пользователем Darien Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти