dsh 3 824 Опубликовано 25 Марта 2016 @HellRatz, @hi_flyer, вот, взято откуда-то отсюда: -- http://www.amk-team.ru/forum/index.php?showtopic=6458&p=937442 --[=[ local lname = level.name() local lvtab = GetLevelVertexes( lname ) local lvx = math.max( unpack( lvtab ) ) local lv = math_random( 1, lvx ) local gvtab = GetGameVertexes( lname ) local gv_min = math.min( unpack( gvtab ) ) local gv_max = math.max( unpack( gvtab ) ) --]=] function GetLevelVertexes( level ) local lvtab ={} local i = 0 while game_graph():valid_vertex_id( i ) do local lv = game_graph():vertex( i ):level_vertex_id() local ln = alife():level_name( game_graph():vertex( i ):level_id() ) if not lvtab[ ln ] then lvtab[ ln ] = {} end table.insert( lvtab[ ln ], lv ) i = i + 1 end return lvtab[ level ] end function GetGameVertexes( level ) local gvtab ={} local i = 0 while game_graph():valid_vertex_id( i ) do local ln = alife():level_name( game_graph():vertex( i ):level_id() ) if not gvtab[ ln ] then gvtab[ ln ] = {} end table.insert( gvtab[ ln ], i ) i = i + 1 end return gvtab[ level ] end 2 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 5 Апреля 2016 (изменено) @naxac, не, ну в самом деле, ну это уже какой-то совет из серии выстрелю себе в ногу. Ну есть же m_net_utils или xs_netpk. А, впрочем, ты прав. Бесполезно это. Какая разница, какую магию эта лабуда использует, если она так сделана, как сделана. Изменено 5 Апреля 2016 пользователем dsh dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 5 Апреля 2016 (изменено) @Romz, у тебя, похоже, OGSE? Тогда вместо той лабуды, лучше используй: function ts_get_weapon_ammo_type(sobj) local data = m_net_utils.get_weapon_data( sobj ) return data.ammo_type end Или вообще, вместо local ammo_type = ts_get_weapon_ammo_type( alife():object(wpn:id()) ) используй local ammo_type = ogse_wpn_utils.get_active_ammo_type( wpn ) Будем надеяться, что не попадется оружия с активированным подствольником. Впрочем, оригинал эту ситуацию тоже не обрабатывает. Изменено 5 Апреля 2016 пользователем dsh 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 8 Апреля 2016 @vampirnik77, первый дестрой вызывается, когда граната вылетает с руки. Дальше летит уже другая граната, если я правильно помню. Второй дестрой - это уже ее взрыв. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 8 Апреля 2016 @vampirnik77, и net_spawn и net_destroy вызываются. Когда граната появляется в руках, вызывается net_spawn и у этой гранаты есть parent. Потом гранату бросают и вызывается net_destroy, а потом появляется новая граната и для нее вызывается net_spawn. parent-а у этой гранаты нет. Она летит, падает и взрывается. Вызывается net_destroy. Один из вариантов отловить взрыв гранаты - это в net_spawn сохранить parent_id, а в net_destroy проверять, имеется-ли сохраненный parent_id. Если нет, значит это взрыв. Если есть - значит граната полетела. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 26 Апреля 2016 @TIGER_VLAD, самый простой вариант - сделать для него секцию, в ней указать "custom_data". Универсальный вариант - создать непися через alife():create() и любым, удобным для тебя, способом записать в его нетпакет нужную custom_data. 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 27 Апреля 2016 (изменено) @TIGER_VLAD, вот по тому примеру делать не нужно. Выкинь каку. Лучше делать local sobj = alife():create(...) local pk = xs_netpk.stalker( sobj ) if pk:isOk() then local data = pk:get() local cd = data.custom_data:getTable() cd.logic = { [ "cfg" ] = "logic\\my_very_custom_logic.ltx", } data.custom_data:set( cd ) pk:set( data ) end или local sobj = alife():create(...) local data = m_net_utils.get_stalker_data( sobj ) data.custom = "[logic]\ncfg=logic\\my_very_custom_logic.ltx\n" m_net_utils.set_stalker_data( data, sobj ) Пишу по памяти и могу ошибиться. Изменено 27 Апреля 2016 пользователем dsh 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 27 Апреля 2016 @TIGER_VLAD, про вертолеты и бтры не скажу, не смотрел. Возможно, даже если соотв. класс не поддерживается, читать, как alife item, и устанавливать только custom data. Для мутантов поддержка есть, m_net_utils.get_monster_data() и xs_netpk.monster(). 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 11 Мая 2016 (изменено) Народ, ну вот кто, кто вас учит так делать? for k, v in pairs(ex_sects) do if v == wpsec then return end end Так делать не надо ни-ког-да. Надо делать вот так if ex_sects[ wpsec ] then return end А в ex_sects естественно надо добавлять вот так local ex_sects = { [ "wpn_ognemet" ] = true, } И я, естественно, не стиль имею ввиду. Изменено 11 Мая 2016 пользователем dsh 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 11 Мая 2016 Хотя в посте вопрошающего говорилось о двух исключениях - гравипушка и огнемет Ты ведь какая штука. И ты о ней упоминал. Один создал табличку с двумя элементами. А второй, потом, или вообще десятый, запихает в эту табличку еще сотню. Ну потому, что он не скриптер и т.д. Просто есть вещи, которые не понимающему человеку не нужно делать никогда. Лучше таким людям делать шаблонно и не задумываться, будет это быстрее вон того варианта, при двух элементах в таблице, или не будет. Тем более, что таких мыслей и не возникнет. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 11 Мая 2016 Чисто гипотетически, на мой взгляд, это даже не так надо делать, а как-то вроде if get_bool( wpsec, script_name() .. ".ignore" ) then return end Ну и в секции оружия добавить ts_mod_soc.ignore = true Но что бы это стало работать не гипотетически, нужна хорошая скриптовая основа, где и get_bool() есть и много других хороших плюшек. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 12 Мая 2016 Ой, какая большая таблица. Я бы посоветовал, для определения квестового персонажа, в первую очередь проверять наличие story_id, и только потом, если его нету, смотреть в таблицу. Это позволит уменьшить эту таблицу, если не избавиться от нее совсем. Всё-таки, наличие story_id с большой вероятностью будет означать, что этот персонаж квестовый. Обратное не верно. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 12 Мая 2016 (изменено) if not quest_npc[obj:name()] Как минимум не нужно делать так, а нужно делать if not quest_npc[obj:section_name()] Это первое, что в глаза бросается. А вообще, что-то я не въезжаю, а зачем перебираются все объекты игрового мира? Что это вообще делает-то? Мутный какой-то скрипт. Изменено 12 Мая 2016 пользователем dsh dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 12 Мая 2016 Ну дык. Вот почему на прошлой странице я и писал про то, как не надо никогда делать, а как надо всегда делать. Именно по этому. Приводишь пример, а потом обнаруживаешь его где-то, используемый совсем не для того и не там и не так. А потом вообще находишь это склонированным в десятке других скриптов. 2 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 13 Мая 2016 @Romann, что бы не городить таблицы и использовать конфиги, см. пост 7341. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 26 Мая 2016 @Sla-Sla, подробно не скажу. Судя по упоминанию времени, уборщик мусора что-то нужное удалил. У меня подобное как-то было, а подробностей вспомнить не могу. Инициализировал какой-то контрол и ссылку на него нигде не сохранял. Что-то типа того. Не могу подробней вспомнить. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 27 Мая 2016 @Sla-Sla, если разберешься, то вот тут вот: https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh_rukzak.script скриптовый рюкзак. Тоже в виде списка показывает содержимое себя в одной вкладке и содержимое инвентаря ГГ в другой. Примерно то, что тебе нужно. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 11 Июня 2016 численное значение текущего cam_fov А какое оно еще может быть? Возможно ты имеешь ввиду db.actor:get_camera_fov() 1 dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 12 Июня 2016 С помощью XE можно, но особо не поувеличиваешь. Например, ту скорость, что стоит в ОП-2 по умолчанию, увеличивать уже и некуда. Максимум, на десяток процентов, а далее ГГ начинает стукаться о воздух. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение
dsh 3 824 Опубликовано 20 Июня 2016 @PTB, а ты сделай вообще level.disable_input() и никто, ничего не будет доставать. dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение