Squall Posted February 20 Share Posted February 20 Hallo Liebe leute ich Brauch mal eure hilfe bei etwas Mein Logisches Zusamsetzen ist etwas beschränkt und ich suche Ideen und rat. Ich bin dabei einen Minecraftbot zu Programmieren der einen Minecraftserver verwalten und einstellen lässt über einen Chat (IRC) Wer nicht weis was IRC ist solle bitte googlen. Dieser soll gegebenfalls kleine Minecraftbefehle auch beinhalten wie !explore !craft !chop !fish !mine etc... Momentan habe ich eine Spielerdb die angelegt wird sobal man !neuer Spieler schreibt diese ist wie folgt aufgebaut: msl = Mirc Scripting Language: [AccountInfo] Name=Squall Leben=20 Hunger=20 LastPos= // Hier stehen dann die Startcords die Zufällig generiert werden.. InventarSlots=9 Passwort=[ausgeblendet] [InventarSlot1] Name=WOODEN_AXE Anzahl=1 [InventarSlot2] Name=WOODEN_HOE Anzahl=1 [InventarSlot3] Name=WOODEN_SHOVEL Anzahl=1 [InventarSlot4] Name=WOODEN_PICKAXE Anzahl=1 [InventarSlot5] Name=WOODEN_SWORD Anzahl=1 [InventarSlot6] Name=APPLE Anzahl=6 [InventarSlot7] Name=AIR Anzahl=0 [InventarSlot8] Name=AIR Anzahl=0 [InventarSlot9] Name=AIR Anzahl=0 Hier mal ein Einblick in den Code für LastPos: msl = Mirc Scripting Language: Alias LastPos { var %maxcords 3 var %cordgen 1 while (%cordgen <= %maxcords) { echo -ag Durchgang %cordgen var %x $rand(1,500) var %y $rand(1,64) var %z $rand(1,500) var %negate-x $rand(1,100) var %negate-y $rand(1,100) var %negate-z $rand(1,100) echo -ag Negate Changen x= %negate-x y= %negate-y z= %negate-z if (%negate-x <= 50) { var %xpos - $+ %x } if (%negate-y <= 50) { var %ypos - $+ %y } if (%negate-z <= 50) { var %zpos - $+ %z } if (%negate-x >= 50) { var %xpos %x } if (%negate-y >= 50) { var %ypos %y } if (%negate-z >= 50) { var %zpos %z } inc %cordgen } echo -ag LastPos sind: x= %xpos y= %ypos z= %zpos set %mcposition %xpos %ypos %zpos echo -ag ->>>> %mcposition } Nun zu meiner Denklücke: Beim !Explore Befehl wird zu Allererst die Letzte Position aus der Spielerdb gelesen und und in einer Variable gespeichert. Soweit so gut. Nun muss ich ja noch Zahlreiche Biomes Anlegen die eine Bestimmte größe haben diese werden dann in einer Biome.db gespeichert. Die Biome.db würde dann wahrscheinlich wie folgt aussehen: Code: [Info] Biomelist=Biomeid1.biomeid2.biomeid2 // usw etc. [Bimome1] Name= // Biomenname Desc= // Beschreibung der Biome Trees= // Welche Baumarten findet man dort Blocks= // Welche Blöcke Beinhaltet dieses Biom Size= // Die Größe des Bioms (Coordinaten x,y,z) // Hierbei bin ich mir unschlüssig Jetzt weis ich aber nicht wie ich gegebenfalls die Größe einer Biome definieren könnte abhängig vom LastPos alias Funktion: Er muss also irgendwie eine Distanz beinhalten die den Übergang definiert. Aber wie ? Hierbei hängt es gerade. Beispiel: LastPos hat folgende Cords= 239, 46, -173 (Spawnpunkt und gegebenfalls Startbiome zb (Plains) aus der Biomendb nur wie könnte man das Umsetzen? Beim !Explore werden nun Neue Coordinaten mit dem LastPos Alias generiert.. Aber wie kann man eine Entfernung von Biome1 zu Biome2 umsetzen Hoffe ihr versteht meine denklück. Vielen Dank! Bin für Tipps und Rat gerne dankbar Link to comment Share on other sites More sharing options...
Squall Posted February 20 Author Share Posted February 20 https://minecraft.fandom.com/de/wiki/Biom#:~:text=Die Biomgröße ist standardmäßig auf,dieser Wert auf 6 gesetzt. Auch hier finde ich nur folgende aussage: Die Biomgröße ist standardmäßig auf 4 gesetzt. In dem Welttyp Große Biome ist dieser Wert auf 6 gesetzt. ??? Ja aber was ist mit 4 bzw 6 Gemeint? Gibt es denn keine Genaueren Angaben was mir weiterhelfen könnte ? Link to comment Share on other sites More sharing options...
TileEntity Posted February 20 Share Posted February 20 Die Biomgrößen hängen mehr oder weniger vom Seed ab - es gibt keine einheitliche Größe bzw. Form Die Biomegröße bei der Custom World Generation ist einfach nur eine Variable - wobei 4 der Standardwert ist Mit dem Erhöhen/Senken des Wertes wird das Biom von der Fläche her immer verdoppelt bzw. halbiert Also du hast den Seed X, wo am Spawn ein Plains Biom ist - das hat eine Fläche von etwa 20 Chunks Änderst du den Wert von 4 auf 5, ist das Biom mit diesem Seed dann etwa 40 Chunks groß - änderst du den Wert von 4 auf 6, dann sind es etwa 80 Chunks usw. Also bei deinem Script/bei deinem Umsetzungsplan sollte der Seed der Ansatzpunkt sein, nicht die Biomegröße, da die je nach Seed variiert Der Seed ist quasi die Konstante Link to comment Share on other sites More sharing options...
Squall Posted February 21 Author Share Posted February 21 vor 2 Stunden schrieb Bedrock: Die Biomgrößen hängen mehr oder weniger vom Seed ab - es gibt keine einheitliche Größe bzw. Form Die Biomegröße bei der Custom World Generation ist einfach nur eine Variable - wobei 4 der Standardwert ist Mit dem Erhöhen/Senken des Wertes wird das Biom von der Fläche her immer verdoppelt bzw. halbiert Also du hast den Seed X, wo am Spawn ein Plains Biom ist - das hat eine Fläche von etwa 20 Chunks Änderst du den Wert von 4 auf 5, ist das Biom mit diesem Seed dann etwa 40 Chunks groß - änderst du den Wert von 4 auf 6, dann sind es etwa 80 Chunks usw. Also bei deinem Script/bei deinem Umsetzungsplan sollte der Seed der Ansatzpunkt sein, nicht die Biomegröße, da die je nach Seed variiert Der Seed ist quasi die Konstante Der ansatz mit den 20 Chunks ist keine Schlechte idee kann ich gegebenfalls verwenden das andere mit dem Seed wird kompliziert da ich denke das jeder seed eine Komplette Welt neu generiert. Vielleicht hab ich mein Beispiel falsch erklärt ich versuche es gerne nochmal um ungewissheit auszuschliesen. Ein erneuter Versuch: Im Ersten Post hatte ich erwähnt das ich Folgende Daten bzw Dateien habe: Spieler.db - Infos über Account LastPos Inventar Hunger und Leben etc Biome.db - Datenbank mit allen Biomen Momentan passiert bei der eingabe !Neuer Spieler folgendes: Die Spielerdb wird aus einem Vorgegeben Template geschrieben Das Passwort wird generiert und als Sha1 bzw Hashwert in der DB abgespeichert Wird die Anfangsposition durch das Alias LastPos generiert Die Generierung der Inventarslots und befüllung mit den FirstTools Diese Prozedur funktioniert schonmal ohne Probleme Bei dem !explore befehl kann man nun mittels !explore N/E/S/W/NE/SE/SW/NW Sich jeweils in die Angegebene Himmelsrichtung anhand der Hungerleiste in Blöcken fortbewegen. (z.b Ist der Hunger auf 20 so und man gibt ein !explore N - So bewegt sich der Spieler 20 Blöcke nach Norden. In der Spieler,db steht zb als LastPos 283 32 -492) Hierbei muss jetzt überlegt werden welche Zahl wird um 20 blöcke erhöht. die 1 ist die x cord 2. ist y 3 ist z Es wird also geprüft ob die Neuerstellten Coords irgendwo in der Biome DB zufinden sind. Falls die Neuen Cooords noch nicht einen Gewissen bereich abdecken so Bleibt es noch beim Anfangsbiome Nun zu der BiomeDB aufbau ist wie gesagt oben. Was hier fehlt ist eine Distanzfunktion die Bestimmt ab wann das Nächste Biome beginnt. Beispiel LastPos=283, 49, -194 NewCords durch LastPos alias 283, 49, -294 In der BiomeDB haben wir folgendes: [Info] Biomelist=plains.desert.forest // usw etc. [plains] Name=plains Desc=Die Ebenen mit kleinen Hügeln und Blumenwiesen Trees=oak_tree.spruce_tree.birch_tree Blocks=grass_block.dirt.stone.iron_ore.coal_ore.etc Size= // Die Größe des Bioms (Coordinaten x,y,z) // Hierbei bin ich mir unschlüssig [desert] Name=desert Desc=Eine Karge Wüste aus sand und Toten Büschen sowie Kakteen Trees=cactus Blocks=sandblock,sandstone, Size= // Die Größe des Bioms (Coordinaten x,y,z) // Hierbei bin ich mir unschlüssig Ich brauche hier also ein Entfernungsmesser der besagt ab coord xyz beginnt desert Es fehlt also die Übergangserkennung. Versteht ihr? Link to comment Share on other sites More sharing options...
Squall Posted April 1 Author Share Posted April 1 #push Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now