naxac 2 605 Опубликовано 12 Ноября 2015 @alex4321, local new_game = packet:r_u8() != 1Это же не C++, а Луа). Должно быть "~=". Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Ноября 2015 @Wlad777, без движковых правок - нет. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 14 Декабря 2015 @Dim@s535, нет, так сделать нельзя. Я так понял, ты хочешь создать динамический диалог? Посмотри в этой теме - там есть скриптовый модуль для создания диалогов. Почитай описание, думаю, разберёшься. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 17 Декабря 2015 @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/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 18 Декабря 2015 @Старый уставший сталкер, рестрикторы обновляютя через некоторый интервал из апдейта актера. Сделай так же и для своих новостей. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 25 Декабря 2015 (изменено) Удаляю предмет из инвентаря, после этого вызываю итерацию, итерация захватывает удаленный предмет, как решить? Самое простое - проверяй наличие серверного объекта при итерации (... if alife():object(item:id())~=nil then...). Изменено 25 Декабря 2015 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 21 Января 2016 (изменено) @Winsor, aem_lamp и lights_hanging_lamp в твоём коде - это не секции, а названия полей, которые будут внесены в движковый clsid с присвоением числового значения - идентефикатора нового класса. Чтобы потом можно было сделать что-то вроде "if obj:clsid() == clsid.lights_hanging_lamp then...". А разве можно к одному клиентскому классу привязать два разных серверных? Изменено 21 Января 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 24 Января 2016 @vampirnik77, да. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 24 Января 2016 Такой финт ушами не работаетЭто потому, что ты с серверным объектом обращаешься как с клиентским.Всё гораздо проще: local obj = alife():object(ItemId) parent_id = obj.parent_idЕсли parent_id будет равен 65535, значит у объекта нет "хозяина". Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Февраля 2016 проигрывать зацикленный звук на апдейте 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/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 7 Февраля 2016 (изменено) @Graff46, если текст введён, то не может GetText возвращать пустую строку. А не сохраняется игра, потому что после команды save нужен пробел. Изменено 7 Февраля 2016 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 25 Февраля 2016 @Stalker_Anom, local p = particles_object("партикл") p:play_at_pos... Читай "справочник по функциям и классам". включались через час, а потом отключалисьМожно сделать через таймеры, например. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 29 Февраля 2016 (изменено) к [[]] добавить окончание из переменной со строковым значениемТак же, как и к любой другой строке:[[string1]]..'string2' почему при нахождении одного предмета, срабатывает как два?Потому что ты пытаешься получить объект из инвентаря по секции и функция возвращает один и тот же объект.Используй либо iterate_inventory, либо цикл "for i=0, db.actor:object_count()-1 do...". Изменено 29 Февраля 2016 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 2 Марта 2016 как мне мои дочерние окна на CUIWindow переделать на класс CUIScriptWnd, чтобы не использовать каллбек на апдейт, а использовать CUIScriptWnd.Update(self)?Вызывай обновление в дочерних классах из апдейта базового.Например, делаешь в дочернем фунцию UpdateWnd, а потом из базового апдейта вызываешь: "self.переменная_дочернего_окна:UpdateWnd()" 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 3 Марта 2016 (изменено) @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 Изменено 3 Марта 2016 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 4 Марта 2016 как и куда ее вставить.. ??? Запиши через net_packet в кастом-дату нпс при его спавне. в каких файлах прописаны эффекты визуальные и звуковые появления(спавна) монолитовцев на ЧАЭС-2Это реализовано рестрикторами со схемой sr_particle, её описание есть в вики на stalkerin.gameru.net 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 6 Марта 2016 способ отследить продажуВ биндере актера каллбэк trade_sell_buy_item (функция on_trade).item: предмет, sell_bye: true - продали, false - купили, money: деньги. 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 10 Марта 2016 (изменено) @losiara, particles.xr. Посмотреть какие есть партиклы и как они выглядят можно в СДК. @Kondr48, str:gsub("%.", "") Изменено 10 Марта 2016 пользователем naxac 2 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 10 Марта 2016 весьма странно делать это на гсаб. Да, я не так понял просто, думал, на входе тоже строка "0.0001") Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 10 Марта 2016 @Kondr48, тогда используй gsub. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение