Völkerränge

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

Post Reply
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Völkerränge

Post by Reflexer » Mon, 7. Jun 10, 16:05

Hallo Leute,

melde mich nach längerer Abwesenheit mal wieder zurück :)

Ich habe eine Frage zu den Völkerrängen. Wie frage ich selbige ab? Ich habe im Forum ein wenig gestöbert und nix entsprechendes gefunden, außer einem Beitrag in dem die start.xml auseinandergefummelt wurde.

Um den Kampf- und Handelsrang rauszufinden gibt es ja

Code: Select all

$tmpVar = get trade rank title: text=[TRUE]
$tmpVar = get fight rank title: text=[TRUE]
Gibt es nichts vergleichbares für die Völkerränge? Ich habe es mit allen möglichen Befehlen versucht:

Code: Select all

$tmpRel = [PLAYERSHIP]->get relation to race {Boronen}

$tmpNot = [PLAYERSHIP]->get notoriety to race {Boronen}

$tmpVar = [PLAYERSHIP] -> get notoriety title to race {Argonen}: text=[TRUE]
liefert alles sehr komische Werte und nicht das, was ich erwarte.

Ich möchte einfach nur den aktuellen Rang des Spielers wissen, z.B.

numerisch: 11
text: Held der Föderation

Geht das irgendwie?

Gruß
Reflexer

ThanRo
Posts: 138
Joined: Tue, 15. May 07, 14:53
x3ap

Post by ThanRo » Mon, 7. Jun 10, 16:39

Nur weil man nicht das bekommt was man haben will heißt das noch lange nicht das man nicht das bekam was angefordert wurde. :roll:

Die Werte für Notoriety gehen meines Wissens von -1.000.000 (Feind der Föderation) bis 1.000.000 (Held der Föderation) um bei dem Beispiel der Argonen zu bleiben. Ich weiß nicht, ob die jeweiligen Werte schon mal hier irgendwo gepostet wurden also mache ich das gerade mal:

Code: Select all

   333.333 bis 1.000.000
   100.000 bis 333.332
    33.333 bis 99.999
    10.000 bis 33.332
     3.333 bis 9.999
     1.000 bis 3.332
       333 bis 999
       100 bis 332
        33 bis 99
        10 bis 32
       -10 bis 9
      -100 bis -11
    -1.000 bis -101
   -10.000 bis -1.001
  -100.000 bis -10.001
-1.000.000 bis -100.001
Relation ist, wenn ich mich noch richtig erinnere entweder Freund, Neutral oder Feind.
Was das letzte von Dir angesprochene Kommando angeht kann ich nichts sagen.

User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer » Mon, 7. Jun 10, 16:56

Aaaaalso.... erstmal vielen Dank für die Aufschlüsselung. Das ist gut zu wissen, löst aber mein Problem nicht.

Der Befehl

Code: Select all

<RetVar/IF> <RefObj> -> get notoriety to race <Var/Race>
liefert bei folgender Ausführung

Code: Select all

$tmpNot = [PLAYERSHIP]->get notoriety to race {Argonen}
ein "0" zurück, obwohl mein Rang 11 ist und ich "Held der Föderation" bin. Das Ergebnis "0" bekomme ich bei allen Völkern zurück.

Eigentlich will ich ja auch nicht wissen, wie der Rang des [PLAYERSHIP] ist, sondern wie der Rang von {Spieler} ist. Die Abfrage auf {Spieler} ist leider nicht möglich, da {Spieler} kein Object ist.

Der Aufruf:

Code: Select all

$tmpNot = {Spieler} ->get notoriety to race {Argonen}
liefer den Fehler:

Code: Select all

Incorrect parameter; expected: RefObj (parameter #2)
Ich vermute mal, dass das Problem schonmal jemand hatte und hoffe, dass mir jemand helfen kann :)

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Mon, 7. Jun 10, 17:15

Diese Befehle habe ich als etwas sperrig in Erinnerung, weswegen ich mich darauf beschränke immer nur einen einzigen zu benutzen:

Code: Select all

$noto = get notoriety from race $race1 to race $race2
Dabei funktioniert der Befehl nur, wenn $race1 nicht die Rasse "Spieler" ist. Das ganze verpackt in eine kleine Library sieht dann so aus:

Code: Select all

005   skip if is datatyp[ $object.1 ] == DATATYP_RACE
006   |$object.1 = $object.1 -> get owner race
007   skip if is datatyp[ $object.2 ] == DATATYP_RACE
008   |$object.2 = $object.2 -> get owner race
009   
010   if $object.1 == Spieler
011   |$dummy = $object.2
012   |$object.2 = $object.1
013   |$object.1 = $dummy
014   end
015   
016   $noto = get notoriety from race $object.1 to race $object.2
017   return $noto
Das sollte eigentlich auch bei dir funktionieren.

MfG,
ScRaT

User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer » Mon, 7. Jun 10, 17:36

Danke Scrat! Das hat mir sehr geholfen! Vor allem die Info, dass {Spieler} nicht an Pos 1 sein darf :)

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Mon, 7. Jun 10, 18:34

Kein Problem.
Vor allem die Info, dass {Spieler} nicht an Pos 1 sein darf
Also kannst du das bestätigen? Ich hatte das nur noch im Hinterkopf und war mir nicht mehr 100%-ig sicher.
Funktionieren denn die anderen Befehle, wenn man den Spieler nicht an erster Stelle aufführt?

MfG,
ScRaT

ThanRo
Posts: 138
Joined: Tue, 15. May 07, 14:53
x3ap

Post by ThanRo » Mon, 7. Jun 10, 19:18

Daß der Spieler bei dem genannten Befehl nicht als erster Parameter stehen stehen darf kann ich nicht bestätigen. Die Abfrage ergibt allerdings nur einen Sinn, wenn ich überprüfen will wie die Freund-/Feind-Einstellungen aussehen. Ich habe es gerade noch mal überprüft.

Meiner Erfahrung nach gibt es in dieser Konstellation drei mögliche Werte.

0 -> Es wurden noch keine Einstellungen vorgenommen. Rasse ist als Freund eingestellt.
1.000.000 -> Rasse ist als Freund eingestellt.
-1.000.000 -> Rasse ist als Feind eingestellt.

Es gibt allerdings ein paar Werte die feststehen:

Für Player ist der Wert immer 1.000.000 (Selbsthass ist X3 also fremd)
Für Freunde ist der Wert immer 1.000.000
Für Feinde ist der Wert immer -1.000.000
Für Neutrale ist der Wert immer 0

Das hat übrigens nichts mit dem Wert für Relation zu tun. Selbst wenn ich die Xenon bespielsweise als Freunde einstelle bleibt der Wert für Relation auf -1.

User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer » Mon, 7. Jun 10, 19:25

Habe grade einen kleinen Test gemacht:

Code: Select all

$noto = get notoriety from race {Argonen} to race {Spieler}
$tmpText = 'get notoriety from race {Argonen} to race {Spieler} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText

$noto = get notoriety from race {Boronen} to race {Spieler}
$tmpText = 'get notoriety from race {Boronen} to race {Spieler} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText

$noto = get notoriety from race {Teladi} to race {Spieler}
$tmpText = 'get notoriety from race {Teladi} to race {Spieler} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText

$noto = get notoriety from race {Xenon} to race {Spieler}
$tmpText = 'get notoriety from race {Xenon} to race {Spieler} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText

$noto = get notoriety from race {Spieler} to race {Argonen}
$tmpText = 'get notoriety from race {Spieler} to race {Argonen} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText

$noto = get notoriety from race {Spieler} to race {Boronen}
$tmpText = 'get notoriety from race {Spieler} to race {Boronen} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText

$noto = get notoriety from race {Spieler} to race {Teladi}
$tmpText = 'get notoriety from race {Spieler} to race {Teladi} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText

$noto = get notoriety from race {Spieler} to race {Xenon}
$tmpText = 'get notoriety from race {Spieler} to race {Xenon} liefert: ' + $noto
write to log file 8956  append=[TRUE]  value=$tmpText
Folgendes Ergebnis kam dabei raus:
get notoriety from race {Argonen} to race {Spieler} liefert: 670012
get notoriety from race {Boronen} to race {Spieler} liefert: 497814
get notoriety from race {Teladi} to race {Spieler} liefert: 336020
get notoriety from race {Xenon} to race {Spieler} liefert: -1000000
get notoriety from race {Spieler} to race {Argonen} liefert: 0
get notoriety from race {Spieler} to race {Boronen} liefert: 0
get notoriety from race {Spieler} to race {Teladi} liefert: 0
get notoriety from race {Spieler} to race {Xenon} liefert: -100000
Somit kann man also definitiv bestätigen, dass es nicht egal ist, welche Reihenfolge man nutzt.

Ein Fehler ist es aber dennoch nicht! Hab grade nochmal drüber nachgedacht. Es ist klar, dass 0 zurückgegeben wird, wenn man den Spieler als erste "Fraktion" angibt. Zurückgegeben wird dann nämlich der Status des Spielers zur anderen Fraktion, und der ist 0, solange man nicht im Krieg mit der Fraktion ist. Wenn man wissen möchte, wie die anderen Fraktionen zum Spieler stehen, muss man ergo zwangsläufig die jeweilige Fraktion immer zuerst angeben und dann den Spieler. ;)

Kaum hat man drüber nachgedacht, kommt Licht ins Dunkel :D

ThanRo
Posts: 138
Joined: Tue, 15. May 07, 14:53
x3ap

Post by ThanRo » Mon, 7. Jun 10, 19:49

Reflexer wrote:Es ist klar, dass 0 zurückgegeben wird, wenn man den Spieler als erste "Fraktion" angibt. Zurückgegeben wird dann nämlich der Status des Spielers zur anderen Fraktion, und der ist 0, solange man nicht im Krieg mit der Fraktion ist.
Äh, nein. Wie ich schon geschrieben habe steht 0 dann da wenn vom Spieler noch keine Einstellung in den Freund-/Feind-Einstellungen gemacht wurde. Laß das Script noch mal durchlaufen wenn Du die Argonen z.B. als "Feinde" eingestellt hast. Der Wert sollte dann -1.000.000 sein obwohl Du dir einen solchen Wert wahrscheinlich nicht "verdient" hast. Wenn Du dann den Wert zurück auf "Freunde" einstellst kommt nicht 0 sondern 1.000.000 heraus.

Wie gesagt: Wenn der Spieler als erster Parameter eingesetzt wird werden die Ergebnisse der Freund-/Feind-Einstellungen ausgegeben.

User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer » Mon, 7. Jun 10, 19:54

Wie gesagt: Wenn der Spieler als erster Parameter eingesetzt wird werden die Ergebnisse der Freund-/Feind-Einstellungen ausgegeben.
Darum ging es ja in der Ursprungsfrage auch nicht ;) Ist ja eigentlich irrelevant, wie der Spieler zur Fraktion steht, da man das mit

Code: Select all

-> get relation to race {Race}
einfacher rausfinden kann ;) Was das ganze in Zahlenwerten bedeutet ist ja unerheblich... anders herum isses schon interessanter ;)

Post Reply

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”