Перейти к контенту

[CoP] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

Прошу извинить меня за тупой и, впрочем, ненужный вопрос, но зачем в СДК создавать дополнительный виртуальный диск? все ведь и так работает(я имею ввиду редактирование музыки)

Поделиться этим сообщением


Ссылка на сообщение

Есть функции для преобразовывания вертексов в координаты и обратно? Очень нужно

 

Добавлено через 151 мин.:

И еще вопрос: вот создал я зону "zone_field_radioactive". Визуальный эффект есть(темнеет в глазах, счетчик гейгера трещит), но сама радиация не прибавляется. Как это исправить? Заранее спасибо

Изменено пользователем PazDim

Поделиться этим сообщением


Ссылка на сообщение

можно как-то узнать наименования минилокаций(Скадовск, железный лес ...) и через их имена узнать их координаты? И еще вопрос: где находится скрипт выброса и какая функция отвечает за спавн в нем?

P.S. - ну можете что-нибудь посоветовать по зоне радиоктивности?

создал я зону "zone_field_radioactive". Визуальный эффект есть(темнеет в глазах, счетчик гейгера трещит), но сама радиация не прибавляется. Пробовал с другими полями(пси, термо, кислота) - только визуал. Как это исправить? Заранее спасибо

 

 

Поделиться этим сообщением


Ссылка на сообщение

Вот функция:

function create_anomaly(zone_name,zone_radius,lv,gv,pos)

local sobj=alife():create(zone_name,pos,lv,gv)

local packet=net_packet()

packet:w_begin(0)

sobj: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 init_data~=nil then

custom_data=init_data

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=zone_radius

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)

sobj:STATE_Read(packet, packet:w_tell()-packet:r_tell())

return sobj

end

 

Пробовал спавнить аномалии(электра, газировка...) - все работает. Жизни отнимаются... разве что на свароге не отображаются. А вот радиоактивные, пси и другие поля не работают(есть только визуал)

Поделиться этим сообщением


Ссылка на сообщение

Мне его дал Shredder, вроде-бы вытащил из SGM-мода(вроде так называется), щас попробую твой(просто вроде бы пробовал - не получалось. Насчет параметра mode - если хочу заспавнить обычную аномалию, то его вообще не указывать? Или инициализировать nil-ом?

И еще вопрос: Спавнил аномалии на затоне. Алгоритм дал Shredder:

function respawn()

local level_vertexes={

zaton = 1844793,

jupiter = 1422445,

pripyat = 477061

}

 

local game_vertexes={

zaton = {0,316},

jupiter = {317,665},

pripyat = {666,856}

}

 

local lname= "jupiter"

local gvn,gvx,lvx = game_vertexes[lname][1], game_vertexes[lname][2], level_vertexes[lname]

for i=1,1000 do

new_lv = math.random(1,lvx)

local pos = level.vertex_position(new_lv)

local new_gv = 0

local min_dist = 100000

for a = gvn, gvx do

g1 = game_graph():vertex(a):game_point()

if g1:distance_to(pos)<min_dist then

min_dist = g1:distance_to(pos)

new_gv = a

end

end

alife():create("wpn_ak74",pos,new_lv,new_gv)

pos = level.vertex_position(new_lv)

create_anomaly("zone_mine_electric",1,new_lv,new_gv,pos)

end

 

end

 

Если спавнить на затоне, то все работает на ура - аномалии спавнятся, как положено, на земле, в воздухе не висят, все что нужно - исключить такие области как скадовск. Но если спавнить на юпитер и при этом находясь на затоне, то аномалии будут висеть в воздухе и под землей. Как сделать спавн аномалий независимым от локаций?

Изменено пользователем PazDim

Поделиться этим сообщением


Ссылка на сообщение

Немного разобрался - при спавне объектов на другую локацию алгоритм берет схему ландшафта текущей локации(т.е. есть если спавнить на юпитер с затона, то на юпитере аномалии будут расположены так, как если бы были заспавнены на затоне :(). Что с этим делать - не знаю. Вот функция, с помощью которой получаю координаты: level.vertex_position(). Она возвращает координаты текущего уровня, а не того, который нужен(мне кажется, что из-за этого они неправильно спавнятся). Можно ей как-то указать локацию?

P.S. Попробовал заспавнить радиацию - пробовал по-всякому(и nil, и "field") - разницы нету

 

Добавлено через 131 мин.:

Как удалить заспавненные аномалии?

Изменено пользователем PazDim

Поделиться этим сообщением


Ссылка на сообщение

Мне нужно сделать так, чтобы при каждом выбросе аномалии меняли свои координаты. Как это реализуется - удалением и созданием или просто сменой координат(как это сделать - смутно представляю)?. Как это вообще делается?

Изменено пользователем PazDim

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...