Пользователей: 1
Гостей: 1271

» Подробно
Привет, гость!








Автор Сообщение
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
18-09-2009 23:36 GMT3 час. #1039447   
karavan
туда надо писать тока те сиды, которые есть в этом файле, так как они уже прописаны в allspawn
например
500 = "bar_Barman" - это сид бармена
3 = "Escape_Trader" - сидора
32 = "esc_kuznetsov" - кузнецова
6 = "Escape_novice_lager_volk" - волка
и т.д.
можно конечно задать сид и для своего персонажа, но это надо именно в allspawn делать.
Но как - я точно не знаю, так как не делал.

function name_2()
local npc1
npc1 = level_object_by_sid(889)
if npc1 and npc1:alive() then
return
elseif not npc1:alive() and db.actor:dont_has_info("info") then
for i = 1, 10 do
alife():create("yan_zombied_respawn_1",vector():set(-34,-10,-71),244091,111)
end
end
db.actor:give_info_portion("info")
end

вместо db.actor:dont_has_info("info") можно также использовать запись
not has_alife_info("info")

отредактировал(а) erlik: 19-09-2009 00:03 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
    
Посты: 940
Откуда:
Возраст:
18-09-2009 23:43 GMT3 час. #1039452   
erlik
Слушай, а по другому не как нельзя написать такую функцию? Например без Сидов.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
18-09-2009 23:50 GMT3 час. #1039455   
karavan
Такие оперции над объектами, как проверка на жив\мертв обычно производятся через их sid - именно для этого разрабы и создали эту систему. Так как она очень удобна.
По другому тоже наверно можно - например через id , уникальный идентификатор объекта тоже в виде числа, который игра сама присваивает объекту при его спавне. Но как получать этот id я пока не разобрался.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
    
Посты: 940
Откуда:
Возраст:
19-09-2009 00:26 GMT3 час. #1039480   
А кто нибудь знает как сделать чтобы доходя до точки происходил спавн НПС. Да и как вообще програмируется сама точка, дойдя до которой происходит событие.:-)


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 09:13 GMT3 час. #1039563   
karavan
Создай рестриктор и в его логику поставь активацию функции спавна.
Рестриктор можно создать как через all.spawn, так и через скрипт.

вот пример скриптового рестриктора с динамическими ltx, который разработал singapur22

function spawn_restrictor()
local sid = nil
local pos = vector():set(-229.616,-20.199,-147.374) --\ координаты центра рестриктора
local lv = 25279
local gv = 47
local radius = nil
local x = 10 --\ размер по x - длина
local y = 10 --\размер по y - высота
local z = 10 --\размер по z ширина - в итоге имеем квадрат 10x10x10 метров
local ltx = "[logic]\n"..
"active = sr_idle\n"..

"[sr_idle]\n"..
"on_actor_inside = sr_idle@1 %=spawn%\n"..

"[sr_idle@1]\n"..
"on_actor_outside = sr_idle@nil\n"..

"[sr_idle@nil]"

this.create_restr(sid, pos, lv, gv, ltx, radius, x, y, z)

end

На вход в рестриктор сработает функция spawn, в которой нужно прописать кто и сколько должен заспавниться. Функция сработает одноразово - так как ей прописано затем уйти в nil . После рестриктор перейдет в состояние sr_idle@1 , а когда ГГ покинет рестриктор - тот самоликвидируется.

все подробности читай в его журнале, там же нужно брать и основную функцию для создания рестриктора, так как этот пример - только функция с данными. Схема логики - готовый вариант, который можно использовать.
Все это пишется в один файл.
ссылка на журнал
http://www.stalker-portal.ru/plug.php?e=weblogs&m=page&id=7306

да, забыл добавить: функцию спавна надо обязательно положить в файл xr_effects - так как из логики активируются тока функции из этого файла.

Так, вариант с nil в строчке "on_actor_inside = sr_idle@1 %=spawn%\n" не прокатил.
Так что исправил. А в остальном все норм. - чувачки заспавнились как тока эктор пересек границу рестриктора, затем рестриктор самоуничтожился и солдатики больше не спавнились.
Рестриктор - для того, чтобы он заспавнился тоже надо активировать - либо через диалог, либо банально через функцию function actor_binder:on_item_drop (obj) в bind_stalker.
Но для того, чтобы он не заспавнился снова, нужно поставить условие в виде отсутствия инофопоршня, который затем - в конце функции выдать. Это все можно сделать в функции спавна рестриктора. Либо в отдельной функции.

вот пример функции для активации рестриктора
еe надо ставить ставить на апдейт в function actor_binder:update(delta) - типа так имя_файла.function activate()

саму функцию туда же где и рестриктор.

function activate()
if level.name() == "l01_escape" and --\ пишешь нужный уровень
db.actor:has_info("info_1") and db.actor:dont_has_info("info_2") then --\ нужно будет выдать поршень - через диалог или логику непися.
this.spawn_restrictor() --\ активируем рестриктор
--db.actor:disable_info_portion ("info_1") -- убираем поршень - строчка не обязательна
db.actor:give_info_portion ("info_2") -- выдаем поршень, чтобы рестриктор больше не активировался.
end
end

если убрать условие в виде db.actor:has_info("info_1") то рестриктор заспавнится сразу как будет загружен указанный уровень.
функция сработает один раз и все. После ликвидации рестриктора второй раз он не заспавнится.


отредактировал(а) erlik: 19-09-2009 14:11 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
stalker sam
    
Посты: 107
Откуда: Гродно
Возраст: 31
19-09-2009 10:28 GMT3 час. #1039597   
скажите где изменить надписи в главном меню
и как поставить новую картину?

плиз полностью пути напишите


Место, которое пугает и губит, но всёравно притягивает их... СТАЛКЕРОВ.
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 15:41 GMT3 час. #1039834   
erlik


В общем исправил пару ошибок - теперь ниче не вылетает, но новое меню так и не появилось. Обидно, однако...так что вопрос как привязать это меню к конкретному итемсу в инвентаре эктора остается в силе.


Для начала опиши, как ты его запускаешь?


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 15:55 GMT3 час. #1039848   
singapur22


--------------------------------------------------------------------------------------------------
--/ Интерфейс опций для починки брони и оружия (с ремонтным набором)
---------------------------------------------------------------------------------------------------

class "ui_repair" (CUIScriptWnd)

function ui_repair:__init() super()
self:InitControls()
self:InitCallBacks()
end

function ui_repair:__finalize() end

function ui_repair:InitControls()
local scr = {x = 0, y = 0, width = 1024, height = 768}
local win = {x = 0, y = 0, width = 260, height = 300}
win.x = (scr.width - win.width )/2 + 25
win.y = (scr.height - win.height)/2 + 50
self:Init(win.x, win.y, win.width, win.height) --/ координаты левого верхнего угла и ширина-высота
self:Enable(true)
local xml = CScriptXmlInit() --/ файл-описатель элементов
xml:ParseFile("ui_repair.xml")
xml:InitStatic("background", self) --/ рамка
--xml:InitStatic("back_video", self) --/ видео на заднем плане
self:Register(xml:Init3tButton("caption", self),"caption") --/ заголовок
--/ кнопки
self:Register(xml:Init3tButton("btn_1", self),"btn_1")
self:Register(xml:Init3tButton("btn_2", self),"btn_2")
self:Register(xml:Init3tButton("btn_3", self),"btn_3")
self:Register(xml:Init3tButton("btn_quit", self),"btn_quit") --/ кнопка выхода
end

function ui_repair:InitCallBacks()
--/ интерактивные элементы, при определенном действии выполняется заданная функция
self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.on_quit, self)
self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.repair_1, self)
self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.repair_2, self)
self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.repair_3, self)
end

function ui_repair:on_quit()
self:GetHolder():start_stop_menu(self,true)
get_console():execute("main_menu off") --/ закрываем и родительское main_menu
end

function ui_repair:OnKeyboard(dik, keyboard_action)
CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
if dik == DIK_keys.DIK_ESCAPE then self:on_quit() --/ на выходе - Esc
elseif dik == DIK_keys.DIK_NUMPAD1 then self:repair_1()
elseif dik == DIK_keys.DIK_NUMPAD3 then self:repair_2()
elseif dik == DIK_keys.DIK_NUMPAD3 then self:repair_3()
end
end
end

function ui_repair:repair_1()
repair.repair_wpn_1()
self:on_quit()
end

function ui_repair:repair_2()
repair.repair_wpn_2()
self:on_quit()
end


function ui_repair:repair_3()
repair.repair_armor()
self:on_quit()
end


в файле рипейр все функции ремонта и это

function chek_repkit()
local actor = db.actor
if actor then
if actor:object("repair_kit") == nil then
return
end
elseif actor and actor:object("repair_kit") ~= nil then
local gui_win = ui_repair(get_hud()) --/ вызов меню рем.комплекта
level.start_stop_menu(gui_win, true)
end
end
стоит на апдейте


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 16:10 GMT3 час. #1039859   
erlik Кто же так запускает меню? Запуск производится так:

level.start_stop_menu(имя файла.имя класса(), true)

А вот это:

local gui_win = ui_repair(get_hud()) --/ вызов меню рем.комплекта

Тебе на фиг не нужно.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 16:16 GMT3 час. #1039864   
singapur22
так вот это мне и было непонятно. В функции меню спальника стоял именно такой запуск как у меня - и я не смог найти другого варианта.
значит задавать лок. переменную local gui_win = ui_repair(get_hud()) - вообще не надо
а просто написать
level.start_stop_menu(interfase.ui_repair(), true)

Ну наконец ты пришел - и все пояснил. Без тебя как то не очень тут на форуме :-) Спасибо.

добавлено спустя 6 минут

тогда еще вопрос.
есть логика дверей с кодом
типа такой
[logic]
active = ph_code@lock

[ph_code@lock]
code = 1243
on_code = {+dar_password_info1} %+dar_codelock1_unlock%

я тут решил написать функцию динамически генерируемых кодов для таких дверей, а потом подумал: а как я буду передавать новый код в схему логики двери?
допустим у меня будет переменная local key которой будет динамически присваиваться новое значение - можно ли ее как то подставлять в логику двери(точнее замка) вместо цифр в строчке code ? например через динамический ltx....

отредактировал(а) erlik: 19-09-2009 16:34 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 16:43 GMT3 час. #1039886   
erlik Пожалуй, самым оптимальным вариантом будет динамический ltx. А подставление кода производить так:

Генерируем код при запуске игры, и устанавливаем ключ, для дальнейшего предотвращения перегенерации кода.

local cod
if not has_alife_info("code_1") then
cod = math.random(1000, 9999)
db.actor:give_info_portion("code_1")
end


Соответственно создаём функции сохранения и загрузки кода.
Ну а в логике подставляем переменную cod:

...
"code = "..tostring(cod).."\n"..
...


Для определения кода из других файлов, создаём функцию определения значения локальной переменной:

function code_1()
return cod
end


И для того, чтобы определить код из другого файла пишем вызов данной функции. Например:

local code = имя_файла.code_1()

Надеюсь ты понял.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 17:02 GMT3 час. #1039915   
singapur22
Ага, значит все таки можно - отлично:-)

слушай, я сейчас в файле интерфейса заменил ту строчку, но пока никак. Я вот все-таки не пойму как это все (новое меню) вешается на конкретный предмет? Вроде классы у них не меняют - и у спальника, и рем. набора в модах - классы обычные - антирадовские. Чего то еще не хватает в моей функции...или еще где... в hml все вроде прописано.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 17:09 GMT3 час. #1039923   
erlik Извини, но я не смотрел, как у них там сделано. Я использую свой способ. Может быть и есь более простой, но в своём я по крайней мере уверен на все 100. Я както попробывал через множественное использование предмета. Но при этом оно не удаляется, и в дропе не отслеживается. Поэтому я использую разовое использование, отслеживая его удаление.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 17:25 GMT3 час. #1039946   
singapur22
мда...придется дальше ковырять симбион... у них кстати вещь при использовании удаляется и тут же спавнится обратно. Потому и вечная. А вот как они менюшку к этим итемсам привязали.... у меня тока стандартное использовать\выбросить появляется.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
dead-stalker
    
Посты: 7
Откуда: Череповец
Возраст: 31
19-09-2009 17:28 GMT3 час. #1039950   
Знаю,что до хрена раз уже спрашивали,но все же как сделать чтоб заходить на базы с оружием.P.S. я чутка моды мучу,вот опять забыл =(


В Зоне не бегают,а те кто бегал давно уже не с нами.
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 17:28 GMT3 час. #1039951   
erlik Так и привязывается. Если удаляется тот объект, то открыть меню и произвести спавн предмета. Правда меню будет открываться и при выбрасывании. Поэтому нужно ещё производить проверку, удаляется предмет или выбрасывается.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 17:44 GMT3 час. #1039975   
singapur22
так получается надо ставить проверку на вещь в функцию дроп? Или что?

то бишь изначально и должно быть "использовать" - нажимаем и появлется наше меню. Так?
А как тогда избавиться от появления менюшки при выбрасывании итемса?
Я вообще не знаю метода проверки на использование кроме дропа вещи в бинд-сталкер.
что то типа if db.actor:item_use("вещь") ??

добавлено спустя 4 минут

вот нашел вот это actor_item_use - как это использовать?
Эта локальная переменная больше нигде не упоминается кроме game.stats

отредактировал(а) erlik: 19-09-2009 17:52 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
-Nick-
    
Посты: 4
Откуда:
Возраст:
19-09-2009 17:53 GMT3 час. #1039988   
а как через скрипт удалить определённый предмет из инвентаря?


singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 17:54 GMT3 час. #1039990   
erlik Вот, это отслеживание использования предмета, но не выбрасывания, и не продажи:

local note = nil

--отслеживание использования Ноутбука (постоянный апдейт)
function open_notebook()
if note and type(note) == 'number' then
if not level.object_by_id( note ) then
level.start_stop_menu(notebook.book(), true) --запускаем меню
alife():create('notebook', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
note = nil
end

if note and type(note) == 'userdata' then
note = note:id()
else
note = nil
end
end


--функция вызываемая из дропа
function drop_notebook(obj)
if obj:section() == 'notebook' then
note = obj --если Ноутбук, то запомнить его userdata
end
end


При этом, предмет должен иметь разовое использование.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
FaithGTX
    
Посты: 154
Откуда:
Возраст: 46
19-09-2009 17:58 GMT3 час. #1039994   
На счет спавна НПС и ИИ сетки... Создать нового НПС дело плевое, но вот нормально заспавнить уже проблемы. Как мне уже говорили, при отсутствие ИИ сетки НПС идет на ее край... А как этого избежать я так и не понял... Если не сложно объясните пожалуйста.


erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 18:03 GMT3 час. #1040002   
-Nick-
например так:
function del()
local item = db.actor:object("вещь")
if item~= nil then
alife():release(alife():object(obj:id()), true)
end
end


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
-Nick-
    
Посты: 4
Откуда:
Возраст:
19-09-2009 18:05 GMT3 час. #1040008   
erlik
спасибо.


singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 18:06 GMT3 час. #1040010   
FaithGTX Чего ты хочешь избежать? Похода нпс к краю сетки, или попадание спавна нпс мимо сетки?


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 48
19-09-2009 18:07 GMT3 час. #1040012   
singapur22
спасибо - щас это сделаем для своего рем. комплекта.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
    
Посты: 940
Откуда:
Возраст:
19-09-2009 18:12 GMT3 час. #1040020   
Ребята подскажите каким конвертером перевести файлы из AVI в OGM.
Использовал River Past Video Cleaner но игра их воспринемать не хочет.
Если несложно залейте куда нибудь рабочий конвертер для файлов видео.
Спасибо.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 18:17 GMT3 час. #1040026   
karavan Бесплатный конвертер из любого формата в любой SUPER@2009. Ищи через Гугл.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
karavan
    
Посты: 940
Откуда:
Возраст:
19-09-2009 18:22 GMT3 час. #1040031   
singapur22
SUPER@2009. у меня есть он переводит только в ogg, а не в OGM и его переведенные файлы игра тоже не воспринемает. Я сюда и написал в надежде найти помощь.:-)


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 18:33 GMT3 час. #1040045   
karavan Конвертишь в видео-OGG, после чего нужно переименовать формат в OGM.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
karavan
    
Посты: 940
Откуда:
Возраст:
19-09-2009 18:41 GMT3 час. #1040054   
singapur22
Простым переименованием неполучается.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
19-09-2009 18:48 GMT3 час. #1040062   
karavan Каким ещё простым? Есть два типа OGG формата (аудио и видео). Оба они предусмотрены в данной проге. Устанавливаешь конвертацию в видео-OGG, но никак не в аудио, ставишь фильтр vorbis, тип фильтра theora. Хотя они стоят по умолчанию. Отключаешь конвертацию аудиопотока (обязательно). Устанавливаешь битрейт порядка 1000, можно больше, но не более 33000, иначе будут сильные тормоза при воспроизведении. И запускаешь конвертировать. После конвертации у тебя появится видеофайл в формате OGG. Нажимашь переименовать, и меняешь OGG на OGM. Всё!!!


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.


Форумы Архив » Свалка Вопросы и ответы (по 04.12.09)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2025 «Stalker-Portal.ru»