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 —› Karten-Skript: Village

Autor Mitteilung
verfasst am: 02.02.2009, 22:38
Registrierdatum: 08.11.2006, 06:23

 Beiträge: 433
Nach einigem experimentieren habe ich dieses Kartenskript für das "village" entwickelt.

Das eignet sich, wenn man sehr viele Einsätze hat, sehr gut, damit man nicht endlos suchen muss und die Übersicht verliert.

Bei einem Spielsatz, wo man sehr wenige Kämpfe hat, ist das natürlich weniger spannend.

program YourMapScript;

procedure CalculateMapSize(Units: Integer);

begin
  MapHeight:=2;
  MapHeight:=2;

      
  if Units<61 then
      MapHeight:=4
  if Units<51 then
      MapHeight:=3
  if Units<46 then
      MapHeight:=4
  if Units<41 then
      MapHeight:=3
  if Units<36 then
      MapHeight:=2
  if Units<31 then
      MapHeight:=3
  if Units<26 then
      MapHeight:=2
  if Units<21 then
      MapHeight:=3
  if Units<16 then
      MapHeight:=2


  if Units<61 then
      MapWidth:=5
  if Units<51 then
      MapWidth:=6
  if Units<46 then
      MapWidth:=4
  if Units<41 then
      MapWidth:=5
  if Units<36 then
      MapWidth:=8
  if Units<31 then
      MapWidth:=4
  if Units<25 then
      MapWidth:=6
  if Units<21 then
      MapWidth:=3
  if Units<16 then
      MapWidth:=4
  if Units<11 then
      MapWidth:=3
  if Units<6 then
      MapWidth:=2

end;

procedure GenerateMap;
var
  i,X,Y       : Integer;
  RowOK       : Boolean;
  YTemp       : Integer;
begin
  // Horizontale Strasse erstellen
  for i:=0 to round(GetMapWidth/10) do
  begin
    X := random(GetMapWidth);
    if (GetRoomAtPos(X-1,1) = '') and (GetRoomAtPos(X+1,1) = '') then
    begin
      for y:=0 to GetMapHeight-1 do
        CopyRoomToPos(X,Y,'Street_Horizontal_*');
    end
  end;

  // Vertikale Strasse erstellen
  for i:=0 to GetMapHeight/10 do
  begin
    Y := random(GetMapHeight);
    RowOK:=true;
    for YTemp:=Y-1 to Y+1 do
    begin
      if (GetRoomAtPos(0,YTemp)='Street_Vertical_*') or (GetRoomAtPos(0,YTemp)='Street_Crossing_*') then
        RowOK:=false;
    end;

    if RowOK then
    begin
      for X:=0 to GetMapWidth-1 do
      begin
        if GetRoomAtPos(X,Y) = 'Street_Horizontal_*' then
          CopyRoomToPos(X,Y,'Street_Crossing_*')
        else
          CopyRoomToPos(X,Y,'Street_Vertical_*');
      end;
    end;
  end;

  FillFreeRooms('House_*');
end;

begin
  // Hier darf kein weiterer Code folgen
end.


Wuasi sind immer 1-5 Aliens pro "Haus" und nur soviele Häuser, wie Aliens


...DX
verfasst am: 02.02.2009, 22:47
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Du kannst übrigens mit begin/end auch if-Blöcke zusammenfassen, z.B.:
if Units<61 then
  begin
    MapHeight:=4;
    MapWidth:=5;
  end;



Außerdem solltest Du Dir angewöhnen Deine Befehle korrekt abzuschließen - hier wird zwar keine Weltraumsonde verloren gehen, aber der NASA ist das schon passiert. Irgendeine der Sonden vor ein paar Jahrzehnten ist nämlich genau deshalb ausgefallen, weil jemand bei der Programmierung ein einziges Abschluss-Semikolon vergessen hat...
Das war ein teurer Programmierfehler...
verfasst am: 02.02.2009, 23:25 · Edited by: DareliusXurax
Registrierdatum: 08.11.2006, 06:23

 Beiträge: 433
Was meinst du mit abschließen?

Da ich keine Ahnung von der Skriptsprache habe, rate ich immer nur herum...


Ist das dann so "besser"?
program YourMapScript;

procedure CalculateMapSize(Units: Integer);

begin
  MapHeight:=2;
  MapHeight:=2;
      
  if Units<61 then
      begin
        MapHeight:=4;
        MapWidth:=5;
      end;
  if Units<51 then
      begin
        MapHeight:=3;
        MapWidth:=6;
      end;
  if Units<46 then
      begin
        MapHeight:=4;
        MapWidth:=4;
      end;
  if Units<41 then
      begin
        MapHeight:=3;
        MapWidth:=5;
      end;
  if Units<36 then
      begin
        MapHeight:=2;
        MapWidth:=8;
      end;
  if Units<31 then
      begin
        MapHeight:=3;
        MapWidth:=45;
      end;
  if Units<26 then
      begin
        MapHeight:=2;
        MapWidth:=6;
      end;
  if Units<21 then
      begin
        MapHeight:=3;
        MapWidth:=3;
      end;
  if Units<16 then
      begin
        MapHeight:=2;
        MapWidth:=4;
      end;
  if Units<11 then
      MapWidth:=3
  if Units<6 then
      MapWidth:=2

end;

procedure GenerateMap;
var
  i,X,Y       : Integer;
  RowOK       : Boolean;
  YTemp       : Integer;
begin
  // Horizontale Strasse erstellen
  for i:=0 to round(GetMapWidth/10) do
  begin
    X := random(GetMapWidth);
    if (GetRoomAtPos(X-1,1) = '') and (GetRoomAtPos(X+1,1) = '') then
    begin
      for y:=0 to GetMapHeight-1 do
        CopyRoomToPos(X,Y,'Street_Horizontal_*');
    end
  end;

  // Vertikale Strasse erstellen
  for i:=0 to GetMapHeight/10 do
  begin
    Y := random(GetMapHeight);
    RowOK:=true;
    for YTemp:=Y-1 to Y+1 do
    begin
      if (GetRoomAtPos(0,YTemp)='Street_Vertical_*') or (GetRoomAtPos(0,YTemp)='Street_Crossing_*') then
        RowOK:=false;
    end;

    if RowOK then
    begin
      for X:=0 to GetMapWidth-1 do
      begin
        if GetRoomAtPos(X,Y) = 'Street_Horizontal_*' then
          CopyRoomToPos(X,Y,'Street_Crossing_*')
        else
          CopyRoomToPos(X,Y,'Street_Vertical_*');
      end;
    end;
  end;

  FillFreeRooms('House_*');
end;

begin
  // Hier darf kein weiterer Code folgen
end.




...DX
verfasst am: 03.02.2009, 00:37 · Edited by: Nedar
Registrierdatum: 23.09.2008, 00:25

 Beiträge: 67
Also rumraten kann zwar bei Scripts oder bei Programmieren allgemein eine Weile funktionieren aber irgendwann sollte man auch verstehen was man macht. *grins* Hab leider zur Zeit eine Menge Klausuren, aber ab nächsten Dienstag könnte ich dir theoretisch etwas erklären, wenn du nicht weißt wie es funktioniert. (Kenn mich zwar mit Kartenscripts speziell wenig aus, dafür aber mehr mit Programmieren allgemein)
verfasst am: 03.02.2009, 06:45
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Zitat: DareliusXurax
Was meinst du mit abschließen?

Am Ende jedes Befehls muss ein Semikolon stehen - allerdings ist nicht jeder Befehl in einer Zeile beendet.
D.h. Du darfst auch nicht hingehen und ans Ende jeder Zeile ein Semikolon setzen, Du musst genau wissen wo es gesetzt werden muss (90% aller Fälle) und wo nicht (10% aller Fälle).
Zitat: DareliusXurax
Da ich keine Ahnung von der Skriptsprache habe, rate ich immer nur herum...

Deshalb solltest Du Dir das Tutorial dazu anschauen, sonst wird früher oder später alles in den Skripten durcheinander geraten.

Es geht auch nicht darum bestimmte Skriptbefehle auswendig zu kennen, Du musst stattdessen wissen wie die Struktur der Sprache ist - die genauen Befehle merke ich mir auch nie, die kann man jederzeit im Objektbrowser des Skripteditors nachschlagen.
verfasst am: 03.02.2009, 12:08
Registrierdatum: 08.11.2006, 06:23

 Beiträge: 433
Objektbrowser? Skripteditor?

Gibt das dzu diesem komischen Skripteditor eigentlich eine Hilfe?


...DX
verfasst am: 03.02.2009, 12:43
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Nein - aber das sollte auch nicht nötig sein.

Die Bedienung sollte mehr oder weniger selbsterklärend sein (das ist ja im wesentlichen nur ein Texteditor mit Zusatzfunktionen), und der Objektbrowser ist das Fenster links, in dem alle Funktionen, Typen und Konstanten aufgelistet sind die im Skript zur Verfügung stehen.

Spätestens wenn man das X-Skript-Tutorial durchgearbeitet hat sollte man genug Übung mit dem Skripteditor haben um damit klarzukommen.
verfasst am: 23.11.2023, 06:02
Registrierdatum: 22.11.2023, 07:10

 Beiträge: 69718
РоÑÑ353.9BettCHAPElleКлимИванPlusÑлужмузыручкБордÐкÑеВороИллюRevaClasManoZyliXVIIXIIIXVIISoph
CounDaviPariДавианÑаSchaEugeUntiFantКарокантFranSoulGlazAlwaÐлекSidnобраавтоSambBrazRichGill
ÑертвыжиГаÑтМинеХарбJeweWillЗамÑплаÑСодеSergMODOотрÑкарбПетрStevкомÑавтоКузнПрорMariÑертXVII
КарыCotoSelatravТрубÐчкаCircавтопазз33,5БолдСогрСодеMariКулиSidnÑтихчемпPeteDjamInteСклÑBrad
ОзерЩербВиноZoneZoneZoneZoneChetZoneRondZoneZoneZoneZoneMiyoкадрZoneZoneZoneChetСьюзZoneZone
ZoneроÑпÑортмеÑÑGermИллюElecRoyaHowaMikeперÑÐикиобла6114BossатакVanbкора<
verfasst am: 02.12.2023, 21:08
Registrierdatum: 22.11.2023, 07:10

 Beiträge: 69718
audiobookkeeper.rucottagenet.rueyesvision.rueyesvisions.comfactoringfee.rufilmzones.rugadwall.rugaffertape.rugageboard.rugagrule.rugallduct.rugalvanometric.rugangforeman.rugangwayplatform.rugarbagechute.rugardeningleave.rugascautery.rugashbucket.rugasreturn.rugatedsweep.rugaugemodel.rugaussianfilter.rugearpitchdiameter.ru
geartreating.rugeneralizedanalysis.rugeneralprovisions.rugeophysicalprobe.rugeriatricnurse.rugetintoaflap.rugetthebounce.ruhabeascorpus.ruhabituate.ruhackedbolt.ruhackworker.ruhadronicannihilation.ruhaemagglutinin.ruhailsquall.ruhairysphere.ruhalforderfringe.ruhalfsiblings.ruhallofresidence.ruhaltstate.ruhandcoding.ruhandportedhead.ruhandradar.ruhandsfreetelephone.ru
hangonpart.ruhaphazardwinding.ruhardalloyteeth.ruhardasiron.ruhardenedconcrete.ruharmonicinteraction.ruhartlaubgoose.ruhatchholddown.ruhaveafinetime.ruhazardousatmosphere.ruheadregulator.ruheartofgold.ruheatageingresistance.ruheatinggas.ruheavydutymetalcutting.rujacketedwall.rujapanesecedar.rujibtypecrane.rujobabandonment.rujobstress.rujogformation.rujointcapsule.rujointsealingmaterial.ru
journallubricator.rujuicecatcher.rujunctionofchannels.rujusticiablehomicide.rujuxtapositiontwin.rukaposidisease.rukeepagoodoffing.rukeepsmthinhand.rukentishglory.rukerbweight.rukerrrotation.rukeymanassurance.rukeyserum.rukickplate.rukillthefattedcalf.rukilowattsecond.rukingweakfish.rukinozones.rukleinbottle.rukneejoint.ruknifesethouse.ruknockonatom.ruknowledgestate.ru
kondoferromagnet.rulabeledgraph.rulaborracket.rulabourearnings.rulabourleasing.rulaburnumtree.rulacingcourse.rulacrimalpoint.rulactogenicfactor.rulacunarycoefficient.ruladletreatediron.rulaggingload.rulaissezaller.rulambdatransition.rulaminatedmaterial.rulammasshoot.rulamphouse.rulancecorporal.rulancingdie.rulandingdoor.rulandmarksensor.rulandreform.rulanduseratio.ru
languagelaboratory.rulargeheart.rulasercalibration.rulaserlens.rulaserpulse.rulaterevent.rulatrinesergeant.rulayabout.ruleadcoating.ruleadingfirm.rulearningcurve.ruleaveword.rumachinesensible.rumagneticequator.rumagnetotelluricfield.rumailinghouse.rumajorconcern.rumammasdarling.ru



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

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