Shredder 49 Опубликовано 17 Июня 2012 (изменено) SibireaStalker, я бы сделал как-то так local current_outfit = 0 function proverka_na_helmet() local actor = db.actor if not actor then return end local slot_twelve = actor:item_in_slot(12) if not slot_twelve then current_outfit = 0 return end if slot_twelve:id() ~= current_outfit then local snd = sound_object([[interface\mp_reward]]) -- Путь до звука snd:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 2.0) current_outfit = slot_twelve:id() end end Изменено 17 Июня 2012 пользователем ColR_iT Про тег code тоже не забываем. Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 2 Июля 2012 Версия игры какая? Помнится, в ЗП без некоторых ковыряний спавн фантома вызывает вылет. Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 16 Июля 2012 ins33, в твоём коде нет ни капли логики. Сперва ты присвоил переменной key объект с секцией "key", который находится у гг в инвентаре, если его нет, то присвоится nil. Потом проверяешь какую-то переменную note, которая возможно и описана у тебя выше по коду, но тут не понятно что в ней есть. В любом случае, у тебя сейчас никак не проверяется наличие ключа. Я думаю, что нужно сделать как-то так local key = db.actor:object("key") if key then --проверка на ключ level.start_stop_menu(interfase.ui_repair(), true) --запускаем меню end Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 16 Июля 2012 (изменено) Ты покажи всю функцию, мне всё равно не понятно что такое note и что в ней содержится. P.S. И вообще ты в курсе что каждый блок if ... then должен иметь закрывающий end? Изменено 16 Июля 2012 пользователем Shredder Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 16 Июля 2012 (изменено) ins33, ты вообще сам понимаешь, что ты пишешь? Сразу видно, что ты вообще ничего не смыслишь в программировании, так закаким ты туда полез? function use_repkit() local key = db.actor:object("key") if key then --проверка на ключ level.start_stop_menu(interfase.ui_repair(), true) --запускаем меню alife():create("repair_kit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end Изменено 16 Июля 2012 пользователем Shredder Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 17 Июля 2012 ins33, открываешь спойлер, выделяешь всё что там есть, делаешь Ctrl+C, потом в у себя в файле repair.script нажимаешь Ctrl+A, затем Ctrl+V. И вообще там код нужно переделывать, т.к. можно напрямую заюзать колбэк на использование предмета, а не проверять после дропа, исчез ли предмет. Но тебе до этого, как до Луны пешком... local note = nil function use_repkit() if note and type(note) == "number" then if not level.object_by_id(note) then if db.actor:object("key") then level.start_stop_menu(interfase.ui_repair(), true) --запускаем меню end alife():create("repair_kit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end note = nil end if note and type(note) == "userdata" then note = note:id() else note = nil end end function DeleteItem(iId) --добавляем функцию удаления предмета из инвентаря if iId then local seObj=alife():object(iId) if seObj then alife():release(seObj,true) end end end function repair_wpn_1() local item_in_slot = db.actor:item_in_slot(1) local medusa = db.actor:object("af_medusa") --и везде добавим проверку на медузу if item_in_slot ~= nil and 1 > item_in_slot:condition() and medusa then item_in_slot:set_condition(1) DeleteItem(medusa:id()) --удаляем артефакт после ремонта end end function repair_wpn_2() local item_in_slot = db.actor:item_in_slot(2) local medusa = db.actor:object("af_medusa") if item_in_slot ~= nil and 1 > item_in_slot:condition() and medusa then item_in_slot:set_condition(1) DeleteItem(medusa:id()) end end function repair_armora() local item_in_slot = db.actor:item_in_slot(6) if item_in_slot ~= nil and 1 > item_in_slot:condition() then item_in_slot:set_condition(1) end end --/ спавн предметов в инвентори function spawn_item_in_inv(section,npc) if npc == nil then npc = db.actor end return alife():create(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end --функция вызываемая из дропа function use_repair(obj) if obj:section() == "repair_kit" then note = obj --если наша вещь, то запомнить его userdata end end Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 17 Июля 2012 Что именно ты хочешь выводить на экран? Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 17 Июля 2012 Z3oM, а в чём смысл? Нельзя сразу все необходимые тексты в отдельный файл записать? Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 17 Июля 2012 Ага, я тоже самое имел ввиду. Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 18 Июля 2012 function spawn_dog_weak() alife():create("dog_weak",vector():set(-224.17195129395,-19.261228561401,-165.32530212402),32807,47) end Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 22 Июля 2012 AutoGnom, очень хочется спросить: А за чем это всё? Эти полоски и миникарта они же и так есть... Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 23 Июля 2012 Я имею ввиду в оригинале есть. Или это тоже копипаст считается? =) Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 23 Июля 2012 Kirgudu, тоже сортировка сломалась (ЗП). Правда использую xray-extension. Если не сложно, выложи самописную функцию, чтобы мне велосипед не изобретать. А вот код, где сортировка не работает: --Таблица items заполняется выше и имеет структуру: --items[id_предмета] = секция_предмета local sort_items = {} for k,v in pairs(items) do item_w, item_h = _m.get_icon_size(v) sort_items[k] = {sect = v, width = item_w, id = k} end if _m.table_size(sort_items) > 1 then table.sort(sort_items, function(a,b) return (a.width < b.width) end) end Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 24 Июля 2012 ZeeK, твой код будет рабоатать, если у тебя надет комбез "Сева" и ты находишься на Затоне, причём независимо от его состояния. Если в слоте вообще не будет комбеза - будет вылет. Думаю нужно как-то так: function check_outfit_condition() if db.actor:item_in_slot(7) and db.actor:item_in_slot(7):condition() <=0.80 then db.actor.radiation = 0.05 local news_text = "%c[255,160,160,160]".."Дягтерев:".."\\n".."%c[default]".."Внимание! Разгерметизация! Фильтры костюма не справляются!" local news_caption = game.translate_string("st_tip") local texture = "ui_inGame2_Hero" db.actor:give_game_news(news_caption, news_text, texture, 1000, 5000) elseif not db.actor:item_in_slot(7) then --Комбеза нет вообще db.actor.radiation = 0.1 local news_text = "%c[255,160,160,160]".."Дягтерев:".."\\n".."%c[default]".."Пора умирать, упс..." local news_caption = game.translate_string("st_tip") local texture = "ui_inGame2_Hero" db.actor:give_game_news(news_caption, news_text, texture, 1000, 5000) end end Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 2 Августа 2012 (изменено) Пытаюсь в скрипте приаттачить глушитель к оружию (ЗП). Оружие точно может иметь глушитель. Код функции ниже. После того как оружие возвращается из оффлайна в онлайн addon_flag снова равен 0. Что я делаю не так? function attach_silencer(wpn, silencer) if not silencer then silencer = db.actor:object(get_addon_silencer(wpn:section())) end if not silencer then return end local pk = get_netpk(wpn) local wpn_state = pk:get() if wpn_state.addon_flags == 4 then return end wpn_state.addon_flags = wpn_state.addon_flags + 4 pk:set(wpn_state) switch_offline_online(wpn:id()) _m.remove_item_by_id(silencer:id()) end function switch_online(id) if id == -1 then return end local serv_obj = alife():object(id) serv_obj.sim_forced_online = true if serv_obj.online ~= true then serv_obj:switch_online() end end function switch_offline(id) alife():object(id):switch_offline() end function switch_offline_online(id) local obj = level.object_by_id(id) if not obj then switch_online(id) return end local parent = obj:parent() if parent then parent:drop_item(obj) end switch_offline(id) logf('switch_offline [%d]', id) level.add_call(function() if not level.object_by_id(id) then logf('switch_online [%d]', id) switch_online(id) return true end return false end, function() end) end Изменено 2 Августа 2012 пользователем Shredder Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 6 Августа 2012 Возвращаюсь к своему вопросу по поводу приаттачивания глушителя. Спасбо, Artos, функция m_netpk.do_switchings работает как надо и пистолетик возвращается с глушителем. Но есть один ньюанс. Я не могу отправить оружие в оффлайн, если оно находится в слоте. Приходится сперва делать дроп. Есть ли какой-нибудь способ вернуть оружие "с земли" в рюкзак? Или может есть другой способ скриптом приаттачить аддоны к оружию? (ЗП) Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 6 Августа 2012 Не совсем правильно. При спавне чего-либо клиентский объект будет доступен только на следующем апдейте, поэтому я бы заменил вот это: alife():create( spawn_sect,zone:position(),zone:level_vertex_id(),zone:game_vertex_id()) --спавним предмет в на вот это alife():create( obj, zone_obj.position, zone_obj.m_level_vertex_id, zone_obj.m_game_vertex_id) Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 18 Сентября 2012 (изменено) Ты что вообще от CUIScrollView хочешь? Я промолчу про кучу непонятно зачем вызываемыз методов, но вот это: self.ggRukzakScroll:AddWindow(self.ggRukzakScroll,true) - убило. Самого себя добавить к себе? Изменено 18 Сентября 2012 пользователем Shredder Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 18 Сентября 2012 TYOPA, CUIScrollView - это не скроллбар, это окно с вертикальной полосой прокрутки. Какие методы использовать - зависит от задачи. Поделиться этим сообщением Ссылка на сообщение
Shredder 49 Опубликовано 18 Сентября 2012 Тут всё просто. В ScrollView добавляешь статик с нужной текстурой (картинкой). Размеры этого статика должны быть такими, чтобы изображение полностью в нём уместилось. Размеры ScrollView - какие тебе нужно. Только есть одно "НО" - горизонтальной полосы прокрутки у ScrollView нет (хотя может у меня руки кривые). Т.е. размер ScrollView по ширине должен быть равен ширине картинки. Поделиться этим сообщением Ссылка на сообщение