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

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

@Winsor, aem_lamp и lights_hanging_lamp в твоём коде - это не секции, а названия полей, которые будут внесены в движковый clsid с присвоением числового значения - идентефикатора нового класса. Чтобы потом можно было сделать что-то вроде "if obj:clsid() == clsid.lights_hanging_lamp then...".

А разве можно к одному клиентскому классу привязать два разных серверных?

Изменено пользователем naxac
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
@Winsor, с этим ознакомился: Регистрация скриптовых классов с помощью object_factory? Изменено пользователем abramcumner
  • Спасибо 1
Ссылка на комментарий

@naxac, т.е. такой строкой я делаю следующее

cs_register (object_factory, "client_class_name", "server_class_script.class", "section_class_type", "script_clsid")

1) регистрирую в системе новый clsid script_clsid, который используется в скриптах при обращению clsid.script_clsid

2) регистрирую в системе новый тип section_class_type, который используется в описании секций объектов class=section_class_type

3) регистрирую в системе серверный класс server_class_script.class для наследования от alife_cse_*

4) регистрирую в системе связь, которая при создании серверного объекта типа section_class_type будет создавать клиентский класс client_class_name

правильно?

 

@abramcumner, да. только вопросов не убавило :) Вот например там написано что связка с аналогичными идентификаторами должна замещать уже существующую. почему в моем примере при наличии 1) пункт 2) просто не работает? если закомментить 1) - то все хорошо. или вопрос - как определить правильно клиентский класс (вернее наличие к нему привязки), если в регистраторе она отсутствует.

Если взять для примера движковый object_factory_register - то там есть такое

ADD(CClimableObject ,CSE_ALifeObjectClimable ,CLSID_OBJECT_CLIMABLE ,"obj_climable");

при создании у себя 

cs_register (object_factory, "CClimableObject", "se_objects.se_climable", "O_CLMBL", "obj_climable")

мой класс se_objects.se_climable игнорируется. Почему? вроде все правильно. 

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

@Winsor, O_CLMBL случайно не равен CLSID_OBJECT_CLIMABLE? Придумывай свои CLSID.

так как раз и хочется заменить существующую привязку на свою. т.е. подставить для лестниц свой серверный класс. в all.spawn, например, все лестницы типа O_CLMBL , менять на свой новый clsid - это совсем не вариант, sed конечно никто не отменял - но почему не работает моя подмена, как написано в документе? 

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

@Winsor, в исходниках нет подмены. Новая связка просто добавляется в список.

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

 

Сделай все-таки свой clsid. Никакого седа не нужно. У O_CLMBL всего одна секция.

  • Спасибо 1
Ссылка на комментарий

@abramcumner, может я конечно чего то не понял, но секция одна, а использование этой секции многократное. Или Вы предлагаете заменить в system.ltx , например, 

[climable_object]
class           = O_CLMBL
на 
[climable_object]
class           = O_WCLB
и сделать такое:
cs_register (object_factory, "CClimableObject", "se_objects.se_climable", "O_WCLB", "obj_climable")
Это позволит без изменения all.spawn в se_objects.se_climable получить доступ ко всем серверным объектам лестниц ? Правильно?
Спасибо за разъяснения!
Ссылка на комментарий

@Winsor, в движке, который ты используешь, класс CClimableObject экспортирован? Просто cs_register хочет вторым аргументом идентификатор экспортированного клиентского класса, а в оригинале экспортирован лишь серверный класс cse_alife_object_climable.

  • Спасибо 1
Ссылка на комментарий

Добрый Вечер! Вопрос возник, если предмет есть у актора, то parent Id  предмета равен id актора?

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

И логичный вопрос, как правильно получить parent id?

Такой финт ушами не работает.

local obj = alife():object(ItemId)
local parent = obj:parent() 
local parent_id = parent:id()

 

 

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

Такой финт ушами не работает

Это потому, что ты с серверным объектом обращаешься как с клиентским.

Всё гораздо проще:

local obj = alife():object(ItemId)
parent_id = obj.parent_id
Если parent_id будет равен 65535, значит у объекта нет "хозяина".

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Может кому-нибудь пригодится...

function play_sound(snd, npc_id, num1, num2)

if npc_id == nil then

npc_id = db.actor:id()

end

xr_sound.get_safe_sound_object(snd):play_no_feedback(npc_id, sound_object.s2d, num1, vector(), num2)

end

Использование:

play_sound([[interface\inv_take]],db.actor, 0, 1.0)

 

  • Спасибо 1
Ссылка на комментарий

Добрый Вечер комрады. Кто пользуется модулями Artos'a(в частности se_stor и m_timers), подскажите как сохранять таймеры? Буду благодарен.

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

@vampirnik77, Если все правильно подключил, таймеры должны сохраняться. 

Изменено пользователем TIGER_VLAD
  • Спасибо 1
Ссылка на комментарий

Вопрос такой, нужен модуль таймеров, которые не "загнуться" через игровой месяц и в которых можно по имени таймера получить остаток времени. Есть ли такие? В ОГСЕ, может, или еще где-то? :)

 

P.S. также интересует, как лучше проигрывать зацикленный звук на апдейте?

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

проигрывать зацикленный звук на апдейте

local snd = sound_object("music\\track")

functon update()
  if not snd:playing() then
    snd:play_at_pos(bla, bla) -- аргументы не помню, загляни в lua_help
  end
end
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Вопрос к профи  :) Как чекнуть погоду рестриктором? Нужно для локации где не требуется загрузка подземелье, т.е обьеденённые локации.

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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