dsh 3 824 Опубликовано 21 Июня 2016 Не подойдет. Что бы подошло, нужно после создания, ручками, назначить объекту story_id. А так, перебирать все объекты в цикле и встретив подходящую секцию, удалять и прерывать цикл. Самый простой вариант. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 21 Июня 2016 local sObj = alife():object("esc_wolf") И чего? esc_wolf сидит в all.spawn, поэтому его можно достать по имени. А вот если ты его скриптово заспаунишь по секции, то имя у него будет не "esc_wolf", а какое-нибудь "esc_wolf12345". dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 22 Июня 2016 Я бы посоветовал, всем, никогда не удалять из таблицы изнутри цикла по ipairs. Во избежание граблей. Очень, очень плохая практика. Да, я знаю, что я Капитан Очевидность. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 13 Июля 2016 @Zander_driver, то, что там 6 строчек - это ничего не значит. Вот тот же trade_manager прекрасно может битый сейв сделать. Из свежих воспоминаний. Соляночный Седой на АТП. Из-за наличия легкого бреда в конфиге торговли, сейв с ним в онлайне получался битый. Но уже полученный убитый сейв получается никак не оживить Ну почему не оживить. По тому, что ты показывал, у тебя не записалась онлайновая часть для Сахарова. Ну и бог бы с ним. Убери в скрипте для него abort, загрузись и переспаунь инвалида. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 14 Июля 2016 @Kondr48, вот тут не строка self.button_1 А вот тут уже строка self[ "button_1" ] Оба варианта - одно и то же. 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 18 Июля 2016 (изменено) гы, позиции нпс... Позиции нпс там используются, что бы не генерировать на их месте аномалии. @CRAZY_STALKER666, выбираешь случайный левел вертекс. У него, соотв. методом, можно получить позицию, т.е. те самые координаты. Потом методом подбора находишь ближайший гейм вертекс. В процессе всего этого производишь проверки на неподходящие позиции/вертексы и игнорируешь их. И так до тех пор, пока не получится то, что можно использовать. Изменено 18 Июля 2016 пользователем dsh 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 27 Июля 2016 @AndrewMor, вот тут вот https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh.script см. функции GetLevelVertexes( level ) и GetGameVertexes( level ). Взято отсюда же. Выше есть примеры использования. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 9 Августа 2016 @Romann, насколько я вижу, вот так это делается в ОП-2: amk_mod.spawn_military_tech_pack(alife():create("vehicle_btr",vector():set(-163.66780090332,-0.20163251459599,-213.43978881836),73278,554),"vehicle_btr", "scripts\\ohota\\btr.ltx") Вот сама spawn_military_tech_pack() function spawn_military_tech_pack(obj, spawn_item, spawn_item_logic) local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_s32 = 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_s32 = packet:r_s32() -- свойства cse_visual local model_visual = packet:r_stringZ() local cse_visual__unk1_u8 = packet:r_u8() local motion_name if spawn_item == "helicopter" then -- свойства cse_motion motion_name = packet:r_stringZ() end -- свойства cse_ph_skeleton local skeleton_name = packet:r_stringZ() local cse_ph_skeleton__unk1_u8 = packet:r_u8() local cse_ph_skeleton__unk2_u16 = packet:r_u16() local health local cse_alife_helicopter__unk1_sz local engine_sound if spawn_item == "helicopter" then -- свойства cse_alife_helicopter cse_alife_helicopter__unk1_sz = packet:r_stringZ() engine_sound = packet:r_stringZ() elseif spawn_item == "vehicle_btr" then health = packet:r_float() end -- теперь заполняем нужнvе параметрv -- свойства cse_alife_object packet:w_begin(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_s32) packet:w_s32(level_vertex_id) object_flags = bit_not(5) -- ~5 = 0xfffffffa packet:w_s32(object_flags) packet:w_stringZ("[logic]\ncfg = "..spawn_item_logic) --[=[ if spawn_item == "helicopter" then packet:w_stringZ("[logic]\ncfg = "..spawn_item_logic) elseif spawn_item == "vehicle_btr" then packet:w_stringZ("[logic]\ncfg = "..spawn_item_logic) end ]=] packet:w_s32(-1) packet:w_s32(cse_alife_object__unk3_s32) -- свойства cse_visual packet:w_stringZ(model_visual) packet:w_u8(cse_visual__unk1_u8) if spawn_item == "helicopter" then packet:w_stringZ(motion_name) end -- свойства cse_ph_skeleton skeleton_name = "idle" packet:w_stringZ(skeleton_name) packet:w_u8(cse_ph_skeleton__unk1_u8) packet:w_u16(cse_ph_skeleton__unk2_u16) if spawn_item == "helicopter" then -- свойства cse_alife_helicopter cse_alife_helicopter__unk1_sz = "idle" engine_sound = "alexmx\\helicopter" packet:w_stringZ(cse_alife_helicopter__unk1_sz) packet:w_stringZ(engine_sound) elseif spawn_item == "vehicle_btr" then health = 1 packet:w_float(health) end -- считvваем скорректированнvе параметрv packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) return obj end 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 9 Августа 2016 (изменено) Честно говоря, я бы не советовал использовать вот ту spawn_military_tech_pack() в том виде, в каком оно есть. Потому, как <далее вырезано нецензурное>. Я бы посоветовал переписать ее с использованием существующих библиотек для работы с нетпакетами, от Артоса или Экстрим. Хотя, положа руку на сердце, если мне самому вдруг понадобится заспаунить БТР, я воспользуюсь этой хренью. Но пообещаю себе, что позже точно-точно ее перепишу, честное пионерское. Изменено 9 Августа 2016 пользователем dsh 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 29 Сентября 2016 UnLoaded, у меня доспаун патронов сделан в amk_offline_alife в process_trade, при net_spawn актора, пока все еще в оффлайне. Что бы не ходить по граблям онлайновых объектов. Там как раз каждый непись продал все лишнее оружие и у него осталось то, которое он будет использовать. Вот его можно и проверить, сколько патронов имеется, чем заряжено и т.п. и доспаунить нужное, подремонтировать поломанное. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 26 Декабря 2016 @HellRatz,в x-ray extensions есть функции генерации нажатий кнопок. Названий не помню. 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 4 Января 2017 @TIGER_VLAD,мне в голову приходит только одна мысль. Я знаю, что звук шагов привязан к костюму. Полагаю, если сделать два одинаковых костюма и один из них сделать без звука шагов, то в нужный момент можно актора переодевать. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 10 Января 2017 можно взять дальше Можно, только жутко не удобная это штука. Если нужен вертекс на расстоянии, скажем, двух метров в определенном направлении, а в том направлении стена на расстоянии один метр, то получить вертекс за стеной не получится. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 25 Января 2017 @losiara, вылет явно не из-за этой функции. Точнее, может и из-за нее, но только косвенно. Проблема явно в game_relations.ltx. Возможно, какая-то группировка там не указана. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 25 Января 2017 (изменено) @losiara, у меня нет исходников 1.0004, но думаю, этот код не менялся. Судя по вылету, что-то запросило информацию о группировке из строки communities, которой там нет. Т.е. в communities указано меньше группировок. Изменено 25 Января 2017 пользователем dsh 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 26 Января 2017 level.vertex_in_direction( npc_pos, dir, i ) Т.е. получается, что level.vertex_in_direction( npc_pos, dir, 17 ) возвращает вертекс на расстоянии 229 метров? Чудеса. lvid1 = level.vertex_in_direction( npc_pos, dir, i ) Только сейчас обратил внимание. Почему npc_pos? Тут нет ошибки? Разве первый параметр не должен быть вертекс, а не позиция? dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 26 Января 2017 Какой смысл задавать ему расстояния ? Не понятно, что именно тебя удивляет? Насколько я понимаю, vertex_in_direction() возвращает самый ближний, валидный, вертекс к той точке, которая находится на запрашиваемом расстоянии от переданного вертекса и в указанном направлении. Если с разных исходных позиций - это значит передача первым параметром разных вертексов, то закономерно, что и результат возвращается разный. Или ты что-то другое имел ввиду? dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 26 Января 2017 Вот так и не понял: ближний к той, или ближний к этой. Ты указываешь начальный вертекс и задаешь расстояние. Движок ищет вертекс, который будет на максимальном расстоянии от начального вертекса, но не дальше указанного расстояния. Притом, у меня есть ощущение, что не дальше указанного расстояния - это не с точностью до миллиметра, а примерно. получить который не ближе 10, но не дальше 20 метров оттуда, откуда смотрим По идее, если запросить тот, который не дальше 20, то это будет именно то, что тебе нужно. А будет он, при этом, ближе 10 или дальше 10, уже зависит от наличия валидных вертексов на этом расстоянии. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 27 Января 2017 @Dennis_Chikin, а ты попробуй, пройдись циклом по всем вертексам, проверь какие из них accessible() для этого непися и сравни с тем, что тебе vertex_in_direction() возвращает. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 31 Января 2017 @losiara, полагаю, что те, кто стали нейтралами, принадлежат группировке, у которой goodwill к актору очень большой. Так? dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение