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

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


Halford

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

Бандерос объяснил все просто и понятно :D
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Не хочется что-то для одной единственной сценки 20 лишних уникальных неписей в аллспавн записывать.

и это не проблема, добавь их в gamedata\config\creatures\spawn_sections.ltx и спавни себе на здоровье скриптом ;)

 

 

Добавлено через 2 мин.:

Хотя... могешь воспользоваться функцией read_stalker_params из amk.script прочесть нет-пакет сталкера

и получить его профиль и класс и сделать проверку условия по нему

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Так что спавн в произвольном месте на произвольном уровне представляет собой пока нерешённую проблему.

Разве? Вот вам функция генерации необходимых данных для спавна на любом уровне в рандомной точке:

в функцию передаём имя левела, возвращает таблицу в которую передается позиция, левелвертекс, геймвертекс для спавна,

учтите что данные в таблицах для этой функции сняты с моего game.graph, который перекомпилен, и

координаты и количество геймвертексов и левелвертексов могут не совпадать с оригиналом игры ;)

level_vertexes = {

l01_escape = 595465, l02_garbage = 382655, l03_agroprom = 437418,

l03u_agr_underground=4921, l04_darkvalley=390121, l04u_labx18=7565,

l05_bar=99523, l06_rostok=67707, l07_military=418264,

l08_yantar=141442, l08u_brainlab=8002, l10_radar=227176, l10u_bunker=8801,

l11_pripyat=261218, l12_stancia=477876, l12_stancia_2=264570,

l12u_control_monolith=3971, l12u_sarcofag=10670

}

 

local game_vertexes = {

l01_escape={0,251}, l02_garbage={252,415}, l03_agroprom={416,702},

l03u_agr_underground={703,810}, l04_darkvalley={811,1108},

l04u_labx18={1109,1167}, l05_bar={1168,1307}, l06_rostok={1308,1437},

l08_yantar={1438,1528}, l08u_brainlab={1529,1544}, l07_military={1545,1861},

l10_radar={1862,2116}, l11_pripyat={2117,2272}, l12_stancia={2273,2401},

l12u_sarcofag={2402,2466}, l12u_control_monolith={2467,2516},

l12_stancia_2={2517,2660}, l10u_bunker={2661,2791}

}

 

function get_random_coordinates(lname)

local gvn, gvx, lvx = game_vertexes[lname][1], game_vertexes[lname][2], level_vertexes[lname]

local min_dist = 100000

local data = {}

data.lvid = math.random(1, lvx)

data.pos = level.vertex_position(data.lvid)

data.gvid = 0

for a = gvn, gvx do

g1 = game_graph():vertex(a):game_point()

if g1:distance_to(data.pos) < min_dist then

min_dist = g1:distance_to(data.pos)

data.gvid = a

end

end

return data

end

 

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

Яфно почему я не смог доделать свой мод с динамическими рандомными левелчейнджерами, именно по этой причине :unsure:

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

Народ, никто не ловил такой вылет при квиксейве? C чего он может возникать?

[error]Expression    : (m_tClassID == CLSID_SPECTATOR) || (size > sizeof(size))
[error]Function      : CSE_Abstract::Spawn_Write
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_Object_Base.cpp
[error]Line          : 226
[error]Description   : object isn't successfully saved, get your backup :(
[error]Arguments     : wpn_addon_scope45577

ЗЫ. То, шо оптика не сохранена корректно, переводить не надо, я и так понял

шо размер чего-то больше чем общий размер чего-то

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Вот здесь то что не так?

obj:iterate_inventory(function (obj, item)

а то что ты поставил obj туда куда не следует ставить :nono:

local tbl = {}
obj:iterate_inventory(function (tmp, item)
table.insert(tbl, {item:id(), item:section()})
end,obj)

for i, data in ipairs(tbl)
  get_console():execute("load ~~~ id=" .. tostring(data[1]) .. " name="..data[2])
end

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

дык ему ж не просто в лог вывести, а тейбл заполнить :nono:

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

Я так понимаю для дебага? Или нас ждут какие новые вкусности?

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

Добавь неписю такую логику

[logic]
active = remark1

[remark1]
anim = wait
on_info = {+my_info} remark2
combat_ignore_cond = always

[remark2]
anim = binocular
combat_ignore_cond = always

сталк будет стоять и ничего не делать, кады выдаш инфопоршень my_info - начнет глядеть в бинокль

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

когда мораль падает до уровня panic_threshold неписи начинают орать типа: не стреляй я без оружия, а монстряки

сваливают. Небось сам замечал: нападает стая собак, гавкают, кусают, перебиваешь всех, остаётся одна - скулит и валит куды подальше :D

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

конечно, вот допустим мне дать литра три пива - у мну мораль знаешь как поднимется :lol3:

а по сабжу - нет

у НПС есть psy_health - так вот какие нибудь эффекты оно имеет?И когда изменяется?

не знаю, не интересовался :unsure:

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
function inventory_npc()
  local general_table = {}
  for k, v in pairs (db.storage) do
    local npc = level.object_by_id(k)
    if npc and IsStalker(npc) then
      local tbl_inv = {}
      npc:iterate_inventory(
        function (tmp, item)
          if tbl_inv[item:section()] 
          then tbl_inv[item:section()] = tbl_inv[item:section()] + 1
             else table.insert(tbl_inv, item:section()) end
        end,
      npc)
      table.insert(general_table, {npc:id(), tbl_inv})
    end
  end
  for i, data in pairs (general_table) do
    local npc_obj = level.object_by_id(data[1])
    if npc_obj and IsStalker(npc_obj) then
      local str
      for j, item in pairs (data[2]) do 
        if str == nil then str = "" end
        str = str .. string.format("\\n%s=%d", item ,j)
      end
      if str then level.map_add_object_spot(npc_obj.id, "alife_presentation_smart_ready", str) end
    end
  end
all_spawn.showmessage("done")
end

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Мне нужно понять почему не читаются все элементы из таблицы (не поняв это - я не смогу работать с многоуровневыми таблицами).

гоу курить маны

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

это пси-атака найди в файле бинд_монстер строку level.add_pp_effector("radiation.ppe".... и закомментарь её

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

файл gamedata\config\weapons\имя_оружия.ltx параметр condition_shot_dec

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

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

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

это давно реализовано во многих модах, внимательно рассмотри работу дефменеджера,

скрипт death_manager.script конкретнее функция keep_item

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

Для начала, скажу только один раз и больше повторяться не буду.

Я никого никуда не посылал, я тебе (равно как и ты мне) ничего не должен и ничем не обязан,

поэтому недовольные идут лесом.

Если ты всерьез хочешь заняться программированием, читай мануалы на английском а не ищи переводы.

Потому как все равно практически вся тех. документация на нем.

По сабжу:

когда я делал трехуровневую таблицу - там все итемсы выводились как надо - но полным списком - если у непися 20 пачек патронов - то все 20 пачек построчно и выводились - хотелось бы избавиться от этого, чтобы было только имя предмета и его кол-во.

они у тебя и будут выводится построчно, потому что у каждой пачки свой :id() а ты добавляешь в свою таблицу айдишник для каждого итема, своего рода ключ, тут уже придётся выбирать или показывать все 20 пачек с их айдишниками или добавлять в таблицу без айдишника, либо завесть подтаблицу и упаковать по имени секции количество итемов, выбирать тебе

 

Добавлено через 20 мин.:

Как такового понятия многомерного массива в lua вообще не существует (как например в паскале или визуал бейсике)

в паскале и визуалбейсике реализации n-мерного массива, через array как таковой тоже не существует. Есть коллекции, деревья, но не аррэй. Про си не скажу, я его знаю на уровне "хэлловорд". Кстате знаю что в ЛУА есть связанные списки(linked lists если Иерусалимский не врет), я про них не читал, попробуй посмотри в их сторону - может пригодится

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
В Паскале как раз имеются родные многомерные массивы.

ты сможешь при помощи них создать n-мерный массив? Т.е массив с заранее неизвестным количество измерений. Вот смотри при n=2 это матрица, при n=3 - это куб. Покажи код создания n-мерного массива с заранее неизвестным n. Можно в личку, просто интересно

ЗЫ. Как жаль что нам не преподавали в свое время теорию графов :(

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

добавить в список исключаемых из обхода аномалий - zone_flame_small

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

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