Vano_Santuri 33 Опубликовано 29 Июня 2009 (изменено) andrewrap, Тебе Сюда Изменено 29 Июня 2009 пользователем Vano_Santuri Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 29 Июня 2009 andrewrap, самым простым является в фале gamedata/scripts/ui_main_menu.script в конце дописываем это: function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end во время игры выходишь в меню и жмешь на титры. Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 10 Июля 2009 Prapor11, По поводу дружественности, монстр может быть тебе и людям врагом, но если прописать ему логику, то он будет другом всегда, до того как ты нападешь. Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 1 Августа 2009 strelokk, Ты хоть понял где лежит? и что писать. больше 10 - время быстрее, меньше 10 - медленнее. 1 - это наше родное время. Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 2 Августа 2009 Gonarh, чо за чушь??? значение > 1 время ускоряется, потому параметр и называется тайм_фактор, то бишь коэффициент умножения. поставиш 2 - в два раза быстрее течь будет, 3 - в три раза, и т.д. ЗЫ. Не знаешь сам - не давай ложную информацию В оригинале тайм фактор равен в 10, так что пляшем от 10тки а не от 1, научись понимать что пишут, а не попусту выводы делать.... Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 23 Января 2010 Ну вот пожалуй пришли к самому главному для меня вопросу, мучаюсь я с ним 4 месяца, как не смешно.Итак: 1)Заспавнил 10 аномалий : function create_anomalies(section,rad_anom,x,y,z,lv,gv,mode) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) packet:w_s32(on_off_mode_enabled_time) packet:w_s32(on_off_mode_disabled_time) packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode == nil then packet:w_u8(last_spawn_time_present) end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) return p_obj end function zaton_anom() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0) end .... вобщем случайные аномалии и таких 10 штук, это не важно.... спавнится все гуд. 2)Поиск аномалии на удаление (для электры) function destroi_anomalies() for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then remove(obj) end end end end function IsAnom (obj) local s = obj:section() if string.find(s, "zone_mine_electric_dinamic") then return true else return false end end function remove(obj) if obj then alife():release(alife():object(obj:id()), true) end return obj~=nil end Сделал все правильно(или нет) НО! При удалении аномалий приведенной функцией есть огрехи, удаляю хоть одну аномалиюю, сохраняюсь, при загрузке этого сейва вылет с логом : * Game zaton_2_vibros111111 is successfully loaded from file 'c:\docume~1\alluse~1\af40~1\stalke~1.-\savedgames\zaton_2_vibros111111.scop' (3.206s) * phase time: 3205 ms * phase cmem: 415389 K * phase time: 19 ms * phase cmem: 415389 K * phase time: 18 ms * phase cmem: 415389 K * [win32]: free[918488 K], reserved[70672 K], committed[1107928 K] * [ D3D ]: textures[272313 K] * [x-ray]: crt heap[415373 K], process heap[430188 K], game lua[40767 K], render[466 K] * [x-ray]: economy: strings[25448 K], smem[10027 K] stack trace: Т.е причины нет.... Объясните , пожалуйста , что я сделал неверно? Просто уже надоело, не получается и все. Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 23 Января 2010 А про апдейт можно по подробнее? скорей всего аномалии в оффлайне, и при их удалении оттуда не так удаляются, или как вы сказали не прошел апдейт, как его этот апдейт насильно провести? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 23 Января 2010 Нет в разных, сначала стартует удаление и старт таймера на 5минут, после того, как сработает таймер идет спавн аномалий. Сейчас еще раз попробую. Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 23 Января 2010 Вот переписал как и сказали ? function destroi_anomalies() for k=1, 65535 do local obj = level.object_by_id(k) if obj then if IsAnom(obj) then remove(obj) end end end end function IsAnom (obj) local s = obj:section() return string.find(s, "zone_mine_electric_dinamic") end function remove(obj) if obj then alife():release(alife():object(obj:id()), true) end return obj~=nil end Или может еще убрать что-нибудь? Добавлено через 2 мин.: Monnoroch, И так все просто? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 23 Января 2010 Monnoroch, Сработало, и вправду быстрее намного работает, даже не виснет ничего. А если взять несколько таких function zaton_anom1() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) local obj = create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0), table.insert(tbl,obj:id()) end Но с разными аномалиями "zone_mine_electric_dinamic" они будут заноситься в таблицу? И удаляться оттуда? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 23 Января 2010 Monnoroch, извини, но у тебя кое-где ошибки, возможно и не ошибки, но с ними у меня не работало 1) ........ew.z,lv_new,0), --- эта запятая не нужна, иначе вылет на глобальную obj , ведь с запятой функция неверная. .....table.insert(tbl,obj:id()) , неверный метод(ошибка ссылалась на metod id) нужно ставить так table.insert(tbl,obj.id) тогда все отлично работает. И еще вопрос, эта таблица постоянная или нет? т.е спавню аномалии, данные сохраняются, могу побегать по локам, и когда вернусь на эту и запущу функциию удаления, аномалии удалятся? Если запущу с другой локи, тоже удалятся?(будут ли ошибки)? И каков предел таблицы? сколько она может в себя вместить? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 24 Января 2010 Garry_Galler, Спасибо, а как можно очищать эту таблицу? Допустим. 1)Спавним аномалии, данные о них записываются в таблицу. 2)Во время удаления эти данные извлекаются и аномалии удаляются. 3)Но, эти же данные остаются сохраненные в таблице, как их очистить? 4)В очищенную таблицу опять заносятся данные ..... Можно ли чистить её вообще? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 24 Января 2010 Что-то не допру : 1) Спавнили аномалию, её данные занеслись в таблицу? local tbl = {} function zaton_anom() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) local obj = create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0) table.insert(tbl,obj.id) end 2)В этом же скрипте (поставили на биндер актора) т.е данные из таблицы сохранились? Но куда они сохранились? function morg_save(p) local i = 0 for k,v in pairs(morg) do i = i + 1 end p:w_u8(i) for k, v in pairs(morg) do p:w_u16(k) p:w_u16(v) end end 3)Так же загружаем игру, в биндере выводятся данные этой таблицы function morg_load(r) local i = r:r_u8() for k = 1, i do local id = r:r_u16() morg[id] = r:r_u16() end end 4)Запускаем функцию удаления, и она выводит данные о таблице и удаляет анормалии по этим данным? которые загрузились из нетпакета? function destroi_anomalies() for i = 1,#tbl do alife():release(alife():object(tbl[i]), true) end end Так получается? Просто я не могу понять ход работы этой всей системы. Потом вопрос такой. Вот удалились аномалии. Данные все равно в таблице остались? Если да, то Monnoroch, как это понять? удалять: tbl = {} Т.е вообще из скрипта удалить, не использовать её ? И встречный вопрос , что делают функции записанные в таком виде? ххххх ={} это как глобальные? или как? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 24 Января 2010 Garry_Galler, ясно! У меня осталось исключительно два простых вопроса: 1) Допустим в одном скрипте несколько функций , и у каждой своя таблица(имема таблиц разные) , они(таблицы) будут корректно заполнятся?Независимо друг от друга? И есть ли ограничение на количество табличек на один скрипт? Да и при сохранении\загрузки твоими функциями каждая таблица будет отдельно сохраняться/загружаться? Без ошибок и багов? Или функции способны обработать исключительно 1 таблицу в одном скрипте? 2) Если у меня несколько функций, но каждой присвоена одна и та же таблица, то данные будут сохраняться в эту таблицу? Загружаться из нее, и корректно ли это будет? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 24 Января 2010 (изменено) Garry_Galler, Хотел еще спросить каким образом связаны между собой function morg_save(p) local i = 0 for k,v in pairs(morg) do i = i + 1 end p:w_u8(i) for k, v in pairs(morg) do p:w_u16(k) p:w_u16(v) end end function morg_load(r) local i = r:r_u8() for k = 1, i do local id = r:r_u16() morg[id] = r:r_u16() end end фнкции сохранения \загрузки таблицы с этой функцией. local tbl = {} function zaton_anom() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) local obj = create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0) table.insert(tbl,obj.id) end function destroi_anomalies() for i = 1,#tbl do alife():release(alife():object(tbl[i]), true) end end Непонятно, как они локализуют именно эту таблицу? Тем что они в одном скрипте?Или как обычно они должны иметь общую переменную, но эту переменную i я вижу только в загрузке таблицы и удалении аномалий, как функция сохранения локализует(находит, определяет ) функцию спавна, заполнения таблицы?Если сохранение таблицы локализуется функцией сохранения только тем, что они находятся в одном скрипте, тогда если будет несколько функций , то не выйдет. И не мог бы ты рассказать как привязывать таблицу к функции сохранения\загрузки? Если нетрудно конечно? И вот сразу неудачный эксперимент, добавил обе функции в биндер актора вот в таком виде: anom.morg_save(p) И morg_load® ВЫЛЕт такого вида(ничего не спавнил, исключительно новая игра , даже не загрузилась) FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ....l.k.e.r.call_of_pripit\gamedata\scripts\anom.script:37: attempt to index local 'r' (a nil value) потом немного подумал и сделал так anom.morg_save() и anom.morg_load() игра даже загрузилась, но через некоторое количество секунд [quote]stack trace: Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....l.k.e.r.call_of_pripit\gamedata\scripts\anom.script:26: bad argument #1 to 'pairs' (table expected, got nil)[/quote] О ччем это говорит? Я безнадежен? Изменено 24 Января 2010 пользователем Vano_Santuri Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 25 Января 2010 Garry_Galler, malandrinus, Monnoroch, Ребят, я понимаю что оффтоплю, но хочу вас поблагодарить, спасибо вам огромное. У меня получилось, все спавнится, сохраняется, удаляется , сохраняется и НИЧЕГО не Вылетает, игра вообще не висит, удаление очень быстрое, таблица обновляется. Вобщем спасибо вам, что раскрыли глаза такому как мне, сейчас учу синтаксис, и многие вопросы сами отпали. Еще раз спасибо! Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 26 Января 2010 Не подскажите, где можно посмотреть схему логики телевизора? вернее схему отобрадения картинок на экране? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 26 Января 2010 8push5, Ясно. Так значит телик на Скадовске не объект, а элемент уровня, и снести его никак, а жаль. Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 29 Января 2010 gruber, Разве? А может лучше заспавнить обычного, а потом убить? function deth_npc() local sobj = alife():create("npc",vector():set(x,y,z),lv,gv) sobj:on_death() end автор Garry_Galler ЗЫ и писали этот вопрос 4 страницы назад. Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение
Vano_Santuri 33 Опубликовано 13 Февраля 2010 Несколько вопросов, может, кто и ответит... 1)Можно ли через алл.спавн заспавнить объект, НО при наличии определенного инф.поршня ? ,т.е делаем секцию объекта (например вертолет) и чего-то ему дописываем на условие наличия инф.поршня ? 2)Можно ли в секции смартерейнов спавнить не сталкеров, а объекты (бтр, вертолеты, машины, трахторы) ? Что-то кончается, что-то начинается... Поделиться этим сообщением Ссылка на сообщение