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

Материал из АвиаВики
Перейти к: навигация, поиск
 
(не показаны 2 промежуточные версии этого же участника)
Строка 3: Строка 3:
 
:'''Ссылка:''' [http://forum.1cpublishing.eu/showthread.php?t=26623 1cpublishing.eu]
 
:'''Ссылка:''' [http://forum.1cpublishing.eu/showthread.php?t=26623 1cpublishing.eu]
 
:'''Архив для скачивания:''' [http://forum.1cpublishing.eu/attachment.php?attachmentid=7263&d=1317634496 hello.zip (1.3 KB) Скачать]
 
:'''Архив для скачивания:''' [http://forum.1cpublishing.eu/attachment.php?attachmentid=7263&d=1317634496 hello.zip (1.3 KB) Скачать]
:'''Действие скрипта:''' отправляет сообщения игрокам на их родном языке.
+
:'''Действие скрипта:''' отправляет сообщения игрокам на их родном языке с учетом армии.
  
 
  using System;
 
  using System;
Строка 126: Строка 126:
 
Дополнительные сведения:
 
Дополнительные сведения:
 
normally i use  
 
normally i use  
const int ArmyAll = -1;
+
const int ArmyAll = -1;
const int ArmyRed = 1;
+
const int ArmyRed = 1;
const int ArmyBlue = 2;
+
const int ArmyBlue = 2;
 
at the beginning of my scripts.
 
at the beginning of my scripts.
  
 
have corrected the script so if you want send a Message to All you can use
 
have corrected the script so if you want send a Message to All you can use
sendChatMessageTo(-1, "Test To All", null);
+
sendChatMessageTo(-1, "Test To All", null);
sendScreenMessageTo(-1, "Test To All", null);
+
sendScreenMessageTo(-1, "Test To All", null);
  
 
for your localized messages you can use
 
for your localized messages you can use
sendChatMessageTo(-1, GetLocalizedMessage("ru", "Hello"), null);
+
sendChatMessageTo(-1, GetLocalizedMessage("ru", "Hello"), null);
  
 
german is "de" (tested myself)
 
german is "de" (tested myself)
Строка 144: Строка 144:
  
 
But i think the best is to add a option to
 
But i think the best is to add a option to
private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)
+
private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)
 
so it will be possible to use
 
so it will be possible to use
sendChatMessageTo(1, "en", "Hello", null);
+
sendChatMessageTo(1, "en", "Hello", null);
 
so it will send it only to the red players with english language version.
 
so it will send it only to the red players with english language version.
  
  
 
[[Категория:Ил-2 Штурмовик: Битва за Британию. Скрипты]]
 
[[Категория:Ил-2 Штурмовик: Битва за Британию. Скрипты]]

Текущая версия на 23:49, 3 октября 2011

Сообщение на экран и в чат для оффлайна и онлайна на языке игрока

Автор: FG28_Kodiak
Ссылка: 1cpublishing.eu
Архив для скачивания: hello.zip (1.3 KB) Скачать
Действие скрипта: отправляет сообщения игрокам на их родном языке с учетом армии.
using System;
using System.Collections;
using System.Collections.Generic;
using maddox.game;
using maddox.game.world;
public class Mission : AMission
{
   private void sendScreenMessageTo(int army, string msg, object[] parms)
   {
       if (army != -1)
       {
           //Singleplayer (for Testing)
           if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
           {
               if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army)
                   GamePlay.gpHUDLogCenter(null, msg, parms);
           }
           else // Multiplayer
           {
               List<Player> Players = new List<Player>();
               foreach (Player p in GamePlay.gpRemotePlayers())
               {
                   if (p.Army() == army)
                       Players.Add(p);
               }
               GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
           }
       }
       else GamePlay.gpHUDLogCenter(null, msg, parms);
   }
   private void sendChatMessageTo(int army, string msg, object[] parms)
   {
       if (army != -1)
       {
           //Singleplayer (for Testing)
           if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
           {
               if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army)
                   GamePlay.gpLogServer(null, msg, parms);
           }
           else // Multiplayer
           {
               List<Player> Players = new List<Player>();
               foreach (Player p in GamePlay.gpRemotePlayers())
               {
                   if (p.Army() == army)
                       Players.Add(p);
               }
               GamePlay.gpLogServer(Players.ToArray(), msg, parms);
           }
       }
       else GamePlay.gpLogServer(null, msg, parms);
   }
   private void sendScreenMessageTo(int army, string playerlanguage, string msg, object[] parms)
   {
       if (army != -1)
       {
           //Singleplayer (for Testing)
           if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
           {
               if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                   GamePlay.gpHUDLogCenter(null, msg, parms);
           }
           else // Multiplayer
           {
               List<Player> Players = new List<Player>();
               foreach (Player p in GamePlay.gpRemotePlayers())
               {
                   if (p.Army() == army && p.LanguageName().Equals(playerlanguage))
                       Players.Add(p);
               }
               GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
           }
       }
       else GamePlay.gpHUDLogCenter(null, msg, parms);
   }
   private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)
   {
       if (army != -1)
       {
           //Singleplayer (for Testing)
           if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
           {
               if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                   GamePlay.gpLogServer(null, msg, parms);
           }
           else // Multiplayer
           {
               List<Player> Players = new List<Player>();
               foreach (Player p in GamePlay.gpRemotePlayers())
               {
                   if (p.Army() == army && p.LanguageName().Equals(playerlanguage))
                       Players.Add(p);
               }
               GamePlay.gpLogServer(Players.ToArray(), msg, parms);
           }
       }
       else GamePlay.gpLogServer(null, msg, parms);
   }
   public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
   {
       base.OnPlaceEnter(player, actor, placeIndex);       
       //test
       switch (player.LanguageName())
       {
           case "de":
               sendScreenMessageTo(2, "de", "Hallo!", null);
               break;
           case "ru":
               sendScreenMessageTo(2, "ru", "Привет!", null);
               break;
           default:
               sendScreenMessageTo(2, "Hello!", null);
               break;
       }
       
   }
}

Дополнительные сведения: normally i use

const int ArmyAll = -1;
const int ArmyRed = 1;
const int ArmyBlue = 2;

at the beginning of my scripts.

have corrected the script so if you want send a Message to All you can use

sendChatMessageTo(-1, "Test To All", null);
sendScreenMessageTo(-1, "Test To All", null);

for your localized messages you can use

sendChatMessageTo(-1, GetLocalizedMessage("ru", "Hello"), null);

german is "de" (tested myself) english is "en" (not tested) russian is "ru" (not tested) so can anyone with this language version check this for me?

But i think the best is to add a option to

private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)

so it will be possible to use

sendChatMessageTo(1, "en", "Hello", null);

so it will send it only to the red players with english language version.