Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

(изменено)

Парни кто  может  помочь  сделать быстрые слоты(подобные зп чтобы можно было в ячейку перемещать предмет а не как в dmx mod выбирать предмет из списка).

Изменено пользователем I am Dead

Поделиться этим сообщением


Ссылка на сообщение
1 час назад, DoberBull сказал:

@I am Dead да я в курсе. Потому и спрашиваю, может быть кто-то знает как восстановить.

Глянь в oblivion lost,может там это востановленно.

 

 

Поделиться этим сообщением


Ссылка на сообщение

@DMT, Если хочешь чтобы спавн был один, то просто сделай через инфопоршень, самый простой подход. Пример под спойлером.

 

Скрытый текст

function fix_recept()

  if (not db.actor:has_info( "info_amk_recipt_drop_souls" )) and db.actor:has_info( "info_amk_recipt_souls" ) then
    db.actor:give_info_portion( "info_amk_recipt_soul_drops" )
    db.actor:give_info_portion( "info_amk_recipt_soul_fire" )
    db.actor:give_info_portion( "info_amk_recipt_soul_cristal" )
    db.actor:give_info_portion( "info_amk_recipt_soul_bengal" )
end

end

 

Поделиться этим сообщением


Ссылка на сообщение

Кто знает как запомнить активный слот, а после выполнения функции вернуть слот который запомнили?

Поделиться этим сообщением


Ссылка на сообщение

@AndreySol Ситуация такая, делаю анимационные предметы для тч. Объясняю ситуацию:допустим активен у нас 1,2,3 слот и  при использовании аптечки удаляется бинокль в 4 слоте,спавнится аптечка на базе бинокля  и попадает в 4 слот, в котором мы заранее удалили бинокль, далее я делаю активным 4 слот, запускается таймер на удаление анимационного предмета и спавн бинокля обратно в слот, так вот, хочу сделать чтобы после выполнения всего ставился обратно тот слот который был до использования аптечки?

Поделиться этим сообщением


Ссылка на сообщение

@Zander_driver OGSR Engine, можно поподробней про этот самый script_vars_storage?

@AndreySol Хмм, тогда уже другой вопрос, как отыграть анимацию не прибегая к такой схеме как у меня?

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Zander_driver Да, это я переносил тайные тропы, как раз таки войдет в обновление использование анимационных предметов. Возврат слота сделал немного иначе:

 

Скрытый текст

Пришлось сию конструкцию лепить через таймер, если без него то либо восстанавливается слот через который использовали предмет, либо устанавливается слот который был до использования предмета с невозможностью переключится на другой.

 

Не знаю, правильно или нет, но функция работает и лагов,багов не вызывает.

 

 

 

 -- Таймер восстановления слота
local slot_restore_timer = nil

 

             -- Запоминаем активный слот перед использованием предмета
  ogse.save_var( "store_slot", db.actor:active_slot() )
          db.actor:give_info_portion("slot_restore")

 

              -- Восстанавливаем активный слот после использования предмета
  local loaded_slot = ogse.load_var_safe( "store_slot" )
  local check_slot  = db.actor:active_slot()
  if loaded_slot and check_slot ~= loaded_slot and db.actor:has_info("slot_restore") then
    db.actor:activate_slot( loaded_slot )
  end

 

              -- Запускаем таймер на удаление поршня 

        if slot_restore_timer ~= nil then
            slot_restore_timer:stop()
        end
        slot_restore_timer = slot_timer()
        slot_restore_timer:start()

        end

 

 

function slot_restore_func()
    slot_restore_timer = nil
    db.actor:disable_info_portion("slot_restore")


end

 

-- Конструктор таймера удаления поршня
class "slot_timer"(ogse_qt.quick_timer)
function slot_timer:__init() super()
    self.limit = time_global()+3000
end
function slot_timer:condition()
    return time_global() >= self.limit
end
function slot_timer:action()
slot_restore_func()
end

 

Изменено пользователем I am Dead
  • Нравится 2

Поделиться этим сообщением


Ссылка на сообщение

Приветствую всех, как удалить или убить объект заспавненный через all.spawn не прибегаю к началу новой игры?

 

Скрытый текст

[6520]

; cse_abstract properties
section_name = lights_hanging_lamp
name = light_uglovaya_1_glass_0006
position = -107.088996887207, -11.6824464797974, -5.0175313949585
direction = 3.14159274101257, -3.45578122138977, -1.57079589366913
id = 65535
version = 118
script_version = 6
spawn_id = 6520

; cse_alife_object properties
game_vertex_id = 703
level_vertex_id = 172
object_flags = 0xffffffba
custom_data = <<END
[collide]
ignore_static
END

; cse_visual properties
visual_name = physics\light\new_light\light_uglovaya_1_glass

; cse_ph_skeleton properties

; cse_alife_object_hanging_lamp properties
main_color = 0xffffffff
main_brightness = 0.80000001
main_color_animator = light\light_omni_white_idle
main_range = 12
light_flags = 0x3a
lamp_fixed_bones = link
health = 0
main_virtual_size = 0.1
ambient_radius = 3.5
ambient_power = 0.40000001
main_texture = lights\lights_spot_wire_02
main_bone = bone_lamp
main_cone_angle = 2.0943952
glow_radius = 0.69999999
ambient_bone = bone_omni

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 

 

Поделиться этим сообщением


Ссылка на сообщение

@mole venomous @AndreySol Странно, вчера точно так же пытался удалить только была еще проверка на поршень чтобы функция несколько раз не воспроизводилась.

 

Скрытый текст

function del_lampa()

    local sim = alife()
    local s_obj = sim:object("light_uglovaya_1_glass_0006")
    if s_obj and (not db.actor:has_info("delete_lampa") )then
        sim:release(s_obj, true)
    end

    db.actor:give_info_portion("delete_lampa")

end

 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Приветствую всех, граждане мододелы, подскажите мне с одним вопросом. Возможно ли на худовую модель вывести gui окно (ну допустим к примеру модель пда)? Если можно то как?

Изменено пользователем I am Dead

Поделиться этим сообщением


Ссылка на сообщение

@ARTLantist 

Скрытый текст

local news_text = "%c[255,160,160,160]"..game.translate_string("st_tip").."\\n".."%c[default]"..game.translate_string(news_id)

 

Поделиться этим сообщением


Ссылка на сообщение

Всех с праздником! Очередной вопрос из разряда "ткните меня носом", как прибавить/убавить кровотечение у гг через скрипт? 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@WinCapПричем тут complex_mode ? Этот параметр переносит строки если не хватает ширины окна. 

@OkichiА если нанести chemical_bur, состояние костюма при этом не изменится? И можно ли нанести отрицательный хит, что убавит уровень кровотечения?

Изменено пользователем I am Dead

Поделиться этим сообщением


Ссылка на сообщение
52 минуты назад, WinCap сказал(а):

Это не только перенос строк, но отрисовка цвета текста %c.

 Только что проверил, у себя в моде, и параметр complex_mode никак не пересекается с цветом текста.

Поделиться этим сообщением


Ссылка на сообщение
11 минут назад, Stalkersof сказал(а):

А как будет кнопка Enter на клавиатуре. Пишу так dik == DIK_keys.DIK_ENTER не срабатывает

Вот все коды клавиш которые можно использовать в игре 

Скрытый текст

C++ class DIK_keys {
    const DIK_0 = 11;
    const DIK_1 = 2;
    const DIK_2 = 3;
    const DIK_3 = 4;
    const DIK_4 = 5;
    const DIK_5 = 6;
    const DIK_6 = 7;
    const DIK_7 = 8;
    const DIK_8 = 9;
    const DIK_9 = 10;
    const DIK_A = 30;
    const DIK_ADD = 78;
    const DIK_APOSTROPHE = 40;
    const DIK_APPS = 221;
    const DIK_AT = 145;
    const DIK_AX = 150;
    const DIK_B = 48;
    const DIK_BACK = 14;
    const DIK_BACKSLASH = 43;
    const DIK_C = 46;
    const DIK_CAPITAL = 58;
    const DIK_CIRCUMFLEX = 144;
    const DIK_COLON = 146;
    const DIK_COMMA = 51;
    const DIK_CONVERT = 121;
    const DIK_D = 32;
    const DIK_DECIMAL = 83;
    const DIK_DELETE = 211;
    const DIK_DIVIDE = 181;
    const DIK_DOWN = 208;
    const DIK_E = 18;
    const DIK_END = 207;
    const DIK_EQUALS = 13;
    const DIK_ESCAPE = 1;
    const DIK_F = 33;
    const DIK_F1 = 59;
    const DIK_F10 = 68;
    const DIK_F11 = 87;
    const DIK_F12 = 88;
    const DIK_F13 = 100;
    const DIK_F14 = 101;
    const DIK_F15 = 102;
    const DIK_F2 = 60;
    const DIK_F3 = 61;
    const DIK_F4 = 62;
    const DIK_F5 = 63;
    const DIK_F6 = 64;
    const DIK_F7 = 65;
    const DIK_F8 = 66;
    const DIK_F9 = 67;
    const DIK_G = 34;
    const DIK_GRAVE = 41;
    const DIK_H = 35;
    const DIK_HOME = 199;
    const DIK_I = 23;
    const DIK_INSERT = 210;
    const DIK_J = 36;
    const DIK_K = 37;
    const DIK_KANA = 112;
    const DIK_KANJI = 148;
    const DIK_L = 38;
    const DIK_LBRACKET = 26;
    const DIK_LCONTROL = 29;
    const DIK_LEFT = 203;
    const DIK_LMENU = 56;
    const DIK_LSHIFT = 42;
    const DIK_LWIN = 219;
    const DIK_M = 50;
    const DIK_MINUS = 12;
    const DIK_MULTIPLY = 55;
    const DIK_N = 49;
    const DIK_NEXT = 209;
    const DIK_NOCONVERT = 123;
    const DIK_NUMLOCK = 69;
    const DIK_NUMPAD0 = 82;
    const DIK_NUMPAD1 = 79;
    const DIK_NUMPAD2 = 80;
    const DIK_NUMPAD3 = 81;
    const DIK_NUMPAD4 = 75;
    const DIK_NUMPAD5 = 76;
    const DIK_NUMPAD6 = 77;
    const DIK_NUMPAD7 = 71;
    const DIK_NUMPAD8 = 72;
    const DIK_NUMPAD9 = 73;
    const DIK_NUMPADCOMMA = 179;
    const DIK_NUMPADENTER = 156;
    const DIK_NUMPADEQUALS = 141;
    const DIK_O = 24;
    const DIK_P = 25;
    const DIK_PAUSE = 197;
    const DIK_PERIOD = 52;
    const DIK_PRIOR = 201;
    const DIK_Q = 16;
    const DIK_R = 19;
    const DIK_RBRACKET = 27;
    const DIK_RCONTROL = 157;
    const DIK_RETURN = 28;
    const DIK_RIGHT = 205;
    const DIK_RMENU = 184;
    const DIK_RSHIFT = 54;
    const DIK_RWIN = 220;
    const DIK_S = 31;
    const DIK_SCROLL = 70;
    const DIK_SEMICOLON = 39;
    const DIK_SLASH = 53;
    const DIK_SPACE = 57;
    const DIK_STOP = 149;
    const DIK_SUBTRACT = 74;
    const DIK_SYSRQ = 183;
    const DIK_T = 20;
    const DIK_TAB = 15;
    const DIK_U = 22;
    const DIK_UNDERLINE = 147;
    const DIK_UNLABELED = 151;
    const DIK_UP = 200;
    const DIK_V = 47;
    const DIK_W = 17;
    const DIK_X = 45;
    const DIK_Y = 21;
    const DIK_YEN = 125;
    const DIK_Z = 44;
    const MOUSE_1 = 256;
    const MOUSE_2 = 512;
    const MOUSE_3 = 1024;

};

 

  • Спасибо 1
  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Баба ЯГА Ну если у тебя ящик то это наверно получается тебе bind_physic_object ковырять. Ниже привел use_callback из bind_physic_object и treasure_manager, попробуй их поковырять.

Скрытый текст

-- MARKER: use_callback
function generic_physics_binder:use_callback(obj, who)
    if self.st.active_section then
        xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
    end

    self.am:call( "on_ph_obj_use", self.object, who )
end

Скрытый текст

function on_npc_use( obj )
    if obj:alive() then return end
    --
    local sobj = alife():object( obj:id() )
    if not sobj.treasure_processed and not GetShift() then -- Проверка на шифт сделана, чтоб не срабатывало при попытке перетащить труп.
        get_treasure_manager():use( obj )
        --
        give_money( obj )
        --
        sobj.treasure_processed = true
    end
end

P.S данный код из OGSR\OGSE мода.

Изменено пользователем I am Dead

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...