Autor Thema: Nachrichten anzeigen  (Gelesen 2441 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline JG2001_Eule

  • Flugschüler
  • ***
  • Beiträge: 57
Nachrichten anzeigen
« am: 20.Dezember.2012, 18:31 »
Hallo C# Könner :-*
Ich brauchte fürs Missionbauen ein Script. Habe mir die Zähne an den Beispielen von Kodiak ausgebissen. Bin zu Blöd dafür. Ich brauchte eigentlich "nur" Meldungen wo hin es geht  auf dem Bildschirm, am Anfang der Missionen. Meistens liest sich ja kaum einer das durch was in der Einsatzbesprechung steht. Den Text kam sich sparen, wenn es nach dem Erstellen der Maschine der Text auf dem Bildschirm steht. Könnte auch ein Zeitintervall mit dabei sein. also ein paar unterschiedliche Texte hintereinander.

Besten Dank im voraus...... für den der Bock hat :-*
Gruß Eule

Offline Nephris

  • Blasenteetrinker
  • *****
  • Beiträge: 1.309
Re: Nachrichten anzeigen
« Antwort #1 am: 20.Dezember.2012, 18:43 »
Ich nutze derzeit folgendes, um beim Spawnen einen Text anzeigen zulassen.

Zitat
    public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceEnter(player, actor, placeIndex);
      PlayerMessages.sendScreenMessage("Hello World ");

        MissionDebriefing.PlaceEnter(player, actor, placeIndex);

        MisControl.SetMainMenu(player);
    }


Oder innerhalb eines Triggers
  if ("text1".Equals(shortName) && active)
       {
           
action = GamePlay.gpGetAction(ActorName.Full(missionNumber, "text1"));
            if (action != null)
            action.Do();
    PlayerMessages.sendChatMessage("Hello World ");
           
            GamePlay.gpGetTrigger(shortName).Enable = false;
       }


Offline JG2001_Eule

  • Flugschüler
  • ***
  • Beiträge: 57
Re: Nachrichten anzeigen
« Antwort #2 am: 20.Dezember.2012, 19:25 »
Da sag ich doch erstmal Danke Nephris, und frisch ans Werk
Gruß Eule

Offline JG2001_Eule

  • Flugschüler
  • ***
  • Beiträge: 57
Re: Nachrichten anzeigen
« Antwort #3 am: 20.Dezember.2012, 19:57 »
Passiert leider nix. poste später mal mein script
Gruß Eule

Offline Nephris

  • Blasenteetrinker
  • *****
  • Beiträge: 1.309
Re: Nachrichten anzeigen
« Antwort #4 am: 21.Dezember.2012, 00:30 »
Ich habe dir mal eine PN geschrieben, evt erledigt sich folgendes ja dadurch.

Offline JG2001_Eule

  • Flugschüler
  • ***
  • Beiträge: 57
Re: Nachrichten anzeigen
« Antwort #5 am: 21.Dezember.2012, 13:50 »
Hier mein Script
Ist wahrscheinlich total verkehrt 8)

using System;
using System.Collections;
using System.Collections.Generic;
using maddox.game;
using maddox.game.world;

public class Mission : AMission
{
    public override void OnTrigger(int missionNumber, string shortName, bool active)
    {
        base.OnTrigger(missionNumber, shortName, active);
        GamePlay.gpHUDLogCenter(shortName);

        AiAction Action = GamePlay.gpGetAction(shortName);

        if (Action != null)
            Action.Do();

        GamePlay.gpGetTrigger(shortName).Enable = false;
    }


    private void sendScreenMessageToBlue(string msg)
    {
        if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
        {
            if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == 2)
                GamePlay.gpHUDLogCenter(null, msg);
           
            return;
        }

        List<Player> bluePlayers = new List<Player>();

        foreach (Player p in GamePlay.gpRemotePlayers())
        {
            if (p.Army() == 2)
                bluePlayers.Add(p);
        }
        GamePlay.gpHUDLogCenter(bluePlayers.ToArray(), msg);

        GamePlay.gpHUDLogCenter ( bluePlayers.ToArray() , "Tiefangriff auf Hawking");
        GamePlay.gpHUDLogCenter(bluePlayers.ToArray(), "Treffen über Cap Griz Nez");
    }
}
Gruß Eule

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: Nachrichten anzeigen
« Antwort #6 am: 21.Dezember.2012, 14:15 »
Entferne das
GamePlay.gpHUDLogCenter ( bluePlayers.ToArray() , "Tiefangriff auf Hawking");
GamePlay.gpHUDLogCenter(bluePlayers.ToArray(), "Treffen über Cap Griz Nez");
aus sendScreenMessageToBlue.

dann benutze an deiner gewünschten Stelle:
sendScreenMessageToBlue("Tiefangriff auf Hawking");
sendScreenMessageToBlue("Treffen über Cap Griz Nez");

Angenommen du verwendest einen Trigger mit Namen "HawkingAttack"

     public override void OnTrigger(int missionNumber, string shortName, bool active)
    {
        base.OnTrigger(missionNumber, shortName, active);
       
        if(shortName.Equals("HawkingAttack")
        {
             sendScreenMessageToBlue("Tiefangriff auf Hawking");
         }
             

        AiAction Action = GamePlay.gpGetAction(shortName);

        if (Action != null)
            Action.Do();

        GamePlay.gpGetTrigger(shortName).Enable = false;
    }

Das Problem bei Nephris Lösung ist das er meine Coop-Dll verwendet, die standardmäßig natürlich nicht installiert ist. So das er das Script wegen der fehlenden Dll nicht ausführt, bzw. halt Fehlermeldungen bringt.
« Letzte Änderung: 21.Dezember.2012, 14:17 von FG28_Kodiak »

Offline Nephris

  • Blasenteetrinker
  • *****
  • Beiträge: 1.309
Re: Nachrichten anzeigen
« Antwort #7 am: 21.Dezember.2012, 14:49 »
Welcher Teil entstammt deiner dll?
Ich war der Ansicht, dass es sich hierbei um eine Standart Funktion handelt, die das Game mitgibt und so abrufbar ist. ???

Offline FG28_Kodiak

  • Blasenteetrinker
  • *****
  • Beiträge: 1.893
Re: Nachrichten anzeigen
« Antwort #8 am: 21.Dezember.2012, 14:59 »
Zu der Dll gehören:
PlayerMessages.sendScreenMessage("Hello World ");
MissionDebriefing.PlaceEnter(player, actor, placeIndex);
MisControl.SetMainMenu(player);
PlayerMessages.sendChatMessage("Hello World ");
 ::)
« Letzte Änderung: 21.Dezember.2012, 15:02 von FG28_Kodiak »

Offline JG2001_Eule

  • Flugschüler
  • ***
  • Beiträge: 57
Re: Nachrichten anzeigen
« Antwort #9 am: 21.Dezember.2012, 16:40 »
Danke Kodiak erstmal
Haut trotzdem nicht hin. Entweder kopier ich die Meldungen an die falsche Stelle oder lösche mehr als gewollt. Textmeldung bekomme ich keine, dafür lösen die Trigger jetzt immer wieder aus. Bei dem unten angeführten Script, lösen die Trigger nur einmal aus. Desweiteren erscheint eine Textmeldung auf dem Bildschirm in Gelb z:b. "HurriStart" Name des Trigger halt. Das hätte ich gerne durch reine Textmeldungen erweitert. Beim Start: wo geht es hin, wer kommt dazu, etc.. allerdings nicht so in die Tiefe gehend wie bei Desastersoft

using System;
using maddox.game;
using maddox.game.world;


public class Mission : maddox.game.AMission
{
      
public override void OnTrigger(int missionNumber, string shortName, bool active)
    {
        base.OnTrigger(missionNumber, shortName, active);
      GamePlay.gpHUDLogCenter(shortName);

        AiAction Action = GamePlay.gpGetAction(shortName);

        if (Action != null)
            Action.Do();
       
        GamePlay.gpGetTrigger(shortName).Enable = false;
    }
 
   
}
Gruß Eule