Vano_Santuri 33 Опубликовано 15 Мая 2010 Поделиться Опубликовано 15 Мая 2010 malandrinus, ясно. А не подскажешь, почему SetWidth(number) в ЗП, тоже выдает ошибку на метод? Может его можно чем заменить? Что-то кончается, что-то начинается... Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Мая 2010 Поделиться Опубликовано 15 Мая 2010 Vano_Santuri, SetWndSize(vector2) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Vano_Santuri 33 Опубликовано 15 Мая 2010 Поделиться Опубликовано 15 Мая 2010 malandrinus, точно, спасибо, помогло. У меня такой вопрос, не мог бы ты подсказать, или дать готовый пример как делать последовательность через апдейт? Т.е допустим выполняются 5 разных действий(функций) через 20 секунд каждая. Может есть готовый образец где? Что-то кончается, что-то начинается... Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Мая 2010 Поделиться Опубликовано 15 Мая 2010 Vano_Santuri, Готового примера нет, но это достаточно просто сделать. Заносишь функции в массив. Ставишь один счётчик на циклический перебор. Ставишь второй циклический счётчик на время 20 секунд. Каждый апдейт обновляешь второй счётчик и по достижении 20-и секунд заворачиваешь его в ноль. При этом обновляешь первый счётчик, выполняешь очередную функцию из массива, при достижении конца массива заворачиваешь его в ноль. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
DiXares 1 Опубликовано 21 Мая 2010 Поделиться Опубликовано 21 Мая 2010 Здравствуйте! Имеется система вида: [ini_section] ff_bul=1000, 2000, 5000 Нужно сделать чтение этих переменных: function read() local pr = system_ini():r_float("ini_section","ff_bul") end Надо разбить эту pr на три параметра, но не знаю как... Может так?: function read_ini_three() local pr = system_ini():r_float("ini_section","ff_bul") local min, max, tiss = pr local min = mins local max = maxs local tiss = ss get_console():execute("Значение №1: "..mins.." Значение №2: "..maxs.." Значение №3: "..tiss) end Ссылка на комментарий
Kirag 39 Опубликовано 21 Мая 2010 Поделиться Опубликовано 21 Мая 2010 TREWKO Не уверен, что при попытке прочитать три числа через запятую как float прочитает то, что надо, или хотя бы не вылетит... Попробуй читать это, как строку, и перевести строку в таблицу. Например так: local pr = system_ini():r_string("ini_section","ff_bul") local pr_table = parse_data(pr) local mins = tonumber(pr_table[1]) local maxs = tonumber(pr_table[2]) local tiss = tonumber(pr_table[3]) get_console():execute("Значение №1: "..mins.." Значение №2: "..maxs.." Значение №3: "..tiss) Функция parse data у меня прописана в _g.script-е для удобства вызова, разбивает строку в таблицу по запятым, если запятая внутри скобок, она игнорируется, т.е например конструкция area(-117,170,100,alive) будет воспринята как одно целое. function parse_data(str) local string_parts = {} if str == nil then string_parts[1] = nil return string_parts end local str_beg,str_end str_end = str local split_pos = find_split_pos(str_end) while split_pos ~= nil do str_beg, str_end = split_string(str_end,split_pos) table.insert(string_parts,str_beg) split_pos = find_split_pos(str_end) end table.insert(string_parts,str_end) return string_parts end function find_split_pos(str) local split_pos = string.find(str,",") if split_pos == nil then return nil end local br1_pos = string.find(str,"(",1,true) local br2_pos = string.find(str,")",1,true) if br1_pos ~= nil and br2_pos ~= nil and br1_pos < br2_pos and split_pos > br1_pos then local str_end1 = string.sub(str,(br2_pos +1),string.len(str)) if string.find(str_end1,",") ~= nil then split_pos = br2_pos + string.find(str_end1,",") else split_pos = nil end end return split_pos end function split_string(str,split_pos) local str_beg = (string.sub(str,1,split_pos-1)) local str_end = string.sub(str,(split_pos+1),string.len(str)) return str_beg,str_end end Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Renson 0 Опубликовано 22 Мая 2010 Поделиться Опубликовано 22 Мая 2010 Мне интересно, что не так с этим скриптом, что при его подключении игра вылетает при начале новой игры? function start_add_spawn() --список скриптовых функций, срабатывающих при начале новой игры spawn_esc_guide() spawn_bar_trader() spawn_yan_ghost() spawn_esc_engineer() end -- привет, сталкер! -- проводник на Кордоне function spawn_esc_guide() local x= -186.924500 local y= -20.201139 local z= -151.780029 local level_vertex= 64274 local game_vertex_id= 46 alife():create("esc_guide_spawn",vector():set(x,y,z),level_vertex,game_vertex_id) end -- торговец подсобки Бара function spawn_bar_trader() local x= 116.236366 local y= -5.306613 local z= 20.705244 local level_vertex= 33910 local game_vertex_id= 1239 alife():create("bar_trader_spawn",vector():set(x,y,z),level_vertex,game_vertex_id) end -- Призрак в бункер экологов function spawn_yan_ghost() local x= 32.335987 local y= -11.726542 local z= -278.578430 local level_vertex= 54978 local game_vertex_id= 1480 alife():create("yan_ghost_spawn",vector():set(x,y,z),level_vertex,game_vertex_id) end -- ремонтник в подвальчик Кордона function spawn_esc_engineer() local x= -214.010605 local y= -23.182829 local z= -122.567764 local level_vertex= 39269 local game_vertex_id= 59 alife():create("esc_engineer_spawn",vector():set(x,y,z),level_vertex,game_vertex_id) end -- случайно удалили Волка из all.spawn -- мне проще так вернуть function spawn_esc_wolf() local x= -199.693237 local y= -19.873648 local z= -136.582733 local level_vertex= 52973 local game_vertex_id= 57 alife():create("esc_wolf_spawn",vector():set(x,y,z),level_vertex,game_vertex_id) end Log: FATAL ERROR [error]Expression : g_uiSpotXml->NavigateToNode(path_base,0) [error]Function : CMapLocation::LoadSpot [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\map_location.cpp [error]Line : 78 [error]Description : XML node not found in file map_spots.xml [error]Arguments : alife_presentation_stranger stack trace: Ссылка на комментарий
AKKK1 6 Опубликовано 23 Мая 2010 Поделиться Опубликовано 23 Мая 2010 Мне кажется все из за волка 1 в алл спавне задается его стори ид 2 в алл спавне условия нахождения его в лагере впрочем легко проверить попробуй подключать свои скрипты по одному Ссылка на комментарий
Renson 0 Опубликовано 23 Мая 2010 Поделиться Опубликовано 23 Мая 2010 Я уже понял, что возвращение Волка через скрипт чревато. Так что в function start_add_spawn() спавн Волка не значится. Ссылка на комментарий
Push85 4 Опубликовано 23 Мая 2010 Поделиться Опубликовано 23 Мая 2010 Renson, А ты Волка восстановил? Возможно всё, ну или почти всё. Ссылка на комментарий
Renson 0 Опубликовано 23 Мая 2010 Поделиться Опубликовано 23 Мая 2010 Всё, народ, отбой. Решил проблему. Ссылка на комментарий
tankist 4 Опубликовано 25 Мая 2010 Поделиться Опубликовано 25 Мая 2010 (изменено) подскажите что писать в логике, спавню скриптом НПС в ЗП, а он разговаривать не хочет, спавн через смарт-терраин для меня не выход Строгое предупреждение от модератора n6260 Юзаем заглавные буквы. Изменено 28 Мая 2010 пользователем n6260 Сюжетное продолжение чистого небаЗона обр.2010г.S.T.A.L.K.E.R.-Расширение территорий Ссылка на комментарий
Struck 61 Опубликовано 28 Мая 2010 Поделиться Опубликовано 28 Мая 2010 raf100, не туда попал, тут не логика а функция set_actor_position(ну и всякая лабуда типа координат) и диалоги(активация) Ссылка на комментарий
Struck 61 Опубликовано 1 Июня 2010 Поделиться Опубликовано 1 Июня 2010 Какой функцией можно закрыть инвентарь? Ссылка на комментарий
Ирбис 183 Опубликовано 2 Июня 2010 Поделиться Опубликовано 2 Июня 2010 Expression : assertion failed Function : CActorCondition::UpdateTutorialThresholds File : E:\stalker\sources\trunk\xr_3da\xrGame\ActorCondition.cpp Line : 404 Description : ai().script_engine().functor<LPCSTR>(cb_name,fl) Помогите пожалуйста понять суть вылета и его причину Замедляю полураспад души стержнями музыки Ссылка на комментарий
Push85 4 Опубликовано 2 Июня 2010 Поделиться Опубликовано 2 Июня 2010 Ирбис, почему все думают что на этом форуме одни экстрасенсы? Не знаешь? Где: 1 условия вылета. 2 какие изменения вносились перед вылетом. 3 в какой из игр происходит вылет. 4 версия игры. Научитесь в конце концов задавать вопросы нормально, а не лишь бы спросить. Возможно всё, ну или почти всё. Ссылка на комментарий
Ирбис 183 Опубликовано 2 Июня 2010 Поделиться Опубликовано 2 Июня 2010 (изменено) Вылет на ТЧ 6 патч лицензия +Аи пак+напарники.Вылет абсолютно в разных местах,но проявляется приблизительно при скоплении более 9 живых существ рядом с главным героем.Я не могу понять суть лога ошибки,что он обозначает и где копать. Изменено 2 Июня 2010 пользователем Ирбис Замедляю полураспад души стержнями музыки Ссылка на комментарий
Malandrinus 615 Опубликовано 2 Июня 2010 Поделиться Опубликовано 2 Июня 2010 Function : CActorCondition::UpdateTutorialThresholds File : E:\stalker\sources\trunk\xr_3da\xrGame\ActorCondition.cpp Description : ai().script_engine().functor<LPCSTR>(cb_name,fl) Проверь, на месте ли колбеки на обучающие сообщения в файле _g.script. Их имена: on_actor_critical_power on_actor_critical_max_power on_actor_bleeding on_actor_satiety on_actor_radiation on_actor_psy on_actor_cant_walk_weight on_actor_weapon_jammed Может какого-то нет или там что-то не в порядке. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Горчаков Антон 0 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 (изменено) Всем привет, Спавнил аномалии в рандомных точках на трех локациях (ЧАЭС,Припять(из ТЧ) и Затон ) таким скриптом(для каждой локи свой файл) local anoms = { "zone_mine_thermal", "zone_mine_electric_weak", "zone_mine_electric_strong", "zone_mine_acidic", "zone_mine_acidic", "zone_mine_gravitational_weak", "zone_mine_gravitational_strong", "zone_mine_gravitational_strong", "zone_mine_gravitational_strong" } function random_spawn1() for i=1,500 do local section = anoms[math.random(table.getn(anoms))] local var = spawn_anom(section, math.random(1,6), level.vertex_position(math.random(1,1851251)), math.random(1,1851251), math.random(0,317), math.random(1,3)) end end function spawn_anom(anom_name,plosh,position,level_vertex_id,game_vertex_id,powers_a,time _dangeros) local obj = alife():create(anom_name,position,level_vertex_id,game_vertex_id) local pac = net_packet() obj:STATE_Write(pac) local game_vertex_id = pac:r_u16() local distance = pac:r_float() local direction = pac:r_u32() local level_vertex_id = pac:r_u32() local object_flags = pac:r_s32() local custom_data = pac:r_stringZ() local story_id = pac:r_s32() local spawn_story_id = pac:r_s32() local shape_count = pac:r_u8() for i=1,shape_count do local shape_type = pac:r_u8() if shape_type == 0 then local center = pac:r_vec3() local plosh = pac:r_float() else local box = pac:r_matrix() end end local restrikror_type = pac:r_u8() local powers = pac:r_float() local owner_id = pac:r_s32() local on_off_mode_enabled_time = pac:r_u32() local on_off_mode_disabled_time = pac:r_u32() local on_off_mode_shift_time = pac:r_u32() local offline_interactive_radius = pac:r_float() local artefact_spawn_places_count = pac:r_u16() local artefact_position_offset = pac:r_s32() local last_spawn_time_present = pac:r_u8() if pac:r_elapsed()~= 0 then abort("left=%d",pac:r_elapsed()) end pac:w_begin(game_vertex_id) pac:w_float(distance) pac:w_u32(direction) pac:w_u32(level_vertex_id) pac:w_u32(object_flags) pac:w_stringZ(custom_data) pac:w_s32(story_id) pac:w_s32(spawn_story_id) pac:w_u8(1) pac:w_u8(0) local sphere_center = vector() sphere_center:set(0,0,0) pac:w_vec3(sphere_center) pac:w_float(plosh) pac:w_u8(restrikror_type) if powers_a ~= nil then powers = powers_a end pac:w_float(powers) if time_dangeros == nil then owner_id = bit_not(0) else owner_id = time_dangeros end pac:w_u32(owner_id) pac:w_u32(on_off_mode_enabled_time) pac:w_u32(on_off_mode_disabled_time) pac:w_u32(on_off_mode_shift_time) pac:w_float(offline_interactive_radius) pac:w_u16(artefact_spawn_places_count) pac:w_u32(artefact_position_offset) pac:w_u8(last_spawn_time_present) pac:r_seek(0) obj:STATE_Read(pac,pac:w_tell()) return obj end Вызывал черес db.script function add_actor( obj ) actor = obj actor_proxy:net_spawn( obj ) add_obj( obj ) if not db.actor:has_info("anom_spawned") then pripyat1.random_spawn() aes1.random_spawn_aes1() opx.random_spawn1() this.actor:give_info_portion("anom_spawned") end end В итоге на ЧАЭС аномалии спавнятся нормально, в Припяти ни одной, а при переходе на затон вылет FATAL ERROR [error]Expression : it!=WeatherFXs.end() [error]Function : CEnvironment::SetWeatherFX [error]File : D:\prog_repository\sources\trunk\xrEngine\Environment.cpp [error]Line : 311 [error]Description : Invalid weather effect name. [error]Arguments : © stack trace: чем это лечить? ЗЫ: спавн происходил в ЗП Изменено 3 Июня 2010 пользователем Горчаков Антон Ссылка на комментарий
Kirag 39 Опубликовано 3 Июня 2010 Поделиться Опубликовано 3 Июня 2010 Горчаков Антон Что касается вылета на Затоне - проверь погоду, возмущается по поводу неверного погодного эффекта. Очень не уверен, что аномалии к этому вообще причастны. По поводу отсутствия аномалий на Припяти, и почти на 100% уверен, на Затоне та же картина - тут дело, похоже, в вызове функций спавна. Ты же на ЧАЭС первый раз вызвал, я не ошибаюсь? Проблема в том, что для определения позиций спавна ты используешь level.vertex_position(n). Метод нужный, но есть одно НО: он работает только для вертексов, расположенных на данной локации. На этой локации все и будет в порядке - аномалии будут в случайных местах, но привязаны к АИ-сетке, читай - к террейну. На других локациях они тоже должны заспавниться, и тоже будут привязаны к террейну, но к террейну первой локации, на которой функция была вызвана. То есть скорее всего, либо под уровнем, либо над ним, Чтобы более-менее совпали все три координаты двух вертексов с разных локаций, да еще и аномалия попала именно на этот вертекс - очень маловероятно. Так что перед спавном надо делать проверку, какой именно текущий уровень, и спавнить аномалии только для него. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти