AndrewMor 527 Опубликовано 26 Сентября 2019 Поделиться Опубликовано 26 Сентября 2019 11 часов назад, Баба ЯГА сказал: Как отправить скриптово НПС из точки А в точку Б, допустим, даже на пару метров от того места где он находится, это вообще возможно?.. В нужный момент выдать инфо, а дальше прописать нужное действие в логике НПС (переход в секцию логики по выдаче инфо). Сталкер - наше всё! Ссылка на комментарий
AndreySol 215 Опубликовано 26 Сентября 2019 Поделиться Опубликовано 26 Сентября 2019 13 часов назад, Баба ЯГА сказал: Как отправить скриптово НПС Уточни, что ты под этим понимаешь? Ссылка на комментарий
Kirgudu 1 187 Опубликовано 26 Сентября 2019 Поделиться Опубликовано 26 Сентября 2019 17 часов назад, Баба ЯГА сказал: Читал, там нет подробного объяснения. Всё там есть. level.start_stop_menu(wnd, true|false) - показывает|скрывает переданное в первом аргументе окно level.main_input_receiver() - возвращает открытое в настоящий момент окно (диалог, инвентарь и т. д.) 1 Инструмент Ссылка на комментарий
Баба ЯГА 7 Опубликовано 27 Сентября 2019 Поделиться Опубликовано 27 Сентября 2019 В 26.09.2019 в 09:41, AndreySol сказал: Уточни, что ты под этим понимаешь? В 26.09.2019 в 07:32, AndrewMor сказал: В нужный момент выдать инфо, а дальше прописать нужное действие в логике НПС (переход в секцию логики по выдаче инфо). Не, я не это имел ввиду, нужно именно скриптово, без логики, поршней и дополнительных костылей, что-то типа если то иначе, ну, например, стоит НПС на координатах (1,1,1) а ему нужно "приказать" пойти/переместиться на координаты (3,1,1), или - проверять по lvid и перемещать его по lvid, что-то типа этого. Я потому и спрашиваю, что не знаю как это сделать... Что-то похожее есть в скрипте который отвечает за перемещение нпс в укрытия при выбросе, но я там ничего не понял... И там без логики и поршней всё, а именно скриптово, но как это сделать? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
dsh 3 824 Опубликовано 27 Сентября 2019 Поделиться Опубликовано 27 Сентября 2019 @Баба ЯГА, это делается с помощью метода клиентского обьекта set_dest_level_vertex_id( lvid ). Непись пойдет на этот lvid, если в процессе его какой-нибудь скрипт не пошлет куда-нибудь в другое место. 2 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Баба ЯГА 7 Опубликовано 27 Сентября 2019 Поделиться Опубликовано 27 Сентября 2019 (изменено) 8 минут назад, dsh сказал: @Баба ЯГА, это делается с помощью метода клиентского обьекта set_dest_level_vertex_id( lvid ). Непись пойдет на этот lvid, если в процессе его какой-нибудь скрипт не пошлет куда-нибудь в другое место. А можешь на малюсеньком примере показать чтобы до меня как-то больше дошло... Ну, типа там, берём ID любого непися онлайн и... for i=1,65000 do local o = alife():level_obj_by_id(i) if o then o:set_dest_level_vertex_id( 45612 ) end end как-то так? Изменено 27 Сентября 2019 пользователем Баба ЯГА Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 28 Сентября 2019 Поделиться Опубликовано 28 Сентября 2019 Ребята, кто мне помогал, огромное спасибо! Теперь все НПС платно отправляют СМСки в чат, ибо нефиг халявничать! Возник следующий вопрос: тратить НПС деньги научились, а где бы им подзаработать? Реализована ли в НС какая-нибудь схема, где НПС в оффлайне продают ненужный лут? Ссылка на комментарий
Баба ЯГА 7 Опубликовано 28 Сентября 2019 Поделиться Опубликовано 28 Сентября 2019 Продолжаю пытаться отправить НПС по нужным координатам, на данный момент добился вот такого: npc:set_desired_position() npc:set_desired_direction() npc:clear_animations() npc:set_detail_path_type(move.line) npc:set_body_state(move.standing) npc:set_movement_type(move.run) npc:set_path_type(game_object.level_path) npc:set_mental_state(anim.free) npc:set_sight(look.danger, nil, 0) npc:remove_all_restrictions() gg_lvid = db.actor:level_vertex_id() npc:set_dest_level_vertex_id( gg_lvid ) но, например, нпс сидит у костра, когда я выполняю код, то он жопе так и едет к нужному lvid... Ну да ладно, дело вот в чём ещё, когда нпс достигает КРАЯ нужного level_vertex_id то он считает что всё хорошо, но, мне нужно чтобы нпс при достижении нужного level_vertex_id не останавливался на краю. а заходил В ЦЕНТР этой клетки, т.к. клетка, например может быть размером 3х3 метра, как это сделать? Подскажите ребята. Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
AndreySol 215 Опубликовано 28 Сентября 2019 Поделиться Опубликовано 28 Сентября 2019 57 минут назад, _Sk8_AsTeR_ сказал: Теперь все НПС платно отправляют СМСки в чат, ибо нефиг халявничать! Ты это о чем вообще? О ботах, которыми рулит ИИ движка? 1 час назад, _Sk8_AsTeR_ сказал: Реализована ли в НС какая-нибудь схема, где НПС в оффлайне продают ненужный лут? Ты бы спросил сначала: "А есть ли схема, где НПС в оффлайне этот лут добывают?". 2 минуты назад, Баба ЯГА сказал: но, например, нпс сидит у костра А ты подумал о том, что НПС не просто "сидит у костра", а что он находится под логикой некой работы в неком гулаге. И ты думаешь, что это нормальная идея - выдернуть скриптово его с работы из гулага? Ссылка на комментарий
Баба ЯГА 7 Опубликовано 28 Сентября 2019 Поделиться Опубликовано 28 Сентября 2019 @AndreySol, да, думаю это нормальная идея, и если ты заметил, я спрашивал - КАК ОТПРАВИТЬ НПС в ЦЕНТ КЛЕТКИ level_vertex_id - знаешь как это правильно сделать - то подскажи. Я задал конкретный вопрос - зачем ты мне вопросы задаёшь что я думаю??? Я сюда пришёл за помощью, я понятия не имею что такое гулаги и работа - ты знаешь как отправить НПС в ЦЕНТР клетки level_vertex_id ? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
mole venomous 3 330 Опубликовано 28 Сентября 2019 Поделиться Опубликовано 28 Сентября 2019 Добрый вечер. Подскажет ли кто-нибудь, как скриптово принудительно остановить перезарядку оружия у ГГ? Здесь могла быть ваша реклама. Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 28 Сентября 2019 Поделиться Опубликовано 28 Сентября 2019 (изменено) @AndreySol, а разве они оффлайн не подбирают? Они умеют в оффлайне драться, например, и вроде там же арты подбирают те же. amk_offline_alife.script Скрытый текст --есть бесхозное оружие amk.oau_reason="cn offline_alife chp13 "..tostring(victim and victim:name()) on_weapons_found(victim, vdata) break --прерываем цикл - событие отработано elseif #vdata.artefacts>0 then --есть арты amk.oau_reason="cn offline_alife chp14 "..tostring(victim and victim:name()) on_artifacts_found(victim, vdata) break --прерываем цикл - событие отработано elseif #vdata.inv_boxes>0 then --есть контейнеры. Надо обыскать. amk.oau_reason="cn offline_alife chp18 "..tostring(victim and victim:name()) on_inv_boxes_found(victim, vdata) break --прерываем цикл - событие отработано elseif items[victim.id] and #items[victim.id] > 0 then --попробуем продать всякого amk.oau_reason="cn offline_alife chp15 "..tostring(victim and victim:name()) -- amk.mylog("Offline: lets trade") amk.oau_reason="cn offline_alife chp17 "..tostring(victim and victim:name()) process_trade(victim) -- amk.mylog("Offline: trade done") break Скрытый текст function on_artifacts_found(victim, vdata) if (victim == nil or vdata == nil) then return end local obj, v_obj local object local v_id = victim.id local b_stalker = false -- Если сталкер - дадим опыт. if victim and IAmAStalker[victim:clsid()] and victim.community then local m_comm = victim:community() if (m_comm == "stalker" or m_comm == "dolg" or m_comm == "freedom") then b_stalker = true end end for i=1, #vdata.artefacts do v_obj = vdata.artefacts[i] if (v_obj) then object = alife():object(v_obj.id) if (object and object:name() == v_obj.name) then obj = pick_item(victim, object) if (obj) then if (b_stalker == true) then victim:set_rank(victim:rank() + rate_art_found) end end end end end process_trade(victim) end Изменено 28 Сентября 2019 пользователем _Sk8_AsTeR_ Ссылка на комментарий
Баба ЯГА 7 Опубликовано 30 Сентября 2019 Поделиться Опубликовано 30 Сентября 2019 Ребята, как узнать на карте произвольный level_vertex_id, ну например, level_vertex_id(30078) - а мне возвращает если он существует то true и его координаты, а если его не существует то возвращает просто false, как такое реализовать? upd: или как узнать по координатам ID вертекса и валидный он или нет? Например, я запрашиваю произвольные координаты на локации на которой находится ГГ, а мне возвращает по этим координатам level_vertex_id и то есть ли он там на самом деле, грубо говоря - если клетка АI сетки по этим координатам? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
naxac 2 441 Опубликовано 1 Октября 2019 Поделиться Опубликовано 1 Октября 2019 Цитата как узнать на карте произвольный level_vertex_id @Баба ЯГА, например так local v = math.random(1, vertex_count) Количество вертексов фиксированное, т ч. можно составить табличку [имя уровня] = кол-во вертексов. Позиция вертекса: level.vertex_position(level_vertex) Обратной функции в ТЧ точно нет, про ЧН/ЗП не в курсе. Есть в X-Ray Extensions: level.vertex_id_by_pos = function ( position ) db.actor:set_vector_global_arg_1( position ) return level.vertex_id() end Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Баба ЯГА 7 Опубликовано 1 Октября 2019 Поделиться Опубликовано 1 Октября 2019 @naxac, жаль что нельзя по координатам узнать ID вертекса 14 минут назад, naxac сказал: Количество вертексов фиксированное, т ч. можно составить табличку [имя уровня] = кол-во вертексов. Позиция вертекса: level.vertex_position(level_vertex) Я об этом думал, но, вот тут проблема,, например на Кордоне = 539254 вертекса, а при переборе показывает только 5421 из них 4702 - валидных... Если перебирать свыше 300000 - вылет. Ничего понять не могу... Я так понимаю, что клетка AI сетки - это и есть вертекс, значит на Кордоне должно быть 539254 вертекса по количеству AI клеток. 17 минут назад, naxac сказал: Есть в X-Ray Extensions: Я не знаю что это такое... Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
naxac 2 441 Опубликовано 1 Октября 2019 Поделиться Опубликовано 1 Октября 2019 (изменено) @Баба ЯГА, level_vertex не может быть невалидным по определению. Невалидным для AI может быть game_vertex, если он расположен вне аи-сетки. Цитата Я не знаю что это такое... https://www.amk-team.ru/forum/topic/10538-x-ray-extensions/ Изменено 1 Октября 2019 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Баба ЯГА 7 Опубликовано 1 Октября 2019 Поделиться Опубликовано 1 Октября 2019 @naxac, хорошо, как тогда перебрать все вертексы на Кордоне например? Вот так у меня показывает 4477 вертекса function GetLevelsVertexes(lname) local t = {} local i = 0 local graph = game_graph() local sim = alife() while graph:valid_vertex_id(i) do local v = graph:vertex(i) local ln = sim:level_name(v:level_id()) if ln == lname then t[#t+1] = v:level_vertex_id() end i = i+1 end return t, i end local t,i = GetLevelsVertexes(level.name()) а вот так показывает 5704 вертекса на Кордоне, а реально там 500000 клеток (а значит и вертексов) local colco_ver = 0 local all_colvo = 0 clear_log() while all_colvo < 350000 do if game_graph():vertex(all_colvo):level_id() == alife():level_id() then colco_ver = colco_ver + 1 --gc:execute( "load ~:> vertex_id ="..i..", " ) end all_colvo = all_colvo + 1 end upd: вот тут хотел поставить 600000 (предварительно количество посмотрел в LE) чтобы с запасом, но, как я и говорил если ставить больше чем 300000 - то вылет. while all_colvo < 350000 do Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
naxac 2 441 Опубликовано 1 Октября 2019 Поделиться Опубликовано 1 Октября 2019 (изменено) @Баба ЯГА, так оно и не покажет реальное количество нод, это же только вертексы точек графа. Реальное количество нужно смотреть в level.gct локации (или в level.ai, не помню, склероз, чтоб его...), с помощью, например, Graph Viewer, скриптами его не получить. Изменено 1 Октября 2019 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Баба ЯГА 7 Опубликовано 1 Октября 2019 Поделиться Опубликовано 1 Октября 2019 @naxac, так а что тогда возвращает db.actor:level_vertex_id() ? Что-то я запутался совсем... Я смотрел реальное количество клеток АИ так: открыл Кордон в LE и выделил все клетки и там внизу показывает количество выделенных клеток. Труба, короче. Я хотел определить какие вертексы есть вокруг ГГ в радиусе, скажем 3 метра, а потом вывести АИ сетку эту (кусочек) - на экран. Но выходит - ничего не выйдет.... Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
naxac 2 441 Опубликовано 1 Октября 2019 Поделиться Опубликовано 1 Октября 2019 @Баба ЯГА, почему же не выйдет. Перебирай все вертексы локации и проверяй расстояние. Если меньше 3х, то выводи на экран. for i = 1, count do if level.vertex_position(i):distance_to(db.actor:position()) <= 3 then -- тут выводишь клетку ... Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти