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 Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 (изменено) Более подходящей темы увы не нашел. Есть тут добрые люди, знающие perl? Нужно немного отредактировать АСДС. Саму программу (!!!), а не all.spawn. Изменено 1 Июля 2009 пользователем Отшель[НИК] Ссылка на комментарий
RvP 1 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 Отшель[НИК], а что именно ты хош? Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 Нужно добавить в АСДС секции с аномалиями. Пробовал сам, но из-за моей криворукости и незнания выдает ошибку. Ссылка на комментарий
RvP 1 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 Отшель[НИК], ето блокнотом в асдс.пл Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Vano_Santuri 33 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 Отшель[НИК], на acdc_cs.pl или какой там у тебя, нажимаешь правой кнопкой -> изменить, или открыть с помощью, блокнота. ищешь секции с аномалиями (правка -> найти в блокноте,) например под етой : zone_zharka_static => 'se_zone_anom', zone_zharka_static_weak => 'se_zone_anom', zone_zharka_static_average => 'se_zone_anom', zone_zharka_static_strong => 'se_zone_anom', пишешь свою секцию(или секции, взависимости от профилей аномалий) , 3 раза tab щелкаешь и пишешь => 'se_zone_anom', А что за аномалии сделал? и как делал? Что-то кончается, что-то начинается... Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 (изменено) Други. Если бы все было так просто, я бы не спрашивал на форуме Итак объясню все с самого начала. Есть асдс от АМК, и есть асдс от Симбиона. В АМК содержаться следующие строки: amk_zone_mincer_weak => 'se_zone_anom', amk_zone_mincer_average => 'se_zone_anom', amk_zone_mincer_strong => 'se_zone_anom', amk_zone_witches_galantine => 'se_zone_anom', amk_zone_zharka_static_weak => 'se_zone_anom', amk_zone_zharka_static_average => 'se_zone_anom', amk_zone_zharka_static_strong => 'se_zone_anom', amk_zone_mosquito_bald_weak => 'se_zone_anom', amk_zone_mosquito_bald_average => 'se_zone_anom', amk_zone_mosquito_bald_strong => 'se_zone_anom', amk_zone_buzz => 'se_zone_anom', amk_zone_buzz_weak => 'se_zone_anom', amk_zone_buzz_average => 'se_zone_anom', amk_zone_buzz_strong => 'se_zone_anom', В симбионе таких строк нет. Но есть следующие: #[+1] m_zone_buzz => 'se_zone_anom', m_zone_buzz_weak => 'se_zone_anom', m_zone_buzz_average => 'se_zone_anom', m_zone_buzz_strong => 'se_zone_anom', #[+2] m_zone_gravi_zone => 'se_zone_anom', m_zone_gravi_zone_weak => 'se_zone_anom', m_zone_gravi_zone_average => 'se_zone_anom', m_zone_gravi_zone_strong => 'se_zone_anom', #[+3] m_zone_mincer => 'se_zone_anom', m_zone_mincer_weak => 'se_zone_anom', m_zone_mincer_weak_noart => 'se_zone_anom', m_zone_mincer_average => 'se_zone_anom', m_zone_mincer_strong => 'se_zone_anom', #[+4] m_zone_mosquito_bald => 'se_zone_anom', m_zone_mosquito_bald_weak => 'se_zone_anom', m_zone_mosquito_bald_weak_noart => 'se_zone_anom', m_zone_mosquito_bald_average => 'se_zone_anom', m_zone_mosquito_bald_strong => 'se_zone_anom', m_zone_mosquito_bald_strong_noart => 'se_zone_anom', #[+5] m_zone_witches_galantine => 'se_zone_anom', m_zone_witches_galantine_weak => 'se_zone_anom', m_zone_witches_galantine_average => 'se_zone_anom', m_zone_witches_galantine_strong => 'se_zone_anom', m_zone_witches_galantine_safe => 'se_zone_anom', #[+6] m_zone_zharka_static => 'se_zone_anom', m_zone_zharka_static_weak => 'se_zone_anom', m_zone_zharka_static_average => 'se_zone_anom', m_zone_zharka_static_strong => 'se_zone_anom', Естественно в АМК их нет. Я пробовал заменять, пробовал добавлять строки из симбиона в амк, но всегда выдавалась ошибка с руганью на файл ini_file.pm и строку 156 в нем. Вот и не знаю что делать? ЗЫ: не спрашивайте зачем мне это)) Объяснять довольно долго и трудно... Изменено 1 Июля 2009 пользователем Отшель[НИК] Ссылка на комментарий
Vano_Santuri 33 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 Отшель[НИК], Вообщем слушай, в симбионе аномалии родные, их не меняли, т.е ты еще раз добавляешь родные, которые есть, и это приводит к ошибки дубликата, Если есть новые аномалии, то не те что ты написал... Что-то кончается, что-то начинается... Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 (изменено) Тогда я не понимаю почему в самом all.spawn-е прописаны именно они (те оторые я написал), а не "родные"... И если ты прав, то что тогда делать? Заменить названия на те, которые есть в АМК и ничего не менять в самой программе? Изменено 1 Июля 2009 пользователем Отшель[НИК] Ссылка на комментарий
Vano_Santuri 33 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 Отшель[НИК], Может просто родные аномалии в симбионе переименовали? добавили им m_zone_buzz вот у меня на чистой zone_buzz => 'se_zone_anom', zone_buzz_weak => 'se_zone_anom', zone_buzz_average => 'se_zone_anom', zone_buzz_strong => 'se_zone_anom', Распакуй аллспаун симбиона, и в каждом алайв,файле поищи m_zone_zharka_static, если найдешь, значит это аномалия спаунена на уровне, значит и конфиги аномалий в симбионе другие,: 1)Или они просто аномалии переименовали в конфигах, и в секциях аллспауна. 2)Или это новые аномалии и спаунены вместе с обычными. Если найдешь и m_zone_zharka_static и zone_zharka_static, значит это новые аномалии спаунены вместе с родными, если только первое то аномалии перименованы, у меня нет етого мода, так что ничего более конкретного сказать не моуг, так что-ты хочешь? я послушаю хоть и мутарно? Что-то кончается, что-то начинается... Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 (изменено) Если найдешь и m_zone_zharka_static и zone_zharka_static, значит это новые аномалии спаунены вместе с родными Так и есть. Там и те и те... И как тогда перенести эти m_zone..... чтобы при компиляции спавна не было ошибки? Поковырял щас конфиги. m_zone используются для динамических аномалий. На сколько я понял эти м_зона... убирают аномалии со старых мест. Т.е. происходит антиспавн аномалий. Изменено 1 Июля 2009 пользователем Отшель[НИК] Ссылка на комментарий
Vano_Santuri 33 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 Отшель[НИК], Тыды еще проще, я даже не думал что там динамки стоят, я даже не знаю, почему у тебя идет ошибка,старано, но если ты в в плагин открытый блокнотом под секциями других аномалий добавишь вот так: m_zone_buzz => 'se_zone_anom', m_zone_buzz_weak => 'se_zone_anom', m_zone_buzz_average => 'se_zone_anom', m_zone_buzz_strong => 'se_zone_anom', m_zone_gravi_zone => 'se_zone_anom', m_zone_gravi_zone_weak => 'se_zone_anom', m_zone_gravi_zone_average => 'se_zone_anom', m_zone_gravi_zone_strong => 'se_zone_anom', m_zone_mincer => 'se_zone_anom', m_zone_mincer_weak => 'se_zone_anom', m_zone_mincer_weak_noart => 'se_zone_anom', m_zone_mincer_average => 'se_zone_anom', m_zone_mincer_strong => 'se_zone_anom', m_zone_mosquito_bald => 'se_zone_anom', m_zone_mosquito_bald_weak => 'se_zone_anom', m_zone_mosquito_bald_weak_noart => 'se_zone_anom', m_zone_mosquito_bald_average => 'se_zone_anom', m_zone_mosquito_bald_strong => 'se_zone_anom', m_zone_mosquito_bald_strong_noart => 'se_zone_anom', m_zone_witches_galantine => 'se_zone_anom', m_zone_witches_galantine_weak => 'se_zone_anom', m_zone_witches_galantine_average => 'se_zone_anom', m_zone_witches_galantine_strong => 'se_zone_anom', m_zone_witches_galantine_safe => 'se_zone_anom', m_zone_zharka_static => 'se_zone_anom', m_zone_zharka_static_weak => 'se_zone_anom', m_zone_zharka_static_average => 'se_zone_anom', m_zone_zharka_static_strong => 'se_zone_anom', то вылета быть не должно. Вот смотри привожу на примере чистого алспауна, распаковал его, добавил эти секции в плагин, запаковал, этих секций в файлах не было, но они не мешают запаковываться,ошибки нет, онаидет когда ты или циферок наставил или значков каких то, я вот счас полностью всю зону в ЧН небе заселяю, так вот из-за одной запятой не хотел компилировать,тоже дайд идет, так что вариант только один, или ты не все договариваешь или у тебя с синтаксисом ошибки. Что-то кончается, что-то начинается... Ссылка на комментарий
Отшель[НИК] 2 Опубликовано 1 Июля 2009 Поделиться Опубликовано 1 Июля 2009 (изменено) Попробовал - все равно не помогает.... Блин не знаю что делать. Самое смешное то, что когда этих секций вообще нет, то он говорит что не может прочесть секцию к примеру m_zone_mincer => 'se_zone_anom', А когда их добавляешь, то ругается на ini_file ((( Т.е. он их все таки воспринимает, но что то все равно не так(( Вопрос снимается. Изменено 2 Июля 2009 пользователем Отшель[НИК] Ссылка на комментарий
gruber 2 481 Опубликовано 2 Июля 2009 Поделиться Опубликовано 2 Июля 2009 можно спавнером переносить объекты-открываешь исходный алл берешь объект,заносишь в базу-затем другой и из базы уже в алл спавн(правда кажется он после этого неразборный становится) Ссылка на комментарий
Nazgool 250 Опубликовано 3 Июля 2009 Поделиться Опубликовано 3 Июля 2009 Подскажите, пожалуйста, как работать с подшаблонами LUА. В официальном мануале написано, что они "сохраняются для дальнейшего использования". А сам процесс их использования для меня так и остался не понятен. Ссылка на комментарий
Vano_Santuri 33 Опубликовано 4 Июля 2009 Поделиться Опубликовано 4 Июля 2009 (изменено) Ребята, такая вот проблема, автора спрашивал, он молчит., вообщем скачал скрипт Шокера аномалии на болотах, там аномалии спаунятся на болота, вот два файла ( янемного правил под монстров) --'****************************************************** --'* Биндер объекта группировки. --'****************************************************** function bind(obj) obj:bind_object(faction_binder(obj)) end class "faction_binder" (object_binder) function faction_binder:__init(obj) super(obj) end function faction_binder:net_spawn(server_object) if not object_binder.net_spawn(self, server_object) then return false end --' получить ссылку на настоящий серверный объект self.faction = alife():object(self.object:id()) return true end function faction_binder:update(delta) object_binder.update(self, delta) self.faction:update() new_monsters.main() end и вот сам скрипт local actor = db.actor function main() spawn_all() end --Спавним все аномалии function spawn_all(respawn) if load("spawn_anom",false)==false or respawn==true then -- Бюрреры на болотах spawn("burer_weak",vector():set(-170.53266906738,0.67925143241882,-312.03155517578),1,135) save("spawn_anom",true) end end function create_anom(section,rad_anom,x,y,z,lv,gv,mode) -- con(section) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() -- if packet:r_elapsed() ~= 0 then abort("left=%d", packet:r_elapsed()) end packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) packet:w_s32(on_off_mode_enabled_time) packet:w_s32(on_off_mode_disabled_time) packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode == nil then packet:w_u8(last_spawn_time_present) end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) -- add_spot_on_map(p_obj.id,"red_location","Аномалия") return p_obj end -- Вывод инфы в консоль function con(msg) get_console():execute(msg) end -- Записываем переменную function save(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end -- Загружаем переменную function load(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end -- Удаляем переменную function del(variable_name) if db.storage[db.actor:id()].pstor[variable_name] then db.storage[db.actor:id()].pstor[variable_name] = nil end end -- Функция спауна объекта function spawn(section,pos,lv,gv) -- vector():set(x,y,z) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end if section==nil then con("Не_указанная_секция") else return alife():create(section,pos,lv,gv) end end Сначала я его исползовал при проверке монстров, монстров прописал через алл.спаун, и логику только через него ж можно добавить? Потом думал и решил этим же скриптом спаунить арты(он для егтого и был) , но чтоб этот скрипт в определенный момент времени спаунил их, ну проще говоря, куда прописать время(допустим каждые 36 часов), чтоб он оспаунил эти арты каждые 36 часов, ане зависимости от того брал ли ты предыдыщий или нет, это вообще можно сделать? Изменено 4 Июля 2009 пользователем Vano_Santuri Что-то кончается, что-то начинается... Ссылка на комментарий
меченый(стрелок) 5 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 (изменено) Vano_Santuri, Да можно.... Тебе нужен будет скрипт от АМК(amk.script) в нём смотри функцию _g_start_timer ,потом _do_timer_action(select_string,params_string).. к примеру гденить в начале игры стартуешь таймер .. amk.g_start_timer("my_respawner",0,32,0) .. потом в _do_timer_action if select_string=="my_respawner" then --вызов твойх функций ... amk.g_start_timer("my_respawner",0,32,0)--стартуем таймер заново... end Изменено 5 Июля 2009 пользователем меченый(стрелок) Ссылка на комментарий
Vano_Santuri 33 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 меченый(стрелок), Получилось, спс, а таймер я стартовал через амк_мод.скрипт(у меня спальник от них) там и таймеры пописаны))) Что-то кончается, что-то начинается... Ссылка на комментарий
Pihan13 9 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 Ребят простите если ламерский вопрос, но что лучше для спауна: скрипт или алл.спавн? Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
меченый(стрелок) 5 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 (изменено) Смотря что спавнить. Предметы - script. НПС - spawn. Vano_Santuri, пожалуйста. Изменено 17 Октября 2011 пользователем ColR_iT Ссылка на комментарий
Pihan13 9 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 (изменено) А если через алл.спавн делаю, то предмет (нпс) появится сразу после начала новой игры? или можно этим путём сделать так, чтоб он появился после выполнения мною чего-либо (прим. квеста) и ещё: к примеру у меня есть координаты: position = -139.449829101563,-29.6908683776855,-351.492797851563 обязательно писать их такими длинными? можно к примеру написать? position = -139.4,-29.6,-351.4 Изменено 5 Июля 2009 пользователем Pihan13 Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти