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

Скриптование


Svoboда

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

@Dim@s535, нет, так сделать нельзя. Я так понял, ты хочешь создать динамический диалог? Посмотри в этой теме - там есть скриптовый модуль для создания диалогов. Почитай описание, думаю, разберёшься.
  • Спасибо 1

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

naxac.gif

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


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

@vampirnik77, как-то так:

local ptr = patrol('название_точки_пути')
alife():create("секция_аномалии", ptr:point(0), ptr:level_vertex_id(0), ptr:game_vertex_id(0))
  • Спасибо 1
  • Полезно 1

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

naxac.gif

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


Ссылка на сообщение
@Старый уставший сталкер, рестрикторы обновляютя через некоторый интервал из апдейта актера. Сделай так же и для своих новостей.
  • Нравится 1

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

naxac.gif

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


Ссылка на сообщение
(изменено)

Удаляю предмет из инвентаря, после этого вызываю итерацию, итерация захватывает удаленный предмет, как решить?

Самое простое - проверяй наличие серверного объекта при итерации (... if alife():object(item:id())~=nil then...).

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

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

naxac.gif

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


Ссылка на сообщение
(изменено)

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

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

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

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

naxac.gif

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


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

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

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

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

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

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

naxac.gif

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


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

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

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

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


Ссылка на сообщение
(изменено)
@Graff46, если текст введён, то не может GetText возвращать пустую строку. А не сохраняется игра, потому что после команды save нужен пробел. Изменено пользователем naxac

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

naxac.gif

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


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

@Stalker_Anom,

 

local p = particles_object("партикл")

p:play_at_pos...

 

Читай "справочник по функциям и классам".

 

включались через час, а потом отключались

Можно сделать через таймеры, например.

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

naxac.gif

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


Ссылка на сообщение
(изменено)

к [[]] добавить окончание из переменной со строковым значением

Так же, как и к любой другой строке:

[[string1]]..'string2'

 

почему при нахождении одного предмета, срабатывает как два?

Потому что ты пытаешься получить объект из инвентаря по секции и функция возвращает один и тот же объект.

Используй либо iterate_inventory, либо цикл "for i=0, db.actor:object_count()-1 do...".

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

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

naxac.gif

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


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

как мне мои дочерние окна на CUIWindow переделать на класс CUIScriptWnd, чтобы не использовать каллбек на апдейт, а использовать CUIScriptWnd.Update(self)?

Вызывай обновление в дочерних классах из апдейта базового.

Например, делаешь в дочернем фунцию UpdateWnd, а потом из базового апдейта вызываешь: "self.переменная_дочернего_окна:UpdateWnd()"

  • Согласен 1

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

naxac.gif

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


Ссылка на сообщение
(изменено)

@Logger, параметры в конфигах в ЛА не влияют на изменение жажды/сытости. Всё сделано через одно место чисто на таймерах, и при съедании/выпивании чего-либо параметры восстанавливаются полностью.

Здесь я это исправил: ссылка - сравни с оригиналом, разберешься.

 

Про специальный нет-пакет 'abstract':

Библиотека может работать с абстрактной частью пакета, которая доступна ТОЛЬКО в момент выхода объекта в онлайн или сохранении.

Поэтому напрямую (методами set и get) прочитать и записать такие данные нельзя.

Для чтения и/или изменения используется специальный пакет 'net_abstract'.

Хотя принцип работы отличается от работы остальных классов, но все же очень похож. Исключение составляет то, как изменять данные в пакете.

Рассмотрим сразу на примере:

а) создаем объект в игре:

local obj = alife():create("exo_outfit", pos, lv, gv)

б) получаем служебный пакет, которым будем менять свойства:

local pk = m_netpk.get(obj,0) -- или m_netpk.net_cse_abstract(obj)

в)

вариант-1: используем функцию:

pk:setCallback( function(data)

data.direction = vector():set(1,1,1)

end )

вариант-2: задаем желаемые изменения таблицей:

pk:setCallback( {direction = vector():set(1,1,1)} )

 

Здесь мы создали объект и захотели изменить его абстрактную часть.

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

В колбек передается таблица с параметрами пакета, мы можем смело их менять, в примере мы наклонили объект по всем осям на 1 радиану.

При спавне нового игрового объекта:

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

Для уже существующих объектов в игре:

требуется после задания изменений свойст объекта, перевести объект в оффлайн и обратно в онлайн, что модулем делается автоматически.

Изменения вступят в силу в момент выхода объекта в онлайн.

 

Как получить возможность менять абстрактную часть пакетов?

 

1) этот тип объектов должен иметь класс, который представляет такой тип объектов в игре (можно назвать биндером, а можно никак не называть)

(то есть то, что будет вызвано, когда объект появится в игре)

Завязка из class_registrator.script:

cs_register (object_factory, "CStalkerOutfit", "se_item.se_outfit", "E_STLK", "equ_stalker_s")

 

2) обязательно добавить (если таковой отсутствует) метод биндера 'STATE_Write' (см. скрипты типа: 'se_XXX.script')

Для примера с костюмом:

function se_outfit:STATE_Write(packet)

cse_alife_item_custom_outfit.STATE_Write(self, packet)

end

 

3) В метод STATE_Write (см. выше) добавить строку:

function se_outfit:STATE_Write(packet)

if self.cb_netpk then self.cb_netpk(self, packet) end -- коллбэк для изменения свойств пакета

cse_alife_item_custom_outfit.STATE_Write(self, packet)

end

 

Выполнение этих действий ОБЯЗАТЕЛЬНО.

Зачем это нужно? Ну, например, можно поменять дирекшн или позишн, так как это read_only свойства объектов.

А позишн при спавне смещается так, чтобы объект находился на ИИ сетке.

То есть, можем спавнить всякие там лампочки, физические объкты так, чтоб они оказывались повернутыми в пространстве.

Так же можно менять те свойства, которые, обычно, только для чтения. Например story_id, или position

 

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

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

naxac.gif

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


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

как и куда ее вставить..

???

Запиши через net_packet в кастом-дату нпс при его спавне.

 

в каких файлах прописаны эффекты визуальные и звуковые появления(спавна) монолитовцев на ЧАЭС-2

Это реализовано рестрикторами со схемой sr_particle, её описание есть в вики на stalkerin.gameru.net
  • Спасибо 1

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

naxac.gif

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


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

способ отследить продажу

В биндере актера каллбэк trade_sell_buy_item (функция on_trade).

item: предмет,

sell_bye: true - продали, false - купили,

money: деньги.

  • Спасибо 2

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

naxac.gif

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


Ссылка на сообщение
(изменено)

@losiara, particles.xr. Посмотреть какие есть партиклы и как они выглядят можно в СДК.

 

@Kondr48, str:gsub("%.", "")

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

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

naxac.gif

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


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

весьма странно делать это на гсаб.

Да, я не так понял просто, думал, на входе тоже строка "0.0001")

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

naxac.gif

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


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

AMK-Team.ru

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