AndrewMor 530 Опубликовано 22 Марта 2016 (изменено) dsh, а в какое место сию проверку поместить local sobj = alife():create() sobj:brain():update() выведи в лог sobj:smart_terrain_id() в функцию спавна, прямо в тело цикла? for s = 1, 3 doalife():create("dog_weak",vector():set(128.0493927002,16.724941253662,63.131950378418),1144984,4025)end Я просто со скриптами на вы, надеюсь, пока. Изменено 22 Марта 2016 пользователем AndrewMor Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 22 Марта 2016 (изменено) может, ты забыл указать в точках путей количество мобов, которые будут записаны на работу этого пути? В general_lair это читается из way_point'ов. И еще вроде какие-то параметры туда пишутся. Точку одну указал, совпадающую с центром смарта: [pred_dog_home_1] points = p0 p0:name = name00 p0:position = 132.74263000488,22.745307922363,6.7319641113281 p0:game_vertex_id = 4026 p0:level_vertex_id = 1152786 Смотрел на примере кровососа у элеватора на Кордоне. Может, их три надо было указать? Изменено 22 Марта 2016 пользователем AndrewMor Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 22 Марта 2016 (изменено) capacity в твоем гулаге - 3, а по умолчанию на каждую точку "home" в general_lair назначается 10 работ. Попробуй в точке явно указать количество: p0:name = name00|count=3 Попробую. Или еще возможно такое, что мобы уходят на более приоритетные работы в другие гулаги. Тогда им в custom_data надо указать конкретный смарт. Они никуда не уходят. Они сидят в точке спавна. И никакой кастом-даты я им не указывал. Может, неправильно объяснил. В общем, я создал смарт и хочу, чтобы мобы спавнились в другой точке, но шли бы каждый на свою работу. Как им тогда way-point правильно прописать? И как тогда правильно их спавнить, указав кастом-дату? Не в первый раз сталкиваюсь с таким вылетом: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : [error]Arguments : LUA error: ...lishing\stalker-shoc\gamedata\scripts\ph_door.script:88: C stack overflow Возникает редко и в разных ситуациях. Конкретно этот вылет возник при переходе из Припяти на Радар. Причем здесь вообще ph_door.script? Ни в Припяти, ни на Радаре никаких дверей нету. Изменено 22 Марта 2016 пользователем AndrewMor Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 22 Марта 2016 (изменено) dsh, написал, как ты и сказал, только log2 заменил на printf. Вот кусок лога: ! Unknown command: [smart_terrain_pred_dog]_register_called_obj=dog_weak51725_gulag_type=general_lair* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_object_setup_offline:_obj=dog_weak51725* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_setJob:_obj=dog_weak51725_job=1_logic@pred_dog_home_1* Log file has been saved successfully!! Unknown command: ***__pred_dog_--_State:_0_--_Total_population:_1/3_--_Non_exclusive_population:_1/3* Log file has been saved successfully!! Unknown command: My_smart:_dog_weak51725:_smart_terrain_id_=_38827* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_register_called_obj=dog_weak51727_gulag_type=general_lair* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_object_setup_offline:_obj=dog_weak51727* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_setJob:_obj=dog_weak51725_job=1_logic@pred_dog_home_1* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_setJob:_obj=dog_weak51727_job=7_logic@pred_dog_home_1* Log file has been saved successfully!! Unknown command: ***__pred_dog_--_State:_0_--_Total_population:_2/3_--_Non_exclusive_population:_2/3* Log file has been saved successfully!! Unknown command: My_smart:_dog_weak51727:_smart_terrain_id_=_38827* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_register_called_obj=dog_weak51729_gulag_type=general_lair* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_object_setup_offline:_obj=dog_weak51729* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_setJob:_obj=dog_weak51727_job=1_logic@pred_dog_home_1* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_setJob:_obj=dog_weak51729_job=7_logic@pred_dog_home_1* Log file has been saved successfully!! Unknown command: [smart_terrain_pred_dog]_gulag:_setJob:_obj=dog_weak51725_job=6_logic@pred_dog_home_1* Log file has been saved successfully!! Unknown command: ***__pred_dog_--_State:_0_--_Total_population:_3/3_--_Non_exclusive_population:_3/3* Log file has been saved successfully!! Unknown command: My_smart:_dog_weak51729:_smart_terrain_id_=_38827* Log file has been saved successfully! По всему, собачки берутся по этот смарт, что радует. Значит, точка смарта должна совпадать с точкой спавна собак, так надо понимать. Спасибо за наводку! Изменено 22 Марта 2016 пользователем AndrewMor Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 22 Марта 2016 @dsh, ну мне и надо, чтобы они на работу вышли. А заспавнил примерно метрах в шестидесяти. Но возник еще вопрос: почему при подсчете численности гулага выдается 0? Считал так: local text = xr_gulag.getGulagPopulation("pred_dog")news_manager.send_tip(db.actor, text, nil, nil, 30000) Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 22 Марта 2016 Дошедшими на работу считаются те, кто находится в радиусе job_position_threshold от первой точки пути работы. Если у тебя не переделанный каким-то образом xr_gulag. xr_gulag не переделан никоим образом. А job_position_threshold прописан 120, вроде бы в радиус попадает. Есть еще функция getGulagPopulationComed, считающая только пришедшие персонажи, но и она выдает 0. Почему так? dsh, ты оказался прав. Функция выдавала количество дошедших до работы мобов, потому и 0. Другая функция выдавала общее население смарта - 3. Но фишка в том, что если всех собак перебить, население смарта все равно 3. А мне надо знать количество живого населения. Как такое сотворить? Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 23 Марта 2016 Напомните, кто-нибудь плиз, как прикрутить логику к заспавненному скриптом мобу или НПС. Видел конструкцию раньше, буквально пять строк, но совершенно не помню, как это сделать. Буквально, как к заспавненному скрипто мобу прикрутить смарт-террейн. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 23 Марта 2016 naxac, а примерчиком не поделитесь? Нужно именно прикрутить смарт-террейн. _Val_, дело в том, что секция [smart_terrains], прописанная в файл логики, оттуда не читается. Я пробовал прикрутить логику, вроде получилось. А вот со смартом - беда.. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 24 Марта 2016 проще и надежнее всего в секции непися указать файл с custom_data. А в этом файле уже писать все, что нужно. А как конкретно? Ну или где такое подсмотреть? А если придется много разных НПС заспавнить с разными смартами - для каждого свою секцию создавать нужно, так выходит? Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 24 Марта 2016 Т.к. ты не программист Скажем так, не совсем программист, скорее, программист-самоучка. Паскаль знаю, и в общем-то неплохо. Но Луа для меня - темный лес. Надеюсь, пока. А за советы - гран мерси. Сорри за оффтоп. naxac, dsh: огромное вам спасибо за участие, камрады, всё получилось!!! Вроде мелочь, а приятно, что что-то смог, пусть и с вашей помощью. Модераторы, не сочтите за сильный оффтоп, но даже с read-only я согласен. 1 Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 26 Марта 2016 (изменено) Опять прошу помощи. Появляюсь на локации, запрашиваю xr_gulag.getGulagPopulation("pred_flesh_plant") - выдает 0. Подхожу ближе к смарту, опять запрашиваю - выдает 5, как и должно быть. Собственно, вопрос: как, появившись на локации, узнать количество населения смарта, даже если он далеко и находится в оффлайне? Изменено 26 Марта 2016 пользователем AndrewMor Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 26 Марта 2016 dsh, попробовал, все равно выдает 0. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 27 Марта 2016 @dsh, если написать local population = strn.gulag:get_population() news_manager.send_tip(db.actor, population, nil, nil, 30000) то ничего не возвращает, сообщение не выдается. А если написать if population == 0 then news_manager.send_tip(db.actor, "любой текст", nil, nil, 30000) end то как раз "любой текст" и выдается на экран в теле сообщения. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 27 Марта 2016 send_tip(db.actor, tostring(population), nil, nil, 30000) Так мне ж не сообщение выдать нужно, а именно число знать. И если конструкция if population == 0 then news_manager.send_tip(db.actor, "любой текст", nil, nil, 30000) end работает, значит, population как раз и равна нулю, что не есть хорошо. Попробуй так: send_tip(db.actor, tostring(population), nil, nil, 30000) Пробовал, выдает 0. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 28 Марта 2016 Чтоб получить данные по смарту, находящемуся в офф-лайне, бессмысленно дергать методы "приписанного" к нему гулага - они работают только в он-лайне. Это я уже и сам понял... Смотри в сторону smart_terrain.script, он как я понимаю обрабатывает смарт и в офф-лайне. Спасибо, буду пробовать. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 28 Марта 2016 кстати есть ф-ция se_smart_terrain:stat(), а в ней local pop = self.gulag:get_population() Я так и не понял, как мне эту функцию вызвать, а примеров ее вызова не нашел. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 29 Марта 2016 У меня выдает 14(у меня в нем действительно 14 душ), вызывал ф-цию на Свалке, т.е. Кордон стопудово офф-лайн, значит это вроде то что тебе нуно... Огромное спасибо, вечерком попробую. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 29 Марта 2016 (изменено) Capacity - константа, которая читается из базовых настроек и в оригинале никак не может меняться, и она абсолютно никакого отношения к текущему числу населения не имеет. Даже в самом скрипте дан этот комментарий. А как же тогда получить живое население гулага в оффлайне? Например, можно ли использовать (и как) функцию function gulag:get_population() return self.population end из xr_gulag? Изменено 29 Марта 2016 пользователем AndrewMor Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 29 Марта 2016 в task_manager для этого используется get_population_comed(): Да вроде не работала, когда смарт в оффлайне, выдавала живое население 0. В онлайне - все было нормуль. Или у меня не получилось ее правильно использовать. Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение
AndrewMor 530 Опубликовано 24 Апреля 2016 (изменено) Выручайте, камрады. Спавню сталкера-зомбированного (это важно) такой конструкцией, чтоб логику прикрутить: local obj = alife():create("stalker_zombied",vector():set(132.84954833984,8.5610275268555,-19.224378585815),1152755,4019)local params=amk.read_stalker_params(obj)params.custom="[logic]\ncfg = scripts\\zombied1.ltx"amk.write_stalker_params(params,obj) Сама логика: [logic]active = walkeron_death = death[walker]path_walk = pred_zombied_path1sound_idle = state[death]on_info = %+jup_und_zombied1_death% Сталкер спавнится, но спавнится нейтралом, а не зомбированным. Собсно, вопрос: почему? И как сие исправить? Изменено 24 Апреля 2016 пользователем AndrewMor Сталкер - наше всё! Поделиться этим сообщением Ссылка на сообщение