Desertir 202 Опубликовано 27 Июня 2016 Поделиться Опубликовано 27 Июня 2016 @Nazgool, скорее continue. Без него некоторые циклы вырастают во вложенности очень сильно. PS: goto ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Zander_driver 10 335 Опубликовано 27 Июня 2016 Поделиться Опубликовано 27 Июня 2016 Как тебе такое? Когда программист что-то пишет, возможны три результата. 0: Все работает относительно идеально 1: Все более-менее работает. Далеко не идеал но сойдет, причина - программисту лень/наплевать на юзеров/мало заплатили/еще что нибудь вставить что понравится. 2: Все более-менее работает. Далеко не идеал но сойдет, причина - программист недостаточно опытен и умел, чтобы сделать лучше. В описанном случае - явный случай из 1 или 2. Какой именно - понятия не имею. Еще возможен (и на самом деле повсеместно и на каждом шагу происходит) такой случай. Программист написал творение, соответствующее варианту 0. Затем прошло время, требования к продуктам такого рода возросли. И тот же самый продукт уже соответствует случаю 2. Просто в те годы не было настолько опытных программистов чтобы сделать вот так Что тогда может делать программист? Он же написал творение по сценарию 0. оно идеально. Было... теперь уже не очень... Он может уже 2 варианта. 0: повышать свою квалификацию и вновь вытаскивать свой код на уровень идеала 1: ему лень заморачиваться / мало платят / появились другие интересы и он говорит юзерам "и так сойдет, терпите" В выше приведенном случае - финальный вариант 1. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Sla-Sla 43 Опубликовано 28 Июня 2016 Поделиться Опубликовано 28 Июня 2016 (изменено) Всем привет, у меня такая проблема: зарегистрировал на GUI кнопки, сделал, чтобы они появлялись в зависимости от класса выбранного предмета из списка, но работает только кнопка использования В методе InitControls() self.btn_use:Show(false)self.btn_slot_1:Show(false)self.btn_slot_2:Show(false)self.btn_drop:Show(true)В функции клика по итему в спискеlocal index, item, objif self.list:GetSize() == 0 thenreturnendindex = self.list:GetSelectedItem()if index == -1 or index == nil thenreturnenditem = self.list:GetItem(index)if item == nil thenreturnendobj = item:GetSection()if obj ~= nil thenplay_sound_actor([[interface\inv_select]],db.actor, 0, 1.0)for i = 1, #tEatableClasses doif get_clsid(obj) == tEatableClasses thenself.btn_use:Show(true)endendfor s = 1, #tPistolClasses doif get_clsid(obj) == tPistolClasses thenself.btn_slot_1:Show(true)endendfor a = 1, #tRifleClasses doif get_clsid(obj) == tRifleClasses[a] thenself.btn_slot_2:Show(true)endendendТаблицы с классами local tPistolClasses = { clsid.wpn_hpsa, clsid.wpn_pm, clsid.wpn_fort, clsid.wpn_usp45, clsid.wpn_walther } local tRifleClasses = { clsid.wpn_ak74, clsid.wpn_lr300, clsid.wpn_shotgun, clsid.wpn_svd, clsid.wpn_svu, clsid.wpn_rpg7, clsid.wpn_val, clsid.wpn_vintorez, clsid.wpn_groza } local tEatableClasses = { clsid.obj_medkit, clsid.obj_bottle, clsid.obj_bandage, clsid.obj_antirad, clsid.obj_food } В чем же мой косяк? Изменено 28 Июня 2016 пользователем Sla-Sla Ссылка на комментарий
Charsi 440 Опубликовано 28 Июня 2016 Поделиться Опубликовано 28 Июня 2016 @Sla-Sla, заполняй таблицы так: local tPistolClasses = { [clsid.wpn_hpsa] = true, [clsid.wpn_pm] = true, [clsid.wpn_fort] = true, [clsid.wpn_usp45] = true, [clsid.wpn_walther] = true } а видимость устанавливай так: self.btn_slot_1:Show( tPistolClasses[obj:clsid()]~=nil ) 1 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Sla-Sla 43 Опубликовано 28 Июня 2016 Поделиться Опубликовано 28 Июня 2016 @Charsi, не помогло, как и раньше, появляется только btn_use. Может классы неправильно указал? Ссылка на комментарий
Charsi 440 Опубликовано 28 Июня 2016 Поделиться Опубликовано 28 Июня 2016 Конечно неправильно. Посмотри в lua_help или class_registrator.script как они зарегистрированы. cs_register (object_factory, "CWeaponHPSA", "se_item.se_weapon_magazined", "WP_HPSA", "wpn_hpsa_s") Поэтому нужно писать clsid.wpn_hpsa_s и т.д. Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Sla-Sla 43 Опубликовано 28 Июня 2016 Поделиться Опубликовано 28 Июня 2016 @Charsi, оу, я из _g.script брал Ссылка на комментарий
Winsor 177 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 Уважаемые, есть ли аналоги для m_netpk (может свои разработки), пригодные для использования? p.s. - на вопрос - чем тебе m_netpk не подходит - у него неправильно парситься пакет для оружия с подствольником. хочу увидеть альтернативу. Буду благодарен за Ваши варианты. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 1 Июля 2016 Поделиться Опубликовано 1 Июля 2016 Такой вопрос - как одной функцией убрать всех НПЦ с уровня? Можно и через for 1, 64567 или как то так... Забыл просто, как делать проверку вида IsStalker(obj) Не соответствует правилам. Ссылка на комментарий
Zander_driver 10 335 Опубликовано 2 Июля 2016 Поделиться Опубликовано 2 Июля 2016 Забыл просто, как делать проверку вида IsStalker(obj) Так и делать. У тебя уже в вопросе есть все что требуется для ответа, так и в чем тогда вопрос. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Romann 619 Опубликовано 2 Июля 2016 Поделиться Опубликовано 2 Июля 2016 (изменено) Так и делать. Что-то типа этого? function bla_bla_bla() for id=1,65534 do local obj = level.object_by_id(id) if obj and get_clsid(obj) == IAmAStalker then bla_bla.bla() end end end Мне нужно изменить код из этого примера , а то и правда можно хитовать и ящики с БТРами. Вот я попытался переписать ещё и так, чтоб проверялись объекты не на всей локации а только в онлайне: --local radius_sqr = 100 -- квадрат радиуса --local actor_position = db.actor:position() -- позиция актора -- по идее, лучший вариант сделать биндеры на все живие объекты -- и регистрировать их в определённую таблицу, которую будем -- перебирать и проверять, живой ли объект. Но обойдёмся этим: -- перебор объектов в онлайне (медленно!) local PositionActor = db.actor:position() for id,o in pairs(db.storage) do -- апд: был 0, могло стукнуть актора -- берём с локации local obj = level.object_by_id(id) -- если объект по ид есть, то if obj and get_clsid(obj) == IAmAStalker and obj.alive and obj:alive() then -- если макс хп у объекта не равно -1, значит объект живой if obj:max_health() > 0 then -- если квадрат дистанции, между позицией актора и объектом меньше либо равен макс радиусу в квадрате, то ( distance_to_sqr быстрей вроде как) if obj:position():distance_to(PositionActor) <= 50 then -- Наносим хит (ну тут можно брать и какие то определённые параметры) hit = hit() -- создание объекта класса hit hit.direction = vector():set(1,0,0) --дирекция по оси x hit.draftsman = db.actor --нанёс урон актор hit.impulse = 600 --импульс hit.power = 1.45 --хит hit.type = 2 --тип урона - выстрел hit:bone("bip01_head") -- удар приходится на голову -- наносим урон obj:hit(hit) end end end end Я не скриптер, если что-то не так поправьте пожалуйста. Изменено 2 Июля 2016 пользователем Romann Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 2 Июля 2016 Поделиться Опубликовано 2 Июля 2016 @Romann, попробовал так сделать. Вписал IsStalker(obj), всё проверил, поставил метки через send_tip(). После этого --> if obj and get_clsid(obj) уже ничего не происходило... Пробовал разные варианты, нашел еще пример... В общем не заладилось. Вызывал это дело из меню. Другой вопрос - как проверить находиться ли ГГ в диалоге с НПЦ скриптом? Почитал справочники - из полезного только level.present() нашел, но это совсем не то(. Не соответствует правилам. Ссылка на комментарий
Overfirst 630 Опубликовано 2 Июля 2016 Поделиться Опубликовано 2 Июля 2016 как проверить находиться ли ГГ в диалоге с НПЦ А разве не подходит? if db.actor:is_talking() then ... end Или тебе надо проверить даилог с конкретным НПС? 1 Ранее был известен под ником BoBaH_671. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 2 Июля 2016 Поделиться Опубликовано 2 Июля 2016 Что это значит? Критично ли для сохранений? ! Invalid object 'single_player' position. Outside of sector structure. Не соответствует правилам. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 4 Июля 2016 Поделиться Опубликовано 4 Июля 2016 Почему при спавне НПЦ скриптом в его имени к основному добавляются какие-то рандомные цифры? Если через all.spawn - такого не наблюдаеться... Не соответствует правилам. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 4 Июля 2016 Поделиться Опубликовано 4 Июля 2016 По тому что так задумано. Разработчиками. И не какие-то, а id. 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 4 Июля 2016 Поделиться Опубликовано 4 Июля 2016 @Dennis_Chikin, просто это доставляло некоторые неудобства... С id тоже разобрался + оценил новые возможности использования расширенных библиотек Lua. Но вопрос из поста #7569 покоя не дает до сих пор... Не соответствует правилам. Ссылка на комментарий
Malandrinus 615 Опубликовано 5 Июля 2016 Поделиться Опубликовано 5 Июля 2016 как проверить находиться ли ГГ в диалоге с НПЦ скриптом? в XE есть функция для получения собеседника level.get_second_talker(). Но всё равно перед её использованием надо проверять, что идёт разговор. 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 5 Июля 2016 Поделиться Опубликовано 5 Июля 2016 @Malandrinus, спасибо! С этой функцией я разобрался. Но я, видимо, перепутал номер поста. Хотелось побольше узнать вот об этом. ! Invalid object 'single_player' position. Outside of sector structure. Как я понял, игра ссылается на ГГ, и какую-то структуру сектора... Ну в общем в этой области для меня - туман. Меня этот вопрос потому так волнует, что сейчас пытаюсь устранить один очень неприятный вылет, в логах даже при модифицированной printf() ничего не видно. И обращаю внимание на любые мелочи... Не соответствует правилам. Ссылка на комментарий
Nazgool 250 Опубликовано 6 Июля 2016 Поделиться Опубликовано 6 Июля 2016 (изменено) Почему при спавне НПЦ скриптом в его имени к основному добавляются какие-то рандомные цифры? Вот почему, извините начальство форума за не очень пристойное слово, хочется {игнорировать} всякие призывы о помощи, и не тратить силы на распинания по сути. CRAZY_STALKER666 ты же поставил "Спасибо" к моему посту http://www.amk-team.ru/forum/topic/6185-skriptovanie/?p=1020661, т.е. ты должно быть его прочитал. А если это так, то ты не мог не заметить, что я в этом посте рассказывал про "цифры" в имени объекта. В то время, когда я начинал моддить, не было столько исчерпывающей информации как сейчас. Цеплялись за любые намеки. А тут... "Абыдно, да?" ("Кавказская пленница") "Начальство" в специально отведенном месте постоянно рыдает по тому же самому поводу. Не успевает жилетки менять. dc Изменено 6 Июля 2016 пользователем Dennis_Chikin Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти