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

[SoC] Ковыряемся в файлах


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

@oggycoc, Насчет ВСЕХ НПС - это ты погорячился. В приведенном тобой коде речь идет только об НПС с секцией yan_ecolog_respawn_1. Больше никто и нигде удаляться не будет.

 

ИМХО, правильнее будет использовать функцию IsStalker(obj) вместо проверки string.find(obj:name(),"yan_ecolog_respawn_1")

 

Если неправ, пусть гуру моддинга поправят.

  • Согласен 3

Сталкер - наше всё!

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

@mole venomous, Я бы даж подумал - они должны быть. Лог в студию - самый правильный вариант.

Мужики, нужна помощь. Мне задали вопрос, а я не знаю, как ответить. Суть такова:

 

Можно ли как-то увеличить скорость движения ГГ в режиме прицеливания?

 

Есть у кого идеи на этот счет?.

Сталкер - наше всё!

Ссылка на комментарий
13 hours ago, AndrewMor said:

@oggycoc, Насчет ВСЕХ НПС - это ты погорячился.

Имелось ввиду все НПС этого профиля  когда-либо мной заспавненные в мире, на данном сейве

Изменено пользователем oggycoc
Ссылка на комментарий
6 часов назад, oggycoc сказал:

Имелось ввиду все НПС этого профиля  когда-либо мной заспавненные в мире, на данном сейве

А вот это другое дело.

Сталкер - наше всё!

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

 

Дорогие и уважаемые сталкеры, мододелы и разбирающиеся в скриптах! Помогите, пожалуйста, если
знаете! Как правильно написать скрипт-цикл, чтобы с каждой итерации этого цикла использовались
числа по заданной очереди, например, сначала маленькие, потом большое? И так до бесконечности
зацикленно менялись бы? И чтобы новая перезагрузка сохранения не влияла бы на их смену, а
чередовались по порядку.

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

 

Да это я в bind_stalker.script, Сталкер ТЧ, ОП 2  (хотя работает и в модах COP) добавляю респаун, самый легкий, простой и удобный, чтобы врагов
было побольше..получается только с одним числом периодичности, но вот как задать несколько любых
заданных чисел, меняющихся по порядку? После вот этих строк в bind_stalker.script добавляю -

  -- обновление постпроцессов
  if post_process ~= 0 then
    if post_process:update () == true then
       post_process = 0
    end
  end

  -- обновление пси-антенны
  if sr_psy_antenna.psy_antenna then
    sr_psy_antenna.psy_antenna:update(delta)
  end

  --Для итерации спауна например этих врагов неподалеку от актора (конечно, я их делаю куда
больше), добавляю вот этот скрипт-код -

    if post_time2 < time then 
        post_time2 = time + 484000 --Вот это число передышки респауна, как задать
зацикленную поcледовательность чисел, чередующихся по порядку, бесконечно? Чтобы с большим числом
передохнуть от маленьких чисел -нескольких раз частого респауна, можно было. 

      local ap = db.actor:position()
    local lv = db.actor:level_vertex_id()
    local gv = db.actor:game_vertex_id()
alife():create("mil_monolit_rush_respawn_1", vector():set(ap.x+math.random(200,210), ap.y+0,
ap.z+math.random(-13,-12)), lv, gv)
alife():create("burer_normal", vector():set(ap.x+math.random(100,200), ap.y+0, ap.z+math.random
(-13,-12)), lv, gv)

end
--Пробовал по-разному, и так
    if post_time < time then
            ai1 = 10000  --Пробовал и так - ai[1,4] =[10000,10000,10000,500000] , и перепробовал
многие варианты, вылетает или не используется
            ai2 = 10000
            ai3 = 10000
            ai4 = 500000
        for 1, 4 do
             post_time = time + ai[1,..,4] --Что-то не так делаю, не работает.

Помогите, дорогие люди и уважаемые мододелы, если можете! Не говорите на словах, а пожалуйста,
напишите сам код или функцию, которая перебирает заданные числа последовательно, там немного
строчек должно быть. Зараннее спасибо огромное! Пожалуйста, простите, если глупость спросил, или
не по адресу, или не по правилам форума! Зарегистрировался специально, потому что ответа на это
сам не нашел, ткните, если он есть где-то. Умоляю, помогите! Если только знаете. И извините,
пожалуйста, за длинное cообщение, хотел, чтобы поняли мой вопрос. Извините, если что! Спасибо!

 


 

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

@mole venomous, вот логика

[smart_terrains]
none = true

[logic]
active = walker1
trade = misc\trade_bolota.ltx 
trader_flags = 0 
inv_max_weight = 10000 
meet = meet


[sleeper]
path_main = lvl8_swamp_smart_terrain_bolota_1_sleep
wakeable = false
on_info = {+i_14} walker1
danger = danger_ignore
combat_ignore = combat_ignore
meet = meet

[walker1]
path_walk = way_svat_walk_1
path_look = way_svat_look_1
def_state_standing = sit_ass
danger = danger_ignore
combat_ignore = combat_ignore
meet = meet

[meet]
meet_state = 30|hello@hail|20|wait@wait
meet_state_wpn = 60|backoff@threat_weap
victim = 30|actor
victim_wpn = 60|actor
use = true
use_wpn = false
syndata = hello@hail|backoff@threat_weap


[combat_ignore]

[danger_ignore]
ignore_distance = 1

 

Ссылка на комментарий
1 час назад, mifares сказал:

использовались
числа

Что это означает... загадка.

1 час назад, mifares сказал:

за длинное cообщение, хотел, чтобы поняли мой вопрос.

Не знаю кому как, а мне например, из всего сообщения так и не понятно, что же хочется сделать его автору...

Попробуйте объяснить короче и понятнее, без загадок.

  • Согласен 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.

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

Zander_driver!
Какие числа? -Количество миллисекунд, маленькое -это, например, 30000 =30 секунд, большое в
понимании моего вопроса -900000 =900 секунд. Да и какая, простите,- интересно, для Вас разница,
их величина, если их настраивать в цикле можно и нужно? 

Что же хочется сделать автору этого вопроса, мне то есть? -так это чтобы вместо одного
применяемого скриптом числа, можно было задать несколько, например - 30000, 30000, 30000, 900000.
Вот например, есть функция math.random(30000,900000), но она будет выдавать случайно числа от
30000 до 900000. Может, есть такая функция, которая будет выдавать последовательно 30000, 30000,
30000, 900000? Или только как-то циклом это надо сделать? Вот бы кто код этого написал, вот бы
кто помог...

 

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

Я не спрашивал "какие числа"...

Впрочем, что вы хотите я понял. Это делается НЕ циклом. И "в пару строк" это не укладывается.

Потому что

24 минуты назад, mifares сказал:

Может, есть такая функция, которая будет выдавать последовательно 30000, 30000,
30000, 900000?

Такой функции нету. А чтобы ее написать, нужно где-то сохранять предыдущее число. Иначе откуда функция узнает, какое оно было?

Ну и, тут все же не стол заказов. Сохранять кучей способов можно - pstor актора, нетпакет актора, модуль se_stor Артоса (самый правильный вариант, пожалуй), правленые движки наконец... Но вам в любом случае, нужен какой-то механизм сохранения прошлого значения. А не цикл. И чтобы "кто-то" вам "помог" и "написал" - этот "кто-то" должен знать, какие механизмы сохранения можно применять в вашем моде. Нетпакет актора в некоторых модах бывает забит под завязку, и пихать туда что-то уже нельзя. se_stor - есть он там? нету? я например не знаю.

  • Согласен 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

@Zander_driver, ну речь вроде идёт об ОП, так что думаю есть.

1 час назад, mifares сказал:

последовательно 30000, 30000,
30000, 900000?

Всё что на ум приходит это таймеры.

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

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий
10 часов назад, Ninna сказал:

как заспавнить

Вот функция, удобно спаунить на ходу, тремя способами (по координатам, по имени профиля и ID

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

function AddItems(items,recipient)
    local count = 0
    local pos, lvid, gvid, id, obj 
    local function Compare(id)
    obj = alife():object(id)
        return obj and obj.profile_name and obj:profile_name() == recipient
    end 
    for k, v in pairs(items) do
        if type(recipient)=='table' then
            for k, v in pairs (items[k]) do
            count = k
                for i=1, count do
                 alife():create(v,vector():set(recipient['x'],
                  recipient['y'],recipient['z']),
                   recipient['lv'],recipient['gv'])
                end
            end 
        elseif type(recipient)=='string' then
    if recipient =="actor" then
        obj = alife():actor()
        else
        for i=1, 65534 do
            local predicate = Compare(i)
            if predicate then
            break
           end
        end
    end 
    if obj == nil then return end
        for k, v in pairs (items[k]) do
            count = k
                 for i=1, count do
                 alife():create(v, obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id)
            end
        end 
    elseif type(recipient)=='number' then
        obj = level_object_by_sid(recipient)
            if obj ~= nil then
             id, pos, lvid, gvid= obj:id(), obj:position(), obj:level_vertex_id(), obj:game_vertex_id()
             elseif obj == nil then
             obj = alife():story_object(recipient)
             id, pos, lvid, gvid = obj.id, obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id
                for k, v in pairs (items[k]) do
                    count = k
                   for i=1, count do
                   alife():create(v, pos, lvid, gvid, id)
                   end
               end
            end
        end
    end
end

function AddItemsByName()
    local items = {
    {[1]="item_1"}, -- итемы и их кол-во
    {[2]="item_2"},
    {[5]="item_3"}
    }
    local recipient = "profile_name" -- имя из профиля
    AddItems(items,recipient)
end

function AddItemsByID()
    local items = {
    {[1]="item_1"}, -- итемы и их кол-во
    {[2]="item_2"},
    {[5]="item_3"}
    }
    local recipient = 515 -- sid NPCа или кейса
    AddItems(items,recipient)
end

function AddItemsByPlace()
    local items = {
    {[1]="item_1"}, -- итемы и их кол-во
    {[2]="item_2"},
    {[5]="item_3"}
    }
    local recipient = {x=124.25,y=-7.69,z=-11.66,lv=427496,gv=133} -- координаты и вертексы
    AddItems(items,recipient)
end

 

  • Спасибо 1

Здесь могла быть ваша реклама.

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

@mole venomous, спасибо, только вот есть одна проблемка: я не разбираюсь в скриптах. Можешь хотя бы подсказать куда это нужно вставить? Дальше наверно разберусь раз там все подписано.

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

А старый-добрый spawn.inv теперь не в моде? :rolleyes:

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий
09.07.2020 в 23:18, Zander_driver сказал:

А старый-добрый spawn.inv теперь не в моде?

Ещё бы знать что это такое)

У меня другой вопрос назрел. Пытаюсь заспавнить уникальный комбез в х18 вместо обычного и уникальную куртку бандитов вместо обычной в вагоне на свалке, но при компиляции аль спавна он выдает ошибку cannot find clsid for class "название костюма". Что с этим делать? Причем помню что раньше уже сталкивалась с этой проблемой и как то ее заборола, но как не помню:pardon:

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

Никто не помнит как убрать в бункере монолог с осознанием. В общем когда там все светильники напольные разбиваем появляется монстры. Потом диалог с осознанием и в случае отказа выдается переход на чаэс. Фриплей делаю эта фигня мешает, по хорошому вырезать надо все это и нормальный переход заспавнить на чаэс.

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

Привет ребята.

Продолжаю ковырять ТЧ.

В файл map_spots_relations.xml, в самый низ добавил две секции:

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

 

    <neutral_pda_spot width="6" height="6" stretch="1" alignment="c"> 
        <texture r="255" g="200" b="0">ui_minimap_point</texture>
    </neutral_pda_spot>

    <friend_pda_spot width="6" height="6" stretch="1" alignment="c"> 
        <texture r="50" g="255" b="0">ui_minimap_point</texture>
    </friend_pda_spot>

 

В пда начали отображаться нпс, но радиус какой то маленький, увеличение switch_distance до 800 не возымело эффекта, значит радиус алайфа не играет роли, я так понимаю - сие зашито в движке?

И ещё: попробовал добавить ещё две секции.

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

    <enemy_pda_spot width="0" height="0" stretch="1" alignment="c" xform_anim="map_spot_rel_xform" xform_anim_cyclic="0">
        <texture r="255" g="0" b="0">ui_minimap_point</texture>
    </enemy_pda_spot>

    <deadbody_pda_spot width="4" height="4" stretch="1" alignment="c"> 
        <texture r="168" g="168" b="168">ui_minimap_point</texture>
    </deadbody_pda_spot>

Ну сие не заработало, где можно подсмотреть?

@Stalkersof, Вот этот мод не смотрел? https://www.amk-team.ru/forum/topic/8986-raritety/?do=findComment&comment=982760

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

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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