naxac 2 447 Опубликовано 30 Октября 2018 Поделиться Опубликовано 30 Октября 2018 37 минут назад, Serge_888 сказал: db.actor:active_item:play_hud_animation(system_ini():"wpn_rg6m_hud","anm_hide",true) -- ^-- почему не работает ??? Потому что должно быть db.actor:active_item:play_hud_animation( system_ini():r_string( "wpn_rg6m_hud", "anm_hide" ), true) 40 минут назад, Serge_888 сказал: sm_act_item:unload_magazine() -- <- не работает :-( почему? db.actor:item_in_slot(n_act_slot):set_ammo_elapsed(7) -- <- тоже не работает. Потму что это следует делать через level.client_spawn_manager, заспавненного ствола же ещё нет в онлайне. И получается, что всё это применяется к старому, который удаляем. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Serge_888 114 Опубликовано 30 Октября 2018 Поделиться Опубликовано 30 Октября 2018 1 час назад, naxac сказал: это следует делать через level.client_spawn_manager по этому поводу, гугель выдал пример: level.client_spawn_manager():add(obj.id, 0, spawn_callback, "доп_аргумент") аргументы метода: obj.id -- это айди объекта на который ставим каллбек 0 -- это айди эктора - нафиг не нужно, но нужно spawn_callback -- имя функции которая вызовется при переходе объекта в онлайн "доп_аргумент" -- дополнительный аргумент для функции spawn_callback, - что хотим то и передаем, если оно конечно надо, либо вообще ничего не пишем. -- сюда ставим вызов нужного нам действия при переходе объекта в онлайн Код: function spawn_callback(arg, iId, gObj) news_manager.send_tip(db.actor, "Каллбек на переход в онлайн вызван", 0, "trader", 10000) -- снимаем каллбек, чтобы он не вызывался каждый раз когда объект снова окажется в онлайне level.client_spawn_manager():remove(iId, 0) end принимаемые параметры: arg - тот самый дополнительный аргумент iId - айди объекта на который поставлен каллбек gObj -- клиентская юзердата объекта на который поставлен каллбек если у меня будет: level.client_spawn_manager():add(obj.id, 0, set_ammo_elapsed, cur_ammo_mag) мне надо будет "снимать каллбек"? И что писать вместо iId ? P.S. спасибо за быстрый ответ. Ссылка на комментарий
НаноБот 742 Опубликовано 30 Октября 2018 Поделиться Опубликовано 30 Октября 2018 В XRay гранатомёты реализованы оооочень по быдлокодерски, там много ошибок, например запуск ракет должен быть из метода FireTrace, лишь так можно пофиксить, например, произошла осечка, а ракета полетела, или оружие заблокировано, а ракета всё равно полетела. Так же при перезарядке ракеты не респаунется, т.е. старые удаляются, новые спаунятся. В общем, надо править движок, у меня в принципе есть эти правки, которые исправляют часть ошибок. И ещё, в XRayExtensions для ЗП я исправил некоторые ошибки, доработал класс РПГ-7 с возможностью многозарядного гранатомёта. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
aromatizer 4 458 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 (изменено) 22 часа назад, Serge_888 сказал: Делал для ЗП магазинный гранатомёт с отъёмным магазином Эта штука называется XM29 OICW. Через сквозной оптический прицел будет весело пулять гранатами. Например, как здесь: https://yadi.sk/i/sGH6mXoELpbt3Q Изменено 31 Октября 2018 пользователем aromatizer Отношения между людьми- главная ценность в человеческом обществе.Любая полученная информация- это только повод для размышлений, а не побуждение к действию.Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAEНакопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt Ссылка на комментарий
Serge_888 114 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 4 часа назад, aromatizer сказал: Эта штука называется XM29 OICW. Чегой-то это какой-то неправильный OICW. Сколько не смотрю, вылитый fn2000 И гранатомёт однозарядный. И судя по всему, он вообще для ТЧ. Совсем не подходит. К тому-же сделать в движке сталкера магазинный автомат + магазинный гранатомёт (два в одном оружии) будет малореально. Или движек править, или скриптами обвесить, что-бы каждый чих перехватывали и обрабатывали. Ну для чистого ЗП может и получится, а что-бы потом засунуть это в какой-нибудь понравившийся мод, работы будет почти столько-же. @НаноБот, у меня не РПГ-7. У меня несуществующий магазинный гранатомёт на ВОГ-25. Сначала, думал быстренько сделать прикольную стрелялду, а то со временем, много гранат накапливается. А когда полезли ограничения движка, стало как-то жалко бросать. Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Здрасьте. Исходная конструкция – список для сверки в самой функции: if not string.find("a, b, c, d", "a") then … Требуемая конструкция – поиск в отдельном массиве: local array = {"a, b, c, d"} if not string.find(array, "a") then … Какой должен быть синтаксис для поиска строки в массиве и подходит ли для этого функция string.find? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
gam 117 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 @Norman Eisenherz, Можно полагаю, но немного не ясно, для чего такое выражение (какова вообще его цель)? Мне видится что-то подобное для рандома: local array = {"a", "b", "c", "d"} if string.find(array[math.random(table.getn(array))], "a") then printf("target: YES") else printf("target: NO") return end Тут имхо конечно. Ссылка на комментарий
WinCap 316 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 (изменено) @Norman Eisenherz, вот ещё один стандартный вариант: Скрытый текст local array = { ["a"] = true, ["b"] = true, ["c"] = true, ["d"] = true} if array["a"] then -- строка в массиве есть else -- строки в массиве нет end Изменено 31 Октября 2018 пользователем WinCap S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Мне нужно проверить, что броня в слоте совпадает со списком выбранного мастера. https://c2.staticflickr.com/2/1935/45635885061_f2af981eb0_o.png Пока что код вот такой, и с ним скриптовое сообщение вообще не выводится (однако, и вылета нет): function armor_check() local slot = db.actor:item_in_slot(6) local sect = slot:section() local name = "" local options = "" local task_texture, task_rect = get_texture_info("ui_iconsTotal_lost_money") local armor_kuz = { ["outfit_soldier_m1"] = true, ["specops_outfit"] = true, ["military_outfit"] = true, ["militaryspec_outfit"] = true, ["specnaz_outfit_m1"] = true } -- проверка 1: брони нет/есть if slot == nil then name = "Боец, на тебе нет брони. С чем работать будем?" else name = "У тебя %c[list_armor]" .. game.translate_string(amk.get_inv_name(sect)) -- проверка 2: тип брони для другого/этого мастера if not armor_kuz[sect] options = ". Я с такой броней не работаю -- иди к (имя)." else options = ". Могу установить ПНВ или укрепить броню." end end local reply = name .. "%c[ui_clr_2]" .. options db.actor:give_talk_message(reply, task_texture, task_rect, "iconed_trade_info") end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
WinCap 316 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 @Norman Eisenherz, -- проверка 2: тип брони для другого/этого мастера if not armor_kuz[sect] then S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 1. Моя любимая проблема: правильная теория и невнимательность на практике. 2. Теперь ловлю вылет при отсутствии брони, хотя проверка в этом случае не должна выполняться дальше первого "else", и текст "options" должен остаться пустым. Что я упускаю? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
lordmuzer 743 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Вылет на какой строке? Вот тут же будет вылетать если нету брони в самом начале local slot = db.actor:item_in_slot(6) local sect = slot:section() Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 Вооот… Я попытался сократить запись "slot:section()", но не учел того, что ее надо ставить после первой проверки. Всем спасибо, двигаюсь дальше. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 31 Октября 2018 Поделиться Опубликовано 31 Октября 2018 6 часов назад, Norman Eisenherz сказал: Что я упускаю? local slot = db.actor:item_in_slot(6) local sect = slot:section() Если броника в слоте нет - в переменной "slot" будет nil. А затем ты пытаешься для nil вызвать :section(). Переделай как то так: local slot = db.actor:item_in_slot(6) if slot then local sect = slot:section() --- тут все, если есть броник else --- тут если броника нет end Ссылка на комментарий
Serge_888 114 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Продолжаю мучить гранатомёт. Почти всё заработало кроме анимации. db.actor:item_in_slot(n_act_slot):play_hud_animation("lancew_rg6m_holster", true) даёт ошибку Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : d:\stalker3\gamedata\scripts\multitool.script:24: attempt to call method 'play_hud_animation' (a nil value) подскажите как исправить? Ссылка на комментарий
Zagolski 74 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Как ты там собрался что-то исправлять? Ф-ции play_hud_animation не существует, о чем говорит вылет, да и не было никогда. Ссылка на комментарий
Змея 240 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Кто-нибудь знает, как заспавнить НПС скриптом с одновременным присваиванием СИДа? Ссылка на комментарий
Serge_888 114 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 4 часа назад, Zagolski сказал: Ф-ции play_hud_animation не существует Извиняюсь. Встретил упоминание, поискал в гугле, скопипастил. Там был вроде-как пример использования. А есть что-нибудь работающее для проигрывания анимаций для худа в ЧН/ЗП ? Ссылка на комментарий
Kirgudu 1 217 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 3 часа назад, Змея сказал: как заспавнить НПС скриптом с одновременным присваиванием СИДа? Через нет-пакет. Например, с использованием модуля m_netpk от Артоса: local obj = alife():create(section, pos, lvid, gvid) if obj then local pk = get_netpk(obj, 1) if pk:isOk() then local data = pk:get() data.story_id = p.sid pk:set(data) end end Инструмент Ссылка на комментарий
Змея 240 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 @Kirgudu, спасибо конечно...Только я вот видела тут одного глобального модератора, который очень красноречиво описал бы ситуацию безысходности, возникающую у неподготовленных заранее людей при просмотре этого кода. Что вот с этим делать то? Как функцию спавна писать в скрипте? Блин...Я еще и логику хотела бы указать... Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти