Mehr

Wie gebe ich ein CRS für eine fiktive Spielkarte in QGIS an?


Ich bin kurz davor, ein Steampunk-RPG-Spiel namens The Iron Realm zu spielen, das eine fiktive Weltkarte verwendet. Ich habe vor kurzem mit der Verwendung von QGIS v1.7 begonnen und habe keine wirklichen Erfahrungen mit GIS-Systemen. Ich habe die Karte als Raster-Layer in ein neues QGIS-Projekt importiert und daraus einige Vektor-Layer erstellt, darunter einen Polygon-Layer für die Regionen, einen Punkt-Layer für die Städte und einen Linien-Layer für einige hinzugefügte Bahngleise und Straßen.

Der Spielleiter hat der Spielkarte gerade eine Skala und einige Lat/Long-Informationen hinzugefügt:

Ich gehe davon aus, dass ich jetzt ein CRS zu meinem QGIS-Projekt hinzufügen kann. Ich habe keine Ahnung, wie das geht und würde mich sehr über Hilfe freuen, damit ich mein QGIS-Projekt effektiv mit dem Spiel nutzen kann. Ich gehe davon aus, dass ich ein benutzerdefiniertes CRS erstellen muss, aber ich weiß nicht, wie das geht. Ich denke, es hat etwas mit proj.4 zu tun, aber ich habe keine Ahnung, wie man es benutzt.


Bei der Karte gibt es einiges zu beachten. Erstens sind die Breitengrade gleich weit voneinander entfernt, was bedeutet, dass sie sich in einer äquirektangulären Projektion befinden. Das Ergebnis davon ist, dass weder Entfernungen noch Winkel beibehalten werden, was es für die Navigation nicht so nützlich macht. Der zweite Punkt ist, dass es einen Maßstabsbalken in linearen Einheiten hat. Da die Entfernungen am Boden auf dieser Karte je nach Breitengrad variieren, ist der Maßstab meist bedeutungslos.

Da es sich jedoch um eine Spielwelt handelt, können Sie nach Herzenslust damit herumspielen. Das erste, was Sie tun können, ist zu entscheiden, wie groß eine Welt ist, indem Sie davon ausgehen, dass die Maßstabsleiste horizontale Entfernungen am Äquator darstellt. Es scheint ungefähr 32 Grad über 1000 km zu betragen, was einem äquatorialen Umfang von 11.250.000 m und einem Radius von 1790493,11 m entspricht, was ungefähr der Größe des Mondes entspricht. Als nächstes ist die Erde ungefähr ein Ellipsoid, das an den Polen flacher ist. Für die Erde beträgt das umgekehrte Verhältnis von Pol-zu-Pol-Radius und Äquatorial etwa 298,25, der Mond ist bei 800 fast kugelförmig.

Ausgestattet mit diesen Informationen können Sie Ihre proj4-Definition erstellen:

+proj=eqc +a=1790493.11 +lat_ts=0 +lon_0=0 +rf=800 +units=m +no_defs

+lat_tsist nicht unbedingt erforderlich, aber als Referenz nützlich. Es ist die "Breite des wahren Maßstabs", auf der wir unseren äquatorialen Umfang basieren.+lon_0stellt den Längengrad des Mittelpunkts der Karte dar, der in diesem Fall der Nullmeridian ist.

Beim Öffnen von QGIS und Auswahl von Custom CRS… habe ich unsere Parameter in das Testfeld eingegeben und Norden 0, Osten 32 eingegeben, was mir 1.000.000 m ergibt, was unsere 1.000 km sind, die wir für so viele Grad am Äquator erwartet hatten. Machen Sie also weiter und erstellen Sie Ihr eigenes CRS mit einem einprägsamen Namen.

Jetzt müssen Sie nur noch die Karte georeferenzieren, indem Sie das Georeferenzierungs-Plugin verwenden und drei bekannte Punkte auswählen. Als ich es tat, legte ich einen auf den Äquator / Nullmeridian, einen 32 Grad (ish) Ost auf den Äquator, einen 32 Grad (ish) Nord auf den Nullmeridian. Beide letzteren Punkte haben x- und y-Werte von jeweils 1.000.000.

Und das ist es! Wie ich jedoch bereits sagte, werden Ihre Ost-West-Entfernungen in dieser Projektion außerhalb des Äquators immer ungenauer, so dass es sich lohnen könnte, ein paar mehr "lokale" Projektionen für verschiedene Länder sowie einen Lat/Long-CRS zu erstellen, aber das wird in dieser Phase etwas tiefgreifend. Es kann hilfreich sein, sich über Kartenprojektionen zu informieren (einfach googeln) und den Wikipedia-Eintrag für Kartenprojektionen zu lesen, der Ihnen eine bessere Vorstellung davon geben sollte, wie alles funktioniert.

Übrigens wird ein Long/Lat CRS für Ihre Welt einfach sein:

+proj=lonlat +a=1790493.11 +rf=800 +no_defs

Wenn er dir Lat-Longs gegeben hat (je nach Format) gibt es nur zwei Standorte, die weltweit sein könnten. Wenn Sie - Symbol vor der Längsachse haben, gibt es nur eine Stelle.

Auf den zweiten Blick könnte es sein, dass das Spiel ein viel kleineres Ellipsoid hat als unseres. Die ganze Welt in kürzerer Zeit umschiffbar machen. In diesem Fall können Sie einfach die Ellipsoidhöhe von wgs84 ändern.


Wie übergebe ich eine externe Variable an Batch-Apex?

Ich habe eine Map-Variable, die ich an eine Batch-Klasse übergeben möchte. Diese Variable wurde in einer anderen Batch-Klasse erstellt und gefüllt (weshalb ich sie nicht einfach in der Start()-Methode der zweiten Batch-Klasse erstellen kann).

Die erste Batch-Klasse implementiert Database.Stateful , um die Werte zu erhalten, die ich in der Map-Variablen speichere. Dann rufe ich in der Finish()-Methode die zweite Batch-Klasse auf und übergebe die map-Variable wie folgt:

Das Problem, auf das ich stoße, ist, dass ich die zweite Batch-Klasse nicht erkennen kann, dass ich diese Map an sie übergeben habe. Ich habe versucht, die Zuweisung this.variable in der Konstruktorklasse zu verwenden, ohne sich über ihren Zweck klar zu werden, ohne Erfolg. Hier ist eine Vorstellung davon, wie diese zweite Batch-Klasse jetzt aussieht:

In diesem Format erkennt die Batch-Klasse mapVariable nicht (sagt, dass sie nicht existiert). Ich habe auch versucht, diese Batch-Klasse zustandsorientiert zu machen und die mapVariable separat vor der start()-Methode zu deklarieren, ähnlich der Abfragevariablen, die meiner Meinung nach für die Zuweisung this.mapVariable erforderlich sein könnte.

Wie kann ich dafür sorgen, dass diese Batch-Klasse die Zuordnungsvariable verwenden kann, die ich versuche, an sie zu übergeben? Vielen Dank für Ihre Hilfe und frohe Weihnachten/frohe Feiertage!

Also habe ich es zum Laufen gebracht (oder zumindest fehlerfrei gespeichert), indem ich die map-Variable vor der start()-Methode deklariert und ihr dann die übergebene Variable wie folgt zugewiesen habe:

Das Interessante ist, dass es nicht funktioniert hat, bis ich die deklarierte Variable ausdrücklich zu einer statischen Variable gemacht habe. Mein Verständnis ist, dass, obwohl ich diese Batch-Klasse zustandsorientiert gemacht habe, statische Variablen bei jedem Batch zurückgesetzt werden. Ich weiß nicht, ob dies bedeutet, dass ich die Kartenwerte nach dem ersten Stapel verliere, aber ich werde es gleich herausfinden!

Wenn jemand weiß, warum ich dies nur zum Laufen bringen konnte, indem ich die Karte als statisch deklarierte, würde ich gerne den Grund erfahren!

Zunächst einmal scheint meine "Lösung" von EDIT 1 nicht zu funktionieren (ich denke, die Map, die ich in meiner zweiten Batch-Klasse verwende, ist tatsächlich eine leere Map, nicht das, was ich aus der ersten Batch-Klasse übergeben habe).

Wie auch immer, als Antwort auf eine Anfrage von Crop1645 ist hier der erste Teil des Codes für meine Batch-Klasse ohne Vereinfachung oder Abstraktion (was ich in meinem ersten Codebeispiel getan hatte):

Crop, Sie haben Recht, dass ich den Fehler zur Kompilierzeit erhalte (dh wenn ich versuche, meinen Code zu speichern), außer wenn ich den Code verwende, den ich hier zeige, der eine statische Deklaration der Karte verwendet und dies nicht zu tun scheint arbeiten sowieso. Der Fehler besagt einfach, dass "variable: totalLaunchCountMap existiert nicht".


Ich denke, anstatt gluLookAt zu verwenden, sollten Sie stattdessen einfach die Kamera übersetzen. Ich bin mir nicht sicher, wie Sie Ihre 2D-Bilder zeichnen, aber normalerweise zeichnen Sie Ihre Bilder mit einer X- und Y-Koordinate und lassen Z auf 0. Wenn Sie diesen Weg gehen, empfehle ich die Verwendung von gluOrtho anstelle von glPerspective .

Ich empfehle, ein gutes Buch über OpenGL-Anzeigetransformationen zu finden. Obwohl dieses Buch veraltet ist, bleiben die Konzepte in diesem Kapitel nützlich: http://www.glprogramming.com/red/chapter03.html

Verstehen Sie zuerst den Unterschied zwischen den Matrixstapeln GL_MODELVIEW und GL_PROJECTION.

Die Matrix GL_MODELVIEW dient zum Positionieren und Ausrichten der Objekte in der Welt in Bezug auf die Kamera. Dadurch werden Ihre Objekte durch die folgenden Koordinatenräume bewegt:

Im Objektraum ist das Objekt das Zentrum von allem. Es weiß noch nicht, wo auf der Welt es ist. Anschließend wenden Sie die Modelltransformation auf das Objekt an und es positioniert es in der Welt. Wenn dies mit jedem Objekt geschieht, haben Sie sie alle im Weltraum. An diesem Punkt ist die (0,0,0)-Koordinate nur ein beliebiger Ursprungspunkt in der Welt.

Ihre Kamera hat eine gewisse Position und Ausrichtung im Weltraum. Die Ansichtstransformation dreht und verschiebt den Weltraum, sodass sich die Kamera im Ursprung (0,0,0) befindet und entlang der negativen Z-Achse schaut. Das ist Augenraum. Im Augenraum ist die Kamera das Zentrum von allem.

Diese beiden Transformationen werden zu einer kombiniert, der Modelview-Transformation, da sie wirklich nur zusammenarbeiten, um Objekte in der Welt in Bezug auf die Kamera zu bewegen.

Die Matrix GL_PROJECTION transformiert Ihre Objekte durch die folgenden Räume:

Dies kann konzeptionell nur schwer vorstellbar sein. Wenn Sie sich den Kegelstumpf der Kamera als ein Volumen mit sechs Gesichtern vorstellen (das dem Ursprung im Augenraum sehr nahe ist), bewegt und verformt diese Transformation es, so dass es die Form eines Würfels mit dem Mittelpunkt des Würfels bei hat (0,0,0).

Das erste Problem, das Sie haben, ist, dass Sie versuchen, die Aussicht Transformation in die GL_PROJECTION-Matrix. Das ist falsch. Das Aussicht Transformation sollte Teil der GL_MODELVIEW Matrix sein. Die von Ihnen angewendeten Ansichtstransformationen sind glTranslatef und gluLookAt . Diese sollten auf die Matrix GL_MODELVIEW angewendet werden.

Ihr zweites Problem ist, dass Sie gluLookAt falsch verstehen - insbesondere das 4. bis 6. Argument. Sie versuchen, ihm eine Richtung zu geben, in die die Kamera (0,0,-1) entlang der negativen z-Achse schauen soll. Erstens, wenn dies von gluLookAt erwartet wurde, wäre es immer noch falsch, da Sie möchten, dass Ihre Kamera entlang der y-Achse schaut. Dennoch erwartet es tatsächlich eine Position in der Welt zu betrachten. Egal wo Sie Ihre Kamera platzieren, sie wird auf den Punkt (0,0,-1) schauen, der sich direkt neben der Ecke Ihrer Karte befindet, die bei (0,0,0) liegt.

Sie sollten gluLookAt überhaupt nicht verwenden, da Sie nicht auf einen bestimmten Punkt schauen möchten. Dies ist viel einfacher mit einer Rotation, um die Kamera entlang der negativen Y-Achse zu sehen, kombiniert mit einer Translation, damit sich die Kamera in einer Höhe von der Karte entfernt befindet. Beachten Sie, dass Sie die umgekehrten Transformationen anwenden sollten, als Sie es erwarten, da Sie die Karte wirklich von der Kamera wegbewegen und nicht die Kamera von der Karte weg. Etwas wie das:

Stellen Sie sicher, dass dies die ersten Transformationen in der Matrix GL_MODELVIEW sind.


1 Antwort 1

Sie haben ein paar Missverständnisse in Ihrem Diagramm.

Das Wichtigste ist, dass beides Ihre Verschlüsselungsboxen sind falsch, sie sollten Zeichen sagen . Im Anschluss daran ist die Die an die CA gesendete CSR enthält die verschiedenen Felder (einschließlich Betreff) und den öffentlichen Schlüssel des Betreffs, es gibt keinen verschlüsselten Text, nur einfache Daten und eine Signatur.

Der öffentliche Schlüssel des Betreffs (in Ihrem Fall: des Antragstellers) wird ebenso wie die Betreffinformationen wörtlich in den CSR aufgenommen. Dies wird mit dem öffentlichen Schlüssel des Subjekts signiert und alles an die CA gesendet.

Nicht in Diagrammform, aber hier sind die Schritte zum Erstellen des CSR und welche Daten enthalten sind: Die richtigen Schritte zum Erstellen des CSR (nicht in Diagrammform) sind:

  • Erstellen Sie eine CertificationRequestInfo mit:
    • Distinguished Name des Betreffs
    • Öffentlicher Schlüssel des Subjekts
    • Andere Attribute
    • ZertifizierungAnfrageInfo
    • Unterschrift
    • Signaturalgorithmus

    Beachten Sie, dass die CSR immer noch den Klartext CertificationRequestInfo und den öffentlichen Betreffschlüssel enthält contains .

    Nach Erhalt der CSR wird die CA mehr oder weniger Folgendes tun:

    • die CSR analysieren
    • Überprüfen Sie, ob die Signatur mit den Feldern in der CSR übereinstimmt, indem Sie den öffentlichen Schlüssel des Antragstellers verwenden
    • Überprüfen Sie, ob die verschiedenen Felder den Anforderungen entsprechen (z. B.: Sie können nicht nach CN=google.com fragen, ohne nachzuweisen, dass Sie der Inhaber der Domain sind).
    • Erstellen Sie ein Zertifikat mit einigen Feldern des CSR, einige von sich selbst
    • Signieren Sie das Zertifikat mit seinem (des Ausstellers) privaten Schlüssel

    Das endgültige Zertifikat enthält weiterhin die Betrefffelder und den öffentlichen Schlüssel des Betreffs.

    Um deine beiden Fragen genauer zu beantworten:

    1. das Der öffentliche Schlüssel des Subjekts ist eines der Felder im CSR. Nichts ist verschlüsselt, nur signiert.
    2. Das Betrefffelder werden in das Abschlusszeugnis übernommen, sie sind für jeden Kunden sichtbar.

    Sie können eine Liste der Zertifikatsfelder in RFC5280 sehen. Es gibt keinen Hash der CSR da dies nicht erforderlich ist, wurden alle relevanten Informationen in eigene Felder des Zertifikats kopiert.


    1 Antwort 1

    Um das Zeichnen einer kachelbasierten Karte mit beliebig großen Grenzen zu unterstützen, möchten Sie den Ansatz von nicht rendern jede Fliese die ganze Zeit. Sie müssen nur versuchen, das zu zeichnen, was der Spieler sehen kann, alle anderen Ziehversuche sind eine Verschwendung von Verarbeitungszeit und Ressourcen. Dies ist ein API-unabhängiger Ansatz und es spielt keine Rolle, ob Sie Pygame, cocos2d oder eine andere API verwenden.

    Um dieses Kunststück zu vollbringen, müssen Sie einige Informationen kennen, die im Grunde eine Erweiterung derjenigen sind, die Sie für das Scrollen in einem seitlich scrollenden Plattformer benötigen.

    • die Position innerhalb der globalen Kachelkarte, die der Spieler betrachtet,
    • die Größe (in Kacheln) des sichtbaren Bereichs, der um diese Blickposition zentriert ist

    Bei jeder Aktualisierung berechnen Sie einfach das umgebende Rechteck, das anhand dieser beiden Informationen beschreibt, welche Kacheln sichtbar sind, und senden Sie es ab nur diese fliesen zum Rendern. Um das Code-Snippet aus meiner Antwort in der oben verlinkten Frage wiederzuverwenden, berechnen Sie

    und zeichne nur die Kacheln, die durch die obigen vier Variablen begrenzt sind.

    Wenn Ihr Spiel das reibungslose Scrollen der Kachelkarte unterstützt, anstatt das Scrollen von Kachel zu Kachel, möchten Sie möglicherweise die Breite und Höhe des Ansichtsfensters etwas erweitern, um die potenzielle Überlappung zu berücksichtigen.

    Um den Ihnen bekannten Kachelsatz effizient zu rendern, sollten Sie Zustandsänderungen minimieren und Aufrufe zeichnen. Im Idealfall werden Ihre tatsächlichen Kachel-Sprites in einem Texturbild gespeichert, einer bestimmten Art von Texturatlas, bei dem alle Bilder im Atlas auf das Raster passen. Auf diese Weise können Sie nur diese eine Textur und den zugehörigen Shader gebunden haben, wodurch diese Zustandsänderungen minimiert werden.

    Um Zeichenaufrufe zu reduzieren, möchten Sie die gesamte Geometrie für alle Kacheln, die Sie rendern möchten, in so wenigen Scheitelpunktpuffern wie möglich haben. Wenn Sie die 2D-Sprite-Rendering-Funktionalität Ihrer API auf höherer Ebene verwenden, unterstützen die meisten von ihnen das Stapeln von Geometrie (und auch Zustandsänderungen) in ihren "Sprite-Batch"-Stilklassen, wenn sie Elemente vom Anfangs- und Endtyp haben . Wenn nicht, müssen Sie dies möglicherweise manuell tun, normalerweise indem Sie einen dynamischen Vertex-Puffer verwenden, den Sie mit den Kachel-Scheitelpunkten, Texturkoordinaten usw. für alle geeigneten Kacheln in jedem Frame auffüllen.


    2 Antworten 2

    Sie haben den Registrierungseintrag korrekt. Sie müssen nicht einmal neu starten.

    Wenn LogLevel auf einen Wert ungleich Null gesetzt ist, werden alle Kerberos Fehler wird eingeloggt im System Ereignisprotokoll. Kerberos-"Erfolge" werden nicht auf die gleiche Weise protokolliert. (Kerberos-Fehler sind Dinge wie AP_ERR_MODIFIED , PRINCIPAL_UNKNOWN usw.)

    Die Einstellung LogLevel hat keinen Einfluss darauf, was im . angezeigt wird Sicherheit Ereignisprotokoll jedoch.

    Das hat immer so funktioniert. Server 2012 R2 unterscheidet sich in dieser Hinsicht nicht.

    Wenn Sie andererseits in Ihrem Sicherheitsereignisprotokoll ausführlichere Ereignisse "Audit Success" und "Audit Failure" für Kerberos-Ticketaktivitäten erwarten, die Sie derzeit nicht sehen, müssen Sie Ihre Advanced Audit Policy einrichten . aber Ich glaube, die meisten dieser Ereignisse werden nur auf KDCs/Domänencontrollern protokolliert. (Beispielsweise.)


    Um eine Versorgungslinie aufzubauen, benötigst du den Local Leader Perk und einen Ersatz-Siedler. Wechseln Sie in den Werkstattmodus und wählen Sie den Ersatzsiedler aus und drücken Sie die hervorgehobene Schaltfläche für Versorgungsleitung:

    Dadurch erhalten Sie eine Liste Ihrer berechtigten Siedlungen, mit denen Sie eine Versorgungslinie aufbauen können:

    Alle Versorgungslinien sind auf der Karte sichtbar:

    Du musst Charisma mindestens auf Level 6 gebracht haben, dies kann durch die Vergünstigungen erreicht werden

    Scrollen Sie nach unten zu Stufe 6 und geben Sie eine Stufe in den lokalen Führer ein. Der lokale Anführer-Vorteil ermöglicht es dir, Versorgungsleitungen zwischen deinen Werkstätten aufzubauen.

    Gehe im Werkstattmodus zu einem Siedler aus einer anderen Siedlung und du siehst jetzt eine verfügbare Schaltfläche (Versorgungslinie)

    Durch Drücken der Schaltfläche wird ein Feld angezeigt, in dem Sie aufgefordert werden, auszuwählen, zu welcher Siedlung der Siedler reisen soll.

    Um zu überprüfen, welche Siedlungen miteinander verbunden sind, können Sie Ihre Karte öffnen und auf (Versorgungslinien anzeigen) drücken.


    Wie richte ich den richtigen GRUB 2-Standardmenüeintrag richtig ein?

    Ich kompiliere meine eigenen Kernel manuell und installiere sie dann in /boot mit make install . Ich habe im Moment folgende Kernel in /boot:

    Das Ausführen von grub2-mkconfig führt zu der folgenden Ausgabe:

    Wenn ich nun die resultierende Datei /boot/grub2/grub.cfg lese, stelle ich fest, dass folgende Einträge entstanden sind:

    • Ein Hauptstandardeintrag, der vmlinuz-3.7.4-gentoo-third startet
    • Ein Untermenü mit allen anderen Einträgen (einschließlich Wiederherstellungseinträgen), in der gleichen Reihenfolge wie der Befehl grub2-mkconfig

    Das Problem ist, dass ich beim Booten standardmäßig die fünfte Revision meines Kernels laden möchte ( vmlinuz-3.7.4-gentoo-5 ), nicht die dritte ( vmlinuz-3.7.4-gentoo-third ). Ich ziehe es auch vor, nicht auf das Untermenü zur Auswahl des richtigen Kernels zum Laden zuzugreifen.

    Wie kann ich dieses Verhalten ändern? Wie kann ich GRUB mitteilen, dass ich standardmäßig die fünfte Revision meines Kernels ausführen möchte und nicht die ältere dritte Revision? Wie kann ich im Allgemeinen die Standardeingabezeile ändern, damit sie dem gewünschten Kernel entspricht und nicht einer scheinbar zufälligen, die von GRUB ausgewählt wurde?

    Ich habe auch versucht, die folgenden Zeilen in /etc/default/grub einzufügen:

    Das behebt das Problem nicht so, wie ich es mir wünsche. Aber zumindest scheint sich GRUB an den neuesten Kernel zu erinnern, von dem ich gebootet habe, und wählt ihn automatisch aus dem Untermenü aus. Ich möchte nur nicht auf das Untermenü zugreifen.


    Die Evolutionsmethoden von Leafeon und Glaceon wurden geändert. Leafeon entwickelt sich jetzt durch Leaf Stone und Glaceon entwickelt sich jetzt durch Ice Stone.

    Umbreon und Espeon entwickeln sich wie zuvor durch Tag und Nacht, aber es ist erwähnenswert, dass sie sich abhängig davon entwickeln, was der Himmel des tatsächlichen Standorts tut – einige Städte haben eine feste Tageszeit, und die Entwicklung wird dies widerspiegeln, selbst wenn sie stimmt nicht mit der realen Weltzeit auf der Switch-Konsole selbst überein.

    Wenn du einen Sylveon haben willst, braucht er mindestens 160 Freundschaft/Zuneigung und einen feenhaften Zug. Wenn Sie ein Espeon oder Umbreon wollen, braucht es mindestens 220 Freundschaft/Zuneigung und darf keinen feenhaften Zug kennen. Weitere Informationen zu den Änderungen an Freundschaft / Zuneigung finden Sie in dieser Antwort.


    Wie konfiguriere ich IIS, um den Zugriff auf Netzwerkressourcen für PHP-Skripte zu ermöglichen?

    Ich arbeite derzeit an einem PHP-Frontend, das eine Reihe von Anwendungen zusammenführt, die auf separaten Servern laufen. Viele dieser Anwendungen generieren Dateien, auf die ich zugreifen muss, aber diese Dateien befinden sich (aus verschiedenen Gründen) auf ihren übergeordneten Servern.

    Wenn ich von der Befehlszeile aus ein kleines Skript ausführe, wie zum Beispiel:

    Ich werde den vollständigen Inhalt dieses Verzeichnisses erhalten, um zu beweisen, dass es kein Problem gibt, wenn PHP den Inhalt einer UNC-Freigabe programmgesteuert liest. Wenn ich jedoch versuche, das gleiche Skript vom Webserver auszuführen, erhalte ich ein leeres Array - genauer gesagt, wenn ich explizitere Funktionen verwende, die zum "Öffnen" eines Verzeichnisses entwickelt wurden, als wäre es eine Datei, erhalte ich Zugriffsfehler.

    Ich glaube, dass dies ein Berechtigungsproblem ist, aber ich bin kein Server- / Netzwerkadministratortyp, daher bin ich mir nicht sicher, was ich tun muss, um dies zu korrigieren und mein Skript zum Laufen zu bringen, und die Links, die ich ausgecheckt habe, haben dies nicht war eine schreckliche Hilfe, vielleicht aufgrund meines Hintergrunds oder des Fehlens von IIS, gepaart mit der Tatsache, dass wir .NET dafür nicht wirklich verwenden.

    Relevante Statistiken: Windows Server 2008 Standard SP2 IIS 7.0 PHP 5.2.9

    Ich werde eine Verbindung zu zwei Arten von Servern herstellen: einigen anderen fast identischen Server 2008-Computern und einem Computer, auf dem Embedded XP ausgeführt wird.

    Links, die nicht besonders hilfreich waren, aber vielleicht lese ich nur falsch:


    6 Antworten 6

    Dschungel in Minecraft wurden im 1.7-Update viel seltener gemacht. Wenn Sie das also verwenden, werden sie viel schwieriger zu finden sein. Biome werden sich jetzt jedoch neben anderen Biomen des gleichen Klimas platzieren, und da Dschungel warm sind, sollten Sie in der Nähe von Wüsten, Mesas und Savanas suchen. Tempel in diesen Dschungeln sind schwer zu finden, und nicht alle Dschungel haben sie. Es kann helfen, einige Bäume abzubrennen, denn da der Tempel aus Stein besteht, ist er vor dem Verbrennen sicher. Abgesehen von der Verwendung von Mods oder Seeds ist das wirklich das Beste, was Sie tun können.

    Weltstruktur ist nichts, was man ohne Werkzeug mit 100%iger Sicherheit herausfinden kann. Es gibt eine mathematische Funktion, die den Samen verwendet, um zu berechnen, wie die Welt aussehen wird.

    Um herauszufinden, welches Biom sich an einem bestimmten Ort mit einer 100%igen Sicherheit befindet, müssen Sie die gleiche Berechnung durchführen wie der Weltgenerator in Minecraft. Das Problem dabei ist, dass Sie nicht sagen können "Gib mir den nächsten Dschungel". Du musst die Welt um dich herum generieren und dann schauen, ob es einen Dschungel gibt. In jedem Fall müssen Sie jedoch ein externes Tool verwenden, um diese Berechnung durchzuführen, da dies ziemlich kompliziert ist und Minecraft kein integriertes Tool hat, das Ihnen dabei helfen könnte.

    Was Sie am Ende brauchen, ist etwas, das entweder den Seed und die Generierungs-Engine Ihrer aktuellen Minecraft-Version verwendet und versucht, eine Vorschau eines bestimmten Bereichs (wie AMIDST) anzuzeigen, oder ein Tool, das bereits generierte Karten wie ein Mapping-Tool betrachtet.