Гость Greh921 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Greh921, function esc_unik_npc () alife():create("esc_unik_npc",vector():set(-218.20,-20.2,-145.63),35362,47) end ничего не трогал. просто нагло скопировал из шапки. А ты имя esc_unik_npc не менял, где-нибудь в нпс_профель или спавн_сектор допустим на erik_pridurok. Я когда этот мануал юзал, то натыкался на множество ошибок при создании именно с именем! У мя была ошибка с этой хернёй _g.script: 20, я 20 строку закомментил и потом игра запустилась и через пару секунд наебнулась с ссылкой на логику, ну я поковырялся в ней, но не хера не получилось, тупо всё переделал с нуля и всё пошло без вылетов. В spawn_section.ltx [esc_unik_npc]:stalker $spawn = "respawn\esc_unik_npc" character_profile = esc_unik_npc spec_rank = regular community = dolg Нужно писать ещё под community вставляем: custom_data = scripts\esc_unik_npc.ltx Если ты добавил <action>esc_unik_npc.esc_unik_npc</action> в info_portions.xml , то для появления нашего персонажа нужна новая игра!!! Ошибка может быть в <game_information_portions> <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> <action>esc_unik_npc.esc_unik_npc</action> </info_portion> При добавлении нового персонажа нужно под старым, а в данном случае <action>esc_unik_npc.esc_unik_npc</action> писать нового, допустим <action>esc_unik_npc_2.esc_unik_npc_2</action> При ошибке [error]Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' достаточно новый игры, если новая игра выдаёт ошибку, то можно закомментировать 20 строку либо всё переделать, если делаете мод, то лучше создавать свои файлы, прописывая в сустем.ltx проще при исправлении вылетов! Ссылка на комментарий
Бубалех 0 Опубликовано 24 Декабря 2009 Поделиться Опубликовано 24 Декабря 2009 (изменено) Greh921, делаю все как ты говоришь все перепроверил. файлы брал из db архива игры, начинал новую игру и все равно тоже самое. объясни как закоментить 20 строку g.script Добавлено через 146 мин.: Greh921, все друг я нашел свою ошибку. Все дело в логике. если ее нет то мужик ходит по кордону и ему кабздец а с логикой вылет Изменено 24 Декабря 2009 пользователем Бубалех убийство гарика и жорика главный стимул дойти до бара Ссылка на комментарий
Гость Greh921 Опубликовано 24 Декабря 2009 Поделиться Опубликовано 24 Декабря 2009 Создал НПС в 3П, :ny_unsure: запускаю игру и сразу вылет: FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : .... - Зов Припяти\gamedata\scripts\bind_stalker.script:255: attempt to call method 'check_detective_achievement' (a nil value) stack trace: Что-то накопустил. в файле bind_stalker.script Если ты делал как в шапке, то там ТОЛЬКО НА ТЧ, а по зп смотри выше твоего сообщения в этой теме. Если делал по этому сообщению, то ошибка в написании в этом файле. На крайняк эту строку закомментируй, т.е. поставь в начале "--" , тока без ковычек) Больше ничего не посоветую, т.к. ЗП не ковырял! Ссылка на комментарий
Бубалех 0 Опубликовано 24 Декабря 2009 Поделиться Опубликовано 24 Декабря 2009 Greh921, ты не знаешь почему созданный мною торговец выбрасывает вещи. вокруг него огромная куча стволов. купить почему то можно только патроны хотя я прописывал все. при продаже ему ствола он тут же выкидывает его. ставил ему вместимость на 10000 кг но все равно то же? убийство гарика и жорика главный стимул дойти до бара Ссылка на комментарий
Гость Greh921 Опубликовано 24 Декабря 2009 Поделиться Опубликовано 24 Декабря 2009 Greh921, ты не знаешь почему созданный мною торговец выбрасывает вещи. вокруг него огромная куча стволов. купить почему то можно только патроны хотя я прописывал все. при продаже ему ствола он тут же выкидывает его. ставил ему вместимость на 10000 кг но все равно то же? Честно говоря, а хрен его знает, я сам толком не могу сказать, т.к. не делал через скриптовый спавн, но по ходу дела тут с классами или логикой ковырнуть надо, т.к. я сделал у обычных нпс торговлю всем и он сволочь при торговле оружием выбрасывает его если оно сломано или менее мощно уже существующего! У мя так сломанную грозу долговец выкинул в замен не сломанной двухстволки-обрез. Там нужно в xr_мотиватор или др. поковыряться. В моде История Прибоя эта хня исправлена. Посмотри эту штуку: Болезненная тема для многих начинающих модмейкеров. Для создания нового тороговца требуется постигать навыки работы со спавн-файлом. Для создания торговца придётся запастись кое-какими утилитами: acdc от bardak скачать с: народа или ifolder-а ActivePerl 5.8.8 для работы программы acdc скачать :ny_use_search: Практика Создание непися и профиля Для работы acdc нужно ещё прога 7z-архив я её в архив закинул в разделе "acdc от bardak скачать", а ActivePerl 5.8.8 в поиске наберите "Скачать ActivePerl-5.10.0.1004-MSWin32-x86-287188" и всё. Манул от меня: Устанавливаем 7z462.exe Потом ActivePerl 5.8.8 (Я брал ActivePerl-5.10.0.1004-MSWin32-x86-287188) - ищем в поиске, скачиваем и устанавливаем Создаем отдельную папку и кидаюм все файлы архива без 7z462.exe потом кидаем в неё all.spawn и Декомпиликтуем, изменяем и Компиляция новый файл с именем"all.spawn.new" кидаем в папку где брали all.spawn, старый удаляем а новый переминовываем в "all.spawn" и всё! И так. Сперва мы создаём профиль непися. Например, в файле character_desc_escape.xml по адресу gamedata\config\gameplay\ Можно создать отдельный файл для наших неписей, это упрощает совмещение модов. В файле character_desc_escape.xml, в самом низу, перед тегом </xml> пишем профиль нового непися: <specific_character id="esc_dark_stalker_voron" no_random = "1"> ;важно при создании торговца, указать параметр no_random = "1" <name>Ворон</name> <icon>ui_npc_dark_voron</icon> <map_icon x="0" y="0"></map_icon> <bio>sim_stalker_novice_bio</bio> <class>esc_dark_stalker_01</class> -- настраивает респавнер на класс персонажа для спавна разных моделей. ;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс. <community>dark_stalker</community> <money min="500000" max="500000" infinitive="1"></money> ;в поле денег, надо поставить бессконечные деньги - infinitive="1" ;иначе вы сможете продать неписю товаров исключительно на указанную сумму. <rank>1000</rank> <reputation>-553</reputation> <visual>actors\dark_stalker\dark_stalker_voron</visual> ;ссылка на файл-модель персонажа без окончания .ogf <snd_config>characters_voice\human_01\monolith\</snd_config> <crouch_type>-1</crouch_type> <panic_treshold>0</panic_treshold> <supplies> [spawn] \n wpn_gauss \n ammo_gauss \n #include "gameplay\character_items.xml" \n #include "gameplay\character_drugs.xml" \n #include "gameplay\character_food.xml" </supplies> #include "gameplay\character_criticals_3.xml" <start_dialog>hello_dialog_dark_stalker</start_dialog> <actor_dialog>dm_cool_info_dialog</actor_dialog> <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> <actor_dialog>join_dark</actor_dialog> </specific_character> Профиль создан, пара стандартных диалогов, взятых у любого другого профиля, дописать не составит труда. Я ничего не менял в своём коде. Лезем в npc_profile.xml, который находится в той же папке. Где-нить внизу делаем запись: <character id="esc_dark_stalker_voron"> <class>esc_dark_stalker_01</class> -- настраивает респавнер на класс персонажа для спавна разных моделей. ;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс. <specific_character>esc_dark_stalker_voron</specific_character> -- ссылка на профиль нашего непися. </character> Ввод в симуляцию Непись создан. Теперь надо вводить его в симуляцию. Открываем файл gamedata\config\creatures\spawn_sections.ltx и прописываем в конце: [esc_dark_stalker_voron]:stalker_trader - дописать суффикс торговца... хотя у меня и без него всё работало =) $spawn = "respawn\esc_dark_stalker_voron" - опция спавна для Левел Едитора character_profile = esc_dark_stalker_voron - профиль непися, записанный в npc_profile.xml spec_rank = regular community = dark_stalker - группировка Спавн торговца через all.spawn файл Дальше, самое нудное - спавн. Спасибо Arhet'y за пример. Используя прогу acdc от bardak'a декомпилим all.spawn, создав батник разбора спавна (без active perl толку от проги бардака нуль - просто не запустится) и в понравившемся месте делаем запись с уникальным номером. Я заспавнил на Кордоне: [8796] ; cse_abstract properties section_name = stalker_trader -- метка, что сталкер является торговцем name = dark_stalker_voron -- имя любое, вроде бы; где оно используется не знаю position = -215.67399597168,-20.403390884355,-151.03227233887 -- местоположение на игровой карте direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942 ; cse_alife_trader_abstract properties character_profile = esc_dark_stalker_voron ; cse_alife_object properties game_vertex_id = 61 -- геймвертекс, без него спавнер не будет знать, на какой именно карте и в какой её части спавнить объект distance = 3.5 level_vertex_id = 42599 -- левелвертекс, без него спавнер не будет знать, в именно какой части карты спавнить объект object_flags = 0xfffffffb custom_data = <<END [logic] cfg = scripts\esc_voron.ltx -- конфиг с логикой [smart_terrains] none = true -- смарт террейн; если создаёте статического торговца - лучше не выставлять смарт террейн ;если хотите бродягу - пишите по аналогии с другими неписями или создавайте свой смарт террейн, куда и определяйте непися [spawn] wpn_gauss -- спавним в инвентаре всё, что хотим, в продажу оно не пойдёт END story_id = 9958 - уникальный стори_ид для меток на карте ; cse_visual properties visual_name = actors\dark_stalker\dark_stalker_voron -- внешний вид, указать путь к .ogf модели, без окончания формата файла! ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 2 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 2 upd:timestamp = 0 upd:creature_flags = 0 upd:position = -215.67399597168,-20.403390884355,-151.03227233887 -- те же координаты, что и в секции position upd:o_model = 0 upd:o_torso = 0,0,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 2,2,1,2,0 predicate4 = 2,2,1,2 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties Спавн файл еще рано собирать! Логика торговца Далее, создаём файл конфиг торговца, который указали в спавне - gamedata\config\scripts\esc_voron.ltx и пишем в нём: [logic] active = walker trade = misc\trade_voron.ltx -- файл торговли, создаётся по аналогии с существующими trader_flags = 0 - флаг трейдера inv_max_weight = 10000 -- вес инвентаря торговца on_death = death [walker] path_walk = esc_sin_voron_walk -- привязка вейпоинта, чтобы трейдер стоял на месте или двигался по определённому курсу path_look = esc_sin_voron_look -- куда будет смотреть непись meet = meet -- параметры реакции непися на встречу с актором [meet] use = true use_wpn = true -- перезаряжает оружие meet_talk_enabled = true Теперь лезем за скриптом от бардака и снимаем координаты местоположения нашего непися. У кого нету скрипта, копируем в gamedata/scripts/ui_main_menu.script этот скрипт: function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end Заходим в игру, ищем нужное нам место (ногами), жмём из меню кнопку CREDITS и мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Всё - F12 или на бумажку списываем полученные координаты. Создаём вейпоинты и лукпоинты И так, мы сняли координаты мест, где хотим видеть торговца и где мы хотим, чтобы он ходил - теперь в разобранном all.spawn ищите файл way_*левел*.ltx и туда пишем данные. Я приведу пример свой, опять таки. В файле way_l01_escape.ltx пишем: [esc_sin_voron_look] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx'' points = p0,p1 p0:name = wp00 p0:flags = 0x1 p0:position = -205.306793212891,-20.4855155944824,-150.415893554688 p0:game_vertex_id = 46 p0:level_vertex_id = 54218 p1:name = wp01 p1:flags = 0x1 p1:position = -207.645278930664,-20.2700958251953,-146.980590820313 p1:game_vertex_id = 61 p1:level_vertex_id = 45276 [esc_sin_voron_walk] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx'' points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -215.67399597168,-20.403390884355,-151.03227233887 p0:game_vertex_id = 47 p0:level_vertex_id = 37503 Если нужно создать несколько вейпоинтов - смотрите по аналогии с уже существующими. После всего этого собираем all.spawn батником (что писать в батниках для сбора и разбора спавна - в файле help.txt в папке с программой), закидываем новый файл спавна в gamedata/spawn и стартуем новую игру. Авторы Статья Орион. При помощи (косвенной) Arhet (SRP Team). Мой друг писал, я ему верю :ny_thumbsup: Ссылка на комментарий
Writer 1 Опубликовано 25 Декабря 2009 Поделиться Опубликовано 25 Декабря 2009 Ошибка при создании НПС для Зова Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ...ðèïÿòè\gamedata\scripts\smart_terrain_control.script:65: attempt to index field 'actor' (a nil value) Правельно пейсать "мадыратарчег", патамукаг проверочнойе слова "красафчег". Ссылка на комментарий
Vervolf116 0 Опубликовано 25 Декабря 2009 Поделиться Опубликовано 25 Декабря 2009 Народ,а что нужно сделать что бы нпс спавнился мертвым? Ссылка на комментарий
Гость Greh921 Опубликовано 26 Декабря 2009 Поделиться Опубликовано 26 Декабря 2009 Народ,а что нужно сделать что бы нпс спавнился мертвым? По мануалу в шапке: Создаём файл в папке gamedata/scripts файл, скажем esc_unik_npc.script. В нём создаём функцию. Код: function esc_unik_npc () alife():create("esc_unik_npc",vector():set(-218.20,-20.2,-145.63),35362,47) end --и + следующая строка. npc:kill(npc) --спавнится живым и тут же убивается, если не получится, то пробуй так npc:kill(esc_unik_npc) или так npc:kill("esc_unik_npc") Ссылка на комментарий
Бубалех 0 Опубликовано 27 Декабря 2009 Поделиться Опубликовано 27 Декабря 2009 а как сделать так чтобы мой чел после того как например убил военных вернулся на исходное место? а то он стоит себе и ждет когда его маслинами напихают. :ny_mellow: убийство гарика и жорика главный стимул дойти до бара Ссылка на комментарий
Гость Greh921 Опубликовано 27 Декабря 2009 Поделиться Опубликовано 27 Декабря 2009 Бубалех, написать ему в логике отправку на точку, где вояки и обратно в виде одиночного патруля, т.е. в одним циклом, как см. в теме "Скриптование и спаун" Ссылка на комментарий
x3m1 0 Опубликовано 27 Декабря 2009 Поделиться Опубликовано 27 Декабря 2009 в общем создал нпс для зова, заставил его ходить, но болтать он на отрез отказывается говорит типа говори со старшим так вот как заставить его заставить говорить с гг и сделать его бессмертным? Ссылка на комментарий
меченый(стрелок) 5 Опубликовано 27 Декабря 2009 Поделиться Опубликовано 27 Декабря 2009 (изменено) Greh921, Удалите мат из своего сообщения , иначе придут "добрые дядьки" ZVER и n6260 и тогда они не будут смотреть ,что Вы новичок на форуме и впишут Бан дня так на 3 ... меченый(стрелок), ткни пальцом, а то быть забаненым не очень хочется и к тому же я не нашёл мата у себя, вроде вполне литературно выражаюсь. Эээ... Ну да ладно. возможно я ошибся. мне плохо было Изменено 31 Декабря 2009 пользователем меченый(стрелок) Ссылка на комментарий
Гость Greh921 Опубликовано 28 Декабря 2009 Поделиться Опубликовано 28 Декабря 2009 меченый(стрелок), ткни пальцом, а то быть забаненым не очень хочется и к тому же я не нашёл мата у себя, вроде вполне литературно выражаюсь. Ссылка на комментарий
PRYZRAK 0 Опубликовано 31 Декабря 2009 Поделиться Опубликовано 31 Декабря 2009 Кто может выложить готовый пример? Я уже утомился. Ну не выходит и всё тут. Кстати это может быть из за того, что я на шестёрке всё это делаю? Ссылка на комментарий
Po-meceniy 4 Опубликовано 1 Января 2010 Поделиться Опубликовано 1 Января 2010 Greh921, в твоём мануале есть строка direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942 Где взять эти координаты? Ссылка на комментарий
psevdoгринго 6 Опубликовано 1 Января 2010 Поделиться Опубликовано 1 Января 2010 Это углы поворота по осям x,y,z соответственно. Измеряется в радианах. Ушёл из модостроения Последний мод http://www.amk-team.ru/forum/index.php?sho...=60#entry351951 Ссылка на комментарий
РикошетТ 533 Опубликовано 1 Января 2010 Поделиться Опубликовано 1 Января 2010 PRYZRAK, смотри пост 112 о_О Всё же написано, даже изменять нечего не надо... YouTube Shoker Team ShWM 2.1 РикошеТ aka LanceW Ссылка на комментарий
Гость Greh921 Опубликовано 1 Января 2010 Поделиться Опубликовано 1 Января 2010 Po-meceniy, я скрипт бардака скачал, он на худ выносит инфу о положении гг. Выложить пока не могу - ещё не отошёл... Ссылка на комментарий
Po-meceniy 4 Опубликовано 2 Января 2010 Поделиться Опубликовано 2 Января 2010 Создал нового непися для Зова по тутору Греха, вылет: FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : .... - Зов Припяти\gamedata\scripts\xr_animpoint.script:419: attempt to index local 'manager' (a nil value) stack trace: Ссылка на комментарий
Volkodav 5 Опубликовано 3 Января 2010 Поделиться Опубликовано 3 Января 2010 Небольшой вопрос: Заспавнил скриптом нового нпс в ЗП, все отлично, только вот разговаривать с актором он не хочет при прописанных диалогах в character_desc. Как разговорить? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти