Воскресенье, 19.05.2024, 04:55
Приветствую Вас Гость | RSS
Требуются модераторы.



Меню сайта
Мини-чат
Наш опрос
Хотите ли вы у нас зарегистрироваться?

Всего ответов: 12
Форма входа
Друзья сайта
Test design studio
[ Личные сообщения() · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Главный раздел » Основы скриптинга » Основы скриптописания при создании карт (CoD 2)
Основы скриптописания при создании карт
AdminДата: Вторник, 13.11.2007, 07:39 | Сообщение # 1
Administrator
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
Ну что можно сказать о скриптах. На них держатся все игровые сцены, когда Вы не можете управлять своим героем. В КОДе это пролетающие самолёты, взрывающиеся и идущие на дно корабли, горящик люди, выбегающие из транспортников, элементарная "автоматическая" погрузка в грузовики и перевозка главного героя на место битвы. Даже стрельба немцев и союзников друг в друга- всё это один большой сложнейший скрипт.

Но поскольку мы не собираемся (я надеюсь =) ) создавать сложные миссии для одиночной игры, мы рассмотрим лишь элементарные скрипты и их правильное написание/оформление, чтобы сделать вашу mp карту более реалистичной , интересной и , главное, не скучной

Пример 1. mp_return_to_pavlov(CoD = Call of Duty)

Вроде бы существует 2 версии этой карты, но я взял первую версию. Итак, переименовываем формат .iwd в .zip/.rar , распаковываем архив, лезем в maps/mp и находим там 4 файла .gsc . Рассмотрим сначала оснвной mp_return_to_pavlov.gsc. Открыв его, видим следующий скрипт :

Code

main()
{
maps\mp\_load::main();
ambientPlay("ambient_mp_return_to_pavlov");
maps\mp\stukafly_pav::main();
maps\mp\mortar::main();
maps\mp\pavlov_fx::main();

         

                    game["allies"] = "russian";
     game["axis"] = "german";
     game["attackers"] = "allies";
     game["defenders"] = "axis";
     game["russian_soldiertype"] = "coats";
     game["german_soldiertype"] = "winterdark";

setcvar("r_glowbloomintensity0","1");
     setcvar("r_glowbloomintensity1","1");
     setcvar("r_glowskybleedintensity0",".25");

getent ("kellerradio","targetname") playloopsound ("radio");
getent ("adolfradio","targetname") playloopsound ("radio1");
getent ("fliegen","targetname") playloopsound ("fliegen");
getent ("feuer","targetname") playloopsound ("fire");
getent ("feuer1","targetname") playloopsound ("fire");
getent ("feuer2","targetname") playloopsound ("fire");

if((getcvar("g_gametype") == "hq"))
     {
      level.radio = [];
      level.radio[0] = spawn("script_model", (1344, -288, 275));
      level.radio[0].angles = (0, 180, 0);      
          
      level.radio[1] = spawn("script_model", (1063, -243, -29));
      level.radio[1].angles = (0, 0, 0);     

      level.radio[2] = spawn("script_model", (-324, -2017, 378));
      level.radio[2].angles = (0, 180, 0);

      level.radio[3] = spawn("script_model", (-352, -2194, 91));
      level.radio[3].angles = (0, 180, 0);

      level.radio[4] = spawn("script_model", (1405, -2682, -35));
      level.radio[4].angles = (0, 270, 0);

      level.radio[5] = spawn("script_model", (1561, -2734, 419));
      level.radio[5].angles = (0, 0, 0);

      level.radio[6] = spawn("script_model", (-43.7422, -3189.07, 38));
      level.radio[6].angles = (0, 149, 0);

     }

}

1.) Замечательно. Строчка "maps\mp\_load::main()" должна быть в любом случае, так как отвечает вообще за то, чтобы карта загрузилась. Далее идут параметры "принудительной" загрузки еще 3-х .gsc файлов, которые автор счёл нужным создать. Параметр ambientPlay("ambient_mp_return_to_pavlov") отвечает за музон, играющий за кадром. То бишь это музыка, играющая на протяжении всей игры, как правило монотонная wink Далее идут параметры самих персонажей, то бишь можно менять русских на британцев, а немцев на американцев и получить мега бойню. Можно также менять униформу солдат и выдать американцам летние шмотки в зимнее время. Если эти строки не вводить, то все будет по дефолту. Далее автор выделил 3 строчки , "принудительно " изменяющих настройки графики , то бишь это настройка неба и чего то еще

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

Далее парень дал указания для режима hq ( штаб). Здесь всё понятно. Указана модель рации , трёхмерные координаты и угол поворота рации

2) Рассмотрим файл stukafly_pav.gsc. Открыв его обнаружим следующий скрипт:

Code
main()
{

level thread planes();
}

planes()
{
level.PlaneSpeed = 5;

stuka1 = getent ("stuka1","targetname");
stuka2 = getent ("stuka2","targetname");
stuka3 = getent ("stuka3","targetname");
stuka4 = getent ("stuka4","targetname");

     temp = getent (stuka1.target,"targetname");
     stuka1.dest = temp.origin;
     stuka1.start = stuka1.origin;
     stuka1 hide();
     temp = getent (stuka2.target,"targetname");
     stuka2.dest = temp.origin;
     stuka2.start = stuka2.origin;
     stuka2 hide();
     temp = getent (stuka3.target,"targetname");
     stuka3.dest = temp.origin;
     stuka3.start = stuka3.origin;
     stuka3 hide();
            temp = getent (stuka4.target,"targetname");
     stuka4.dest = temp.origin;
     stuka4.start = stuka4.origin;
     stuka4 hide();

wait 60;
stuka1 thread plane_flyby("stuka_flyby");
stuka2 thread plane_flyby("stuka_flyby");
stuka3 thread plane_flyby("stuka_flyby");
stuka4 thread plane_flyby("stuka_flyby");
while (1)
{

wait 960;
stuka1 thread plane_flyby("stuka_flyby");
wait .15;
stuka2 thread plane_flyby("stuka_flyby");
wait .15;
stuka3 thread plane_flyby("stuka_flyby");
wait .15;
stuka4 thread plane_flyby("stuka_flyby");

}
}

plane_flyby(sound)
{
       if (isdefined (sound))
       self playsound (sound);
       wait 15;
       self show(); // Flugzeuge tauchen nun auf
       self moveto(self.dest, level.PlaneSpeed, 0.1, 0.1);   // Flugzeuge zum Ziel bewegen
       wait level.PlaneSpeed;   // Warten, bis Flugzeuge ihre Ziele erreicht haben
       self hide(); // Flugzeuge wieder verstecken
       self.origin = self.start;
}

Рассматривать весь скрипт нет смысла, так как составлен он довольно понятно и нужно только напрячь мозги, чтобы всё стало ясно. Скрипт начинается с

{
level thread planes();
}

Словосочетание "level thread " нужно писать обязательно . Cлово planes () можно указать любое, не имеет особого значения. То есть в начале этого скрипта даётся своего рода содержание, а потом идёт описание этого самого содержания. То есть в качестве содержания выступает скрипт planes (), а затем идёт и его описание. Можете использовать для Вашей карты этот скрипт вызова бомбёжки "штуками " , предварительно засунув в папку sound звуки пролетающих самолётов

3). В файле mortar.gsc автор использует аналогичную сцену, которую я написал я выше. Однако он использует здесть 2 дополнительные строчки эффектов

level._effect["mortar_explosion"][0] = loadfx("fx/explosions/mortarExp_mud.efx");
level._effect["mortar_explosion"][1] = loadfx("fx/explosions/mortarExp_mud.efx");

Преимущество этих параметров заключается в том, что используются эффекты взрывов ( ну и воронки/пятна на земле соответственно), которые УЖЕ ЕСТЬ в игре. Эти параметры своего рода ссылки на эффекты которые уже есть в игре. Причем вы можете прописать в любом из скриптовых файлов и в любом "содержании" . Скрипт эффекта всё равно сработает

4.) Рассмотрим последний файл, содержащий эффекты. Он представляет небольшой список различных эффектов/сцен, использующихся на карте. К ним относятся например те же дымовые испарения, поднимающиеся от земли и постоянно вращающиеся в воздухе. Соответственно если Вы будете делать такие же, указываете свои координаты, как показано в скрипте. Еще показаны эффекты горящих машин:

maps\mp\_fx::loopfx("fire_car",(2403, -1456, 158), 0.4);

И в довершении автор в "содержании" указал ссылку на звук при заминировании flak'a при режиме sd . Заметьте, что так как звук уже есть в игре, достаточно было дать на него ссылку, типа как давали ссылку на эффекты

Заключение

Я попытался дать лишь основы скриптописания, всё остальное зависит лишь от вас. Можете располагать скрипты как вас удобно. Можете запихать все скрипты в один файл , а можете их разбить на 10 gsc файлов, всё в Ваших руках. Можете создать рацию, из которой будут доносится звуки благого русского мата, всё зависит только от Вашей фантазии. Для удобства конечно лучше создавать несколько .gsc файлов. В одном будете указывать скрипты для движущихся платформ/элеваторов, в другом какие то эффекты, в третьем выборочные модели и т.д

 
Форум » Главный раздел » Основы скриптинга » Основы скриптописания при создании карт (CoD 2)
  • Страница 1 из 1
  • 1
Поиск:
Сайт управляется системой uCozCopyright MyCorp © 2024