Никто не хочет заспавнить объект в воздухе по способу который указал Artos?
Сам не могу пока проверить - но очень интересно как это работает.
Будет ли объект висеть в воздухе или просто упадет с неба.
Посмотрел значение изменяемого флага у вертолета - у него bit_not(5) - интересно в чем разница между этими значениями - bit_not(5) и bit_not(193)
Вот сам скрипт - координаты снимаете сами и прибавляете к y нужную высоту.
function up_spawn()
local obj = alife():create("объект", pos, lvid, gvid)
local packet = net_packet()
obj:STATE_Write(packet)
local game_vertex_id = packet:r_u16()
local distance = packet:r_float()
local direct_control = packet:r_u32()
local level_vertex_id = packet:r_u32()
local object_flags = packet:r_u32()
local custom_data = packet:r_stringZ()
local story_id = packet:r_s32()
local spawn_story_id = packet:r_s32()
local visual_name = packet:r_stringZ()
local visual_flags = packet:r_u8()
local condition = packet:r_float()
packet:r_seek(0)
obj:STATE_Read(packet, packet:w_tell())
end
есть одно но - читал что подобные манипуляции с перезаписью состояния объекта нужно производить только серверными объектами - иначе изменения не сохранятся. Поэтому получается тут надо либо спавнить объект при старте игры (когда клиентской части еще не создалось)- либо где то за пределами алайфа.
добавлено спустя 4 минут
Хотя стоп - local obj = alife():create("объект", pos, lvid, gvid) это итак получается серверный объект.
значит можно без разницы где и когда спавнить.
отредактировал(а) erlik: 10-05-2010 11:59 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Оо! Спасибо! Заработало.
Теперь о серьезном. Знаете такую штуку как xSpawner там есть раздел скрипт, можно ли используя этот раздел заспавнить нового персонажа или нет?
erlik
Проверил с bit_not(193) - в воздухе зависают похоже только статичные объекты, как например динамит. А бутылка водки не держится.
bit_not(5) не удержал оба итема.
добавлено спустя 8 минут
Аномалию bit_not(193) тоже держит.
Хотя стоп, аномалия же и так держится, достаточно высоту указать. Таким образом можно и аномалии для вертушек делать, достаточно высоту да радиус большой прописать, чтоб наверняка :-)
отредактировал(а) Futura: 10-05-2010 13:54 GMT3 час.
Futura
Парящая аномалия - это клево - :-)
Спасибо что проверил - хоть знаю теперь что на некоторых объектах это работает.
Теперь надо бы еще выяснить как через перезапись пакетов убрать физическую "прозрачность" инвентарных ящиков (через скрипт они все выходят проницаемыми - без физики).
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
#Макс Шухов :...стоят моды "бла-бла", "арсенал мод" и вроде мод...
Как ты сам считаешь, это достаточная информация для решения проблемы?
Ты сам толком не знаешь чего там наставил.
Задавай подобные вопросы, и тебя будут игнорировать дальше.
Неужели мы сами должны догадаться что ты и как делал, после чего стало вылетать?
Тебе же сказали, что не плохо было бы посмотреть на лог.
Кто-нибудь помогите плиз,скажите мне какую-нибудь прогу где можно из музыкальному файлу сделать левый какнай и правый канал,и чтобы он конвертировал в .ogg,мне это нужно для главного меню,скажите плиз.
erlik
А ты уверен, что это в пакетах дело? Может это в класс зашито.
добавлено спустя 4 минут
**50016ea8aab1bb10eeba**bj then
if sobj:clsid()>172 and sobj:clsid()<180 then
alife():release(sobj,true)
end
end
end [/code]
Все заранее заспавненые аномалии вроде удалились (по крайней мере на Кордоне ни одной не нашёл), а вот из 10-ти моих удалилось только 6-7. Причём последющие вызовы удаления так же не удалили 'остатки'.
И в лучшем случае ещё узнать бы список этих clsid.
отредактировал(а) Futura: 10-05-2010 19:17 GMT3 час.
Futura
Не советовал бы так упрощенно подходить к удалению аномалий!
Их удаление одно из очень непростых операций и упрощенное понимание 'как это делать' приведет и к безлоговым вылетам и битым сэйвам.
В том же АМК как минимум еще задействован механизм чистки рестрикторов у неписей, что облегчает задачу удаления аномалий.
Примечание: 'Дурной тон' в подобных вещах оперировать не переменными ClassId, а их значениями (sobj:clsid()>172 and sobj:clsid()<180). Эти константы динамически генерятся на старте игры и НЕ имеют заранее зарезервированных разрабами значений. Для конкретного мода (с конкретным наполнением объектов/классов) эти значения конечно будут постоянными, но ... стоит добавить/удалить классы (что давно нередкость в модах) и ... все твои "константы" поплывут ... erlik bit_not(193) - это НЕ значение, а функция (см. в том же "lua_help.script"), которая изменяет (сбрасывает) в уже имеющемся значении некоторые биты. Соответственно после применения этой функции само значение, считанное из пакета, изменяется.
Ну а 'прозрачность' - это уже совершенно иное (динамические и статические объекты) ... Пока только в конфигах объектов что-то можно 'наковырять'.
Кто-нибудь дайте мне тутор,как разделить каналы и переконвертировать их через Sound Forge,а то у меня чёт не выходит,помогите плиз.
Вобщем я так сделал, беру и копуирю уже существующий 1 канал, например amb17_l и открываю его с помощью редактора Нейро, там есть функция перезаписи файла, я выбираю вход сигнала "линейный вход" и подсоденияю шнур к нему и к выходу динамиков, их у меня 2 поэтому я могу сразу слушать что играет, только не заьудь выключить в настройках компа лин. вх, иначе сигнал начнет сам себя усиливать и в динамике начнется гул.
Вобщем запускаешь перезапись и врубаешь тот звуковой файл который нужен вот и все.
добавлено спустя 1 минуту
Подскажите плиз где скачать прогу чтоб спавн редактировать , НО ЧТОБы можно было новых НПС добавлять. Настоятельно рекомендую ознакомится с приемами оформления сообщений. forums.php?m=posts&q=6794 Модератор.
отредактировал(а) GroSS Meister: 10-05-2010 20:55 GMT3 час.
Artos
насчет bit_not(number) - спасибо что пояснил - до меня сразу просто не дошло что это функция.
(и в самой функции видимо задействован оператор bitnot (или BitNOT) инвертирующий значения битов - правда с алгеброй буля я незнаком и как там все побитовые сдвиги происходят все равно пока не понимаю).
а вот насчет "прозрачности" ящиков - (как я заметил эту проблему пока вроде и не решили в модах и рюкзаки-тайники там физически неосязаемые)
А с чем это вообще связано? Ведь у дефолтных ящиков заспавненых через allspawn все в порядке с физической осязаемостью.
Правда у них в строчке visual_name (в allspawn) прописаны бестекстурные меши из папки equipment_cache (типа такого physics\equipment_cache\equipment_pipe_02_case )
может надо их использовать для яшиков?
И на что интересно влияет значение этого флага в их секции
object_flags = 0xffffff3f ?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
#Artos : bit_not(193) -... которая изменяет (сбрасывает) в уже имеющемся значении некоторые биты.
Вот собственно и возник вопрос, - "Что означают аргументы 'number' (те же 5, 193). В lua_help чего-нибудь разъясняющего не нашел.
В оригинале используются только bit_and и bit_or с двумя аргументами.
Наверное для меня этих примеров мало. Хотя и ясно что над этими аргументами производятся, соответственно, операции "И", "ИЛИ".
"Какие биты меняет?", и не важен даже этот вопрос (на данном уровне знаний), важнее " Какой спектр значений аргумента в функции bit_not используется вообще?", "Какие значения аргументов на что влияют?". Такие вот вопросы возникают.
P.S. Могу и эксперементальным путём получить хоть какую-нибудь информацию, но не думаю что могу гарантировать правильность собственных выводов. Хочется получить квалифицированный ответ.
1. Мне НЕизвестны значения многих параметров/переменных/битов/... в кодах игры, т.к. не имею доступа ни к исходникам от разрабов ни к какой-либо документации от них.
Могу только на основании некоторой информации, полученной в том числе 'методом проб и ошибок', предполагать о том или ином значении/назначении.
Возможно даже мои предполагалки выходят за рамки 'штатных' (на)значений и уходят в область 'недокументированных возможностей'.
Т.о. их использование/применение не гарантирует ни 100%-ый результат, ни стабильность воспроизведения.
2. Многое все же можно 'логически' вычислить из уже имеющихся кодов оригинальной игры, хотя и тут следует иметь ввиду, что коды писались самыми разными программистами и не факт, что и они не наделали ошибок или 'позже' что-то было заглушено/исключено.
По bit_not() (и не только):
Придется как минимум вспомнить двоичное исчисление.
Bit имеет один разряд и принимает только два значения 0 и 1.
Если говорить о параметре 'object_flags', то можно догадаться, что его разрядность 32 = 4х8 битов(4 байта), т.к. считывается функцией r_s32().
Т.о. имеем, как правило, дефолтное значение:
ffffffff = 1111 1111 1111 1111 1111 1111 1111 1111
Что происходит при записи нет-пакета для вертолета/вертушки, после применения bit_not(5)?
А вот что, ffffffff изменяется на fffffffa, т.е. на:
fffffffа = 1111 1111 1111 1111 1111 1111 1111 1010
Можно заметить, что изменились 1-й и 3-й разряды справа (младшие).
Если разряды пронумеровать так: 8 4 2 1 - веса разрядов
1 1 1 1 - биты
то изменились биты с весами "1" и "4", сложив которые, получается вес "5", который и фигурирует в bit_not(5), т.е. по сути можно написать и так: bit_not(1+4).
Т.е. bit_not(5) эквивалентно сбросу флагов 1+4 = 5.
В случае с bit_not(193) идем аналогичными рассуждениями:
193 = 128+64+1 , т.е. изменяются биты 1-й, 64-й и 128 и имеем:
Т.о. при 'подвешивании' объектов биты с весами 1,64,128 сбрасываются в 0 операцией bit_not(193) или bit_not(1+64+128), при любых их значениях в исходном считанном из нет-пакета.
Что эти биты означают, для чего предназначены и как/когда их обрабатывает движек игры - знают только разработчики.
Данное свойство 'подвешивания' мною было обнаружено после долгих копаний с сэйвам, где воспроизводились 'висящие' объекты (чаще всего почему-то собаки).
Операции/функции битовых операции порой очень удобны и их применение может дать или оптимизацию ресурсов игры или даже недоступные иными способами возможности.
Как сами разработчики, например сохраняют, введенный позже параметр задействованного менеджера тайников (см. bind_stalker.script и там "save_treasure_manager")? Банально добавляют к уже имеющемуся параметру level.get_game_difficulty() числа 128. При загрузке игры (чтении нет-пакета) они эти же 128 отнимают. А ведь это не что иное как bit_or(128), т.е. установка в "1" соответствующего бита!
В Симбионе мною применен именно последний вариант, интереса ради ... и не только.
Вспосним, в некоторых модах, например в том же АМК модмейкерам удалось сохранять некоторые параметры в сэйвы. Например параметр "раненый" для сталкеров.
Как они это сделали, не меняя структуру нет-пакета, которым и сохраняются/считываются параметры объектов?
В нет-пакете сталкера имеется в самом конце параметр "death_droped", в котором запоминается булево значение о том, был ли уже произведен лут для данного трупа или нет. Считывается этот параметр r_bool(). Однако, r_bool() и r_u8() отличаются только тем, что оперируя с той же разрядностью битов, возвращают разные значения: true/false и 0...255. Не трудно заметить, что если считывать тот же байт функцией r_u8() и конвертируя 0 или 1 в true/false, то результат будет тем же, что и применение r_bool().
(Кстати, сами разрабы (и/или Бардак в ACDC) порой путали/взаимозаменяли эти методы).
ТеперЬ. если заменить все же r_bool() на r_u8() и (обязательно!) оставить обработку 1-го бита по-прежнему, ть можно получить целых 7 битов(!) для хранения еще чего-то!
Взглянув в исходники se_stalker.script или se_monster.script модов AMK или Симбиона, можно посмотреть как это реализовано на практике.
Сорри, но все же не люблю "писанину" и дальнейшее лучше разбирать 'по-месту', т.е. более конкретный вопрос - конкретный ответ.
P.S. забыл добавить для тех, кто не в курсе, что само название параметра 'object_flags' само за себя говорит о значении, т.е. это не некое значение/параметр (как например значение LevelVertex), а массив флагов (битов), каждый из которых (или в некоей комбинации) отвечает за некий параметр объекта.
Аналогичные параметры/массивы флагов имеются и для других классов (trader_flags, weapon_flags, ...)
Несмотря на то, что я так и не сумел правильно (прежде всего для самого себя) задать вопрос, Вы дали достаточный ответ для продолжения самостоятельного изучения. Более того, я получил ответ на то, что только подразумевал, но так и не смог сформулировать.
Исключительно ценная для меня (да и не только) информация.
Наконец-то. Как говорится, - "Лёд тронулся, господа присяжные заседатели". Вижу к Вам приходит созидательное настроение :-)
Я должен был и сам додуматься. Стыдно.
Взглянув в исходники se_stalker.script или se_monster.script модов AMK или Симбиона, можно посмотреть как это реализовано на практике.
Посмотрел. Теперь стали понятны эти манипуляции. Спасибом тут не отделаешься:-)
отредактировал(а) Gun12: 11-05-2010 00:17 GMT3 час. Не стань номинантом премии Дарвина.
Ребята у меня вот такой вопрос Как заспаунить вертолёта и как сделать что бы он атаковал ГГ ?????
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
Привет народ! Мне тут знакомый рассказал о каком то моде, который дюже круто игру меняет (я о тенях чернобыля) и весит че то около Гига. Может кто нить расскажет что это за мод и вообще стоит ли его ставить. А то у меня мод - Народная солянка, глюкавит собака, но пока играет.
Ребята у меня вот такой вопрос Как заспаунить вертолёта и как сделать что бы он атаковал ГГ ?????
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
djslavikoz, Palych-2000
Вам знакомо такое понятие оффтопик и флуд?
Вы хоть правила портала читали? Прекратите зас...ть топики своими дублирующими постами!
Artos
Присоединяюсь к благодарности Gun'a12 - ответ познавательный ...(остальное уже зависит как говорится от читателей то есть от нас - насколько мы углубим свое понимание).
У меня есть один вопрос который я честно говоря не знаю как правильно сформулировать.
Поэтому придется высказать общую формулировку - у меня есть биндер который скажем **50016ea8aab1bb10eeba** then
news_manager.send_tip(db.actor, "Места для записи больше нет. Размер таблицы "..tostring(size).."\\nТекущая позиция записи "..tostring(packet:w_tell()), 0, "default", 10000)
return end
-- get_console():execute("flash_binder:save")
object_binder.save(self, packet)
taynik_rnd.message_save(packet)
--news_manager.send_tip(db.actor, "Размер таблицы "..tostring(size).."\\nТекущая позиция записи "..tostring(packet:w_tell()), 0, "default", 10000)
end[/code]
сообщения представляют собой инфу о рандомных (не имеющих отношения к дефолтным)тайниках получаемых с трупов NPC . Каждое сообщение при его генерации пишется в таблицу и чтобы его просмотреть нужно достать коммуникатор (вызов скриптового меню) на экране которого его и можно будет прочесть - сделана возможность последовательного просмотра всех мессиджей - но дабы не путаться в их массе - только тех которые относятся к текушему уровню.
вопрос такой - как можно увеличить объем хранимой информации - в один пакет у меня влезает примерно 40-50 текстовых сообщений - в принципе этого хватает - но в идеале было бы неплохо увеличить емкость до 100 сообщений. Но ведь на один объект выделяется только один пакет в 8 кб.
В общем что тут можно сделать?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.