Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› Allgemein —› technische Missions-Fragen

Autor Mitteilung
verfasst am: 15.07.2011, 16:25
Registrierdatum: 08.11.2006, 06:23

 Beiträge: 430
Ich habe mal ein paar "Fragen2 zu Missionen:

Ist es möglich, mittels eines Skriptes bestimmte "Teile" zu platzieren auf der Karte?

Beispielsweise eienn "Reaktor", der dann in der "Beute" ist?

Oder einfach nur bestimtme Teile via Skript am Ende der Mission in die Beute einzufügen?
(Außerirdische Legierungen sage ich nur...)

Auch wäre eine Hilfe, wie ich bestimmre "Monster" in einer Mission mit einer bestimmten Chance einsetzen kann (Tiger oder Leopard oder Wölfe z.B.)

Kann mir da jemand helfen und ein Basisskript erstellen, an dem ich mich orientieren kann?


...DX
verfasst am: 15.07.2011, 18:02 · Edited by: DirkF
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
nein, man kann momentan keine Gegenstände auf der Karte platzieren - dazu gibt es keine Befehle im X-Skript.

Die werden irgendwann kommen, aber momentan gibt es sie nicht :-(

Die anderen Sachen (vor und nach dem Bodeneinsatz) sind möglich, aber ich habe gerade keine Zeit für Demoskripte.
verfasst am: 15.07.2011, 20:45
Registrierdatum: 31.01.2010, 20:05

 Beiträge: 122
Probiere es einmal hiermit:
//----- Ufoteile sammeln -----------
procedure Sammeln(ItemID : LongWord; z : LongInt);
var
  Basis: TBase;
  Item: TItem;
begin
  Basis := base_api_getmainbase;
  storage_api_PutItems(Basis.ID,ItemID, z);
  Item:=storage_api_GetItemByID(ItemID);
end;

...
Bodeneinsatz.Show;
Sammeln(123456789, 987654321, 10);
end;



kurze Erklärung:
Basis.ID: Beute zur Basis mit Basis.ID (123456789) bringen
ItemID: Gegenstand mit dieser ID (987654321) einlagern
z: Anzahl der gleichen Gegenstände 10 Stück)

Der Programmausschnitt ist außerdem überall dort zu finden, wo zu Spielbeginn das Lager per Skript aufgefüllt wird.
Berücksichtigen muß man hier, dass die Teile im Lager auftauchen, auch wenn sie nicht bei diesem Bodeneinsatz dabei waren! Eine Lösung zu diesem Problem: bei mir bringen die Ufos das sammelgut mit (Steuerung, Navigation, Energiemeiler,...). Landete das Ufo dann alles, wurde es abgeschossen, dann wird die Anzahl z gewürfelt....

Noch ne kurze Bemerkung zu meinem Spiel: Ich mußte meiner Tochter Grundkenntnisse in Latex für deren Diplomarbeit vermitteln. Die Spielentwicklung musste daher ruhen - ab heute darf ich wieder ans Spiel denken.

Ein Gruß an alle von einem
Alten Knacker
verfasst am: 16.07.2011, 01:26
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: AlterKnacker
meiner Tochter Grundkenntnisse in Latex

Na wenn da mal niemand auf falsche Gedanken kommt ;)

Zitat: DareliusXurax

Ist es möglich, mittels eines Skriptes bestimmte "Teile" zu platzieren auf der Karte?

Zwar kann man die Items nicht auf den Boden platzieren, allerdings ist es möglich beim Kartenaufbau bestimmte Räume per Skript zu setzen. Man kann die Beute also zumindest grafisch umsetzen.
verfasst am: 17.07.2011, 01:08
Registrierdatum: 08.11.2006, 06:23

 Beiträge: 430
Zitat: Natter

Zwar kann man die Items nicht auf den Boden platzieren, allerdings ist es möglich beim Kartenaufbau bestimmte Räume per Skript zu setzen. Man kann die Beute also zumindest grafisch umsetzen.


Das st gut, auch wenn ich das mit dem Skripten noch weniger Verstehe nach dem Beispielskript

@AlterKnacker
Frage zum Verständnis:
1. Das zählt nicht als "Beute" eriner mission, sondern wird danach via "Skript" einfach in die Basis geworfen, richtig?
2. In der Funktion "Sammeln" sind nur 2 Variablen deklariert: Gegenstand und Anzahl unten sind aber drei Werte, wie muss ich das verstehen (ich verstehe es nicht *grübel*)

Für mich wäre es Interessant, daß die in de Bodeneinsatz-Auswertung dann aufgelistet werden (und notfalls mit bewertet...)

Damit ich die Skriptsprache verstehe, bräuchte ich vermutlich einen "Kurs" indem mir einer das ein paar Stunden (Tage) erklärt, aus dem Wiki und diesem Beispiel werde ich nämlich nicht schlau (hatte es im Wiki versucht aber kam nie was bei raus bei mir)

Trotzdem Danke erstmal.

...DX
verfasst am: 17.07.2011, 09:23
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Zitat: DareliusXurax
1. Das zählt nicht als "Beute" eriner mission, sondern wird danach via "Skript" einfach in die Basis geworfen, richtig?

stimmt, anders geht es momentan nicht
Zitat: DareliusXurax
2. In der Funktion "Sammeln" sind nur 2 Variablen deklariert: Gegenstand und Anzahl unten sind aber drei Werte, wie muss ich das verstehen (ich verstehe es nicht *grübel*)

es werden nur zwei Werte übergeben, aber es werden alle drei Werte definiert - die Basis wird nur nicht als Variable übergeben, weil immer die Hauptbasis als Ziel gesetzt wird.
Zitat: DareliusXurax
Damit ich die Skriptsprache verstehe, bräuchte ich vermutlich einen "Kurs" indem mir einer das ein paar Stunden (Tage) erklärt

Dafür gibt es das Tutorial zusätzlich zur Wiki-Referenz, aber um das durchzuarbeiten braucht man schon ein paar mehr Tage. X-Skript ist eine echte Programmiersprache (eine Vorstufe zu Delphi/Pascal um genau zu sein), das kriegt man nicht in ein paar Stunden gelehrt oder gelernt.
verfasst am: 17.07.2011, 09:58 · Edited by: Aropretim
Registrierdatum: 06.06.2011, 12:20

 Beiträge: 50
Zitat: DareliusXurax
Damit ich die Skriptsprache verstehe, bräuchte ich vermutlich einen "Kurs" indem mir einer das ein paar Stunden (Tage) erklärt, aus dem Wiki und diesem Beispiel werde ich nämlich nicht schlau (hatte es im Wiki versucht aber kam nie was bei raus bei mir)

Wenn sich jemand dazu bereit erklärt, würde ich gerne an diesem Kurs auch teilnehmen. :D

Aber um deine Fragen zu beantworten:
1) fast richtig - Die Gegenstände werden sofort bei der Generierung des Bodeneinsatzes (also bevor er überhaupt gespielt wurde) in die Basis gelegt. Damit man die Sachen erst nach dem erfolgreichen Bodeneinsatz bekommt, muss man die Prozedur Sammeln in einem registriertem Event (EVENT_ONGROUNDFINISHED) reinsetzen. Zur Beute zählt sie aber dennoch nicht.

2) Das wird wohl ein Fehler sein. Sammeln erwartet 2 Parameter (ItemID, z) und packt das dann in die Hauptbasis.
Unten werden aber 3 Parameter (BasisID, ItemID, z) übergeben und erzeugt somit einen Syntax Error. Die BasisID muss also unten rausgenommen werden.
Damit man die Items auf eine andere Basis bekommt, muss man anstelle von dieser Funktion:
base_api_getmainbase;
diese nehmen:
base_api_GetBaseByIndex(Index: LongInt);



Alle Angaben ohne Gewähr.


Edit: Oh, Dirk war schneller :D
verfasst am: 17.07.2011, 12:11
Registrierdatum: 22.08.2008, 15:51

 Beiträge: 403
Zitat: Aropretim
Wenn sich jemand dazu bereit erklärt, würde ich gerne an diesem Kurs auch teilnehmen. :D

Nachdem das der falsche Thread ist, schaut mal hier hin: http://www.xforce-online.de/forum/index.php?action=vthread&forum=13&to pic=3024 .

Hier ist noch das fehlende Script:
program GenerateGround;

//Wenn erfolgreich beendet, Skript beenden
procedure Ende(Sender:TObject);
var
  Einsatz : TGround;
begin
  Einsatz := TGround(Sender);
  if (Einsatz.Result = grWin) then mission_win;
  
  //Hier können weitere Befehle folgen, wenn noch etwas nach dem Einsatzende passieren soll
end;

procedure StartMission;
var
  Einsatz : TGround;
  wolf, tiger, leopard : TUnit;
  monsteranzahl, i : LongInt;
begin
  Einsatz := ground_api_GenerateGroundbyGroundModelID(MAP_ID_EINGEBEN);
  Einsatz.Position := earth_api_randomPoint(true); //Lässt den Einsatz auf einem beliebigen Punkt am Land erscheinen

  //Monster initialsieren
  wolf := alien_api_GetAlienByID(ALIEN_ID_EINGEBEN);
  tiger := alien_api_GetAlienByID(ALIEN_ID_EINGEBEN);
  leopard := alien_api_GetAlienByID(ALIEN_ID_EINGEBEN);
  monsteranzahl := 5; //soviele Monster soll es auf der Map geben
  
  //Monster nach wahrscheinlichkeit hinzufügen
  for i := 0 to monsteranzahl - 1 do begin
    case random(10) of
      0, 1: begin //20% Wahrscheinlichkeit für den Wolf
        Einsatz.AddAlien(wolf);
      end;
      2, 3, 4: begin //30% Wahrscheinlichkeit für den tiger
        Einsatz.AddAlien(wolf);
      end;
      5, 6, 7, 8, 9: begin //50% Wahrscheinlichkeit für den leopard
        Einsatz.AddAlien(leopard);
      end;
    end;
  end;
  Einsatz.Show; //lässt den Einsatz aufscheinen
  register_event(@Ende, Einsatz, EVENT_ONGROUNDFINISHED);
end;

begin
  MissionName := 'GenerateGround';
  MissionType := mzUser;
end.


verfasst am: 17.07.2011, 13:10
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Zitat: Aropretim
Wenn sich jemand dazu bereit erklärt, würde ich gerne an diesem Kurs auch teilnehmen.

Die Programmiergrundlagen kennst Du ja eindeutig schon - damit wäre es eher eine Frage, an welchen erweiterten Infos Du interesse hättest.

Für neuere und erweiterte Befehle haben wir kein ausführliches Tutorial mehr (hauptsächlich aus Zeitmangel, das zu schreiben), aber es gibt eine ganze Reihe dokumentierter Vorlage-Skripte (nicht nur die im Wiki, auch Beispieldateien im XForce-Verzeichnis und in verschiedenen Spielsätzen).

Wenn Du also gezielte Fragen hast, dann poste sie einfach in einem neuen Text im X-Skript-Forum. Wenn Du etwas suchst dürftest Du noch alte Themen wie Lennstar's Fragerunden finden, das haben früher auch andere gemacht und immer Antworten bekommen ;-)
verfasst am: 18.07.2011, 09:19
Registrierdatum: 31.01.2010, 20:05

 Beiträge: 122
Entschuldigung!
Habe den Programmfetzen aus einem größeren Zusammenhang herausgeschnitten - da ist wohl etwas auf der Strecke geblieben. Nun gut, hier haben andere den Fehler gemerkt und korrigiert. Danke

Zu Natter: Ich weiß nicht wie ein Elektriker einem Geologen bei einer wissenschaftlichen Arbeit helfen könnte - ich kann es nicht, ich kann nur die Darstellung, das Aussehen beeinflussen. Als Beispiel: Ich könnte deinen Haarschnitt, das Aussehen deines Kopfes beeinflussen, aber was in diesem Kopf drin ist, das könnte ich nur gering beeinflussen - quasi Korrekturlesen ;) . Solltest du aber einmal LaTeX brauchen, ich helfe gerne.
verfasst am: 18.07.2011, 09:46
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Zitat: AlterKnacker
LaTeX

In der Schreibweise ist das doch gleich viel eindeutiger ;)



Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.032 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003