Pug-Lover 2 Опубликовано 1 Апреля 2019 Помогите вытащить кусок воскрешения нпс из этого спавнера для народной солянки 2010. Нужно так, чтобы на чистый сталкер пошло.Спавнер Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 20 Апреля 2019 Здрасте, у кого нибудь есть скрипт или строчки для починки машины? Я просто делаю такой мини мод, в котором при нажатии клавиши у героя востанавливается хп, выносливость и т.д; так вот мне нужна скрипт, который можно вызвать из главного меню. Поможите? Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 14 Мая 2019 Здрасте. Знаю, что в сталкере тч есть такие функции: function set_character_rank(number); function character_rank(); и то, что они для изменения ранга, но при их использовании либо ничего не происходит, либо вылет. Кто-нибудь может дать строчки для использования этих функция в главном меню? То есть чтобы при нажатии на кнопку ранг повышался на один, то есть с новичка на опытного и т.д. (или чтобы прибавлялся балл опыта, который в пда) Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 16 Февраля 2020 Здрасте, есть ли какой-нибудь способ телепортации, изменения позиции НПС? Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 16 Февраля 2020 16.02.2020 в 18:07, gam сказал: Есть способ известный мне - это скрипт мобильного чейнджера (mobile_changer). Автор: Singapur22. Конечно, спасибо, но где его можно скачать чтобы опробовать? Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 16 Февраля 2020 @gam, Я только что проверил и понял, что этот скрипт только для телепортации игрока? Просто мне нужна телепортация других объектов типо НПС, предметов и прочего. Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 17 Февраля 2020 @gam, Мне нужен способ динамичной телепортации или изменения позиции объекта по такому принципу: Показать function teleport_func() local id, obj for id=0, 65535 do obj = level.object_by_id(id) if obj then local obj_pos = obj:position() local actor_pos = db.actor:position() if (and obj_pos:distance_to(actor_pos) > 0.1) then -- тут функция телепорта end end end end Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 17 Февраля 2020 @Zander_driver, Вообщем мне уже больше не нужна функция телепорта, нужна помощь в установки метки на все загруженные предметы. Я бы хотел, чтобы оно работало по тому же принципу, но устанавливало метку на каждый объект. Я делаю один мини-мод, который является чем-то типо спавн меню или в таком роде и мне нужна функция при активации которой на каждый объект (нужен именно подбираемый предмет) на карте устанавливалась метка, а дальше уже я сам разберусь, а если нет - то ждите меня тут. Т.е. (Показать) function ch_next:cheat23() local id, obj for id=0, 65535 do obj = level.object_by_id(id) if obj then local obj_pos = obj:position() local actor_pos = db.actor:position() if (obj_pos:distance_to(actor_pos) > 0.1) then -- *установка метки* end end end end Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 2 Июня 2020 Здрасте, никто не знает как можно прервать скрипт на 3 секунды и только по их истечению возобновить его? Т.е. работает скрипт, он прерывается, а потом продолжает работать Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 8 Июня 2020 Здрасте, есть ли какой-нибудь способ получить позицию или локацию сталкера, который на другой локации? 08.06.2020 в 07:45, Pug-Lover сказал: Здрасте, есть ли какой-нибудь способ получить позицию или локацию сталкера, который на другой локации? Сам догадался. Вообщем: function example() for a=1,65534 do obj=alife():object(a) --находим серверный объект if obj and level.map_has_object_spot(obj.id, "kill_stalker_location")~=0 then --если объект существует и 'параметр' то objlv=obj.m_level_vertex_id --получим левел вертекс объекта objgv=obj.m_game_vertex_id --гейм вертекст объекта objpos=obj.position --позицию end end endfunction example() for a=1,65534 do obj=alife():object(a) --находим серверный объект if obj and level.map_has_object_spot(obj.id, "kill_stalker_location")~=0 then --если объект существует и 'параметр' то objlv=obj.m_level_vertex_id --получим левел вертекс объекта objgv=obj.m_game_vertex_id --гейм вертекст объекта objpos=obj.position --позицию end end end и после нахождения параметров уже можно делать с ними всё, что хочешь (желательно ещё добавить бы проверки на валидность этих параметров, но я не знаю, обязательно ли это). Я, например, с помощью этого сделал телепорт к объекту на другую локацию (идёт проверка level.map_has_object_spot(obj.id, "kill_stalker_location")~=0 позволяющая узнать, что у объекта метка задания "Убить сталкера", т.е. с этой функцией можно взять задание и быстро тпнуться прямо к нпс, чтобы убить) и с этим всем можно много всего придумать. 1 Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 11 Июня 2020 Кто может подсказать как можно считать данные сталкера, записать их (чтобы после перезагрузки не стёрлось) и заспавнить этого же нпс на другой локации, т.е. чтобы получилось что-то типо телепорта? Делаю мод на напарников(знаю, что уже есть другие такие моды, но мне по другой причине нужно сделать по-другому, другие моды кидать не надо) и хочу сделать, чтобы с нпс можно было по всей зоне бродить. Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 11 Июня 2020 11.06.2020 в 19:34, Zander_driver сказал: @Pug-Lover, Читаешь нетпакет нпс, составляешь список его имущества, для сложных предметов вроде оружия, читая и их нетпакет тоже. Потом старого удаляешь, нового на новой локе спавнишь, вставляешь ему записанный нетпакет, спавнишь ему весь его хабар по списку, не забывая присвоить его оружию нетпакеты сохраненные при записи. Ну и все собственно, дело в шляпе. Это если по старинке, на оригинальном движке без модернизации. Дедовскими методами. Про работу с нетпакетами искать модули Артоса. Про чтение и спавн - общие сведения о скриптах почитать, луа-хелп там... Запись данных теми же модулями Артоса (se_stor). Как-то так. Спасибо, конечно, но какой есть способ получения списка предметов в инвентаре? Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 12 Июня 2020 В повелителе зоны 5.0 gold в чистом небе, есть файл с координатами которые прямо в игре можно записывать и делается там это всё с помощью этой функции: Показать function cheat_dialog:OnButton_btn2_clicked() edit_box = self:GetEditBox("edit_box") edit_box2 = self:GetEditBox("edit_box2") edit_box3 = self:GetEditBox("edit_box3") edit_box4 = self:GetEditBox("edit_box4") pos_x = tostring(edit_box:GetText()) pos_y = tostring(edit_box2:GetText()) pos_z = tostring(edit_box3:GetText()) pos_name = tostring(edit_box4:GetText()) --часть с записью if pos_x~="" and pos_y~="" and pos_z~="" and pos_name~="" then self.settingFileName = "gamedata\\teleports_coordinats.txt" local file = io.open( self.settingFileName, "a" ) if file ~= nil then file:write( pos_name.."|"..pos_x.."|"..pos_y .."|"..pos_z.."\n") file:close() --часть с записью end self:OnButton_portal_clicked() end end function cheat_dialog:OnButton_btn2_clicked() edit_box = self:GetEditBox("edit_box") edit_box2 = self:GetEditBox("edit_box2") edit_box3 = self:GetEditBox("edit_box3") edit_box4 = self:GetEditBox("edit_box4") pos_x = tostring(edit_box:GetText()) pos_y = tostring(edit_box2:GetText()) pos_z = tostring(edit_box3:GetText()) pos_name = tostring(edit_box4:GetText()) --часть с записью if pos_x~="" and pos_y~="" and pos_z~="" and pos_name~="" then self.settingFileName = "gamedata\\teleports_coordinats.txt" local file = io.open( self.settingFileName, "a" ) if file ~= nil then file:write( pos_name.."|"..pos_x.."|"..pos_y .."|"..pos_z.."\n") file:close() --часть с записью end self:OnButton_portal_clicked() end end Отсюда вопрос: есть ли какой-нибудь способ записи параметров объекта в файл, который в папке с игрой, т.е. так же, как и в повелителе зоны в чн? Если да, то, если можно, пример, пожалуйста. 30.03.2010 в 16:04, Atempad сказал: Я же сказал, в скриптах ТЧ не работает вывод (запись) в файлы. Для этого используй ЧН или ЗП. Лично я не вижу в этом кооператива, только изврат в чистом виде. P.S. Про скайп я не шутил... Оно того не стоит. А вообще - дерзай. Нельзя 12.06.2020 в 17:16, Pug-Lover сказал: Нельзя Нашёл намного более простой способ, который работает именно так, как я хотел. Вот код, если кому-то может быть нужно: Показать function first() amk.save_variable("testjops", "succsess") end function second() asf=amk.load_variable("testjops", "failure") news_manager.send_tip(db.actor, asf, nil, nil, 5000) end function first() amk.save_variable("testjops", "succsess") end function second() asf=amk.load_variable("testjops", "failure") news_manager.send_tip(db.actor, asf, nil, nil, 5000) end Здрасте, где можно посмотреть список параметров при подмене net_packet'ов? Т.е: t = amk.read_stalker_params(sobj) t.health=0.1 t.killerid=65535 и другие параметры относящиеся к нпс(или другому объекту)? 1 Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 28 Июня 2020 Драсте, кто может дать функцию спавна и сразу съедения водки? Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 3 Июля 2020 Драсте, делаю скрипт на телепортацию компаньона на другую локацию и мне нужен способ переписки параметров read_stalker_params(obj), т.е. способ, чтобы можно было переписать гейм и левел вертекс (способ ниже не переписывает) function comp_tele() for a=1,65534 do obj=alife():object(a) if obj and (level.map_has_object_spot(obj.id, "companion_friend_location")~=0 or level.map_has_object_spot(obj.id, "companion_neutral_location")~=0 or level.map_has_object_spot(obj.id, "companion_enemy_location")~=0) and alife():level_name(game_graph():vertex(db.actor:game_vertex_id()):level_id())==alife():level_name(game_graph():vertex(obj.m_game_vertex_id):level_id()) then cobj=level.object_by_id(obj.id) if cobj then t=iscpxrs_utils.read_stalker_params(obj) rep=alife():create(obj:section_name(),db.actor:position(),209876,253) t.x=36.412 t.y=0.485 t.z=-305.825 t.game_vertex_id=253 t.level_vertex_id=209876 t.m_game_vertex_id=253 t.m_level_vertex_id=209876 iscpxrs_utils.write_stalker_params(t, rep) local tbl = {} cobj:iterate_inventory(function (tmp, item) table.insert(tbl, item:section()) end,cobj) alife():release(obj,true) end end end endfunction comp_tele() for a=1,65534 do obj=alife():object(a) if obj and (level.map_has_object_spot(obj.id, "companion_friend_location")~=0 or level.map_has_object_spot(obj.id, "companion_neutral_location")~=0 or level.map_has_object_spot(obj.id, "companion_enemy_location")~=0) and alife():level_name(game_graph():vertex(db.actor:game_vertex_id()):level_id())==alife():level_name(game_graph():vertex(obj.m_game_vertex_id):level_id()) then cobj=level.object_by_id(obj.id) if cobj then t=iscpxrs_utils.read_stalker_params(obj) rep=alife():create(obj:section_name(),db.actor:position(),209876,253) t.x=36.412 t.y=0.485 t.z=-305.825 t.game_vertex_id=253 t.level_vertex_id=209876 t.m_game_vertex_id=253 t.m_level_vertex_id=209876 iscpxrs_utils.write_stalker_params(t, rep) local tbl = {} cobj:iterate_inventory(function (tmp, item) table.insert(tbl, item:section()) end,cobj) alife():release(obj,true) end end end end Нашёл решение, оказывается вместо: t.game_vertex_id=253 t.level_vertex_id=209876 t.m_game_vertex_id=253 t.m_level_vertex_id=209876t.game_vertex_id=253 t.level_vertex_id=209876 t.m_game_vertex_id=253 t.m_level_vertex_id=209876 нужно просто использовать: t.gvid=253 t.lvid=209876t.gvid=253 t.lvid=209876 Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 3 Июля 2020 @Zander_driver, ещё как пригодятся, так как при write_stalker_params прописываются и позиция и гейм с левел вертексами, что телепортирует объект обратно на начальную точку Драсте, как можно считать данные level_changer'а? Функция get_lc_data из АМК не робит: function get_lc_data(obj) local packet = net_packet() obj:STATE_Write(packet) local t={} t.game_vertex_id = packet:r_u16() t.distance = packet:r_float() t.direct_control = packet:r_s32() t.level_vertex_id = packet:r_s32() t.object_flags = packet:r_s32() t.custom_data = packet:r_stringZ() t.story_id = packet:r_s32() t.spawn_story_id = packet:r_s32() t = iscpamk.parse_shape_packet(t,packet) t.restrictor_type = packet:r_u8() t.dest_game_vertex_id = packet:r_u16() t.dest_level_vertex_id = packet:r_s32() t.dest_position = packet:r_vec3() t.dest_direction = packet:r_vec3() t.dest_level_name = packet:r_stringZ() t.dest_graph_point = packet:r_stringZ() t.silent_mode = packet:r_u8() if packet:r_elapsed() ~= 0 then den.cout("left="..tostring(packet:r_elapsed())) end return t endfunction get_lc_data(obj) local packet = net_packet() obj:STATE_Write(packet) local t={} t.game_vertex_id = packet:r_u16() t.distance = packet:r_float() t.direct_control = packet:r_s32() t.level_vertex_id = packet:r_s32() t.object_flags = packet:r_s32() t.custom_data = packet:r_stringZ() t.story_id = packet:r_s32() t.spawn_story_id = packet:r_s32() t = iscpamk.parse_shape_packet(t,packet) t.restrictor_type = packet:r_u8() t.dest_game_vertex_id = packet:r_u16() t.dest_level_vertex_id = packet:r_s32() t.dest_position = packet:r_vec3() t.dest_direction = packet:r_vec3() t.dest_level_name = packet:r_stringZ() t.dest_graph_point = packet:r_stringZ() t.silent_mode = packet:r_u8() if packet:r_elapsed() ~= 0 then den.cout("left="..tostring(packet:r_elapsed())) end return t end Вылетает начиная с: t.restrictor_type = packet:r_u8() t.restrictor_type = packet:r_u8() Может есть какой-то другой способ? Если есть - прошу помочь. Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 18 Августа 2020 Как удалить сталкера из гулага чтобы он просто по зоне гулял? Прогу помощи Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 21 Августа 2020 Кто может подсказать как удалить предмет из инвентаря игрока через alife():release()? Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 21 Августа 2020 Спасибо, ещё нашёл способ из amk.script: -- удаляем объект из игры function remove_item(remove_itm) if remove_itm~=nil then alife():release(alife():object(remove_itm:id()), true) return true end return false end-- удаляем объект из игры function remove_item(remove_itm) if remove_itm~=nil then alife():release(alife():object(remove_itm:id()), true) return true end return false end Поделиться этим сообщением Ссылка на сообщение
Pug-Lover 2 Опубликовано 28 Августа 2020 Кто может сказать как можно проверить разрушен ли ящик или нет? Поделиться этим сообщением Ссылка на сообщение