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 Ссылка на комментарий
NaslednikTutti 1 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Добрый вечер! У меня проблема с моими неписями, Спавн НПС проимходит через smart_terrain, они не работают по логике что я им пишу, а тупо сидят на карточках периодически вставая (при этом странно подергиваясь) и потом снова садятся. Когда спавнил через all.spawn все работало. [smart_terrains] none = true [logic] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true Может в конфигах у меня ошибка, посмотрите пожалуйста. Вот конфиг одного из нпс: [escape_187] ; cse_abstract properties section_name = smart_terrain name = esc_blokpost_soldier1_smart position = -131.503113,-30.139643,-382.223450 direction = -0.991485774517059,0,-0.130215004086494 ; cse_alife_object properties game_vertex_id = 951 distance = 9.80000019073486 level_vertex_id = 123660 object_flags = 0xffffff3e custom_data = <<END [smart_terrain] cfg = scripts\escape\smart\esc_blokpost_soldier1.ltx -----Здесь же файл с логикой непися нужно прописать? END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 5 ; cse_alife_space_restrictor properties restrictor_type = 3 ; se_smart_terrain properties [esc_blokpost_soldier1]:stalker $spawn = "respawn\esc_blokpost_soldier1" character_profile = esc_blokpost_soldier1 spec_rank = regular community = army story_id = esc_blokpost_soldier1 custom_data = scripts\escape\smart\esc_blokpost_soldier1.ltx -----Позже, мне подсказали и вписал сюда. Все ровно не работает [esc_blokpost_soldier1_squad]:online_offline_group faction = stalker npc = esc_blokpost_soldier1 target_smart = esc_blokpost_soldier1_smart story_id = esc_blokpost_soldier1_squad И еще вот вопрос, для ЗП будет работать такое? С этим я пока еще не очень дружу, но попробывал написать, получилось вот это (Проверить просто не получается, т.к. неписи не слушается, сидят только на корточках .): Пример: [esc_blokpost_sniper1] points = p0,p1 p0:name = wp00 p0:flags = 0x1 p0:position = -169.194595,-25.436274,-353.493927 p0:game_vertex_id = 1021 p0:level_vertex_id = 79995 p0:links = p1(1) p1:name = wp01 p1:flags = 0x2 p1:position = -166.526138,-25.435808,-355.219055 p1:game_vertex_id = 1021 p1:level_vertex_id = 83334 p1:links = p0(1) Логика НПС: [logic] active = walker [walker] path_walk = esc_blokpost_sniper1 Не соответствует правилам. Ссылка на комментарий
losiara 13 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) NaslednikTutti Так ты все таки для ЗП или ТЧ делаешь??? Если непись под гулагом, это одно, если он со своей логикой, то необходимо в файле с логикой дописать: [smart_terrains] none = true; что бы не брался смартом [logic] active = walker [walker] path_walk = esc_blokpost_sniper1; путь НПС Относительно путей в all.spawn, это зачем у тебя? На что они стоят??? p0:flags = 0x1 p1:flags = 0x2 Ты полем look пользуешься, исходя из представленной логики нет, тогда к чему флаги, на что они указывают? А вообще поскольку НПС через all.spawn рожден, то и логику можно там же и прописать, прямо в секции НПС тобою созданного! Изменено 7 Января 2012 пользователем losiara Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
*Shoker* 322 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Просто на заметку, заметил в ЧН (а может он и не только там) не очень приятный баг с инвенторём монстров. Если заспавнить напрямую что то в инвентаре монстра через alife() (в моём случае это происходит в момент смерти монстра), то после Save\Load эти вещи пропадают. С НПС такого не замечено. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Старлей 88 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 *Shoker* А может просто эту вещь в исключения в death_generic добавить надо?А что ты спавнил? Ray Of Hope - кооператив сталкера OldStory Ссылка на комментарий
*Shoker* 322 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 death_generic не используется для монстров. Пропадает любая вещь, пришлось сперва спавнить её на земле а потом в инвентарь переносить, тогда уже нормально. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Real Wolf 34 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) С какой частотой вызывается update для серверных классов(se_)? И как узнать под какой схемой находится в данный момент НПС? Изменено 8 Января 2012 пользователем Real Wolf Ссылка на комментарий
NaslednikTutti 1 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 Доброго времени суток! Работаю на Зов Припяти 1.6.02. Хочу сделать снайпера часового (я в этом полным нуб), вот, начеркал для него базовую схему walker. * phase time: 16935 ms * phase cmem: 350251 K * phase time: 27 ms * phase cmem: 350251 K * [win32]: free[1918640 K], reserved[188516 K], committed[2087084 K] * [ D3D ]: textures[1149492 K] * [x-ray]: crt heap[350251 K], process heap[13906 K], game lua[36780 K], render[114 K] * [x-ray]: economy: strings[25402 K], smem[10192 K] compiling shader model_env_lq compiling shader model_env_lq_2 compiling shader model_distort4glass_2 compiling shader model_def_lplanes_0 compiling shader model_def_lplanes_1 compiling shader deffer_model_bump_d-hq_1 ! Unknown command: dump_infos ! Cannot find saved game ~abort-raw:there is no patrol path %s * Log file has been saved successfully! ! Cannot find saved game ~abort:there is no patrol path esc_blokpost_sniper1_smart_escape_blokpost_chasovoy_walk * Log file has been saved successfully! stack trace: 0023:0844E8B3 xrGame.dll, CDialogHolder::CDialogHolder() 0023:0844FB45 xrGame.dll, CDialogHolder::CDialogHolder() 0023:055F2EA3 lua.JIT.1.1.4.dll, luaopen_io() [error][ 183] : Невозможно создать файл, так как он уже существует. Вот конфиги схемы. [escape_blokpost_chasovoy_look] points = p0,p1 p0:name = name00|a=guard_chasovoy p0:flags = 0x2 p0:position = -158.486877,-30.824171,-286.253876 p0:game_vertex_id = 1091 p0:level_vertex_id = 92831 p1:name = name01|a=guard_chasovoy p1:flags = 0x1 p1:position = -149.406265,-29.899168,-363.256896 p1:game_vertex_id = 1026 p1:level_vertex_id = 103521 [escape_blokpost_chasovoy_walk] points = p0,p1 p0:name = name00 p0:flags = 0x1 p0:position = -168.318710,-25.436260,-353.395844 p0:game_vertex_id = 1021 p0:level_vertex_id = 80829 p0:links = p1(1) p1:name = name01 p1:flags = 0x2 p1:position = -166.309357,-25.436119,-354.571533 p1:game_vertex_id = 1021 p1:level_vertex_id = 83334 p1:links = p0(1) [smart_terrains] none = true [logic@esc_blokpost_sniper1] active = walker1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [walker1] path_walk = escape_blokpost_chasovoy_walk path_look = escape_blokpost_chasovoy_look team = escape_blocpost Посмотрите пожалуйста, что тут не так? Что нужно добавить, изменить. Два дня мучаюсь с этим [esc_blokpost_sniper1]:stalker $spawn = "respawn\esc_blokpost_sniper1" character_profile = esc_blokpost_sniper1 spec_rank = regular community = army story_id = esc_blokpost_sniper1 <specific_character id="esc_blokpost_sniper1" team_default = "1"> <name>Солдат</name> <icon>ui_inGame2_Soldier_2</icon> <map_icon x="1" y="0"></map_icon> <bio>Рядовой. Детальная информация отсутствует.</bio> <class>Sniper</class> <community>army</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_01\military\</snd_config> <rank>40</rank> <reputation>0</reputation> <visual>actors\stalker_soldier\stalker_soldier_2</visual> <supplies> [spawn] \n wpn_svd \n ammo_7.62x54_7h1 = 2 \n wpn_pm \n ammo_9x18_fmj = 1 \n grenade_rgd5 = 2 \n #include "gameplay\character_items_2.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs_2.xml" </supplies> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_dialogs.xml" </specific_character> <character id="esc_blokpost_sniper1"> <class>Sniper</class> </character> [start_position_escape] esc_blokpost_sniper1_squad = esc_blokpost_sniper1_smart [esc_blokpost_sniper1_squad]:default_squad sim_avail = false [esc_blokpost_sniper1_squad]:online_offline_group faction = stalker npc = esc_blokpost_sniper1 target_smart = esc_blokpost_sniper1_smart story_id = esc_blokpost_sniper1_squad [smart_terrain];esc_blokpost_sniper1 squad_id = 1 max_population = 1 [exclusive] esc_blokpost_sniper1 = escape\esc_blokpost_sniper1_logic.ltx Не соответствует правилам. Ссылка на комментарий
_Призрак_ 11 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 (изменено) Тебе же написано: ! Cannot find saved game ~abort:there is no patrol path esc_blokpost_sniper1_smart_escape_blokpost_chasovoy_walk Признайся, сувал под гулаг непися? Если да то пути должны называться так: имя_смарта_имя_пути Изменено 8 Января 2012 пользователем ColR_iT Freedom Ссылка на комментарий
strelok200 0 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 Вопрос: что значит ! Unknown command: nil в логе? Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
Dennis_Chikin 3 662 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 Чаще всего - прилетел game_object туда, где ждали что-нибудь другое. Как правило - строку или number. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
*Shoker* 322 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 > ! Unknown command: Обозначает что введенеа неверная консольная команда (у тебя ж в лог выводится, вот игра и воспринимает каждый текст как команду коносли, ничего страшного) > nil говорит о том, что сообщение, которое ты выводил в консоль = nil, тоесть его попросту нету. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
strelok200 0 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 Нет в консоль ничего не вводилось Добавлено через 1 мин.: Из-за этого могут биться сейвы? Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
Andrey07071977 18 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 (изменено) Real Wolf как узнать под какой схемой находится в данный момент НПС? Попробуй db.storage[npc:id()].active_scheme Изменено 8 Января 2012 пользователем Andrey07071977 Ссылка на комментарий
Viнt@rь 50 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 (изменено) strelok200, 1. если ты пользуешься логовыми функциями, то первое, что они делают - это выводят твой текст-лог в консоль, а двиг читает любую введенную консольную строку как команду... Посему и пишет Unknown command, а nil - это ты видимо пытаешься выдать в консоль команду nil 2. на платформах ЗП/ЧН: в отличии от ТЧ, на этих двух платформах(как я заметил) если просто выводить текст-лог в консоль, то в консоли тоже пишется Unknown command: твоя строка, но такое возможно от силы 2 раза, в последствии чего происходит фатальная ошибка, после чего лог не выводиться в консоль вообще, да и сама игра/скрипты начинают дико тупить, потому обычно перед своей строкой для вывода в лог приписывают такое: "load ~~~ " -- Заметка на будущее если что) Изменено 8 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Wik 0 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 (изменено) Скажите прописать story_id предметам это реально? (для квеста нужно чтоб, предмет был отмечен в ПДА) Интересно, что ты ожидаешь увидеть в ответ? Например, Andrey07071977 тебе ответил более чем исчерпывающе, исходя из твоего вопроса. ColR_iT Изменено 8 Января 2012 пользователем ColR_iT Ссылка на комментарий
Andrey07071977 18 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 (изменено) Реально В следующий раз, попрошу воздержаться от сарказма. Да, я согласен - каков вопрос - таков ответ, но не нужно провоцировать кого-либо на разговор каким-либо образом отличающиеся от смысла темы данного топика. Спасибо за понимание. ColR_iT Изменено 8 Января 2012 пользователем ColR_iT Ссылка на комментарий
Wik 0 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 (изменено) Я и рассчитывал на такой ответ просто хотел узнать возможно или нет, а на счет темы вроде попал, вопрос та мой вроде относится к скриптам. Если не прав прошу прощения. В таком случае мне совершенно не понятен смысл твоего вопроса ... Ведь даже в оригинальной игре различного рода предметы были отмечены на карте, таким образом, чем твой предмет отличается от "стандартных", что ты задаешься подобным вопросом. P.S. Про разговор "не в ту тему", я обращался к Andrey07071977, потому как его ответ мог вызвать не нужный флуд. ColR_iT Изменено 8 Января 2012 пользователем ColR_iT Ссылка на комментарий
losiara 13 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 (изменено) Wik Ты не обозначил какой объект (сталкер, НПС, рестриктор, ящик и т. д.) Вот пример из оригинала в all.spawn [649] ; cse_abstract properties section_name = inventory_box ; название секции name = level_prefix_inventory_box_0018 ; твое произвольное название position = -140.973648071289,-29.689302444458,-354.325927734375 ; координаты direction = 0,1.60919880867004,0 ; как будет повернут ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 594270 object_flags = 0xffffff3f ; флаг объекта custom_data = <<END ; кастом дата [logic] cfg = scripts\treasure_inventory_box.ltx ; ссылка на файл с логикой если таковой имеется END story_id = 5014 ; то что тебе нужно числовой идентификатор ; cse_visual properties visual_name = physics\equipment_cache\equipment_box_02_case ; визуал После этого регестрируешь в файле gamedata\config\game_story_ids по типу: 5014 = "esc_secret_0014" Извините если это уже флуд, не успел за модератором... Изменено 8 Января 2012 пользователем losiara Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Wik 0 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 Нет, мне нужно прописать story_id предмету, который я заспавнил через скрипт. Ссылка на комментарий
KD87 718 Опубликовано 8 Января 2012 Поделиться Опубликовано 8 Января 2012 Wik, меняй через перезапись нет-пакетов. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти