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

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

 

 

Если стоит xray-extensions, можно попробовать получить текущий стейт аномалии, он хранится в m_eZoneState класса CCustomZone. Если аномалия выключена, стейт будет равен eZoneStateDisabled.

 

Стоит ОГСЕ-движок. Там есть, не в курсе?

---------------------------------

www.amk-zone.de

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

Да...

  • Спасибо 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.

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

Господа присяжные заседатели, вчера, в соседней палате, лед - тронулся !

 

То есть, а скажите мне: ни кому ни разу не приходило в голову, что конструкция entity_action( entity_action() ) - несколько странна ?

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

Здравствуйте. Подскажите, пожалуйста, есть ли идеи, как загнать несколько community (dog, dog_two, dog_three к clsid.dog_s и т.п) под один класс в эту таблицу (Из скрипта smart_terrain.script?
 

 

-- заполняет таблицу monster_classes
-- TODO: заменить на глобальный функционал
function se_smart_terrain:fill_monster_classes()
if not monster_classes then
monster_classes = {
[clsid.bloodsucker_s ] = "bloodsucker",
[clsid.boar_s        ] = "boar",
[clsid.burer_s       ] = "burer",
[clsid.cat_s         ] = "cat",
[clsid.chimera_s     ] = "chimera",
[clsid.controller_s  ] = "controller",
[clsid.pseudodog_s   ] = "pseudodog",
[clsid.psy_dog_s     ] = "psy_dog",
[clsid.dog_s         ] = "dog",
[clsid.flesh_s       ] = "flesh",
[clsid.fracture_s    ] = "fracture",
[clsid.poltergeist_s ] = "poltergeist",
[clsid.gigant_s      ] = "pseudo_gigant",
[clsid.snork_s       ] = "snork",
[clsid.tushkano_s    ] = "rat",
[clsid.zombie_s      ] = "zombie"
}
end
end

 

 

 

Дело в том, что новосозданные животины не берутся под гулаги, пока не пропишешь сюда в таблицу их коммунити. Т.е у меня, допустим, 2 собаки на 1 классе (С обязательно [!] разным коммунити), пока новую сюда не впишешь, она не будет бегать под гулагом. Такие вот заморочки.

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

@HellRatz, т.е. у тебя собаки, имеющие один и тот-же clsid, имеют разные community? Тогда ты ничего не сделаешь, не меняя smart_terrains.script. Он расчитан на то, что один clsid будет иметь одно community.

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

@dsh, все правильно, собаки, имеющие один и тот-же clsid, имеют разные community.

 

 

 

Тогда ты ничего не сделаешь, не меняя smart_terrains.script.

 

Да это-то понятно. Это, конечно, печально, но я думаю решаемо (Уж какие скрипты только не делали). По этому и пишу сюда, может у кого какие есть идеи и/или предложения. Потому что прям вообще труба иначе.

Ссылка на комментарий
чтобы гулаги брали на работу моих собак с новым коммунити, иначе он берет только то, что прописано в этой таблице

 

Данный код не интересует коммунити твоих собак. Грубо говоря, если у тебя в смарте указано

communities = dog

и в smart_terrains.script

      [clsid.dog_s         ] = "dog",

то в этот смарт будет принят любой мутант с clsid == dog_s. По сути, смарт принимает к себе не по коммунити, которое указано в секции моба, а по clsid. Тот код, он просто для человекочитаемого вида. Я предполагаю, что ты используешь generic_lair. Иначе, ко всему этому, еще действуют правила конкретного гулага. generic_lair примет всех, кого примет смарт.

Изменено пользователем dsh
Ссылка на комментарий
то в этот смарт будет принят любой мутант с clsid == dog_s.

Вот и я так думал, а на деле оказалось иначе. Пока не прописал заместо "dog" свою community, моя новая собака не бралась в работу гулага. И вряд ли это совпадение, потому что до этого я пробовал всяко, запускал десятки раз, а результат получился только сейчас, сменив группировку для класса. При чем это не только с собаками, но и с другими старыми/новыми животными.

-----------

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

Изменено пользователем HellRatz
Добавлено Dennis_Chikin,

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

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

 

 

Вот и я так думал, а на деле оказалось иначе. Пока не прописал заместо "dog" свою community, моя новая собака не бралась в работу гулага.

 

Конечно, ты же в смарте написал "dog_two", а в таблице "dog". Это таблица используется для перевода clsid в человекочитаемый формат, что бы значение потом сравнивать с тем, что указано в описании смарта. В твоем случае, т.к. ты хочешь более сложных правил, а именно, что бы указанный смарт принимал не всякую собаку, а только ту, у которой в секции указано "community = dog_two", нужно уже свою логику добавлять. Например вот так:

function se_smart_terrain:get_obj_community( obj )
  local cls = obj:clsid()

  if cls == clsid.script_stalker then
    return obj:community(), true
  else
    local comm = get_string( obj:section_name(), "community" )
    if comm == "dog_two" then
      return comm, false
    else
      return monster_classes[ cls ], false
    end
  end
end

Или вообще вот так

function se_smart_terrain:get_obj_community( obj )
  local cls = obj:clsid()

  if cls == clsid.script_stalker then
    return obj:community(), true
  else
    return get_string( obj:section_name(), "community", monster_classes[ cls ] ), false
  end
end

Решать тебе. А может еще как-то более замороченно. Результат get_obj_community просто сравнивается со значениями из communities смарта и если совпадает с одним из этих значений, моб принимается в смарт, если другие условия тоже совпадают. Т.ч. никакой магии, возвращай из get_obj_community все, что тебе нужно и так, как тебе нужно.

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

@dsh, сделал по второму варианту, все заработало, новые звери идут под гулаг без редактирования и шаманства с таблицей. Спасибо за решение вопроса.

Добавлено Dennis_Chikin,

Когда пользуетесь движком от ОГСЕ - просьба это указывать.

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

 

 

сделал по второму варианту, все заработало

 

это более общий вариант, поэтому, что бы ничего работающего не сломать, убедиcь, что у всех мутантов прописано правильное community.

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

конструкция entity_action( entity_action() ) - несколько странна ?

 

С точки зрения Lua в ней нет ничего ни странного, ни криминального, если вспомнить, что параметры вычисляются до вызова функции. Тут всё зависит не от конструкции вызова, а от содержания самой функции. Например, вот такая функция:

function entity_action(f) a = f and '2' or '1'; print('--> '..a); return true end 

отработает вполне корректно и выдаст предсказуемый результат.

entity_action(entity_action())
--> 1
--> 2

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

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

Вообще это две разные функции - конструктор без параметров и конструктор копирования класса CScriptEntityAction. Содержание у них конечно разное.

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

"и конструктор копирования" - и на кой он, в такой вот конкретно форме ?

Или даже a = entity_action(); a:set_action( v ); return entity_action( a ) ?

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

 

Ну это у автора кода лучше спрашивать =) сама по себе форма - не криминальна как бы. и вполне имеет право на существование, если оно зачем-то потребовалось.

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

 

кто-то в свое время вообще заявил "я не понимаю таких конструкций"

говоря о конструкции

flist[func](obj)

 

 

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

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

 

 

две разные функции - конструктор без параметров и конструктор копирования класса

А разве в Lua есть перегрузка функций? По моему вызов функции, как и обращение к чему угодно другому по имени, - это просто выбор из таблицы по ключу, а значит и функция будет вызвана одна и та же, просто с разным списком аргументов.

 

Или я не понял мысли?

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

А разве в Lua есть перегрузка функций?

Нет, но я так понимаю, LuaBind это может. Цитата из method_rep.hpp

contains information about a method. It contains

a list of all overloads of the function.

В коде я не разбирался.

ТЧ 1.0004. SAP и Trans mod

github

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

Не, ну а по смыслу если ? Применительно к конкретному ТЧ ? Без всяких дополнений/расширений ?

 

Там entity_action() - функция не абстрактная, а делает вполне конкретные вещи. Что-то принимает, и что-то возвращает. Так вот надо ли ее вызывать, чтобы в итоге вернуть результат, если аргумент ранее был получен такой же entity_action() без аргумента, или таки return entity_action():set_action( v ) - более чем достаточно ?

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

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

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

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

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

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

Войти

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

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

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