ExtendedCommands: Unterschied zwischen den Versionen

Aus Eressea
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Nachdem ich mit Vorlage nicht warmgeworden bin, hab ich mir mal die ExtendedCommands von [http://magellan-client.sf.net Magellan] angesehen, und muss sagen dass m…“)
(kein Unterschied)

Version vom 4. Juli 2010, 17:44 Uhr

Nachdem ich mit Vorlage nicht warmgeworden bin, hab ich mir mal die ExtendedCommands von Magellan angesehen, und muss sagen dass mir das recht gut gefällt.

Nachdem es in der Wiki dazu noch keine Seite gibt, werde ich das hier einfach mal nachholen:

Hier die offizielle Seite mit einer kurzen Einführung und ein paar Beispielscripten.

In die Bibliothek kommt man im Magellan Menü: Plugins -> Erweiterte Befehle -> Bibliothek Bearbeiten... Dort kann man den Code schreiben (oder fertigen Code reinkopieren), und dann mittels "Ausführen" starten. (Speichern ist natürlich auch hilfreich!)

Hier mal mein erstes Script:

import magellan.library.*;
import magellan.library.rules.*;

/*********************************************
*        Meta's FreundFeindSchilder          *
* Version 0.5                                *
*********************************************/
String getFriendFoeInfo(Faction faction){
  String factionId = faction.getID().toString();
  AllianceGroup alliance = faction.getAlliance();
  String allianceId;
  String result;
  if (alliance==null) allianceId = "?";
    else allianceId = alliance.getID().toString();
//  return "" + factionId + "," + allianceId;
  if (allianceId.equals("Lfea")) return "fri";
  else if (factionId.equals("ii")) return "MOB";
// weitere Konfiguration hier!
  else return factionId;
}

setShields (String type) {
  if (type.equals("people")){
    HashMap people;
    String allianceName;
    for (Region region : world.regions().values()) {
      people = new HashMap();
      for (Unit unit : region.units()) {
        allianceName = getFriendFoeInfo(unit.getFaction());
        if (people.containsKey(allianceName)) { 
	people.put(allianceName, 
		people.get(allianceName)
		+unit.getPersons());
        } else {
          people.put(allianceName, unit.getPersons());
        }
      }
      region.clearSigns();
      Iterator iterator = people.keySet().iterator();
      String signtext = "";
      while (iterator.hasNext()) {
        String allianceStr = iterator.next();
        int amount = people.get(allianceStr);
        signtext = allianceStr + ":" + amount;
        Sign sign = new Sign( signtext );
        region.addSign(sign);
      } 
    }
  }
}

/////////////////////////////////////////////////////
setShields("people");

Das Ergebnis ist in jeder Region mit Personen ein Schild auf der steht wieviele Personen je nach Anzeigename in der Region sind. So kann man es sich zB ersparen in einem Kampf für jede Region die Einheiten abzuzählen und ein Bild zu erstellen wer wo wieviele Personen hat, sondern mit einem Klick (nach etwas Eintragen in der Konfiguration) sind die Personen in Freund und Feind eingeteilt. Sogar Monster sieht man auf den ersten Blick.