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

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


Svoboда

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

Всем привет! Подскажите пж функцию на сброс визуала гг рабочую!

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


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

Вообщем писал я в этой теме где то месяц назад! Была у меня проблемы с модом такие как: пропадала анимация бега, сброс визуала и т.п искал проблему почти меся) т.к много файлов подключено в моде. Оказалось это из-за скрипта не помню от кого НА РЕСПАВН АРТЕФАКТОВ какие там ошибки не знаю, ковыряться не стал. Откл. скрипт и все заработало/бред. Может кто посмотрит его! https://yadi.sk/d/7tHdc9vjT7BfSQ

  • Сомнительно 1

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


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

Парни помогите сделать что бы инфопорция выдавалась рандомно по 1 а не сразу 4 вот скрипт:

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

local post_info    = 1
local m_post_info = ""

local info_news = {
    db.actor:give_info_portion("encyclopedy_zone_artifact_af-cristall-flower"),
    db.actor:give_info_portion("encyclopedy_zone_artifact_af-night-star"),
    db.actor:give_info_portion("encyclopedy_zone_artifact_af-vyvert"),
    db.actor:give_info_portion("encyclopedy_zone_artifact_af-gravi")
}

function actor_on_map_info(obj)
    if (obj:section() == "maps_kit") then
    if math.random() < post_info then
    m_post_info = info_news[math.random(table.getn(info_news))]
end
end
end

 

Изменено пользователем Colder

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


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

Парни такой вопрос! Как можно скриптово сделать что бы при двойном клике по аптечке, было написано не использовать а например выпить или сьесть! Может есть у кого наглядный пример или подскажет кто что и где нужно поучить! 

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


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

Парни подскажите функцию на проверку аномании в определеных метрах.

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


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

Всем привет! Парни подскажите функцию на проверку рядом активной аномалии. Например: если аномалия ЖАРКА рядом с гг находится в радиусе 2 метров происходит то или иное действие!

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


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

Изменяюсь спросить а может кто скинуть bind_anomaly?

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


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

@AndreySol Сделал так :

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

function radiation_anomaly_binder:update(delta)
    object_binder.update(self, delta)
    local actor = db.actor
    if actor then
    local dist = actor:position():distance_to(self.object:position())
    if dist <= 10 then

    local hud = get_hud()
    hud:AddCustomStatic("radiation_hud_static", true)
    else
    local hud = get_hud()
    hud:RemoveCustomStatic("radiation_hud_static", false)
end
end
end

Но она почему то не горит а маргает

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

    local actor = db.actor
    if actor then
    local dist = actor:position():distance_to(self.object:position())

    if dist <= 15 then
    local hud = get_hud()
    hud:AddCustomStatic("radiation_hud_static", true)

    elseif dist <= 25 then
    local hud = get_hud()
    hud:RemoveCustomStatic("radiation_hud_static", false)

Вот так нормально, можно даже наверно попроще!

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


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

function treasure_take_item()
    local veroyatnos_podriva        = 0.2        --// вероятность подрыва по умолчанию
    local location                = level.name()
    local sila_podriva            = 0.3        --// сила подрыва по умолчанию
    local be_or_not_to_be                    --// не трогать
    if location ==  "l01_escape"        then veroyatnos_podriva = 0.1    sila_podriva = 0.4 end
    if location ==     "l02_garbage"         then veroyatnos_podriva = 0.15   sila_podriva = 0.4 end 
    if location ==     "l03_agroprom"         then veroyatnos_podriva = 0.15   sila_podriva = 0.4 end
    if location ==     "l03u_agr_underground"     then veroyatnos_podriva = 0.35   sila_podriva = 0.6 end
    if location ==     "l04_darkvalley"    then veroyatnos_podriva = 0.25   sila_podriva = 0.4 end
    if location ==     "l04u_LabX18"        then veroyatnos_podriva = 0.25   sila_podriva = 0.6 end
    if location ==     "05_bar"         then veroyatnos_podriva = 0.25   sila_podriva = 0.4 end
    if location ==     "l06_rostok"         then veroyatnos_podriva = 0.35   sila_podriva = 0.4 end
    if location ==     "l08_yantar"        then veroyatnos_podriva = 0.35   sila_podriva = 0.4 end
    if location ==     "l08u_brainlab"        then veroyatnos_podriva = 0.3    sila_podriva = 0.5 end
    if location ==     "l07_military"        then veroyatnos_podriva = 0.35   sila_podriva = 0.4 end
    if location ==     "l10_radar"         then veroyatnos_podriva    = 0.3    sila_podriva = 0.4 end
    if location ==     "l11_pripyat"         then veroyatnos_podriva = 0.35   sila_podriva = 0.4 end
    if location ==     "l12_stancia"        then veroyatnos_podriva = 0.1    sila_podriva = 0.4 end
    if location ==     "l12_stancia_2"     then veroyatnos_podriva = 0.1    sila_podriva = 0.4 end
    if location ==     "l12u_control_monolith"    then veroyatnos_podriva = 0.1    sila_podriva = 0.4 end
    if location ==     "l12u_sarcofag"        then veroyatnos_podriva = 0.1    sila_podriva = 0.4 end

--// Снижаем шанс подрыва если есть кусачки
    if db.actor:object("kysazki") ~= nil then veroyatnos_podriva = veroyatnos_podriva - 0.1 end

    be_or_not_to_be     = math.random(0,100)
    if be_or_not_to_be < veroyatnos_podriva * 100 then
    local lv,gv
    local a         = vector()    
    local radius         = math.random(0,4)
    a             = db.actor:position()
    a.x             = a.x + radius
    a.z             = a.z + radius
    a.y             = a.y + math.random(0,1)
    lv             = db.actor:level_vertex_id()
    gv             = db.actor:game_vertex_id()
    local h2        = hit()
    h2.power        = sila_podriva    
    h2.direction        = vector():set(0,0,0)
    h2.type            = hit.explosion
    h2.impulse        = 1
    h2.draftsman        = db.actor
    db.actor:hit(h2)
    sound_object("weapons\\mine_1"):play_at_pos(db.actor,vector():set(0,0,0),0,sound_object.s2d)
    particles_object("explosions\\explosion_mine"):play_at_pos(vector():set(a.x,a.y,a.z),lv,gv,65535)
end
end

Всем привет! Есть функция на заминирование тайников! Проблема в том что, минируються не только тайники но и РЮКЗАК ДЛЯ ЗАКЛАДКИ СВОЕГО ТАЙНИКА! Можно ли как то заблочить функцию что бы она работала только с уже имеющими тайниками а не которые делает гг сам! Заранее спасибо!

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


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

@AndreySol Вызываеться из treasure_manager

function take_item_from_box(box, box_story_id)
    printf("!!! take item from box %s", tostring(box:is_inv_box_empty()))
    if box:is_inv_box_empty() == true then
    get_treasure_manager():treasure_empty(box, box_story_id)
end
    axr_treasure.treasure_take_item()  --// сама функция
end

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

function take_item_from_box(box, box_story_id)
    printf("!!! take item from box %s", tostring(box:is_inv_box_empty()))
    if box:is_inv_box_empty() == true then
    get_treasure_manager():treasure_empty(box, box_story_id)

    local box_name = box:name()
    printf("-"..box_name)
    if (math.random() < 0.75) then
    axr_sounds.play_sound([[weapons\generic_checkout]])
    mine_box = box
    mine_timer = time_global()+3000
end
end
end

function actor_on_update()
    if (mine_timer) and (mine_timer < time_global()) then    
    local blow_particle = particles_object("explosions\\explosion_mine")
    blow_particle:play_at_pos(mine_box:position())

    local h = hit()
    h.type = hit.explosion
    h:bone("bip01_spine")
    h.power = 1
    h.impulse = 2
    h.direction = vector():set(0,0,1)
    h.draftsman = db.actor

    if db.actor:position():distance_to(mine_box:position()) < 3 then
    db.actor:hit(h)
end
    mine_timer = nil
    mine_box = nil
end
end

Сделал проще! Все это влежит в treasure_manager. Но эффект тот же. Закладываю свой тайник И ОН ТОЖЕ БАХАЕТ!

Изменено пользователем Colder

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


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

Это оригинальный файл! Там только функция добавлена и все!

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


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

@Купер Спасибо большое! 

Добавил так:

    if not string.find(box_name, "active_ruck")
    and not string.find(box_name, "active_box")
    and not string.find(box_name, "active_system")
    and (math.random() < 0.75) then

Ещё бы добавить что бы с кусачками, снижался шанс заминировании тайника!

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


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

"Вывести окно извлечь" Если не ошибаюсь это движковая правка.

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

function start_repair_out(cond,num)
    local itm = db.actor:item_in_slot(num)
    local kit = kits[num]
    local s = cond-2
    local sect = obj:section()
    local name = tostring(system_ini():r_string(obj:section(),"inv_name_short"))

    if itm ~= nil then
    axr_effects_data.devices_anim()
    alife():release(alife():object(itm:id()), true)
    axr_sounds.play_sound([[item_sounds\inv_repair_sewing]])

    send_tip("%c[d_green]"..game.translate_string("st_dis_text_7").." "..game.translate_string(tostring(name)))
    create_repkit(kit..s)
    else
    send_tip("[d_red]Разбор невозможен!\\nОтсутствует объект для разбора!")
    create_repkit(kit..cond)
end
end

Парни помогите вывести Сообщение разобраного обьекта!

Сообщение не приходит а вылетает с "attempt to index global 'obj' (a nil value)"

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


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

Да работает спасибо!

@ted.80 А нет! Не работает!

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

Arguments     : LUA error: ...ü ×åðíîáûëÿ\gamedata\scripts\bind_stalker_ext.script:62: attempt to index global 'axr_sewing' (a nil value)

Когда обьекта в слоте нету

Ругаеться на сам скрипт

Ой не то вот вылет Arguments     : LUA error: ... - Òåíü ×åðíîáûëÿ\gamedata\scripts\axr_sewing.script:39: attempt to index local 'itm' (a nil value)

69 строка "

if itm ~= nil then

"

  • Нравится 2

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


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

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

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


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

local spawns_devices = {
    "part_lighter",
    "part_banka",
    "part_nitki",
    "part_kley",
    "part_cutler",
    "part_core",
    "part_ver",
    "part_grease",
    "part_fankt",
    "part_gunoil",
    "part_ramrod",
    "part_kitss",
    "part_kitrr",
    "part_jar",
    "part_weapons_light",
    "part_weapons_heavy",
    "part_outfit_heavy",
    "part_outfit_light",
    "part_electro"
}

function actor_on_random_devices_new()
    local text_new = ""
    for i = 2, 4 do--// ОТ 2 DO 4
    local item = spawns_devices[math.random(table.getn(spawns_devices))]
    alife():create(item, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    local a_name = game.translate_string(system_ini():r_string(item,"inv_name_short"))
    text_new = text_new.."\\n"..a_name
end
    send_tip_devices("\\n%c[d_cyan]"..game.translate_string("st_dis_text_9").."\\n".."%c[ui_white]"..text_new)
end

Может кто помочь получить количество получаемых деталей? Т.е если после разбора обьекта получаешь 2 ОДИНАКОВЫХ предмета, то в сообщении это не указываеться. ВОТ СКРИН https://yadi.sk/i/G3C88dOd1juczw

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


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

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

AMK-Team.ru

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