Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Создание мода-сценария - "Score Drive" | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 3
На страницу: 1, 2, 3  След. | Все страницы
Поиск в этой теме:
Космические Миры » Канал Independence War: «Создание мода-сценария - "Score Drive"»
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Название так - тестовое еще, поэтому переводить лучше не надаУлыбка...
Идея мода была еще озвучена в теме про скрипты, но выношу ее сюда, чтоб было все яснее.

Идея: Создать оффлайновую систему тестирования способностей игрока. При этом, чем пилот более опытный и умелый, тем больше он будет зарабатывать очков в такой системе. Таким образом можно соревноваться, кто больше наберет очков, тот и типа лучшеУлыбка...

Набросок сценария:
Пилот в корабле (такая доработка деталей, как что за корабль, удаленное управление, система - будет производиться позже, сейчас костяк надо сделать) оказывается перед туннелем колец.
Во-первых, идет время, которое будет играть роль в начислении очков.
10 колец. Надо пролететь как можно быстрее. Чем быстрее пролетаются кольца, тем больше дается очков - тест на скорость.
Тут же на вылете из колец кораблю надо резко развернуться (поэтому в тесте на скорость придетсяя уметь тормозить оптимально, чтобы при вылете не занесло, и при этом еще и зарабатывать очки за скорость) и лететь к астероидному полю. В поле за астероидами скрыты цели, помеченные красным. Сбиваем как можно быстрее и точнее 8 целей. Очки даются и отнимаются за меткость, быстроту, столкновение с астероидами.. - тест на меткость стрельбы, ловкость полета.
После этого летим в большой полый астероид, где стыкуемся с грузом, вылетаем из астероида и летим к платформе, выбрасываем груз. С выбрасыванием груза всегда были проблемы, так как он может по инерции полететь, поэтому время, пока платформа пристыкует груз к себе может значительно удлиться. Поэтому пилоту нужно будет правильно развернуться и затормозить. Время этого задания отсчитывается как только пилот состыковался с грузом и когда платформа уже пристыкует этот груз себе. Очки начисляются и вычитаются за время, за столконовения с объектами, сохранность груза и т.д. - тест на ловкость, быстроту, координацию.
Летим на всех парах к финишным воротам, но прежде, чем к ним попасть, нужно пройти еще два поля:
-поле боевых статических роботов. Со всех сторон они будут в вас стрелять и нужно умудриться пролететь как можно невредимее через это поле. Каждое попадание вычитает по очку. За прохождение поля дается энное кол-во очков. - тест на умение "уворачиваться от ударов"
-очень густо засеянное астероидами поле. За каждое столкновение - минус очко.
Все далее в ворота - подсчитываем очки. За каждое столкновение, касание - по очку вычитается. На прохождение дается 5 минут (приближенное время). Кол-во оставшихся в запасе секунд превращаются в очки. И плюс заработанные...

Какие задачи для этого надо решить (по списку важности)
1) Нужно создать полигон для тренировки, то есть расположить все объекты на нашей площадке.
2) Создать систему передвижения. То есть как будет отмечаться прохождение каждого этапа. Скорее всего на радаре будут отмечаться автоматически этапы пути, при прохождении через который автоматически происходит переключение как на цель на следующий этап.
3) Систему начисления очков. Что тут: очки должны постоянно мигать на экране, чтобы знать, сколько их. Ну, и, естественно, создать систему обработки событий, по которым будут они начисляться.
Систему начисления как и передвижения можно будет подсмотреть в исходнике challage_course (Сам исходник лежит в \samples\mods\ aka challenge_course.pog), тем более наш сценарий будет являться очень расширенной версией этого сценария, поэтому создавать его будет легче, чем могло бы быть.
Предварительная версия мода, в которой только построены кольца в ряд, даже не туннель - лежит тут: http://www.elite-games.ru/downloads/i-war2/mods/scoredrive.zip
Приглашаю присоединиться желающих к разработке мода Подмигиваю.
То есть на данный момент нужно решить первую задачу - расположить объекты на площадке.

Комментарии, критика, помощь, советы - приветствуются :P...
    Добавлено: 07:24 09-04-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Скорррость...
Застряла на создании атероидного поля...
    Добавлено: 10:18 09-04-2005   
himem
 210 EGP


Рейтинг канала: 1(5)
Репутация: 24
Сообщения: 343
Откуда: Дзержинск- Нижегородский
Зарегистрирован: 24.01.2004
Есть мод ASTEROIDS - там увеличивается кол-во астероидов...

Цитата:
1) Нужно создать полигон для тренировки, то есть расположить все объекты на нашей площадке.

Ежли для тренировки - то тока шоб этапы были поотдельности...

Цитата:
2) Создать систему передвижения. То есть как будет отмечаться прохождение каждого этапа. Скорее всего на радаре будут отмечаться автоматически этапы пути, при прохождении через который автоматически происходит переключение как на цель на следующий этап.

Оч просто - куча вайпрйнтов - следующий появляется ежли пересечёщь предыдущий...

Цитата:
То есть на данный момент нужно решить первую задачу - расположить объекты на площадке.

ИМХО по кругу - чёб можна была сделать как в Ф1 - 3 круга например...
_________________
-Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно!
    Добавлено: 18:55 11-04-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Цитата:
Есть мод ASTEROIDS - там увеличивается кол-во астероидов...

Вроде бы этот мод состоит из какого-то ини файла, где нужную циферку концентрации подправили Улыбка

Цитата:
ИМХО по кругу - чёб можна была сделать как в Ф1 - 3 круга например...

А, ну можно Улыбка

Цитата:
Оч просто - куча вайпрйнтов - следующий появляется ежли пересечёщь предыдущий...

Я тож такю думаю, но это еще написать надо, но только после решения первой задачи.
    Добавлено: 23:33 11-04-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Создала Улыбка.... Правда пришлось попросить подсказку на ангельском форуме.
Млин, вообще просто).. Так же как и с кольцами создаешь все...
Химем - качай мод - смотри исходники.
Я расположила эти астероиды в конце колец, но просто в ряд - ровную линеечкуУлыбка... Пока думаю, как создать поле - рандом использовать нельзя - иначе кому-то может повезти с расположением астероидов - и очки будут набраны незаслуженно.
Сейчас думаю, как размещать астероиды... Кстати код - немного это... Я не при чем... грязноватый - надо бы его более читабельным сделать и лишнее убрать Хы....
    Добавлено: 11:43 14-04-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Ну вот, мне еще в конце таки дали кусок кода для создания в нужном радиусе поле любых объектов, будто то астероиды или что-нибудь еще Улыбка:
Код:

This piece of code reads some values from an INI file and creates an field out of those items. It might give you some idea how to begin. This code is used in Epic to create asteroid field, or ship wreck fields. It can make fields of anything.

This function is not really complete by itself. It is part of some larger code, so it will not run without changes. You must provide a proper INI file name for the function.

Good luck!




/*
; This is an example INI file of the kind read by
; the field making function. Just copy this to a
; INI file.
[PogClass]
name=tPcAsteroidBelt

[Properties]

length=
width=
height=

; controls how tightly packed the asteroids are. Use a one
; for scattered fields (default) or higher numbers for
; tightly packed fields. Above 3 is not likely to make
; much difference.

density=1

List of field items, and the total number of each item type
item[0]="ini:/sims/inert/asteroid1"
number[0]=10


*/



// Read the ini file, setup the object.
setup_asteroid_belt(hsim center)
{
   hinifile control_file;
   hsim item;
   int count, total, i, item_count, pass, density;
   string item_template, template_file;
   float length, width, height;
   float length_pos, width_pos, height_pos, spin;


   debug Debug.PrintString("PcAsteroidBelt.setup_asteroid_belt\n");

   template_file = Object.StringProperty(center, "gt_pog_object_template");
   control_file = INIFile.Create(template_file);

   if (none == control_file) {
      debug Debug.PrintString("ERROR tPcAsteroidBelt.setup_asteroid_belt invalid template_file\n");
      debug Debug.PrintString(template_file);
      debug Debug.PrintString("\n");
   }

   // Read in the belt control properties
   length = INIFile.Float(control_file, "Properties", "length", 10km);
   width = INIFile.Float(control_file, "Properties", "width", 10km);
   height = INIFile.Float(control_file, "Properties", "height", 10km);

   density = INIFile.Int(control_file, "Properties", "density", 1);

   if (density < 1) {
      density = 1;
   }else if (density > 10) {
      density = 10;
   }

   // Create the center sim


   // Read and place all the items.
   count = 0;
   while (INIFile.NumberedExists(control_file,"Properties","item",count)){

      item_template = INIFile.NumberedString(control_file,"Properties","item",count,"none");
      item_count = INIFile.NumberedInt(control_file,"Properties","number",count,0);

      if ("none" == item_template) {
         debug Debug.PrintString("ERROR tPcAsteroidBelt.setup_asteroid_belt invalid item_template\n");
         debug Debug.PrintString(template_file);
         debug Debug.PrintString("\n");
      }else {

         for (i=0;i<item_count;++i) {

            item = Sim.Create(item_template,String.FormatInt("tPcAsteroidBelt%d",i));

            if (none == item) {
               debug Debug.PrintString("ERROR tPcAsteroidBelt.setup_asteroid_belt invalid item\n");
            }

            length_pos = 0.0;
            width_pos = 0.0;
            height_pos = 0.0;

            // The more passes are made, the more tightly bunched the center
            // position becomes.
            for (pass=0;pass<density;++pass) {
               length_pos += Math.Random(0.0, length);
               width_pos += Math.Random(0.0, width);
               height_pos += Math.Random(0.0, height);
            }

            length_pos = length_pos/density;
            width_pos = width_pos/density;
            height_pos = height_pos/density;

            length_pos -= (length/2.0);
            width_pos -= (width/2.0);
            height_pos -= (height/2.0);

            spin = Math.Random(0.0, 5.0);

            Sim.PlaceRelativeTo(item, center, width_pos, height_pos, length_pos);

            Sim.SetAngularVelocityEuler( item, spin, spin, spin );
         }
      }
      ++count;
   }

   INIFile.Destroy(control_file);
 
    Добавлено: 13:29 14-04-2005   
himem
 210 EGP


Рейтинг канала: 1(5)
Репутация: 24
Сообщения: 343
Откуда: Дзержинск- Нижегородский
Зарегистрирован: 24.01.2004
Цитата:
Пока думаю, как создать поле - рандом использовать нельзя - иначе кому-то может повезти с расположением астероидов - и очки будут набраны незаслуженно.


ИМХО располагать следует ИМЕННО рандомом Улыбка (Чёб не привыкали... Гы-гы ), а свести всех к равным условиям можно так, напр, заставив астероиды перемещаться, а не просто висеть в возд.... Тьфу. Гы-гы Ну ты поняла... А ыщо можно усложнить - чёб корабель при коллизии с астером начинало вертеть.... Ну и автопилот отключить, наконец Гы-гы
_________________
-Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно!
    Добавлено: 19:08 15-04-2005   
vampo
 571 EGP


Ведущий раздела
Рейтинг канала: 1(5)
Репутация: 81
Сообщения: 450
Откуда: Тулун
Зарегистрирован: 16.06.2004
2Melek Как продвигаются дела с модом.

тут возникло две идейки(незнаю полезны или нет)

1.Мишени расстреливать в определенном порядке. Тоесть система подсвечивает мишень по ней надо стрелять, через какой то промежуток подсвечивается другая мишень и стрелять нужно уже по ней. смысл в том что пилот должен как можно быстрее расправится с целью иначе потеря времени.

2. организовать допустим минное поле(ну или астероидное) среди которого раскидать контейнеры. суть в том, что контейнеры разные(красные, синие...)и возить их нужно на разные платформы. плюс для сложности добавить левых контейнеров которые вобще не надо никуда возить( Это шоб сбивать с пути истиного Гы-гы ).

Да кстати как оказалось не дает близко ставить обьекты к друг другу. например толщина кольца 70 метров Диаметр 220 метров. а стивит он минимум через 700 метров. А вот если написать Sim.PlaceRelativeToInside тогда можно хоть на друг дружке.
    Добавлено: 16:15 14-05-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Цитата:
1.Мишени расстреливать в определенном порядке. Тоесть система подсвечивает мишень по ней надо стрелять, через какой то промежуток подсвечивается другая мишень и стрелять нужно уже по ней. смысл в том что пилот должен как можно быстрее расправится с целью иначе потеря времени.

Можно
Цитата:
2. организовать допустим минное поле(ну или астероидное) среди которого раскидать контейнеры. суть в том, что контейнеры разные(красные, синие...)и возить их нужно на разные платформы. плюс для сложности добавить левых контейнеров которые вобще не надо никуда возить( Это шоб сбивать с пути истиного ).

Вообще классно!!! Хы... Только нужно еще сделать красные, синие, зеленые контейнеры Улыбка.
vampo :
Как продвигаются дела с модом.

Остановилась на месте создания астероидного поля. Как в рандоме расположить на нужном участке астероиды понятно, а вот по алгоритму заданному, чтобы каждый астероид был на своем месте в определенной сфере - не получилось - то ли выходило, что некоторые становились слишком близко к друг другу и поэтому их автоматом дальше выкидывало, то ли функция такая... но получалась совсем непонятная форма-колбаса-мутированная Гы-гы
Sim.PlaceRelativeToInside нужно срочно опробовать и посмотреть, что будет, если друг в дружку разместить объекты.
    Добавлено: 16:28 14-05-2005   
vampo
 571 EGP


Ведущий раздела
Рейтинг канала: 1(5)
Репутация: 81
Сообщения: 450
Откуда: Тулун
Зарегистрирован: 16.06.2004
MeLeK :
Вообще классно!!! Только нужно еще сделать красные, синие, зеленые контейнеры


Не ну красные-синие это так к слову, я имел ввиду разные, например вот такие контейнеры есть в игре:

//pods

pod = Sim.Create ( "ini:/sims/ships/utility/cargo_pod", "POD_0" ); // Контейнер похож на сундук
pod = Sim.Create ( "ini:/sims/ships/utility/containerpod", "POD_3" );// Трапецевидный сверху красная лампа
pod = Sim.Create ( "ini:/sims/ships/utility/freightpod", "POD_4" ); // Кубик со срезаными гранями
pod = Sim.Create ( "ini:/sims/ships/utility/mail_pod", "POD_5" ); // Овальная капсула с мигающей лампой
pod = Sim.Create ( "ini:/sims/ships/utility/megapod", "POD_6" ); // Похож на треугольник
pod = Sim.Create ( "ini:/sims/ships/utility/small_cargo_pod", "POD_7" );// То же что и номер 0 только меньше размером


Хотя наверняка можно и своих текстурок нарисовать. если кто могет

По поводу астероидного поля. Я правда не совсем понял в какой ini файл писать эти параметры, поэтому я етот код переделал по своему вобщем добавляем вот такую процедурку:

setup_asteroid_belt(hsim center,string item_template,int item_count)
{
hinifile control_file;
hsim item;
int count, total, i, pass ;
string template_file;
float length, width, height, density ;
float length_pos, width_pos, height_pos, spin;


template_file = Object.StringProperty(center, "gt_pog_object_template");
control_file = INIFile.Create(template_file);

// Read in the belt control properties
length = 5km;
width = 5km;
height = 5km;

density = 1;

if (density < 1) {
density = 1;
}else if (density > 10) {
density = 10;
}

// Create the center sim


// Read and place all the items.

if ("none" == item_template) {
debug Debug.PrintString("ERROR tPcAsteroidBelt.setup_asteroid_belt invalid item_template\n");
debug Debug.PrintString(template_file);
debug Debug.PrintString("\n");
}else {

for (i=0;i<item_count;++i)
{

item = Sim.Create(item_template,String.FormatInt("tPcAsteroidBelt%d",i));

if (none == item) {
debug Debug.PrintString("ERROR tPcAsteroidBelt.setup_asteroid_belt invalid item\n");
}

length_pos = 0.0;
width_pos = 0.0;
height_pos = 0.0;

// The more passes are made, the more tightly bunched the center
// position becomes.
for (pass=0;pass<density;++pass) {
length_pos += Math.Random(0.0, length);
width_pos += Math.Random(0.0, width);
height_pos += Math.Random(0.0, height);
}

length_pos = length_pos/density;
width_pos = width_pos/density;
height_pos = height_pos/density;

length_pos -= (length/2.0);
width_pos -= (width/2.0);
height_pos -= (height/2.0);

spin = Math.Random(0.0, 5.0);

Sim.PlaceRelativeToInside(item, center, width_pos, height_pos, length_pos);

Sim.SetAngularVelocityEuler( item, spin, spin, spin );
}
}

}

размеры поля задаются в переменных lenght, height, width

потом я вот так ее вызываю:

setup_asteroid_belt(ring,"ini:/sims/inert/asteroid1",50);
setup_asteroid_belt(ring,"ini:/sims/inert/asteroid2",50);
setup_asteroid_belt(ring,"ini:/sims/inert/debris5",100);
setup_asteroid_belt(ring,"ini:/sims/inert/debris1",100);

где ring это объект вокруг которого строится поле (вайпоинт или корабль)

Во втором параметре передаем заготовку того что рисовать и третим параметром количество.

таким образом например если нужно в это поле внедрить контейнеры то можно еще добавить такую строчку:

setup_asteroid_belt(ring,"ini:/sims/ships/utility/freightpod", 100);

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

вот скриншоты этого безобразия(на "колбасу" вроде не похоже Хы... )

www.Ссылки на narod.ru запрещены! Используйте пожалуйста другие, более нормальные хостинги./iw2/shot0000.jpg
www.Ссылки на narod.ru запрещены! Используйте пожалуйста другие, более нормальные хостинги./iw2/shot0001.jpg
    Добавлено: 07:28 15-05-2005   
himem
 210 EGP


Рейтинг канала: 1(5)
Репутация: 24
Сообщения: 343
Откуда: Дзержинск- Нижегородский
Зарегистрирован: 24.01.2004
2vampo
Блин... Завидую... Некогда... Понадобится сюжет - почти готов... Хы...
_________________
-Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно!
    Добавлено: 16:40 18-05-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
vampo Круто! Супер!
Цитата:
control_file = INIFile.Create(template_file);

Эту строчку вообще можно убрать.

А по поводу колбасы. В твоем коде положение астероидов задается рандомом (Math.Random).. А хотелось бы, чтоб каждый раз каждый астероид был на своем месте, но при этом поле астероидов смотрелось как настоящее (т.е. хаотичное немного). Для этого нужно убирать рандом и другую функцию подставлять, которая бы в зависимости от кол-ва ставила каждый астероид на свое место... На самом деле у меня получалась колбаса, потому что я с косинусами баловалась.. Почему я против рандома: "На эту арену один раз специальные грузовые машины завезли астероиды и расположили их там (или пусть они и были сразу по умолчанию) - их положение больше не менялось, так как они как были так и были - разве что чуть-чуть из-за столкновений с кораблями положение некоторых астероидов могло измениться. Улыбка
    Добавлено: 03:30 19-05-2005   
vampo
 571 EGP


Ведущий раздела
Рейтинг канала: 1(5)
Репутация: 81
Сообщения: 450
Откуда: Тулун
Зарегистрирован: 16.06.2004
MeLeK :
их положение больше не менялось, так как они как были так и были


Ну если вариант в ручную Супер! не прокатит Гы-гы

Тогда есть еще так называемый псевдо-рандом(На нем построена вся ELITE) Правда я сам не писал таких вещей, Например раньше на спектруме, делали такую вещь брали произвольный байт из ПЗУ компутера, и уже от него плясали, на следующем витке цикла брали следующее число, так как рядом стоящие байты не одинаковые, поэтому каждый раз запуская программу можно поиметь одинаковые случайные числа. Ну.. непонятно написал.. Ладно порою в инете мож найду чего.


Встречный вопрос, как можно как-нить данные где-нить сохранить, а потом при повторном запуске мода считать, ну типа таблицы рекордов, или еще чего (например местоположение объектов) в описалове пока не нашел а?
    Добавлено: 16:15 19-05-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
В ini файлах можно... К примеру challage_course сохранял рекорды во flux.ini. А может и с INIFile.Create() поэксперементировать.
    Добавлено: 16:24 19-05-2005   
vampo
 571 EGP


Ведущий раздела
Рейтинг канала: 1(5)
Репутация: 81
Сообщения: 450
Откуда: Тулун
Зарегистрирован: 16.06.2004
MeLeK :
А может и с INIFile.Create() поэксперементировать

А он где его хоронит в архиве с модом или ищё где? Ладно буду ковырять дальше.
    Добавлено: 16:34 19-05-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Таблицу с очками можно сейчас не трогать - ее самой последней сделать. Сейчас лучше с псевдо-рандомом разобраться для астероидов.
    Добавлено: 02:33 20-05-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
Я внимательно присмотрелась. Не надо искать никакого специального рандома - он в игре уже псевдо.
Для задания параметра вимости слегка изменила функцию:
Код:

setup_asteroid_belt(hsim center,string item_template,int item_count, bool marked)
{
   hsim item;
   int count, total, i, pass ;
   string template_file;
   float length, width, height, density ;
   float length_pos, width_pos, height_pos, spin;


   template_file = Object.StringProperty(center, "gt_pog_object_template");
   
   // Read in the belt control properties
   length = 5km;
   width = 5km;
   height = 5km;

   density = 1;

   if (density < 1) {
   density = 1;
   }else if (density > 10) {
   density = 10;
   }

   // Create the center sim


   // Read and place all the items.

   if ("none" == item_template) {
   debug Debug.PrintString("ERROR tPcAsteroidBelt.setup_asteroid_belt invalid item_template\n");
   debug Debug.PrintString(template_file);
   debug Debug.PrintString("\n");
   }else {

   for (i=0;i<item_count;++i)
   {

      item = Sim.Create(item_template,String.FormatInt("tPcAsteroidBelt%d",i));

      if (none == item) {
         debug Debug.PrintString("ERROR tPcAsteroidBelt.setup_asteroid_belt invalid item\n");
      }
      length_pos = 0.0;
      width_pos = 0.0;
      height_pos = 0.0;

      // The more passes are made, the more tightly bunched the center    
      // position becomes.
         for (pass=0;pass<density;++pass) {
            length_pos += Math.Random(0.0, length);
            width_pos += Math.Random(0.0, width);
            height_pos += Math.Random(0.0, height);
         }

      length_pos = length_pos/density;
      width_pos = width_pos/density;
      height_pos = height_pos/density;

      length_pos -= (length/2.0);
      width_pos -= (width/2.0);
      height_pos -= (height/2.0);

      spin = Math.Random(0.0, 5.0);

      Sim.PlaceRelativeTo(item, center, width_pos, height_pos, length_pos);

      Sim.SetAngularVelocityEuler( item, spin, spin, spin );
      if (marked==true)
         iSim.SetSensorVisibility(iSim.Cast(item), true);
   }
   }

}

Теперь формат записи такой, чтоб на радаре было видно:
setup_asteroid_belt(ring,"ini:/sims/inert/debris5",1,true);

Пробовала это поле к самому последнему концу расположить, но последнее кольцо лежит боком, в отличии от других. Долго ковырялась в коде, в конце концов поняла, что не понимаю, что в нем написано и легла спать.
Расшифруйте эту функцию по каждому действию, плз:
Код:

hgroup create_rings ( hgroup waypoints )
{
   hsim ring;
   hsim last_ring;
   hgroup rings = Group.Create();
   int number_of_waypoints = Group.SimCount ( waypoints );
   int l;
   for ( l = number_of_waypoints-1; l >= 0; --l )
   {
      ring = Sim.Create ( "ini:/sims/ships/utility/training_ring", String.Join ( "Ring", String.FromInt ( l +1 ) ) );
      Group.AddSim ( rings, ring);
      Sim.PlaceAt ( ring, Group.NthSim ( waypoints, l ));
      //Sim.AttachChild ( ring, Group.NthSim ( waypoints, l ) );
      iSim.SetSensorVisibility ( iSim.Cast ( Group.NthSim (rings, l ) ),true );
   if ( l != number_of_waypoints -1 ) Sim.PointAt (ring, last_ring );
      last_ring = ring;
   }

   return rings;
}

Чем эти PointAt и PlaceAt отличаются? Судя по инфе в .h - лишь первая типа воид, а вторая логическая - а так - то же самое. Но стоит их в коде поменять местами, как получаешь вообще неожиданный результат. Так - меня за сотни километров от начальной точки отбрасывало! Либо все кольца вместе с астероидамио бразовывали поле %)..
    Добавлено: 08:02 21-05-2005   
himem
 210 EGP


Рейтинг канала: 1(5)
Репутация: 24
Сообщения: 343
Откуда: Дзержинск- Нижегородский
Зарегистрирован: 24.01.2004
2ALL
Предлагаю компромис - некоторые (большие/ключевые) астероиды располагать на жестких координатах, а поле делать динамичным - то биш чёб перемещались астероиды - а то получится также как я на права учился: 10 метров вперед, руль на 10 градусов вправо, 5 метров назад, и т.д. Совсем запутался...
Подмигиваю

ЗЫ А насчет рнд в ELITE смотрите интервью с Барбеном - он тама класно рассказал, ну и у мя сохранился номер ZX-РЕВЮ где есть исходник Гы-гы

http://www.elite-games.ru/elite/brabefaq.shtml
_________________
-Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно!
    Добавлено: 08:15 21-05-2005   
MeLeK
 1010 EGP


Рейтинг канала: 1(8)
Репутация: 289
Сообщения: 3168 Заблокирован
Откуда: Хабаровск (GMT+10)
Зарегистрирован: 08.05.2003
himem
Шоб перемещались (как это сделать) или чтоб случайным образом устанавливались? Если второе - тут нужно придумывать свою функцию нормального чисто-случайного рандома ^_^/.
    Добавлено: 08:18 21-05-2005   
himem
 210 EGP


Рейтинг канала: 1(5)
Репутация: 24
Сообщения: 343
Откуда: Дзержинск- Нижегородский
Зарегистрирован: 24.01.2004
Шоб перемещались - в коде делаем таск/шедуле и меняем координаты Гы-гы
ЧИСТО случайного рандома не получится по определению - рандом в елите даже не псевдо - а "статичный" то есть при одних и тех же входных данных выдаётся ВСЕГДА одна и та же информация, которой может быть очень много... Получается типа динамический массив вычисляемой информации - названия, координаты, и т.д. всё что забивать влом или невозможно.
Подмигиваю
ЗЫ Щас модер ругать будет - чат устроили... Ой! Ты ругать будешь... Улыбка
_________________
-Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно!
    Добавлено: 08:22 21-05-2005   
Космические Миры -> Канал Independence War: «Создание мода-сценария - "Score Drive"»
На страницу: 1, 2, 3  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Это какую же тему нужно в КСО открывать, что бы она с тематикой канала соотвествовала? (недоумевает Cherep)

  » Создание мода-сценария - "Score Drive" | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18