speczadanie 0 Опубликовано 13 Апреля 2011 Поделиться Опубликовано 13 Апреля 2011 Помогите написать скрипт: - если любой NPC (если можно, ещё добавить условие чтобы он был врагом) от игрока не дальше, чем в 50 метрах, то добавим ему отметку на радар (текстурой "XXX"), если расстояние будет больше 50, отметку удаляем. Ссылка на комментарий
Zander_driver 10 341 Опубликовано 13 Апреля 2011 Поделиться Опубликовано 13 Апреля 2011 Zander_driver, ну фантом ли объект определяется гораздо проще: local obj_clsid == self.object:clsid() if obj_clsid == clsid.psy_dog_phantom_s then Являются ли окружающие неписи собаками также очень просто проверяются по clsid. А как этим же методом обнаружить аномалии? Когда я обнаруживаю аномалии своим методом через секцию, то обнаруживаются только те что меняются после каждого выброса. А те что статичны и от выброса не перемещаются - они не обнаруживаются. Суть вопроса заключается в том - что писать после "clsid." чтобы найти аномалию. Еще было бы неплохо таким же методом обнаруживать костры... и вообще узнать побольше об этом методе, что как обнаруживать. Я почему то не могу найти такой информации. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Disord 1 Опубликовано 14 Апреля 2011 Поделиться Опубликовано 14 Апреля 2011 midichs, поменяй в конце секции с переходом местами слова, начинающиеся с dest_. Ссылка на комментарий
speczadanie 0 Опубликовано 14 Апреля 2011 Поделиться Опубликовано 14 Апреля 2011 Как сделать, чтобы красные метки врагов можно было отключать\включать инфопоршнями? Ссылка на комментарий
KD87 718 Опубликовано 14 Апреля 2011 Поделиться Опубликовано 14 Апреля 2011 (изменено) Zander_driver, C++ class clsid { const actor = 90; const art_bast_artefact = 0; const art_black_drops = 1; const art_cta = 3; const art_dummy = 4; const art_electric_ball = 5; const art_faded_ball = 6; const art_galantine = 7; const art_gravi = 8; const art_gravi_black = 2; const art_mercury_ball = 9; const art_needles = 10; const art_rusty_hair = 11; const art_thorn = 12; const art_zuda = 13; const artefact = 41; const artefact_s = 102; const bloodsucker = 14; const bloodsucker_s = 108; const boar = 15; const boar_s = 109; const burer = 16; const burer_s = 110; const car = 52; const cat = 17; const cat_s = 111; const chimera = 29; const chimera_s = 112; const controller = 18; const controller_s = 113; const crow = 19; const destrphys_s = 93; const device_detector_advanced = 53; const device_detector_elite = 54; const device_detector_scientific = 57; const device_detector_simple = 58; const device_flare = 55; const device_pda = 56; const device_torch = 59; const device_torch_s = 146; const dog_black = 20; const dog_red = 23; const dog_s = 116; const equ_exo = 60; const equ_military = 61; const equ_scientific = 62; const equ_stalker = 63; const equ_stalker_s = 65; const flesh = 24; const flesh_group = 25; const flesh_s = 117; const fracture = 26; const fracture_s = 119; const game = 70; const game_cl_artefact_hunt = 45; const game_cl_capture_the_artefact = 46; const game_cl_deathmatch = 47; const game_cl_single = 48; const game_cl_team_deathmatch = 49; const game_sv_artefact_hunt = 129; const game_sv_capture_the_artefact = 130; const game_sv_deathmatch = 131; const game_sv_single = 132; const game_sv_team_deathmatch = 133; const game_ui_artefact_hunt = 147; const game_ui_capture_the_artefact = 148; const game_ui_deathmatch = 149; const game_ui_single = 150; const game_ui_team_deathmatch = 151; const gigant_s = 118; const graph_point = 28; const hanging_lamp = 94; const helicopter = 50; const helmet = 64; const hlamp_s = 125; const hud_manager = 74; const inventory_box = 95; const inventory_box_s = 140; const level = 69; const level_changer = 84; const level_changer_s = 85; const main_menu = 86; const mp_players_bag = 87; const nogravity_zone = 211; const obj_antirad = 75; const obj_antirad_s = 135; const obj_attachable = 76; const obj_bandage = 77; const obj_bandage_s = 136; const obj_bolt = 78; const obj_bottle = 79; const obj_bottle_s = 137; const obj_breakable = 91; const obj_climable = 92; const obj_document = 80; const obj_explosive = 81; const obj_explosive_s = 138; const obj_food = 82; const obj_food_s = 139; const obj_medkit = 83; const obj_medkit_s = 142; const obj_pda_s = 144; const obj_phskeleton = 100; const obj_phys_destroyable = 99; const obj_physic = 96; const online_offline_group = 88; const online_offline_group_s = 89; const phantom = 30; const poltergeist = 31; const poltergeist_s = 120; const projector = 98; const pseudo_gigant = 27; const pseudodog_s = 121; const psy_dog = 22; const psy_dog_phantom = 21; const psy_dog_phantom_s = 114; const psy_dog_s = 115; const rat = 32; const script_actor = 134; const script_heli = 51; const script_object = 103; const script_phys = 97; const script_restr = 127; const script_stalker = 35; const script_zone = 101; const smart_cover = 104; const smart_terrain = 105; const smart_zone = 106; const smartcover_s = 107; const snork = 33; const snork_s = 122; const space_restrictor = 126; const spectator = 128; const stalker = 34; const team_base_zone = 214; const torrid_zone = 215; const trader = 36; const tushkano = 37; const tushkano_s = 123; const wpn_ak74 = 173; const wpn_ak74_s = 152; const wpn_ammo = 39; const wpn_ammo_m209 = 42; const wpn_ammo_m209_s = 141; const wpn_ammo_og7b = 43; const wpn_ammo_og7b_s = 143; const wpn_ammo_s = 40; const wpn_ammo_vog25 = 44; const wpn_ammo_vog25_s = 145; const wpn_auto_shotgun_s = 153; const wpn_binocular = 174; const wpn_binocular_s = 154; const wpn_bm16 = 175; const wpn_bm16_s = 155; const wpn_fn2000 = 176; const wpn_fort = 177; const wpn_grenade_f1 = 66; const wpn_grenade_f1_s = 67; const wpn_grenade_fake = 68; const wpn_grenade_launcher = 178; const wpn_grenade_launcher_s = 156; const wpn_grenade_rgd5 = 71; const wpn_grenade_rgd5_s = 72; const wpn_grenade_rpg7 = 73; const wpn_groza = 179; const wpn_groza_s = 157; const wpn_hpsa = 180; const wpn_hpsa_s = 158; const wpn_knife = 181; const wpn_knife_s = 159; const wpn_lr300 = 182; const wpn_lr300_s = 160; const wpn_pm = 183; const wpn_pm_s = 161; const wpn_rg6 = 184; const wpn_rg6_s = 162; const wpn_rpg7 = 185; const wpn_rpg7_s = 163; const wpn_scope = 186; const wpn_scope_s = 164; const wpn_shotgun = 187; const wpn_shotgun_s = 165; const wpn_silencer = 188; const wpn_silencer_s = 166; const wpn_stat_mgun = 189; const wpn_svd = 190; const wpn_svd_s = 167; const wpn_svu = 191; const wpn_svu_s = 168; const wpn_usp45 = 192; const wpn_usp45_s = 169; const wpn_val = 193; const wpn_val_s = 170; const wpn_vintorez = 194; const wpn_vintorez_s = 171; const wpn_walther = 195; const wpn_walther_s = 172; const wpn_wmagaz = 196; const wpn_wmaggl = 197; const zombie = 38; const zombie_s = 124; const zone = 216; const zone_acid_fog = 204; const zone_bfuzz = 205; const zone_bfuzz_s = 198; const zone_campfire = 206; const zone_dead = 207; const zone_galant_s = 199; const zone_galantine = 208; const zone_mbald_s = 200; const zone_mincer = 210; const zone_mincer_s = 201; const zone_mosquito_bald = 209; const zone_radio_s = 202; const zone_radioactive = 212; const zone_rusty_hair = 213; const zone_torrid_s = 203; Константы тут для ЗП. Не думаю, что в ТЧ сильно другое будет. Для определения аномалий добавь в _g.script что-то вроде такого: function IsAnomaly (object, class_id) local id = class_id or get_clsid(object) return anomaly_classes[id] == true end а в start_game_callback() (там же, в _g.script) вот такую таблицу: anomaly_classes = { [clsid.zone_acid_fog] = true, [clsid.zone_bfuzz] = true, [clsid.zone_bfuzz_s] = true, --ну и так далее, смотря какие аномалии нужно определять. } В любом месте можно будет обращаться к этой функции примерно так: local obj = self.object if IsAnomaly(obj) then Изменено 14 Апреля 2011 пользователем KD87 Ссылка на комментарий
speczadanie 0 Опубликовано 14 Апреля 2011 Поделиться Опубликовано 14 Апреля 2011 Есть объект OBJ, как вычислить расстояние до него от игрока? Ссылка на комментарий
=VENOM= 50 Опубликовано 14 Апреля 2011 Поделиться Опубликовано 14 Апреля 2011 Например, вот так: local distance = obj:position():distance_to(db.actor:position()) Ссылка на комментарий
Zander_driver 10 341 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 Вопрос такой. В bind_stalker-е, у актора по умолчанию нет хит-колбэка. Я пробовал его ставить по образу и подобию как у мобов, в методе reinit. Вылетов не последовало, но и работать новый колбэк отказался. А у кого-нибудь получалось его поставить? и как? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
_Призрак_ 11 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 Zander_driver В ЗП его восстановили, а в ТЧ есть только один вариант - сравнивать текушее здоровье с предыдующим Freedom Ссылка на комментарий
speczadanie 0 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 Попробовал, вылет: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: No such operator defined Ссылка на комментарий
KD87 718 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 speczadanie, а может, опечатка в коде? Ссылка на комментарий
speczadanie 0 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 Вот так у меня на апдейт поставлено: function update() for a=1,65534 do local obj = alife():object(a) if obj and IsStalker(obj) then if obj:position():distance_to(db.actor:position()) < 50 then db.actor:give_info_portion("iba") end end end Ссылка на комментарий
_Призрак_ 11 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 Один end пропустил, допиши в конце. Но функция у тебя конечно классная. У тебя все игра лагать будет. Лучше уж делай перебор таблицы db.storage например раз в 2 секунды Freedom Ссылка на комментарий
speczadanie 0 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 Это я только здесь пропустил, в скрипт-файле END имеется, но вылет остаётся. Что такое? Ссылка на комментарий
_Призрак_ 11 Опубликовано 15 Апреля 2011 Поделиться Опубликовано 15 Апреля 2011 Показывай все - что и где правил, какие скрипты. Freedom Ссылка на комментарий
Desertir 202 Опубликовано 16 Апреля 2011 Поделиться Опубликовано 16 Апреля 2011 (изменено) Здрасте. Сразу скажу, в спауне я ничего не представляю, интересна возможность реализации. Итак, как я понимаю в all.spawn задаются пути, по которым двигаются все живые объекты. А как на счет неживых? Возможно ли, допустим, задать 2 точки, а по ним пустить артефакт, чтобы он двигался туда-сюда. Вообще вопрос такой: возможно ли заставить специально двигаться артефакт? Т.е. не как из рюкзака выбросили, и он укатился, а своими "силами". Поэтому и вспомнил пути, ну как вариант, хотя они накладывают жеские ограничения. Изменено 16 Апреля 2011 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
_Призрак_ 11 Опубликовано 16 Апреля 2011 Поделиться Опубликовано 16 Апреля 2011 В ЗП артефакты как раз двигаются по путям. Поэтому это возможно Freedom Ссылка на комментарий
RayTwitty 509 Опубликовано 16 Апреля 2011 Поделиться Опубликовано 16 Апреля 2011 Desertir, А как на счет неживых? В РМА моде Нива в ТД сама ездила. Подъезжала к фабрике и останавливалась. Можешь там посмотреть. Ссылка на комментарий
Zander_driver 10 341 Опубликовано 20 Апреля 2011 Поделиться Опубликовано 20 Апреля 2011 В общем, такая непонятка. В bind_monster-е, добавил в самый конец death-колбэка такой код: if victim then news_manager.send_tip(db.actor, "Death. victim: "..victim:section(), nil, nil, 10000) end if who then news_manager.send_tip(db.actor, "Death. who: "..who:section(), nil, nil, 10000) end Убиваю кабанов - и никаких сообщений не появляется, как будто колбэк не работает или не получает заявленных в заголовке данных victim и who. Почему так? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
[=sinedsc=] 0 Опубликовано 22 Апреля 2011 Поделиться Опубликовано 22 Апреля 2011 спрашивал на геминаторе - там никто не знает, решил тут спросить тапками не бросаться есле вопрос не в тему. я копошился с гулагами долгое время и решил создать свой, но он почему то не работает. вылетов нет, все вроде норм, но НПЦ на работы не идут. Гулаг на новом уровне есле это важно, настройки в папке скрипт -------------------------------------------------------------------------- -- загрузка работ -------------------------------------------------------------------------- local t = {} function load_job(sj, gname, type, squad, groups) -------------------------------------------------------------------------- -- пока что тестовый смарт -------------------------------------------------------------------------- --' прогулка лукаша (тестовая) if type == "dark_test" then t = { section = "logic@test_walker", idle = 0, prior = 8, state = {0,1}, position_threshold = 100, online = true, in_rest = "dark_test_restr", out_rest = "", predicate = function(obj_info) return obj_info.profile_name == "gar_hellcar" end } table.insert(sj, t) end -------------------------------------------------------------------------- -- состояние гулага -------------------------------------------------------------------------- if type == "dark_test" then return function(gulag) local actor = db.actor if not actor then return gulag.state end elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 22 then return 0 -- день else return 1 -- ночь end end end -------------------------------------------------------------------------- -------------------------------------------------------------------------- function load_ltx(gname, type) return nil end function checkStalker(npc_community, gulag_type, npc_rank, se_obj) if gulag_type == "dark_test" then return npc_community == "stalker" end return false end настроойки в папке конфиг/миск ;------------------------------------------------------------------------------------------------- ;-- тестовая схема ;------------------------------------------------------------------------------------------------- [logic@test_walker] active = walker@test_walker [walker@test_walker] path_walk = test_walk1 path_look = test_look1 файлы с настроками гулага я взял у ПЫС ( gulag_escape ) и там уже произвел настройку. (есле что то я просто копипастил, в програмировании не селен) подскажите в чем косяк и может быть я где то что то незарегестрировал, как заставить работать гулаг? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти