Ил-2 Штурмовик: Битва за Британию. Скрипты. Скрипты для чайников. Часть 1 - Загрузка подмиссий — различия между версиями

Материал из АвиаВики
Перейти к: навигация, поиск
Строка 15: Строка 15:
  
 
Предположим вы хотите загрузить под-миссии сразу при старте основной миссии. В начале любой миссии "Ил-2.БЗБ" вызывается метод  '''public virtual void OnBattleStarted()'''. Именно при его помощи мы будем загружать под-миссии при старте основной миссии (миссии-хоста):  
 
Предположим вы хотите загрузить под-миссии сразу при старте основной миссии. В начале любой миссии "Ил-2.БЗБ" вызывается метод  '''public virtual void OnBattleStarted()'''. Именно при его помощи мы будем загружать под-миссии при старте основной миссии (миссии-хоста):  
 +
 +
Теперь у нас все готово, чтобы загрузить подмиссии при помощи метода '''public virtual void OnBattleStarted()'''
  
 
  public override void OnBattleStarted()
 
  public override void OnBattleStarted()
Строка 26: Строка 28:
  
 
''Пояснения к коду:''  
 
''Пояснения к коду:''  
'''MissionNumberListener = -1''' параметр,который указывает события какой миссии скрипт миссии слушает - при загрузке миссии в это поле ставится её номер - т.е. она "слышит" только свои события. Если выставить номер другой миссии - будет "слушать" только её, чтобы все миссии слышать - необходимо поставить значение меньше нуля (то есть "-1").
 
  
So really we have already all that is needed to load the submission at the beginning.  
+
'''base.OnBattleStarted()''' - метод вызова, выполняемый один раз при инициализации('''требуется нормальное пояснение к методу!'''). 
 +
'''MissionNumberListener = -1''' - параметр,который указывает события какой миссии скрипт миссии слушает - при загрузке миссии в это поле ставится её номер - т.е. она "слышит" только свои события. Если выставить номер другой миссии - будет "слушать" только её, чтобы все миссии слышать - необходимо поставить значение меньше нуля (то есть "-1"). То есть в данном случае из миссии-хоста мы сможем управлять всеми событиями под-миссий, загруженных при помощи '''GamePlay.gpPostMissionLoad'''.
 +
 
  
Nor to the rest of the script and you're ready:
 
  
 
Code:
 
Code:
Строка 47: Строка 49:
 
  }   
 
  }   
  
As mission designers really need to customize only the number of submissions to be loaded and the path and name.  
+
Как создатель миссий для использования под-миссий вы нуждаетесь только в настройке номеров загружаемых из миссии-хоста под-миссий и задания пути к их файлам.  
  
 
+
Но как известно пример никогда не помешает, мы модифицируем миссию из предыдущих уроков:
But since it is known can never harm an example .
+
We modify our previous lesson from the already well-known example:  
+
  
 
[[Файл:Sfdp1-1.jpg|800px]]
 
[[Файл:Sfdp1-1.jpg|800px]]
  
  
We simply delete the already created once ground targets, the Bf109 and we leave untouched the trigger times, this is our main mission:
+
Удаляем все наземные объекты, оставляем Bf-109 и триггер - это будет наша миссия-хост:
  
 
[[Файл:Sfdp1-2.jpg|800px]]
 
[[Файл:Sfdp1-2.jpg|800px]]
  
  
Then we create two new missions that contain only ground targets:  
+
Затем создадим три новые миссии, которые будут включать только наземные объекты.
 +
Первая:  
  
 
[[Файл:Sfdp1-3.jpg|800px]]
 
[[Файл:Sfdp1-3.jpg|800px]]
  
  
and
+
Вторая:
  
 
[[Файл:Sfdp1-4.jpg|800px]]
 
[[Файл:Sfdp1-4.jpg|800px]]
  
And since we're at it, a third mission with ground targets:  
+
Третья:  
  
 
[[Файл:Sfdp1-5.jpg|800px]]
 
[[Файл:Sfdp1-5.jpg|800px]]
  
  
Then the code, paste after adjusting the mission paths and names, in the main mission:
+
В коде скрипта скорректируйте пути к файлам и их названия:
  
 
  using maddox.game;  
 
  using maddox.game;  
Строка 91: Строка 92:
 
  }  
 
  }  
  
Then start the main quest, and lo and behold:  
+
Теперь можно запустить основную миссию. Вы увидите поставленную в под-миссиях технику:  
  
 
[[Файл:Sfdp1-6.jpg|800px]]
 
[[Файл:Sfdp1-6.jpg|800px]]
 +
  
 
The sample mission is as MissionNachladen1.zip attachment at the end of this post.
 
The sample mission is as MissionNachladen1.zip attachment at the end of this post.

Версия 11:56, 5 октября 2011

Автор: FG28_Kodiak
Ссылка: Перейти (перевод Google)
MissionNachladen1.zip
MissionNachladen2.zip

"Ил-2 Штурмовик: Битва за Британию" при помощи скриптов позволяет нам загружать под-миссии из текущей миссии. Это дает нам интересные возможности как для серверов, так и для одиночных миссий. Можно сделать игровой мир живущим по установленным текущей миссией правилам или предоставить возможность случайно или в зависимости от ваших действий выбирать из нескольких вариантов под-миссий. Также возможны наземные битвы, загружаемые из под-миссий при срабатывании триггера в нужный момент.

Для загрузки под-миссии в нашем распоряжении имеется метод void gpPostMissionLoad(string fileName)

Пример использования метода:

GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\TestSubMission1.mis");

Двойной символ обратной косой черты \\ в C # является escape-последовательностью которая обозначает символ \. Применение escape-последовательностей связано, прежде всего, с тем, что необходимо задавать в строке непечатаемые символы, такие, как, например, символ табуляции и др. Кроме того можно использовать обычный символ / (slash).

GamePlay.gpPostMissionLoad("missions/Single/Samples/TestSubmissions/TestSubMission.mis");

Предположим вы хотите загрузить под-миссии сразу при старте основной миссии. В начале любой миссии "Ил-2.БЗБ" вызывается метод public virtual void OnBattleStarted(). Именно при его помощи мы будем загружать под-миссии при старте основной миссии (миссии-хоста):

Теперь у нас все готово, чтобы загрузить подмиссии при помощи метода public virtual void OnBattleStarted()

public override void OnBattleStarted()
{
       base.OnBattleStarted();
       MissionNumberListener = -1;
       GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\TestSubMission1.mis");
       GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\TestSubMission2.mis");
       GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\TestSubMission3.mis");
}

Пояснения к коду:

base.OnBattleStarted() - метод вызова, выполняемый один раз при инициализации(требуется нормальное пояснение к методу!). MissionNumberListener = -1 - параметр,который указывает события какой миссии скрипт миссии слушает - при загрузке миссии в это поле ставится её номер - т.е. она "слышит" только свои события. Если выставить номер другой миссии - будет "слушать" только её, чтобы все миссии слышать - необходимо поставить значение меньше нуля (то есть "-1"). То есть в данном случае из миссии-хоста мы сможем управлять всеми событиями под-миссий, загруженных при помощи GamePlay.gpPostMissionLoad.


Code:

using System;  
using maddox.game; 
using maddox.game.world;
public class Mission : AMission 
{   
   public override void OnBattleStarted()  {  base.OnBattleStarted(); 
   MissionNumberListener = -1;  
   GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\TestSubMission1.mis");          
   GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\TestSubMission2.mis"); 
   GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\TestSubMission3.mis"); 
   }  
}  

Как создатель миссий для использования под-миссий вы нуждаетесь только в настройке номеров загружаемых из миссии-хоста под-миссий и задания пути к их файлам.

Но как известно пример никогда не помешает, мы модифицируем миссию из предыдущих уроков:

Sfdp1-1.jpg


Удаляем все наземные объекты, оставляем Bf-109 и триггер - это будет наша миссия-хост:

Sfdp1-2.jpg


Затем создадим три новые миссии, которые будут включать только наземные объекты. Первая:

Sfdp1-3.jpg


Вторая:

Sfdp1-4.jpg

Третья:

Sfdp1-5.jpg


В коде скрипта скорректируйте пути к файлам и их названия:

using maddox.game; 
using maddox.game.world; 
public class Mission : AMission 
{ 
public override void OnBattleStarted() 
  { 
  base.OnBattleStarted(); 
  MissionNumberListener = -1; 
  GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen1Sub1.mis"); 
  GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen1Sub2.mis"); 
  GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen1Sub3.mis"); 
  } 
} 

Теперь можно запустить основную миссию. Вы увидите поставленную в под-миссиях технику:

Sfdp1-6.jpg


The sample mission is as MissionNachladen1.zip attachment at the end of this post. So that we do not have the trigger so we can reuse them answered very well, we just copy the code - Section of OnTrigger () from our last lesson to our main mission added. Total received this:

using System; 
using maddox.game; 
using maddox.game.world; 
public class Mission : AMission 
{
   public override void OnBattleStarted() 
   { 
   base.OnBattleStarted(); 
   MissionNumberListener = -1;
   GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen1Sub1.mis"); 
   GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen1Sub2.mis"); 
   GamePlay.gpPostMissionLoad("missions\\Single\\Samples\\TestSubmissions\\MissionNachladen1Sub3.mis");
   {
       public override void OnTrigger(int missionNumber, string shortName, bool active)
       {
       base.OnTrigger(missionNumber, shortName, active);
       if ("WinCondition1".Equals(shortName) && active)
       {
       GamePlay.gpHUDLogCenter("Ziel erreicht");
       GamePlay.gpGetTrigger(shortName).Enable = false;
       GamePlay.gpGetTrigger("FailCondition1").Enable = false;
       }
       if ("FailCondition1".Equals(shortName) && active) 
       {
       GamePlay.gpHUDLogCenter("Sie haben die Zeit überschritten");
       GamePlay.gpGetTrigger(shortName).Enable = false;
       GamePlay.gpGetTrigger("WinCondition1").Enable = false;
       } 
   } 
} 

Then we start the mission (MissionNachladen2.zip), in memory we must destroy a total of six goals of the left two columns, as they lie in the trigger circuit. The course before time runs out (the time limit was increased to 320sek for testing purposes).


Destroy ground targets only on 6, nothing happens!

Sfdp1-777.jpg


Even after the destruction of even more targets still NOTHING!:

Sfdp1-8.jpg


Every time we get only this message:

Sfdp1-9.jpg