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

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

Galil

Если статьи выдаются инфопоршнями, попробуй просто эти инфопоршни "забрать" (db.actor:disable_info_portion(" ") - но не уверен что именно так, проверь в lua_help)

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

SkyLoader, вот пример для кнопки активации ПДА. Я дописал в файл со строковыми индентификаторами

    <string id="action_activate_pda">
        <text>$$ACTION_ACTIVE_JOBS$$</text>
    </string>

Теперь функция game.translate_string("action_activate_pda") будет выдавать кнопку, забинденную на открытие ПДА. В отличие от парсинга user.ltx такой способ работает и после перезабиндивания кнопки в игре. Аналогично можно сделать и для остальных экшенов.

Ссылка на комментарий
Charsi, спасибо. Жаль, что по другому нельзя. (а то парсинг user не очень подходит) Изменено пользователем SkyLoader
Ссылка на комментарий

Хотел вот спросить по поводу некоторых странностей в работе STATE_Read и State_write колбеков в скриптах типа se_xxx.script

В скрипте sim_faction.script (ЧН, 10 патч) в функциях

 

 

-- Сейв

function se_sim_faction:STATE_Write(packet)

-- ЛОАД

function se_sim_faction:STATE_Read(packet, size)

 

Поставил вывод сообщения такого типа:

sm.ilog_c("load faction %s sid %s", self:name(), self.sid)

 

В итоге вот лог, записан сразу после save\load

 

* Saving objects...
! [LUA][ERROR] [07:15] save faction mar_sim_faction_csky sid 91495
! [LUA][ERROR] [07:15] save faction mar_sim_faction_renegade sid 10069
! [LUA][ERROR] [07:15] save faction mar_sim_faction_monster sid 18016
! [LUA][ERROR] [07:15] save faction gar_sim_faction_bandit sid 82950
! [LUA][ERROR] [07:15] save faction esc_sim_faction_stalker sid 34651
! [LUA][ERROR] [07:15] save faction esc_sim_faction_military sid 89133
! [LUA][ERROR] [07:15] save faction val_sim_faction_freedom sid 64428
! [LUA][ERROR] [07:15] save faction val_sim_faction_killer sid 12956
! [LUA][ERROR] [07:15] save faction agr_sim_faction_dolg sid 26588
! [LUA][ERROR] [07:15] save faction yan_sim_faction_zombied sid 17237
! [LUA][ERROR] [07:15] save faction lim_sim_faction_monolith sid 62255
* 21852 objects are successfully saved
* Game WinSeven_quicksave.sav is successfully saved to file 'f:\games\stalker - clear sky\save\winseven\stalker-stcs\savedgames\winseven_quicksave.sav'
  ...
Загрузка игры "winseven_quicksave.sav"...
* Loading spawn registry...
! [LUA][ERROR] [07:15] load faction mar_sim_faction_csky sid 47402
! [LUA][ERROR] [07:15] load faction mar_sim_faction_renegade sid 99711
! [LUA][ERROR] [07:15] load faction mar_sim_faction_monster sid 17753
! [LUA][ERROR] [07:15] load faction gar_sim_faction_bandit sid 48238
! [LUA][ERROR] [07:15] load faction esc_sim_faction_stalker sid 24366
! [LUA][ERROR] [07:15] load faction esc_sim_faction_military sid 78940
! [LUA][ERROR] [07:15] load faction val_sim_faction_freedom sid 59261
! [LUA][ERROR] [07:15] load faction val_sim_faction_killer sid 57427
! [LUA][ERROR] [07:15] load faction agr_sim_faction_dolg sid 81796
! [LUA][ERROR] [07:15] load faction yan_sim_faction_zombied sid 93268
! [LUA][ERROR] [07:15] load faction lim_sim_faction_monolith sid 31654
* 11568 spawn points are successfully loaded
* Loading objects...
! [LUA][ERROR] [07:15] load faction mar_sim_faction_csky sid 68530
! [LUA][ERROR] [07:15] load faction mar_sim_faction_renegade sid 95163
! [LUA][ERROR] [07:15] load faction mar_sim_faction_monster sid 1499
! [LUA][ERROR] [07:15] load faction gar_sim_faction_bandit sid 71579
! [LUA][ERROR] [07:15] load faction esc_sim_faction_stalker sid 26426
! [LUA][ERROR] [07:15] load faction esc_sim_faction_military sid 86856
! [LUA][ERROR] [07:15] load faction val_sim_faction_freedom sid 19908
! [LUA][ERROR] [07:15] load faction val_sim_faction_killer sid 25487
! [LUA][ERROR] [07:15] load faction agr_sim_faction_dolg sid 25358
! [LUA][ERROR] [07:15] load faction yan_sim_faction_zombied sid 11439
! [LUA][ERROR] [07:15] load faction lim_sim_faction_monolith sid 32970
* 21852 objects are successfully loaded
* Game winseven_quicksave is successfully loaded from file 'f:\games\stalker - clear sky\save\winseven\stalker-stcs\savedgames\winseven_quicksave.sav' 
...
Клиент: Синхронизация...
...
! [LUA][ERROR] [07:18] save faction mar_sim_faction_csky sid 68530
! [LUA][ERROR] [07:18] save faction mar_sim_faction_csky sid 68530
! [LUA][ERROR] [07:18] save faction mar_sim_faction_renegade sid 95163
! [LUA][ERROR] [07:18] save faction mar_sim_faction_renegade sid 95163
! [LUA][ERROR] [07:18] save faction mar_sim_faction_monster sid 1499
! [LUA][ERROR] [07:18] save faction mar_sim_faction_monster sid 1499
! [LUA][ERROR] [07:18] load faction mar_sim_faction_csky sid 65484
! [LUA][ERROR] [07:18] load faction mar_sim_faction_renegade sid 17958
! [LUA][ERROR] [07:18] load faction mar_sim_faction_monster sid 57149

 

 

 

 

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

Собстно я не совсем понял механизм работы этих функций.

Зачем при загрузке два раза вызывается функция STATE_Read() + ещё раз в конце), и зачем в конце загрузки игра занаво вызывает STATE_Write() для всех объектов, если мы загружаем а не сохраняем?

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

*Shoker*

И чего тебе непонятно в логах?

'self.sid' - рандомная метка для локальной идентификации объектов в лог-строках. Сделано по дурному ... при каждой перезагрезке игры этот индекс изменяется, так что ориентироваться можно только в текущей сессии.

 

Зачем вообще вызываются методы STATE_Read()/STATE_Write() ?

Ответ вроде как очевиден. В игре имеются серверные объекты и клиентские. Клиентские - порождение серверных. В игре (для многих объектов постоянно) идет обмен между серверными и клиентскими объетами. В конце игры - в серверные объекты сохраняется то, что необходимо от клиентских ...

 

То, что в зарузке используется метод STATE_Write() как раз и не должно вызывать вопроса, если учесть 'зеркальность' названий. Методы STATE(UPDATE)_Write(Read) применяются к объектам, точнее они и есть методы объектов(!), и учитывая что записть типа: se_object:STATE_Write(packet) - можно прочитать как "запись в нет-пакет параметров серверного объекта" и далее этот пакет с данными можно читать и использовать в игре, то ясно - это по сути операция ЧТЕНИЯ данныех объекта, для чего и получается пакет данным методом.

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

Так что запоминай и привыкай к 'зеркальной' трактовке:

Чтобы прочитать параметры - требуется вначале их из объекта записать в нет-паекет.

Чтобы внести изменения (и записать) - требуется, чтоб (ис)правленый нет-пакет был прочитан объектом.

 

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

P.S. Кстати, можешь опробовать обновленный вариант модуля работы с нет-пакетами:[spoiler="читалка/писалка" (дозаполнил)]m_net_utils_111022

 

Основное отличие: выбор метода чтение/записи нет-пакета производится автоматически по переданному в качестве аргумента серверному объекту. Определяется его класс и по таблице из конфиг-файла выбирается соответствующий метод (если имеется).

Установка - скопировать скрипт в папку скриптов, конфиг - в папку конфигов.

Вызовы: чтение - Get_NetPacket(se_obj [,flag_upd]) , запись - Set_NetPacket(se_obj, table)

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Итак, мужики, по новой работа с табличками...

 

Имеем заполнение таблицы:

 

table.insert(TblMsges_stalker,t)

 

Таким макаром все работает, при попытке же выделить TblMsges_stalker посредством склейки строки

 

local ComTbl = Sender:character_community()
local Tbl="TblMsges_"..ComTbl -- Так у нас получаются таблички... 
table.insert(Tbl,t)

 

Получаю вылет :

 

FATAL ERROR

[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : .... - Зов Припяти\gamedata\scripts\vs_send_news.script:211: bad argument #1 to 'insert' (table expected, got string)


stack trace:

 

Как я понял не формируется TblMsges_stalker посредством моей склейки, решил проверить,

 

 

local Tbl="TblMsges_"..ComTbl -- Так у нас получаются таблички... 
send_tip(Tbl,nil, nil, nil,nil,nil)

 

В результате получил сообщение TblMsges_stalker

 

Не подскажите в чем проблема? Я тут думал, что передается в таблицу не TblMsges_stalker, а "TblMsges_"..ComTbl ,т.е не идет склейка....

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

 

Так же пытался возвращать TblMsges_stalker таким методом....

 

local TblSend = GetComName((Sender:character_community()),7)
table.insert(TblSend,t)

 

--Табличка на группировку. + иконки для каждой группировки.
local Community = {
    ["actor"]      = {"Дегтярев","ГГ","Дегтярева","СБУшника","default","Общий канал:","TblMsges"}, -- надо все группировки шмалять
    ["stalker"]      = {"сталкер","одиночка","сталкера","одиночку","stalker","Общий канал:","TblMsges_stalker"},
    ["monolith"]     = {"монолитовец", "фанатик", "монолитовца","фанатика","default","Монолит:","TblMsges_monolith"},
    ["army"]         = {"военный","солдат","военного","солдата","army","Военные:","TblMsges_army"},
    ["killer"]       = {"наёмник","мерк","наёмника","мерка","killer","Намники:","TblMsges_killer"},
    ["ecolog"]       = {"учёный","яйцеголовый","учёного","яйцеголового","default","Ученые:","TblMsges_ecolog"},
    ["dolg"]        = {"долговец","долгарь","долговца","долгоря","dolg","Долг:","TblMsges_dolg"},
    ["freedom"]      = {"свободовец","анарист","свободовца","анархиста","freedom","Свобода:","TblMsges_freedom"},
    ["bandit"]       = {"бандит","гопник","бандита","гопника","bandit","Бандиты:","TblMsges_bandit"},
    ["zombied"]        = {"зомбированный","зомби","зомбированного","зомби","default","Зомбированные:","TblMsges_zombied"} --Пасхалка для прикола...
}

--Берем имя из таблички.
function GetComName(ObjCom,index)
if (Community[ObjCom][index]) then 
local ComName =Community[ObjCom][index] 
return ComName
end
end

 

Такой же влет, если же давать типс, то все пучком,дело в очередности?

ЗЫ,Sender - дает сталкера (obj) полностью проверен на все. Код не выкладываю, ибо там очень много....

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

Что-то кончается, что-то начинается...

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

KD87, Ясно, пока сделал самым примитивным способом...

function WriteTbl(Sender,t)
ComTbl = Sender:character_community()
if ComTbl == "actor" then
table.insert(TblMsges,t)
end
if ComTbl == "stalker" then
table.insert(TblMsges_stalker,t)
end
if ComTbl == "monolith" then
table.insert(TblMsges_monolith,t)
end
if ComTbl == "army" then
table.insert(TblMsges_army,t)
end
if ComTbl == "killer"  then
table.insert(TblMsges_killer,t)
end
if ComTbl ==  "ecolog" then
table.insert(TblMsges_ecolog,t)
end
if ComTbl == "dolg" then
table.insert(TblMsges_dolg,t)
end
if ComTbl == "freedom" then
table.insert(TblMsges_freedom,t)
end
if ComTbl == "bandit" then
table.insert(TblMsges_bandit,t)
end
if  ComTbl == "zombied" then
table.insert(TblMsges_zombied,t)
end
end

 

А никак нельзя строку перевести в таблицу??? Или что-то в этом роде? но чтоб покороче и покрасивше?

Что-то кончается, что-то начинается...

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

Кто-нибудь разбирался со "злопамятностью" неписей ?

 

Картина следующая:

Например, на кордоне сидят сталкеры у костерка между АТП и насыпью. (Или даже вообе на АТП).

С насыпи в районе креста/гулага кабанов вываливается в онлайн вояка с насыпи, и резво бежит на место. Сталкеры, мельком увидев вояку, поднимаются, и идут на разборки - да хоть под мост.

 

Еще банальнее - ГГ устраивает перестрелку под мостом, сбегает, прячется. Вояки доходят до мета, где видели ГГ последний раз, и минут пять стоят там, уткнувшись в землю стволами. Пока состояние гулага по времени не сменится.

 

Причем эвалюатор в xr_ganger.script давным-давно возвращает false.

 

Еще:

Непись сидит под смартом, где ему запрещено воевать.

Рядом - враг. Враг уходит довольно таки далеко (гарантированно за препятствием), отпускаем непися из под смарта, и он бежит за врагом. Хотя и не видит нифига. Где-то по пути он может потерять предмет охоты окончательно, но продолжает находиться в состоянии боя.

А самое мерзкое, что в этом состоянии его и под смарт обратно взять нельзя.

То есть, пример:

Сцена в ТД, с бандитом и долговцем. У бандита

[smart_terrains]

val_escort = {-val_escort_scene_end -val_bandit_talk}

val_lager_bandits = {+val_escort_scene_end}, {+val_bandit_talk}

 

Даем val_bandit_talk - и бандюк побежал охотиться на долговца.

Делаем их нейтралами друг к другу - и бандит нормально берется под val_lager_bandits

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Dennis_Chikin Очень хороший вопрос. По крайней мере первая его часть :)

Если бы нашлось подобное решение как у косых сталкеров было бы круто.

В конфиге сталкера есть такая строчка:

selector_attack =

Судя по слухам она не работает, в движке упоминаний нету или как-то так. Но у меня есть сомнения, по крайней мере у монстров очень видны отличия в их поведении при редактировании подобных вещей. Короче дальше..

Там, под такими параметрами как, они ниже, есть значения в цифрах:

fOptMemberDistance, ==== тут метры.

fOptMemberDistanceWeight, = тут фиг знает что.

fMinMemberDistance,==== тут метры.

fMinMemberDistanceWeight, = тут фиг знает что.

fMaxMemberDistance,==== тут метры.

fMaxMemberDistanceWeight, = тут фиг знает что.

fMemberViewDeviationWeight, = тут фиг знает что.

Я так и не понял за что отвечает приставка Weight.

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

Мой архив

Сталкером не занимаюсь.

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

Вес - он и есть вес. В смысле, в общей куче.

типа, 10+90 = 100%.

Когда все по нулям, а у одного параметра много - только он и будет учитываться. Два с одинаковым, остальные по нулям - эти 2 - пополам.

 

 

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

Vano_Santuri

Таблицу из строки сделать не сложно. Желательно знать из строки какого вида?

Например :

local t = {}
local s = "word_1 word_2 word_3 word_4 word_5"
for w in s:gmatch("[%w%_]+") do
    t[#t+1] = w
end

Только вот до сих пор не пойму что же именно тебе нужно? В теме "Lua..." у тебя были одни условия, тут несколько другие.

Объясни подробнее.

Изменено пользователем Gun12
Ссылка на комментарий

Gun12, Просто я уже слишком много нового кода написал, вобщем так....\

 

У меня есть таблички...

 

 

local TblMsges = {} -- Общий канал, Смерть, погода, и прочая хрень....
local TblMsges_stalker = {} --Сюда идут новости для общего канала (сталкеры)
local TblMsges_monolith = {} --Табличка - канал Монолита.
local TblMsges_army = {} -- Табличка - канал Военных.
local TblMsges_killer = {} -- Табличка - канал наемников.
local TblMsges_ecolog = {} -- Табличка - канал экологов.
local TblMsges_dolg = {} -- Табличка -канал Долга.
local TblMsges_freedom = {} -- Табличка канал Свободы.
local TblMsges_bandit = {} -- Табличка - канал бандитов
local TblMsges_zombied = {} -- Табличка - канал зомбированных - Прикол от меня.

\

 

У меня много кода, суть в том, чтобы заполнять таблички в зависимости от группировок...

 

где имя таблички состоит из TblMsges_ и секции группировки, т.е чтоб не писать кучу if я хочу сделать табличку из переменной группировки и постоянной TblMsges_

 ...
local Com = Sender:character_community()
local Tbl = "TblMsges_ "..Com
table.insert(Tbl,t)

...

 

Товарищ, Charsi , посоветовал сделать так:

 

table.insert(this["TblMsges_"..Sender:character_community()],t)

 

Сейчас попробую и отпишусь...

 

 

Не не получилось, как-то вылет на первый аргумент... Ладно бог с ним, как допишу все, посмотрите, может что и поможете исправить, а пока буду делать дальше, дело идет....)

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

Что-то кончается, что-то начинается...

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

Vano_Santuri

А что тебе мешает сделать одну глобальную таблицу с подтаблицами? :)

Типа:

 

local NewsTbl = {
["all"] = {  --\\ Общий канал 
          "Текст новости",
          "Текст новости",
          ...
             },
["freedom"] = {  --\\ Свобода
          "Текст новости",
          "Текст новости",
          ...
             },
...
}

 

А дальше можно получать рэндомный текст таким образом.

local ntbl = NewsTbl["freedom"] --\\ получаем подтаблицу с текстами свободы

local random_text = ntbl[math.random(#ntbl)]

 

В итоге random_text будет равен случайному сообщению из таблицы freedom

И тебе достаточно будет лишь менять имя таблицы в local ntbl, передавая её нужное строкове имя.

 

C if-ами лучше не заигрывайся, а то на твоей предыдущей версии новостей из за них Lua Cheker виснул :D

 

Ну и заполнять их аналогично можно, ты только учти что в table.insert первый аргумент это таблица как раз, куда ты будешь свой текст добавлять, тоесть если хочешь туда добавить текст, то пишешь так:

table.insert(ntb, "текст") и всё :)

 

Artos

Спасибо за новую версию нет-пакетов :)

И как тебе хватает терпения каждый раз их перелапатывать чуть ли не полностью, я б повесился давно :D

Я их постараюсь проверить, отпишусь, спасибо :)

 

По поводу STATE_Read\Write, я просто не понял зачем при загрузке сохранения, во первых функция STATE_Read вызывается 3 (!) раза за загрузку для всех объектов. А во вторых в конце загрузки при синхронизации происходить вызов STATE_Write (тоесть по сути во время загрузки сохранять все наши переменные) для всех объектов а потом опять STATE_Read (но уже для тех что на 1 локации с ГГ)

И того 3 Read и 1 Write во время загрузки... зачем?

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

*Shoker*, Была такая идея, но , тогда я не смогу регулировать каналы:

Для канала - исходящий (сендеры) 2.- это о ком новости ...

Я хочу сделать регулируемыми. Для чего? Есть идея привязать носвости к Каналам, в общий идут типсы только о всякой фигне, а вот сообщения о выстрелах, мутантах, Сос, нападение - уже по каналам группировок ...

В зависимости от наличия условия - давать возможность слушать каналы группировок (т.е сделать интересные квесты на добычу прошивки) ...

Так же я не думаю, что наличие новостей от зомбарей и монолитовцев в канале кого-то обрадует? Их можно исключить, либо моим методом (несколько таблиц) Либо добавлять условия на проверку группировки - опять очень много if then . Т.е этими табличками я избавился от n-ного количества if и сделал удобным для выбора и регулирования сообщений ...

Вот прикол, зацените:

 

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

 

 

Пока тестовый режим ....

thumb.png

thumb.png

 

 

 

По поводу функциональности - Берутся только реальные сендеры, настраивается их радиус,т.е левых сендеров не будет...

Что-то кончается, что-то начинается...

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

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

local MsgTbl = {}

function addToTbl(name,ti)
if MsgTbl[name] == nil then
    MsgTbl[name] = {}
end

table.insert(MsgTbl[name], ti)
end

 

С помощью функции addToTbl() ты можешь добавить в MsgTbl нужный тебе текст к нужной группировке. Тоесть если тебе надо допустим добавить текст (или не тока текст, ti может быть и таблицой и чем угодно) к свободе, то ты просто пишешь addToTbl("freedom", <...>)

 

Ну и соответственно получить таблицу свободы через такую функцию.

 

function getFromTbl(name)
if MsgTbl[name] == nil then
    return nil --\\ вернёт nil если ничего нету
end
  
return MsgTbl[name]
end

 

Сама таблица будет примерно как та, что я выше показывал.

local MsgTbl = {
     freedom = { -- эту таблицу вернёт функция getFromTbl, name = freedom
                1 = ...,
                2 = ...,
                      },
                     }

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

*Shoker*

Странноватые вопросы возникают у тебя ... (по STATE_Read/Write). Вроде как даже пояснил ...

Как вообще возникают объекты в игре? Как они получают свои параметры? Как меняют свои параметры?

Это обшие вопросы и не имеют к теме отношения. Но все же поясню.

При старте игры из сэйва читаеся информация о всех динамических объектах, которые были в игре при сохранении. Для новой игры (НИ) информация о таких объектах берется из all.spawn'а.

Сервер создает объекты-заготовки соответствующего класса для всех объектов. На этом этапе это просто шаблоны с дефолтными параметрами и с единыи ID-65535 (т.е. игровой идентификатор пока не задан!).

Далее, в объекты-заготовки считываются (STATE_Read) их конкретные параметры и объекты расставляются по локациям, координатам и пр ...

После этого, полученные объекты считываются (STATE_Write) запущенным сервером, чтобы прочитать их параметры и определить какие объекты относятся к текущей локации.

Для объектов, которые биндятся и могут иметь сохраненные в сэйве параметры в pstor'ах - вновь запускается читалка (STATE_Read) и считываются эти параметры.

Естественно, после того, как сервер считал текущие параметры объектов на локации - вновь необходимо дать информацию по этим объектам в игру, т.е. клиентские объекты должны иметь текущий нет-пакет (STATE_Write).

Ну и т.д. ... Например для объекта 'оружие в рукаг ГГ' будет вызываться STATE_Read/Write периодически, что можно даже с некоторой погрешностью испорльзовать для счтывания текущего кол-ва патронов для этого объекта ... не задействуя сторонние апдейтеры.

 

Ну а модуль нет-пакетов не переопачивается каждый раз. Суть (на 95%) остается прежней.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Какую логику надо дать НПСу, чтобы он лежал и просил о помощи

Сообщение от модератора ColR_iT
Ему нужно дать литр молока и банку солёных огурцов...

В шапку темы заглядывайте иногда!

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

Создаю глобальный мод с новыми локациямЭ

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

Вопрос, почему НПС не идет на костер, и не берется под смарт? Он просто уходит бродить по точкам..

[smart_terrains]
ds_lager = true

[logic]
active = kamp

[kamp]
center_point = ds_lager_kamp_1
radius = 3

Жить – значит делать вещи, а не приобретать их.

 

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

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

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

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

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

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

Войти

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

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

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