Пользователей: 2
Гостей: 1346
Всего: 1348

» Подробно
» Сегодня

Привет, гость!









Автор Сообщение
Darien Fx
    
Посты: 1372
Откуда:
Возраст: 30
06-05-2010 11:39 GMT3 час. #1241992   
karavan
pos = pos:add(dir:mul(3)) - это добавляет к каждой коорд

отредактировал(а) Futura: 06-05-2010 11:56 GMT3 час.

erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
06-05-2010 11:44 GMT3 час. #1241999   
karavan
ну попробуй так.

function spawn_bobm()
local pos = db.actor:position()
local dir = db.actor:direction()
pos = pos:add(dir:mul(3))
pos.y = pos.y + 2
local objbomb = alife():create("bomba", pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
table.insert(ids, objbomb.id) -- id объекта после создания
end

правда я на высоте спавнил только вертолет.
ну еще самого ГГ закидывал на деревья. Будет ли предмет висеть в воздухе - не уверен. Хотя - попробуй.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
    
Посты: 940
Откуда:
Возраст:
06-05-2010 11:59 GMT3 час. #1242016   
Futura , erlik Спасибо попробую.

Вот возник вопрос, а возможно ли как-то сохранить позицию (точку) от ГГ что бы потом на ней спавнить что-то?
Объясню что я имею ввиду. Например в определённый момент берётся точка со смещение от ГГ и сохраняется в таблицу (или куда-то), а через время происходит спавн обьектов в этой точки хотя ГГ уже сменил позицию.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Germess
    
Посты: 145
Откуда: Temirtau
Возраст: 30
06-05-2010 12:31 GMT3 час. #1242053   
можно ли заспавнить например стену ( бетонную ) на локации xrSpawner ом или через скрипт?
ну, без СДК


МАГАЗИНЧИК Гермеса в моем журнале - оружие на выбор!
Darien Fx
    
Посты: 1372
Откуда:
Возраст: 30
06-05-2010 12:33 GMT3 час. #1242055   
karavan
Даже если ты в таблицу сохранишь позицию, всё равно когда ты к ней будешь обращаться будет читаться настоящая позиция. Попробуй через нет пакет, правда нужно будет сохраняться и загружаться.


erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
06-05-2010 12:51 GMT3 час. #1242065   
Futura
почему читаться будет настоящая?

сохраняем также как айди в отдельную таблицу например (хотя можно и в одну все писать)
если в отдельную то так
tab_pos = {} -- объявляем пустую таблицу
получаем позицию от ГГ и далее пишем вектор в таблицу
table.insert(tab_pos,pos) -- правда со**50056ea8aab1bb10eeba** do
i = i + 1 -- считаем кол-во ключей таблицы
end
p:w_u16(i) -- записываем число
for k, v in pairs(morg) do -- итерируем указанную в скобках таблицу
p:w_u16(k) -- записываем ключ -- лишнее если индексы идут в математическом порядке
p:w_u16(v) -- записываем значение ключа - тоже число
end
end
[/code]
[code]function tab_load(r)
local i = r:r_u16() -- загружаем число ключей
for k = 1, i do -- заполняем таблицу заново
local id = r:r_u16() -- загружаем последовательно ключи - если же они не сохранялись то
строчка не нужна, а ниже вместо id пишем i
morg[id] = r:r_u16() -- загружаем значения
end
end[/code]

И каждую функцию ставим на вызов бинд сталкер - в функции save и load - везде в одно и тоже место.

то какой именно метод использовать для чтения r_u16() или r_u24() или r_u8() или r_stringZ() и т.д. зависит от типа данных которые нужно сохранять и загружать - число (больше или малое, целое или float ), строку или вектор и т.д.
соответственно для записи есть p:w_u16(), p:w_u24(k), p:w_stringZ() и т.д.
Основной перечень этих методов есть на сайте АМК в справочнике по функциям и классам.


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

Futura
вот здесь она есть - правда какой там около половины - пятая-шестая часть наверно только - всего то пять глав - точнее четыре - остальных нет.
http://aap13.narod.ru/PiL/index.html#P1

отредактировал(а) erlik: 06-05-2010 13:30 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Darien Fx
    
Посты: 1372
Откуда:
Возраст: 30
06-05-2010 13:30 GMT3 час. #1242089   
erlik
Спасибо.
Если векторную сохранять прямо так - table.insert(tab_pos, db.actor:position()), то разве не будет при парсере читаться именно настоящая? Даже если и будет, я и не подумал, что можно сохранять "по кусочкам", т.е. сначала pos.x и т.д.. Тогда уж точно при спавне если подставлять вот так - tab_pos[1], tab_pos[2] и tab_pos[3], работать будет.
А вот такой вопрос: что сохраняется при использовании obj:STATE_Write(net_packet())? В функции спавна аномалии, после этого метода идут различные сохранения позиции, сида, даже кастом даты. Вот стало интересно побольше узнать об этом.

отредактировал(а) Futura: 06-05-2010 13:36 GMT3 час.

erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
06-05-2010 13:41 GMT3 час. #1242105   
Futura
если сохранять так то table.insert(tab_pos, db.actor:position()) то (если конечно вектор все таки будет так сохраняться - а можно и по частям) в каждый момент времени записи писаться будет реальная позиция нахождения ГГ (метод db.actor:position() возвращет вектор - и ведь не сам же метод будет писаться - а результат его вызова).
И будет всегда новая п**50016ea8aab1bb10eeba**time = masstime.OrderByDescending(t => t.Hour).ThenByDescending(t => t.Minute).ThenByDescending(t => t.Second);
//var time2 = masstime.OrderByDescending(t => t);

Console.WriteLine(" {0, -7}{1,-7}{2}", "Часов", "Минут", "Секунд");

foreach (var t in time)
{
Console.WriteLine(" {0, -7}{1,-7}{2}", t.Hour, t.Minute, t.Second);
}[/code]

и получаю в выводе таблицы различные временные значения


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

obj:STATE_Write(packet)
это метод записи(считывания) состояния объекта например в пустой нетпакет (его нужно создать предварительно через local packet = net_packet() либо как в твоем примере сразу вызвать метод его создания) - который затем можно прочитать и найти среди кучи данных что-нить нужное.
И потом можно сделать перезапись состояния объекта через obj:STATE_Read(packet,packet:w_tell()) ) - я правда пока ничего не перезаписывал. Только считывал.
в файле Amk.script есть много функций с этим делом. И по названию локальных переменных можно понять что именно считывается в нее.

В общем не совсем точно я все это описал - подробнее посмотри в амкашном справочнике по классу net_packet

вот так к примеру я считывал реальное имя серверного NPC
function read_net_packet(sobj)
--создаем пустой нет пакет
local packet = net_packet()
--загружаем состояние объекта
sobj:STATE_Write(packet)
packet:r_u32()
packet:r_stringZ()
packet:r_u32()
packet:r_stringZ()
packet:r_u32()
packet:r_u32()
packet:r_u32()
local s = packet:r_stringZ() -- последовательность расположения данных можно узнать в перловской версии ACDC в файле acdc.pl
packet = nil
return s
end

отредактировал(а) erlik: 06-05-2010 14:45 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
FLIKER
    
Посты: 1047
Откуда: Краснодар
Возраст: 30
06-05-2010 18:16 GMT3 час. #1242397   
Извините за нудский вопрос...
Вот если вставить фаил zoneseffect.script из OGSE как его активировать чтобы он заработал?


TYOPA
    
Посты: 129
Откуда:
Возраст: 27
06-05-2010 18:20 GMT3 час. #1242403   
Создал группировку. Добавил в неё Волка, а он на месте не стоит. Шарится по лагерю новичков.
Как это исправить?


S.T.A.L.K.E.R. Secret of the Zone: Gunslinger's Story. Prologue - разработка.
karavan
    
Посты: 940
Откуда:
Возраст:
06-05-2010 18:22 GMT3 час. #1242406   
Подскажите по**50016ea8aab1bb10eeba**()
end
end
end

[/code]

Нужно что бы сообщение выводилось 3 раза каждые 10 секунд реального времени. Что у меня не правельно? Потому что выводится сразу три сообщение одновременно. :-G

отредактировал(а) karavan: 06-05-2010 18:27 GMT3 час.

Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
06-05-2010 18:54 GMT3 час. #1242447   
karavan

local tim= time_global() + 10000

// на апдейт
function time_for_do()
if tim <= time_global() then
news_manager.send_tip(db.actor, "Таймер через 10 секунд", 0, nil, 5000)
tim = time_global() + 10000
end
end

Каждые секунд - без ручной активации - автоматом. Бесконечно.

добавлено спустя 59 секунд

тьфу ты блин - тебе ж тока три раза надо. Тогда сейчас подумаю.

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

local tim= time_global() + 10000
local ch=0
// на апдейт
function time_for_do()
if (tim <= time_global() and ch<3) then
news_manager.send_tip(db.actor, "Таймер через 10 секунд", 0, nil, 5000)
tim = time_global() + 10000
ch=ch+1
end
end

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

отредактировал(а) erlik: 06-05-2010 18:59 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
    
Посты: 940
Откуда:
Возраст:
06-05-2010 19:16 GMT3 час. #1242463   
erlik Спасибо.
А с for i=1, 3 do никак нельзя?
Я просто подумал что если в этот цикл поставить таймер то будет вначале выводится одно сообщение, через 10 сек второе и через 10 сек третье.

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

Я вот забыл, таймеры всегда обязательно на апдейт ставить или он может работать и после активации через диалог например?

отредактировал(а) karavan: 06-05-2010 19:19 GMT3 час.

Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
06-05-2010 19:36 GMT3 час. #1242473   
karavan
апдейт обязателен. Как включать апдейт - через диалог, скрипт или как то иначе - без разницы.
Важно чтобы значения которые возвращает метод постоянно обновлялись - иначе если они будут всегда одни и те же - никакого таймера не получится.
через цикл тут нельзя.
цикл есть цикл - ему плевать на таймер - для него только одно условие существует
for i=счетчик, лимит do
пока счетчик меньше лимита крутим действие.
Точнее в lua - пока счетчик не равен лимиту.

через другой оператор цикла можно
while условие do
но тут нет счетчика. Надо самому добавлять. Но получается то ж самое что с if ...then


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
FLIKER
    
Посты: 1047
Откуда: Краснодар
Возраст: 30
06-05-2010 19:41 GMT3 час. #1242477   
Скажите создал НПС,до этого создавал тысячу раз и всё работало ,но сейчас почему то вылет...
FATAL ERROR

[error]Function : CSE_ALifeTraderAbstract::specific_character
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_Objects_ALife_Monsters.cpp
[error]Line : 333
[error]Description : no default specific character set for class
[error]Arguments : esc_unik_npc

Как его исправить?
1)
Извините за нудский вопрос...
Вот если вставить фаил zoneseffect.script из OGSE как его активировать чтобы он заработал?

отредактировал(а) FLIKER: 06-05-2010 19:53 GMT3 час.

АнархОПанк
    
Посты: 998
Откуда:
Возраст:
07-05-2010 12:28 GMT3 час. #1242714   
FLIKER вопрос не нудский а нубский, ты хотел написать. Чтобы он заработал его надо активировать в в скрипт игровой.


Germess
    
Посты: 145
Откуда: Temirtau
Возраст: 30
07-05-2010 13:47 GMT3 час. #1242770   
Expression : start_node && path
Function : CXml::NavigateToNode
File : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp
Line : 97
Description : NavigateToNode failed in XML file
Arguments : gameplay\dialogs_ice.xml

Из-за чего эта проблема? поставил диалог НПС как стартовый, пытаюсь заговорить, вылет с таким логом. 3 раза переписывал диалог, эта **** все равно вылетает.


МАГАЗИНЧИК Гермеса в моем журнале - оружие на выбор!
Psychologist
    
Посты: 1806
Откуда: Челябинск
Возраст: 28
07-05-2010 13:53 GMT3 час. #1242778   
FLIKER
Знание английского тебе в помощь!!!
Перевод, того, что нужно тебе:
А лог означает:
"Класс в профиле и класс в npc_profile.xml не сходятся!"
Такая же ошибка была у мода Alfa-2 на ЗП.

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

Germess
Попробуй прописать не стартовый, а акторский диалог.
Переводится описание лога так: "Невозможно перейти к узлу в XML"
Что же это значит, я не знаю!

отредактировал(а) Сталкер Монолита: 07-05-2010 13:56 GMT3 час.

И все мы ждем чего-то. Работа - дом - работа ©
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
07-05-2010 18:33 GMT3 час. #1243023   
Futura
эту я видел - у меня та что имя возвращает совпадает с ней - просто я только имя возвращал - мне остальное без надобности было.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Darien Fx
    
Посты: 1372
Откуда:
Возраст: 30
07-05-2010 18:44 GMT3 час. #1243027   
erlik
Угу, не заметил. А можно узнать ещё чего нибудь, например оружие? Я там дальше раз 10 считывал параметры, но там только разные большие числа вылезают.
А всё, нашёл в том же АМК.


TYOPA
    
Посты: 129
Откуда:
Возраст: 27
08-05-2010 12:10 GMT3 час. #1243335   
1)Создал группировку. Добавил в неё Волка, а он на месте не стоит. Шарится по лагерю новичков.
2)и ещё при убийстве любого члена группировки игра вылетает.
Как это исправить?
Зарание спасибо.


S.T.A.L.K.E.R. Secret of the Zone: Gunslinger's Story. Prologue - разработка.
FLIKER
    
Посты: 1047
Откуда: Краснодар
Возраст: 30
08-05-2010 12:29 GMT3 час. #1243345   
TYOPA
2)Нужно прописывать в файле xr_statistic.script свой групировку, чтобы при убийстве НПС группировки игра не вылетала...


musnuk
    
Посты: 487
Откуда: припять,проспект Ленина 86
Возраст: 30
08-05-2010 12:55 GMT3 час. #1243356   
если нпс заспавнить например метров 300 над землей, то он погибнет или как святой сойдет на землю?

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

TYOPA прописать в статичном гулаге волка его группировку.
наверное так...

отредактировал(а) musnuk: 08-05-2010 14:02 GMT3 час.

Мафия не прощает оскорблений...
ВЕРЕС14
    
Посты: 362
Откуда: Калуга
Возраст: 29
08-05-2010 14:51 GMT3 час. #1243414   
Люди, а когда выйдет АМК2? И Лост альфа?


Не говори что мне делать, и я не скажу куда тебе идти! (с)
FLIKER
    
Посты: 1047
Откуда: Краснодар
Возраст: 30
08-05-2010 15:01 GMT3 час. #1243433   
ВЕРЕС14
Ты темой ошибся...
1)Заходи на форум Лост альфа и там спрашивай...
2)Если что то команда АМК занимается проектом анреал зона..
(точно не помню)


ВЕРЕС14
    
Посты: 362
Откуда: Калуга
Возраст: 29
08-05-2010 15:10 GMT3 час. #1243440   
FLIKER Тут тема вопросы и ответы...
И ещё, не знаеш сайт Альфы?


Не говори что мне делать, и я не скажу куда тебе идти! (с)
djslavikoz
    
Посты: 123
Откуда:
Возраст: 41
08-05-2010 15:23 GMT3 час. #1243444   
Ребята подскажите как сделать спавн при переходе локации


1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
karavan
    
Посты: 940
Откуда:
Возраст:
08-05-2010 15:49 GMT3 час. #1243464   
Люди подскажите пожалуйста как удалить предмет (итемс или артефакт) так сказать с земли? Знаю есть такой метод alife():release , но что-то немогу понять что для него надо айди обьекта или достаточно имени (думаю вряд ли)?

Пробовал вот так заспавнить:

local ids = {}

function spawn_test()
local pos = db.actor:position()
local dir = db.actor:direction()
pos = pos:add(dir:mul(5))
local objbomb = alife():create("af_cristall_flower", pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
table.insert(ids, objbomb.id) -- id объекта после создания
end



И вот так удалить:


function delete_test()
for k,v in pairs(ids) do
local obj = level.object_by_id(v)
if obj then
alife():release(obj , true)
end
end
end



Спавнить спавнится, только удалить неполучается. :-G


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 65
08-05-2010 16:30 GMT3 час. #1243496   
ВЕРЕС14
Не флуди и не путай "Справочное бюро" и топик в разделе "Модификации", предназначенный для вопросов, относящихся к процессу создания модификаций.

karavan
Различные методы/функции предназначены для конкретных типов объектов и применять их огульно ко всему, что под руку попадется - ошибка.
alife():release - предназначен ТОЛЬКО для серверных объектов.
Т.о. твой кусок кодадля удаления должен быть типа:

function delete_test()
  for k,v in pairs(ids) do
    local obj = alife():object(v) --/ серверный объект!
    if obj then
      alife():release(obj , true)
    end
  end
end

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


djslavikoz
Задавая вопрос и желая получить ответ, потрудись сформулировать вопрос так, чтобы не приходилось гадать о том, что же ты спрашиваешь.

как сделать спавн при переходе локации
При 'переходе' с локации на другую ничего не заспавнишь, т.к. 'переход' - это остановка игры и запуск ее на следующей локации. Перешел - спавни что угодно обычным способом.

отредактировал(а) Artos: 08-05-2010 16:48 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
08-05-2010 16:47 GMT3 час. #1243514   
Artos Спасибо. :-) А какие еще методы существуют для удаления обьектов? Я только встречал alife():release им вроде даже а


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)


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


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

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