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

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

А не проще на яндекс-диск какой-нибудь положить файл, нет ?

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

А не проще на яндекс-диск какой-нибудь положить файл, нет ?

Вот

Добавлено Kirgudu,

Пункт 2.6 правил форума, предупреждение.
Рекомендую изучить правила цитирования.

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

 

 

может это из-за новых скриптов?

Нет, не из-за них. Я давно это заметил вообще. Но на всякий проверил со старыми скриптами - да, та же картина, выходят за пределы ограничивающего рестриктора.

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

@dsh, да обычный шейп к которому аттачится флажок space_restrictor. Все в СДК делаю. Потом назначаю его (уникальное имя) в профиль моба в том же СДК, там есть параметры in/out space restrictor. Раньше все работало, когда был на ОГСЕ так точно.

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

@HellRatz, а в all.spawn это как выглядит, вот так?

dynamic_out_restrictions = 
dynamic_in_restrictions = 

Только у тебя что-то указано в dynamic_out_restrictor?

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

@dsh, в олл.спаун это пишется так:
Соответственно, секция мутанта, и там 

; cse_alife_monster_abstract properties
base_out_restrictors = restr_name

(ну или будет base_in_restrictors), dynamic_* тоже есть, но они пустые (т.е после = ничего нет)

 

UPD: упоминание base_out_restrictors я нашел только в xs_netpk, который достался мне от ОГСЕ и, возможно, не работает должным образом, быть может в этом дело.

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

@HellRatz, в качестве бреда, попробуй выполнить такой код

local obj = level.object_by_id( 1879 )
if obj then
  local base_out = obj:base_out_restrictions()
  if base_out then
    log2( "dsh: found %s = %s", obj:name(), base_out )
    for _, name in ipairs( parse_names( base_out ) ) do
      local sobj = alife():object( name )
      if sobj then
        log2( "dsh:  restrictor sobj = %s", sobj:name() )
        local obj = level.object_by_id( sobj.id )
        if obj then
        log2( "dsh:  restrictor  obj = %s",  obj:name() )
        end
      end
    end
  end
end

Вместо 1879 укажи id своего моба. Если у тебя нет функций log2() и parse_names(), то посмотри их в моем репозитории, в _g.script.

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

Здравствуйте. Такой вот вопрос возник, можно ли заспавнить спейс рестриктор скриптом. Знаю что лучше делать через сдк, но нужно именно так. Заранее спасибо.

Ссылка на комментарий
@vampirnik77, можно. А в чем проблема-то? Создаешь "space_restrictor", далее​ используешь любой модуль для работы с нетпакетами и добавляешь ему шейп и кастомную дату с логикой. Пример кода позже покажу.
  • Спасибо 1
Ссылка на комментарий

лучше делать через сдк,

Лучше как раз не через СДК, а создать ровно тогда, когда нужен, и убрать сразу, как только станет ненужным.

Все потроха замечательно прописываются даже и через амк-нетпакеты.

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

@vampirnik77, вот смотри, пример

local sobj = alife():create( "space_restrictor", pos, lv, gv )
local pk = get_netpk( sobj, 1 )
ASSERT( ( pk and pk:isOk() ), "can't read netpacket of %s", sobj:name() )
local data = pk:get()
data.shapes:addSphere( radius, vector():set( 0, 0, 0 ) )
data.custom_data:setString(
  "[logic]\ncfg = scripts\\my_super_sr.ltx\n"
)
pk:set( data )
Этот пример использует модуль для работы с нетпакетами от Артоса. Изменено пользователем Kirgudu
Добавлено Kirgudu,

Добавил забытые кавычки.

И надо иметь в виду, что "ASSERT" даст вылет (в случае ошибки чтения нет-пакета), а если вылет не нужен, лучше использовать "if pk and pk:isOk() then ... end"

  • Спасибо 1
  • Нравится 1
  • Полезно 1
Ссылка на комментарий

Такой немного странный вопрос: можно ли обнулять/отнимать деньги у ГГ (можно и НПС) после купли/продажи? Или без правки движка никак?

Нашел что-то типа db.actor:money, может с этим можно работать.

 

На секунду представил невидимую функцию передачи денег НПСу при каждой сделке, но само действие при нажатии "Торговать" ведь  никак не перехватывается и работает чисто внутри движка?

 

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

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

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

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

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

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

Войти

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

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

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