Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Карлан 1 049 Опубликовано 3 Июля 2015 Поделиться Опубликовано 3 Июля 2015 @Winsor, безусловно, применяйте коллбек на выход в онлайн, либо получайте клиентский объект, tertium non datur. 1 Ссылка на комментарий
Zander_driver 10 335 Опубликовано 3 Июля 2015 Поделиться Опубликовано 3 Июля 2015 @BoBaH_671, При желании, вообще все и вся в игре можно делать на апдейте, и проверять каждый апдейт кучу условий - почему бы нет? И утверждать, что все кто делает иначе, "несут ахинею" - вам конечно, никто не запретит. Только не надо потом удивляться, если кто-то ВАМ скажет, что вы делаете и пишете ахинею. Потому что так оно и есть. Для одноразовых действий при появлении актора, кто-то придумал actor_binder:net_spawn. Вам использовать его, религия не позволяет или что? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Overfirst 630 Опубликовано 3 Июля 2015 Поделиться Опубликовано 3 Июля 2015 (изменено) @Zander_driver, я просто показал один из возможных вариантов и показал функцию, которая будет выполнена один раз, хоть и стоит на апдейте. Всё. Закрыли тему. Изменено 3 Июля 2015 пользователем BoBaH_671 Ранее был известен под ником BoBaH_671. Ссылка на комментарий
AndrewMor 527 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 Может ли кто объяснить что здесь за цифры :? obj=alife():create("test",vector():set(101.435539245605,-8.38547039031982,164.284591674805),3 96523,1643) Это я нпц по уроку Корнеева спавню, здесь его коорд-ы, только что где я понятия не имею, а хочется своё подставить. Цифры в скобках: координаты по осям соответственно x, y, z. Дальше - level_vertex, game_vertex. вот такую картинку имею, и кажется здесь нет гейм и левел вертексов, или есть? Есть lvid и gvid, это случаем не они? Они самые. Сталкер - наше всё! Ссылка на комментарий
Хемуль36рус 1 789 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 Народ, может кто чего подскажет. Вот логика нпс квестового [logic] active = walker@varan combat_ignore = combat_ignore on_hit = hit on_death = death [hit] on_info = {=hit_by_actor}%+lada_mertva% [death] on_info = %+varan_sdox% [walker@varan] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet on_actor_dist_le_nvis = 3 | {-varan_sound}remark@varan [remark@varan] target = actor snd = varan meet = no_meet combat_ignore_cond = always danger = danger_condition@varan on_signal = sound_end | walker@varan1 %+varan_sound% [walker@varan1] path_walk = varan_walk path_look = varan_look meet = meet@varan combat_ignore_cond = {-lada_mertva} on_info = {+kachan_af_okean_start -kachan_af_okean_have} walker@varan2 [walker@varan2] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet@varan on_info = {+kachan_af_okean_have} walker@varan3 [walker@varan3] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet@varan on_actor_dist_le_nvis = 3 | {-varan2_sound}remark@varan2 ;danger = danger_condition@varan [remark@varan2] target = actor snd = varan2 meet = no_meet combat_ignore_cond = always danger = danger_condition@varan on_signal = sound_end | walker@varan4 %+varan2_sound% [walker@varan4] path_walk = varan_walk path_look = varan_look combat_ignore_cond = {-lada_mertva} meet = meet@varan [meet@varan] meet_state = 10|guard@wait meet_state_wpn = 10|backoff@threat_weap victim = 10|actor victim_wpn = 10|actor use = true use_wpn = false syndata = backoff@threat_weap [combat_ignore] combat_ignore_cond = {-lada_mertva} [danger_condition@varan] ignore_distance = 0 ignore_distance_corpse = 0 Все как бы работает нормально, ремарки проигрываются. Вот только беда такая, если тестирую квест рядом с нпс, то ремарка [remark@varan2] target = actor snd = varan2 meet = no_meet combat_ignore_cond = always danger = danger_condition@varan on_signal = sound_end | walker@varan4 %+varan2_sound% работает отлично, а если уйти от нпс на некоторое расстояние, то логика зависает. Что я только не делал, рядом работает, уходишь, виснет. Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий
NL-Vincenz 12 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 (изменено) Подскажите как сделать так что бы НПС первый начал диалог? Сделал вот так не работает.. Название моего диалога: gar_dialog_prapor В all.spawn: [900] ; cse_abstract properties section_name = stalker name = gar_dolg_blokpost_4 position = 29.2251853942871,0.488445281982422,233.359680175781 direction = -0.0128737986087799,0.000323313870467246,0.025109501555562 version = 118 script_version = 6 ; cse_alife_trader_abstract properties money = 5000 character_profile = gar_dolg_blokpost_commander ; cse_alife_object properties game_vertex_id = 359 distance = 16.1000003814697 level_vertex_id = 203041 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] gar_dolg_blokpost = true [logic] meet = meet [meet] use/use_wpn = true meet_dialog = gar_dialog_prapor END story_id = 115 ; cse_visual properties visual_name = actors\dolg\stalker_do_balon_4 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 2 g_group = 7 health = 2 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 2 upd:timestamp = 0 upd:creature_flags = 0 upd:position = 29.2251853942871,0.488445281982422,233.359680175781 upd:o_model = 0 upd:o_torso = 0.000323313870467246,-0.0128737986087799,0 upd:g_team = 0 upd:g_squad = 2 upd:g_group = 7 ; 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 equipment_preferences = 1,1,2,2,2 main_weapon_preferences = 0,2,2,1 ; cse_ph_skeleton properties ; cse_alife_human_stalker properties upd:start_dialog = ; se_stalker properties ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; В character_desc_garbage написал: <specific_character id="gar_dolg_blokpost_commander" team_default = "1"> <name>gar_dolg_blokpost_leader_name</name> <icon>ui_npc_u_stalker_do_balon_4</icon> <map_icon x="4" y="0"></map_icon> <bio>gar_dolg_blokpost_leader_bio</bio> <class>gar_dolg_blokpost_commander</class> <community>dolg</community> <terrain_sect>stalker_dolg_terrain</terrain_sect> <rank>592</rank> <reputation>140</reputation> <money min="600" max="2000" infinitive="0"/> <snd_config>characters_voice\human_02\dolg\</snd_config> <crouch_type>0</crouch_type> <visual>actors\dolg\stalker_do_balon_4</visual> <supplies> [spawn] \n wpn_pm \n ammo_9x18_fmj \n wpn_bm16 \n ammo_12x76_dart \n device_torch \n #include "gameplay\character_drugs.xml" \n #include "gameplay\character_food.xml" </supplies> #include "gameplay\character_criticals_6.xml" <start_dialog>gar_dolg_blokpost</start_dialog> <start_dialog>dm_hello_dialog</start_dialog> <start_dialog>gar_dialog_prapor</start_dialog> <actor_dialog>dm_cool_info_dialog</actor_dialog> <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> </specific_character> Изменено 4 Июля 2015 пользователем NL-Vincenz Ссылка на комментарий
Хемуль36рус 1 789 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 @NL-Vincenz, логика не может быть [logic] meet = meet Почитай в теме по диалогам, там всё доступно расписано. Или здесь http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2 Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 @NL-Vincenz, тебе Карлан выше уже ответил. Поищи в имеющихся конфигах секцию meet, где есть настройка use = self или use_wpn = self и посмотри, как там это сделано. Инструмент Ссылка на комментарий
UnLoaded 313 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 а если уйти от нпс на некоторое расстояние, то логика зависает. Что я только не делал, рядом работает, уходишь, виснет. Что значит "логика зависает" ? В чем это выражается ? "на некоторое расстояние" - на какое ? Если уйти от непися на расстояние больше alife-радиуса, то он уйдет в офф-лайн(если не прописано ему иное) и естественно не будет логику отрабатывать... Ссылка на комментарий
RafMadMan 85 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 (изменено) Ребята, делал я значит сегодня первые попытки спавна нпц. Спавн нпц через скрипт показался мне не очень функциональным, поэтому решил пойти путём редактирования all.spawn. Ну и вот по этому уроку я заспавнил нпц, вроде как. Всё бы нечего, но при синхронизации клиента игра вылетает с таким логом: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...rsol\s.t.a.l.k.e.r\gamedata\scripts\amk_anoms.script:307: attempt to index local 'sobj' (a nil value) stack trace: Фишка в том, что сделал всё в точности по уроку (Ну для первого раза), только что координаты свои подставил. И вот никак не могу понять, да и многим людям я уже мозг загрузил этой проблемой - тоже в непонятке сидят и листают справочники. Что я такого неправильно сделал? Где я мог ошибиться, накосячить? Файл amk_anoms.script в жизни не трогал. Нечего больше не добавлял, только вот спавнил нпц и всё. Так же прилагаю все данные о нпц: Секция нпц в all.spawn с моими координатами (Спавнится возле двери Сидора, типо охранник.): [914] ; cse_abstract properties section_name = stalker name = noobik position = -249.616,-24.800,-135.920 direction = 0,0,0 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_noobik ; cse_alife_object properties game_vertex_id = 7 distance = 0 level_vertex_id = 10132 object_flags = 0xffffffbf custom_data = < [logic] active = walker@stay_at_position combat_ignore = combat_ignore danger = danger_condition [walker@stay_at_position] path_walk = walker_stay_at_position_walk path_look = walker_stay_at_position_look [combat_ignore] combat_ignore_cond = always [danger_condition] ignore_distance = 0 ignore_distance_corpse = 0 ; cse [smart_terrains] none = true END story_id = 10000 ; cse_visual properties visual_name = actors\soldier\soldier_beret_1 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 2 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = -249.616,-24.800,-135.920 upd:o_model = 0 upd:o_torso = 0.028013030067086,0,0.9996075630188 upd:g_team = 0 upd:g_squad = 1 upd:g_group = 2 ; 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 = 1,2,2,1,2 predicate4 = 0,1,1,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties Вот пути (Ну он стоять должен, поэтому по одной точке.) : [walker_stay_at_position_walk] points = p0 p0:name = name00 p0:flags = 0x1 p0:position = -233.837997436523,-19.9890003204346,-156.845993041992 p0:game_vertex_id = 7 p0:level_vertex_id = 10132 [walker_stay_at_position_look] points = p0 p0:name = name00 p0:flags = 0x1 p0:position = -234.837997436523,-19.9890003204346,-157.845993041992 p0:game_vertex_id = 7 p0:level_vertex_id = 10132 Секция в character_desc_escape.xml: <!---------------------------------------esc_noobik-----------------------------------------------------> <specific_character id="esc_noobik" team_default = "1"> <name>Нубик</name> <icon>ui_npc_u_stalker_neytral_balon_1</icon> <bio>esc_noobik</bio> <class>esc_noobik</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <rank>434</rank> <reputation>5</reputation> <money min="600" max="2000" infinitive="0"/> <snd_config>characters_voice\human_01\stalker\</snd_config> <crouch_type>-1</crouch_type> <visual>actors\soldier\soldier_beret_1</visual> <supplies> [spawn] \n wpn_pm \n ammo_9x18_fmj = 1 \n wpn_ak74u \n ammo_5.45x39_fmj \n </supplies> #include "gameplay\character_criticals_4.xml" </specific_character> В game_story_ids написал: 10000 = "esc_noobik" В npc_profile.xml добавил: <character id="esc_noobik"> <class>esc_noobik</class> <specific_character>esc_noobik</specific_character> </character> В spawn_sections.ltx добавил это: [esc_noobik]:stalker $spawn = "respawn\esc_noobik" character_profile = esc_noobik spec_rank = novice community = stalker Помогите пожалуйста, а то никак уже не могу решить эту проблему 2й день( Вот, если что line 307-й в amk_anoms.script: --Строчки 306-315 function set_anomaly_status(sobj, status) local anom_id=sobj.id --Она самая if status=="del" then amk.mylog("Disabling "..sobj:name()) end local tbl = amk.get_anomaly_data(sobj) tbl.custom=modify_anomaly_custom_data(tbl.custom,status) amk.set_anomaly_data(tbl, sobj) set_online_anomaly_status(anom_id, status) end Изменено 4 Июля 2015 пользователем RafMadMan Ссылка на комментарий
makdm 37 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 (изменено) @RafMadMan, откуда у вас в ТЧ взялся скрипт amk_anoms.script ? Если Вы учитесь, то делайте на оригинальном ТЧ, и тогда таких вылетов у вас не будет. А уж как начнёте разбираться в скриптах, тогда и подключайте дополнительные скрипты из АМК мода. Изменено 4 Июля 2015 пользователем makdm 1 Ссылка на комментарий
RafMadMan 85 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 @makdm, да скрипты я знаю на достаточном для меня уровне, спавнить я умею, но другими способами. Вот вчера впервые в жизни попробовал через спавн и получил такое. Ссылка на комментарий
makdm 37 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 да скрипты я знаю на достаточном для меня уровне Ну если на достаточном, то тогда зачем задавать вопросы про причину вылета? Идёте по скриптам ( от строки вылета ) и находите причину. Всё элементарно. спавнить я умею, но другими способами Хотелось бы узнать количество других способов спавна, которые вы знаете в Сталкере. Поделитесь опытом. 2 Ссылка на комментарий
RafMadMan 85 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 @makdm, из других способов: спавн через скрипт или сдк. А насчёт скриптов: акцентирую внимание на словах: "Достаточном для меня". Ссылка на комментарий
Карлан 1 049 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 @RafMadMan, судя по твоем репорту - недостаточно . А ты пальцы то не растопыривай, тебе дело говорят, назвался груздем лезь в печь или как оно там. Ссылка на комментарий
makdm 37 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 @RafMadMan, я уже дал вам совет. Экспериментируйте на оригинальном ТЧ, тогда можно будет, в случае вылета, понять, где у вас ошибка. В вашем случае объяснить причину вылета невозможно. Могу вам только сказать, что аргумент sobj, переданный в функцию set_anomaly_status, равен nil. А вот почему он равен nil, исходя из того, что вы предоставили, только экстрасенсы знают. Ссылка на комментарий
Хемуль36рус 1 789 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 (изменено) @UnLoaded, с одной причиной я разобрался, а вот вторая, не пойму из-за чего. Вот эта ремарка [remark@varan2] target = actor snd = varan2 meet = no_meet combat_ignore_cond = always danger = danger_condition@varan on_signal = sound_end | walker@varan4 %+varan2_sound% проигрывается если Гг находится рядом с нпс, но если выполнять квест так как он должен быть, то при возвращении к НПс он ремарку не проигрывает, но находится вроде как в той секции, которая идет после ремарки. Я уже тестировал и по другому, беру квест рядом с нпс то что нужно уже в рюкзаке, выкидываю в сторонке, квест взял, предмет в рюкзак, если сразу подойти к нпс, ремарка работает без проблем, а если уйти от него в офлайн и потом вернутся, ремарка уже не проигрывается. Почему это происходит, я не могу понять. Изменено 4 Июля 2015 пользователем Хемуль36рус Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий
AndrewMor 527 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 (изменено) ; cse [smart_terrains] none = true END story_id = 10000 Никаких "; cse" здесь никогда не было и быть не может. Вообще, секция [smart_terrains] обычно первая после строчки custom_data, потом уже пишут всю остальную логику. Глянь, как это в спавне любой локации ПЫСами сделано. И кстати, если бы ты логику в отдельный файл вынес, не пришлось бы спавн пересобирать и НИ начинать. Изменено 4 Июля 2015 пользователем AndrewMor Сталкер - наше всё! Ссылка на комментарий
Карлан 1 049 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 Никаких "; cse" здесь быть не может Лол, а если я напишу: ;blablabla перед кастом датой, меня григорович на феррари задавит? 1 2 Ссылка на комментарий
makdm 37 Опубликовано 4 Июля 2015 Поделиться Опубликовано 4 Июля 2015 (изменено) @Хемуль36рус, в секции [remark@varan2] пропиши: on_info = {+varan2_sound} walker@varan4 on_info2 = {=dist_to_actor_ge(145)} walker@varan4 %+varan2_sound% Изменено 4 Июля 2015 пользователем makdm Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти