Hey Leute 
Ich habe euch beim Surfen im Inertnet entdeckt
und dachte mir, hey hier muss ich gleichmal einziehen
.
Ich bin GameAdmin für ein MMORPG, das Game heißt AION, es ist auf JAVA und XML gebaut.
Nun habe ich eine Frage, vielleicht könnt ihr mir dabei helfen:
Es gibts in dem Spiel sogenannte Festungen, hier ein Bild:
[Blockierte Grafik: http://termitenprinz.files.wordpress.com/2009/10/festung1.jpg?w=450&h=265]
Wie man sieht ist um die Festung ein Schild, dieses Schild sorgt dafür, dass niemand einfach von oben hinein fliegen kann, dem die Festung nicht gehört.
Es gibts 3 Spezies: Asmo,Elyos,Balaur(NPC).
Nun geht es dadrum, die Festungen für sich zu gewinnen, aber nun kommen wir zum Problem.
Wie schaffe ich es per XML/JAVA einzustellen, dass diese Festungen immer sich je nach Spezies anpassen? Ich kann ja nicht nach jeder Schlacht den Server ausmachen, die XML ändern und wieder hochfahren.
Die Asmos und Elyos haben jeweils eine Heimatfestung, die hat für immer ein Schild und in die dürfen natürlich nur Asmos/Elyos, dass ist also einfach, da es nie wechseln muss.
Bisher sind folgende Datein vorhanden:
dies ist die shields.xsd, in der werden die Parameter angegeben.
Alles anzeigen
Und hier sind die bisherigen (asmo/elyos) Schilde eingetragen, mit koordinaten etc.
Hier ist eine der Java Datein
Alles anzeigen
Und hier die 2.
Alles anzeigen
Ich dachte erst an PHP, aber kp wie man da PHP einbinden soll oder ist php in XML möglich?
grade mal in die Spawnengine geschaut:
also die "türen" werden ja auch ausgetauscht, nach dem die Festung gewechselt wurde:
Alles anzeigen
Vielleicht ist dies auch möglich, mit Schilden?
So genug Kram^^.
Nebenbei: Hoffe dies ist in JAVA richtig, XML ist ja nur die "konfiguration"
Lg Dracken
P.s.: falls ihr alle Datein mal sehen wollt: aionxemu.googlecode.com/svn/trunk/GameServer/
Dies ist ein OpenSource Projekt, für einen AionEmulator.
EDIT:
hier issn Video wo man denEffekt; bzw das Schild in Aktion; auf dem Original Server sehen kann:
youtube.com/watch?v=xdQkrChez9s
***die sollten mal Spoiler Funktion hier einbauen >_<***

Ich habe euch beim Surfen im Inertnet entdeckt


Ich bin GameAdmin für ein MMORPG, das Game heißt AION, es ist auf JAVA und XML gebaut.
Nun habe ich eine Frage, vielleicht könnt ihr mir dabei helfen:
Es gibts in dem Spiel sogenannte Festungen, hier ein Bild:
[Blockierte Grafik: http://termitenprinz.files.wordpress.com/2009/10/festung1.jpg?w=450&h=265]
Wie man sieht ist um die Festung ein Schild, dieses Schild sorgt dafür, dass niemand einfach von oben hinein fliegen kann, dem die Festung nicht gehört.
Es gibts 3 Spezies: Asmo,Elyos,Balaur(NPC).
Nun geht es dadrum, die Festungen für sich zu gewinnen, aber nun kommen wir zum Problem.
Wie schaffe ich es per XML/JAVA einzustellen, dass diese Festungen immer sich je nach Spezies anpassen? Ich kann ja nicht nach jeder Schlacht den Server ausmachen, die XML ändern und wieder hochfahren.
Die Asmos und Elyos haben jeweils eine Heimatfestung, die hat für immer ein Schild und in die dürfen natürlich nur Asmos/Elyos, dass ist also einfach, da es nie wechseln muss.
Bisher sind folgende Datein vorhanden:
dies ist die shields.xsd, in der werden die Parameter angegeben.
Quellcode
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
- <xs:include schemaLocation="../import.xsd" />
- <xs:include schemaLocation="../global_types.xsd" />
- <xs:element name="shields">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="shield" type="Shield" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="Shield">
- <xs:attribute name="name" type="ShieldName" />
- <xs:attribute name="race" type="Race" />
- <xs:attribute name="x" type="xs:float" />
- <xs:attribute name="y" type="xs:float" />
- <xs:attribute name="z" type="xs:float" />
- <xs:attribute name="radius" type="xs:float" />
- <xs:attribute name="skill" type="xs:int" />
- <xs:attribute name="map" type="xs:int" />
- </xs:complexType>
- <xs:simpleType name="ShieldName">
- <xs:restriction base="xs:string">
- <xs:enumeration value="PRIMUM_SHIELD" />
- <xs:enumeration value="TEMINON_SHIELD" />
- </xs:restriction>
- </xs:simpleType>
- </xs:schema>
Und hier sind die bisherigen (asmo/elyos) Schilde eingetragen, mit koordinaten etc.
Quellcode
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <shields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shields.xsd">
- <shield name="TEMINON_SHIELD" race="ELYOS" x="3002.9207" y="903.2752" z="1520.0913" radius="313.5392" skill="9881" map="400010000"/>
- <shield name="PRIMUM_SHIELD" race="ASMODIANS" x="893.7403" y="2953.727" z="1586.35" radius="357.0371" skill="9891" map="400010000" />
- </shields>
Hier ist eine der Java Datein
Quellcode
- package gameserver.dataholders;
- import gameserver.model.templates.shield.ShieldTemplate;
- import javax.xml.bind.annotation.XmlAccessType;
- import javax.xml.bind.annotation.XmlAccessorType;
- import javax.xml.bind.annotation.XmlElement;
- import javax.xml.bind.annotation.XmlRootElement;
- import java.util.List;
- /**
- * @author xavier
- */
- @XmlRootElement(name = "shields")
- @XmlAccessorType(XmlAccessType.FIELD)
- public class ShieldData {
- @XmlElement(name = "shield")
- private List<ShieldTemplate> shieldTemplates;
- public int size() {
- return shieldTemplates.size();
- }
- public List<ShieldTemplate> getSchieldTemplates() {
- return shieldTemplates;
- }
- }
Und hier die 2.
Quellcode
- package gameserver.model.shield;
- import gameserver.ai.npcai.DummyAi;
- import gameserver.controllers.ShieldController;
- import gameserver.model.gameobjects.Creature;
- import gameserver.model.templates.shield.ShieldTemplate;
- import gameserver.utils.idfactory.IDFactory;
- import gameserver.world.ShieldKnownList;
- import gameserver.world.World;
- /**
- * @author xavier
- */
- public class Shield extends Creature {
- private ShieldTemplate template = null;
- private String name = null;
- public Shield(ShieldTemplate template) {
- super(IDFactory.getInstance().nextId(), new ShieldController(), null, null, World.getInstance().createPosition(template.getMap(), template.getX(), template.getY(), template.getZ(), (byte) 0));
- ((ShieldController) getController()).setOwner(this);
- this.template = template;
- this.name = template.getName();
- setKnownlist(new ShieldKnownList(this));
- }
- public ShieldTemplate getTemplate() {
- return template;
- }
- @Override
- public String getName() {
- return name;
- }
- @Override
- public byte getLevel() {
- return 0;
- }
- @Override
- public void initializeAi() {
- ai = new DummyAi();
- ai.setOwner(this);
- }
- public void spawn() {
- World w = World.getInstance();
- w.storeObject(this);
- w.spawn(this);
- }
- }
Ich dachte erst an PHP, aber kp wie man da PHP einbinden soll oder ist php in XML möglich?
grade mal in die Spawnengine geschaut:
also die "türen" werden ja auch ausgetauscht, nach dem die Festung gewechselt wurde:
Quellcode
- public FortressGate spawnFortressGate(int fortressId, SiegeRace race, FortressGateTemplate template) {
- int mapId = DataManager.SIEGE_LOCATION_DATA.getSiegeLocations().get(fortressId).getLocationTemplate().getWorldId();
- int fgNpcId = template.getBaseInfo().getNpcId(race);
- SpawnTemplate sTemplate = addNewSpawn(mapId, 1, fgNpcId, template.getBaseInfo().getX(), template.getBaseInfo().getY(), template.getBaseInfo().getZ(), (byte) template.getBaseInfo().getH(), 0, 0, true, true);
- sTemplate.setStaticid(template.getBaseInfo().getStaticId());
- FortressGate gate = new FortressGate(IDFactory.getInstance().nextId(), new FortressGateController(), sTemplate, DataManager.NPC_DATA.getNpcTemplate(fgNpcId), fortressId, template);
- gate.setKnownlist(new NpcKnownList(gate));
- gate.setEffectController(new EffectController(gate));
- gate.setLifeStats(new NpcLifeStats(gate));
- gate.getController().onRespawn();
- bringIntoWorld(gate, sTemplate, 1);
- return gate;
- }
Vielleicht ist dies auch möglich, mit Schilden?
So genug Kram^^.
Nebenbei: Hoffe dies ist in JAVA richtig, XML ist ja nur die "konfiguration"

Lg Dracken
P.s.: falls ihr alle Datein mal sehen wollt: aionxemu.googlecode.com/svn/trunk/GameServer/
Dies ist ein OpenSource Projekt, für einen AionEmulator.
EDIT:
hier issn Video wo man denEffekt; bzw das Schild in Aktion; auf dem Original Server sehen kann:
youtube.com/watch?v=xdQkrChez9s
***die sollten mal Spoiler Funktion hier einbauen >_<***
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Dracken ()