Für jeden Spieler einen Speziellen Dialog

Habt ihr Fragen zum Galaxy Editor, oder möchtet ihr eure Karte vorstellen? Alles was mit dem Thema Editor und Modding zu tun hat, gehört hier rein.

Moderatoren: Exekutor[NHF], Deathwing, GarfieldKlon, G A F, SaVi

Antworten
Benutzeravatar
snooop87
Berserker
Beiträge: 73
Registriert: 15.10.2012, 20:09
Liga 1vs1: Gold
Liga 2vs2: Bronze
Mainrace: Zerg
Wohnort: Berlin

Für jeden Spieler einen Speziellen Dialog

Beitrag von snooop87 »

hallöchen Liebe Community,

ich möchte eine Erfahrungsleiste erstellen und würde die über einen Dialog darstellen

Problem ist nur wie erstelle ich diesen Dialog für jeden spieler und er soll von jeden Spieler die Erfahrung anzeigen und das level ( wie bei Squadron Defense )
desweiteren Soll der Balken sich füllen


Wie könnte man das am besten hinbekommen .... ? kann mir da einer helfen#+
(hab zurzeit eine Bossleiste die runtergeht- also weniger wird <.<)
SaVi
Moderator des Zwielichts
Moderator des Zwielichts
Beiträge: 616
Registriert: 21.05.2008, 16:53
Liga 1vs1: Diamant
Liga 2vs2: Platin
Mainrace: Protoss

Re: Für jeden Spieler einen Speziellen Dialog

Beitrag von SaVi »

Ich würde das nicht über die Bossleiste machen, das ist meiner Meinung nach eine Sackgasse. Soweit ich weiß ist es damit nicht möglich es nur für einen Spieler anzeigen zu lassen, zudem richtet sie sich ja nach den Hitpoints einer Einheit.

Der richtige Ansatz ist schon einmal der klassische "Dialog"
_____________________________________________________
Dialog erstellen --> Progress Bar erstellen --> Größe einstellen/Minimum 0 und Maximum 100 einstellen --> Dialog Hintergrund ausblenden --> Dialog anzeigen für alle Spieler
_____________________________________________________
Somit hast du schon einmal den Dialog mit der Leiste für alle Spieler erstellt.
Dann brauchst du noch Variablen: Dialog[1 Index], Dialog-Gegenstand[1 Index] und weißt sie richtig zu. Zusätzlich brauchst du eine "Integer-Variable" Erfahrung[8 Indexe], eine Level[8] und ErfahrungNötig[so viele Indexe wie du level hast]

Wenn du jetzt zum Beispiel den Befehl benutzt um den Wert der Progressbar zu ändern,
Dialog - Set (Last created dialog item) current value to 0.0 for (All players)
So wird dir sicher auffallen, dass am Ende (All Players) steht, was ja wohl bedeuted, dass du es auch für einzelne Spieler ändern kannst.
_____________________________________________________
Danach erstellst du eine "Funktion" (Ctrl + Alt + R) benennst sie wie du möchtest und erstellst in ihr einen "Parameter" (Ctrl + M) und nennst ihn "Spieler"
Bau einfach den Auslöser nach^^

Code: Alles auswählen

ProgressBarUpdaten
    Options: Action
    Return Type: (None)
    Parameters
        Player = 0 <Integer>
    Grammar Text: ProgressBarUpdaten(Player)
    Hint Text: (None)
    Custom Script Code
    Local Variables
        ZwischenInteger = 0 <Integer>
    Actions
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                Erfahrung[Player] >= ErfahrungNötig[Level[Player]]
            Then
                Variable - Set ZwischenInteger = (Erfahrung[Player] - ErfahrungNötig[Level[Player]])
                Variable - Modify Level[Player]: + 1
                Dialog - Set ProgressBar current value to ((100 / ErfahrungNötig[Level[Player]]) * Zwischeninteger) for (Player group(Player))
            Else
                Dialog - Set ProgressBar current value to ((100 / ErfahrungNötig[Level[Player]]) * Erfahrung[Player]) for (Player group(Player))
Als nächstes einen neuen Auslöser erstellen mit dem Ereignis "Unit Dies". Bedingungen musst du dir selbst überlegen, wahrscheinlich sowas wie "Besitzer von Auslösende Einheit != 1" oder sowas^^
Dann unter Aktionen einfach mit einem "Switch" (Vertauschen-Befehl) abfragen welcher Einheitentyp es war und eben darauf hin entsprechend die Variable Erfahrung für den "Killing Player" erhöhen. Ganz unten dann noch die Funktion mit "killing Player".

Jetzt bist du fast fertig. Das einzige was noch fehlt, sind die Werte für "ErfahrungNötig", die du in der Karteninitialisierung definieren musst.
z.B. ErfahrungNötig[1] == 50
ErfahrungNötig[2] == 150
usw..

Mfg SaVi
Bild
Benutzeravatar
snooop87
Berserker
Beiträge: 73
Registriert: 15.10.2012, 20:09
Liga 1vs1: Gold
Liga 2vs2: Bronze
Mainrace: Zerg
Wohnort: Berlin

Re: Für jeden Spieler einen Speziellen Dialog

Beitrag von snooop87 »

suppper danke aber wie kann ich " ganz unten die funktion " einfügen???????
Benutzeravatar
snooop87
Berserker
Beiträge: 73
Registriert: 15.10.2012, 20:09
Liga 1vs1: Gold
Liga 2vs2: Bronze
Mainrace: Zerg
Wohnort: Berlin

Re: Für jeden Spieler einen Speziellen Dialog

Beitrag von snooop87 »

supper geil aber der gibt mir 0 aus hab Tooltip .. naja ich glaub da Stimmt was mit "Erfahrung " variable nicht !
Benutzeravatar
snooop87
Berserker
Beiträge: 73
Registriert: 15.10.2012, 20:09
Liga 1vs1: Gold
Liga 2vs2: Bronze
Mainrace: Zerg
Wohnort: Berlin

Re: Für jeden Spieler einen Speziellen Dialog

Beitrag von snooop87 »

hey habs hinbekomm hab in der "ErfahrungAktion "vor der Aktiondefinition ( progress bar[Player] , die Variable "Erfahrung[ausl.Spieler]" auf reel wert" Einheiteneigenschaft-Stufe " Aktuell von Auslösende einheit" gesetzt =D
SaVi
Moderator des Zwielichts
Moderator des Zwielichts
Beiträge: 616
Registriert: 21.05.2008, 16:53
Liga 1vs1: Diamant
Liga 2vs2: Platin
Mainrace: Protoss

Re: Für jeden Spieler einen Speziellen Dialog

Beitrag von SaVi »

Wenn es so funktioniert dann ist es super :)
Funktionen lassen sich wie alle anderen Befehle einfach unter "Strg + R" dann finden.

Mfg SaVi
Bild
Antworten