Banner left   Banner center   Banner right

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

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

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› Spieler helfen Spielern —› Basis- ID

Autor Mitteilung
Brass
verfasst am: 27.11.2007, 18:56
Hi, ich bin gerade an einem Script und komme nicht weiter!

Ich will mir ein paar items machen und sie dann zu meiner basis schicken lassen.
Das script zeigt keine fehler an, aber ich bekomme die items trotzdem nicht.

Mein verdacht: Die Basis- ID ist falsch.
ich hab da einfach mal 1 eingegeben und da gehts nicht (will auf die hauptbasis schicken lassen)

bin ich dafür zu doof oder steht die hauptbasis id nirgens?

hoffe auf rückmeldung

mfg. Brass
verfasst am: 27.11.2007, 19:02
Registrierdatum: 27.06.2007, 12:16

 Beiträge: 658
Kannst du das Script hier reinposten? Das würde nämlich die Fehlersuche erleichtern. Es muss nämlich nicht unbedingt an der Basis ID liegen.
verfasst am: 27.11.2007, 19:15
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Besser als eine feste Zahl wäre in dem Fall basis_api_GetMainBase an der Stelle zu verwenden. Wenns damit nicht klappt, liegt der Fehler woanders.
verfasst am: 27.11.2007, 19:16
Registrierdatum: 27.06.2007, 12:16

 Beiträge: 658
...oder so ;)
verfasst am: 27.11.2007, 20:47
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Also erstmal würde ich sagen der Fehler liegt an der gewählten Zahl ;-)

Ich nehme nämlich an das Du nicht die ID meinst, sondern den Index der Basis - das ist nicht dasselbe, und die Basisbefehle arbeiten mit Indizes und nicht mit IDs.
(Der Unterschied wird bei den UFO-Modellen deutlich, da gibt es Befehle sowohl für den Index alsauch für die IDs.

Bei einem Index beginnt die Zählung aber mit 0 und nicht mit 1, d.h. die Hauptbasis ist die 0-te Basis...

Noch ein Tip mit Items:
Du kannst der Basis momentan nur Gegenstände schicken, die in der Lagerliste bereits angezeigt werden. Versuchst Du neue Gegenstände zu schicken, dann tauchen diese nicht im Lager auf...
verfasst am: 28.11.2007, 20:06
Registrierdatum: 27.11.2007, 18:57

 Beiträge: 38
danke, dass gibt mir neuen stoff zum knobeln^^
verfasst am: 28.11.2007, 20:10
Registrierdatum: 27.06.2007, 12:16

 Beiträge: 658
Zitat: DirkF
Du kannst der Basis momentan nur Gegenstände schicken, die in der Lagerliste bereits angezeigt werden. Versuchst Du neue Gegenstände zu schicken, dann tauchen diese nicht im Lager auf...

Das habe ich auch gemerkt :D
verfasst am: 28.11.2007, 20:12
Registrierdatum: 27.11.2007, 18:57

 Beiträge: 38
das is das Stück (im mom) hab n bisschen beschrieben..
program Munipacket1;
var
  Tlageritem  : Tobject; //das ist eines meiner ersten scripts, bin also noch unerfahren(denk ich sieht man) könnt ja verbesserungen posten!
  //am ende will ich mehrere munitionsarten als ein Packet als überaschungsevent verschicken.


procedure StartMission;
begin
  game_api_messagebox('Einige Länder haben ein paar Munitionsvorräte in ihr Lager transferieren lassen.');

end;
begin
 lager_api_GetItem(1);
 lager_api_PutItems(0,1 ,500 ); // soo 0 is die hauptbasis 1 ist die Item ID in meinem Spielsatz und 500 die zahl(machich nur zum testen ob das script wirkt, dass mans gleich sieht)

end.;
end;

begin
  // Hier darf kein weiterer Code folgen
  // Missionsname festlegen
  MissionName := '7,26x39mm;

  // Missionstype festlegen 
  //   mzUFOs = alle mit register_ufo registrierten UFOs müssen zerstört werden
  //   mzUser = müssen muss mit Mission_Win oder Mission_loose abgeschlossen werden
  MissionType := mzUser;
end.


verfasst am: 28.11.2007, 20:15
Registrierdatum: 27.06.2007, 12:16

 Beiträge: 658
Hey, genau so ein Script würde ich brauchen :D
verfasst am: 28.11.2007, 20:17
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Als Index den Wert 0 zu nehmen, ist nicht ganz ungefährlich. Es kann durchaus sein, dass sich da intern mal was ändert, und dann findet man den Fehler im Skript nicht. Sicherer ist es wirklich, den Index der Hauptbasis abzufragen.
verfasst am: 28.11.2007, 21:09
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Ich nehme doch sehr stark an, das die "1" als ItemID nur als Platzhalter gemeint ist, oder?
Denn es ist unmöglich das Du jemals eine ID=1 bei der Ausrüstung Deines Spielsatzes haben wirst - die niedrigste ID liegt bei 1000, üblich sind IDs im Bereich der Millionen oder Millarden...

Und außerdem wird dieses Skript niemals funktionieren, denn für den lager_api_putitem-Befehl brauchst Du die ID der Basis und NICHT den Index der Basis.
Und eine ID=0 zu erhalten ist erstmal genauso unmöglich wie ID=1...

Nocheinmal:
Der Index ist etwas anderes als die ID, und Du musst bei den Befehlen in der Referenz ganz genau darauf achten, wo ein Index steht und wo eine ID steht. Die beiden Werte dürfen nicht vertauscht werden, das sind zwei komplett unterschiedliche Sachen.

Du solltest übrigens bevorzugt die IDs einsetzen, da diese eine bessere kontrolle ermöglichen und für die meisten Sachen im Spielsatzeditor ablesbar sind.

Die Basis-ID musst Du aus einer Basisvariablen abfragen bzw. diese ID direkt in dem Befehl einsetzen, z.B.

var 
  Basis:TBasis;
begin
  Basis:=basis_api_GetMainBase;
  lager_api_PutItems(Basis.ID,ItemID,500);

verfasst am: 28.11.2007, 21:44 · Edited by: Brass
Registrierdatum: 27.11.2007, 18:57

 Beiträge: 38
hmm ok ich werds mal probieren

habs umgeändert und werds nun mal ausprobieren, vielen dank schonmal :)

bei gelegenheit mal ne OFFtopic frage,
hab ne einleitung für meinen Spielsatz geschrieben und hätte gerne ein Feedback wo soll ich des reinschreiben?
verfasst am: 28.11.2007, 21:53
Registrierdatum: 27.11.2007, 18:57

 Beiträge: 38
:) es Funktioniert!
mein erstes, einigermaßen komplexes script^^
thx für die hilfe!
ich kann des fertige ja mal posten, des kann man dann doch bestimmt als vorlage verwenden oder?
verfasst am: 28.11.2007, 22:02
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Zitat: Brass
hab ne einleitung für meinen Spielsatz geschrieben und hätte gerne ein Feedback wo soll ich des reinschreiben

Entweder
http://www.xforce-online.de/forum/index.php?action=vtopic&forum=18
oder
Addons.Inhalt

In beiden Fällen eine neue Diskussion oder eine neue Seite anlegen, aber das sind die beiden Bereiche für Fanmade-Spielsätze.
Zitat: Brass
mein erstes, einigermaßen komplexes script^^
thx für die hilfe!
ich kann des fertige ja mal posten, des kann man dann doch bestimmt als vorlage verwenden

Hier eine neue Seite dafür einfügen, genauso wie die schon bestehenden Skriptvorlagen:
XSkriptTemplates.Skripteklein
verfasst am: 28.11.2007, 22:37
Registrierdatum: 27.11.2007, 18:57

 Beiträge: 38
hab jetzt mal den text reingetan
und das script hab ich auf
[url=]http://doc.xforce-online.de/ger_pages/XSkriptTemplates/Munitions versorgung.html#preview[/url]
getan, hoffe des passt so
verfasst am: 28.11.2007, 22:57
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Zitat: Brass
getan, hoffe des passt so

etwas schwer lesbar, da nicht als Sourcecode formatiert - guck einfach mal wie das BOFH mit seinem Skript gemacht hat und korrigiere das bei Gelegenheit.
Dann Bitte auch Deinen Namen als Teil des Seitennamens einsetzen, d.h. BRASSMunitionsversorgung oder so - wenn jemand anders ein ähnliches Skript als Variante posten will, kommt man ohne namentliche Zuordnung durcheinander.


Zum Skript selber:
Das ist so nicht korrekt lauffähig, weil Du ein paar zuviel an begin/end gepostet hast, insbesondere eines das fälschlicherweise das Programm mit einem Punkt abschließt, bevor alles abgearbeitet ist.
Begin/end umschließt einen untergeordneten Block, d.h. vor dem begin muss immer ein Befehl oder eine Funktionsidentifikation stehen.

Dementsprechend sollte eine Abfolge end; begin lediglich nach der letzten Funktion und vor dem Definitionsblock mit dem Programmnamen vorkommen, nirgendwo sonst. Du hast aber zwei solche Abfolgen statt einer im Skript.

Und als letztes ist die Zuordnung mzUser für dieses Skript ungewöhnlich. mzUser bedeutet ja, das das Skript bis zu einem Endebefehl weiterlaufen und im Speicher verbleiben soll - da Du keinen solchen Befehl hast (und ihn auch nicht benötigst), blockiert dieses Skript nach dem Start unnötig Speicherplatz.
Besser den Typ weglassen, dann läuft das Skript einmal und löscht sich sofort.
verfasst am: 29.11.2007, 13:47
Registrierdatum: 27.11.2007, 18:57

 Beiträge: 38
ok, werd ich bei gelegenheit versuchen zu ändern.
ich gebs zu, des mit den codes hab ich an der Seite nicht so wirklich geblickt, könnte aber auch daran liegen dass ich keine Zeit mehr hatte und es einfach nurnoch fertig sehn wollte.
verfasst am: 29.11.2007, 14:29
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Du kannst ja auch versuchen das Skript so weiterzuentwickeln das es ohne Änderung auf jedem beliebigen Spielsatz läuft.
Das ist zwar für diesen Zweck nicht zwangsweise nötig, aber was Du dabei lernst kann bei vielen anderen Skripten helfen.

Hier hast Du dazu einen Ansatz:
1.) Alle exitierenden LagerItems in einer Schleife prüfen
2.) Wenn ein Lageritem die gewünschten Bedingungen erfüllt (ist Munition, ist kein Alien-Artefakt, usw), dann die Zuteilung mit dem put-Befehl für dieses Item aufrufen
verfasst am: 29.11.2007, 15:31 · Edited by: BOFH
Registrierdatum: 30.10.2007, 22:33

 Beiträge: 73
@BRASS
Ich hab mir dein Skript mal angesehen, du solltest auf jeden Fall die ersten drei Kapitel des Tutorials durcharbeiten und ein paar der Probeaufgaben ausprobieren.

Die Tutorials haben mir am anfang auch sehr geholfen den Programaufbau und die Syntax von X-Script zu verstehen.

Versteh das nicht falsch, soll nur ein gut gemeinter Rat sein!
verfasst am: 30.11.2007, 21:09
Registrierdatum: 27.11.2007, 18:57

 Beiträge: 38
@BOFH
kein prob. hab das totorial schon 2mal durchgearbeitet.
wird vllt noch 3mal brauchen bis ich selbstständig dahintersteigt, aber für direkte Fragen wies hier eine war is ein Forumspost (find ich) effektiver, vorallem da nich alles genau beschrieben ist



:: Benutzer
» Name » Passwort
:: Deine Antwort
User: Passwd:
Bold Style  Italic Style  Underlined Style  bug linking  Preformatted  Code  Image Link  Insert URL  Email Link  Abschalten * Hilfe
Hilfe
 

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