Hey,
ich beschäftige mich derzeit mit dem MapAndreas Plugin, da es sehr wichtig für meinen Gamemode ist, nur ist da ein Problem. Die .hmap die mit dem Plugin mitgeliefert wird, ist nur für die normale SA Map geeignet, aber ich habe sehr viele und auch große eigene Maps auf dem Server. Ich wüsste zwar wie ich mir eine .hmap für die normale SA Map erstelle, aber wie kann ich das mit gemappten Objekten machen ? Möglich ist es anscheinend: http://forum.sa-mp.com/showthread.php?t=508552
Wie hat er das gemacht ? Ich denke er nicht, dass er das manuell gemacht hat, und jeden Meter einzeln abgelaufen ist.
Wäre enorm dankbar wenn jemand eine Lösung für mich hat
Eigene .hmap erstellen
- Oskaar1994
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Ich hätte eine Idee, die hat aber nichts mit SA-MP direkt zu tun.
In MTA gibt es folgende Funktion: https://wiki.multitheftauto.com/wiki/GetGroundPosition
Da du die Maps wohl in MTA erstellst, könntest du versuchen, ob MTA schlau genug ist, um diese selbst gemappten Objekte zu erkennen. Dann könntest du einen Code dafür schreiben und für jede X/Y Position dir die Z Koordinate ausgeben lassen.
Ist so ähnlich wie die SetPlayerPosFindZ Funktion, nur dass diese eben nicht immer gescheit funktioniert.Oder du fragst den der das gemacht hat mal, ob er es dir erklärt. aber ich würde es erst mal so versuchen, vielleicht klappt es ja.
-
Nein, ich mappe nicht mit MTA aber wenn es funktionieren würde wäre es mir meine Maps zu konvertieren. Ich werde es mal probieren, danke für den Tipp
Aber selbst wenn es funktioniert stehe ich noch vor der Herausforderung Lua -
Dann nehme die version von mauzen da kannst du deine eigene .hmap erstellen und laden oder einer bestehenden
neue koordinaten hinzufügen.Mauzen hat dazu nal ein Codeschnipsel geschrieben.
http://forum.sa-mp.com/showthread.php?t=275492&page=16
Der Versuch über Mta geht nur, wenn der Apieler in der nähe ist die Objekte in Mta werden auch eingestreamt dafür hat Mta seinen eigenen streamer
-
Dann nehme die version von mauzen da kannst du deine eigene .hmap erstellen und laden oder einer bestehenden
neue koordinaten hinzufügen.Mauzen hat dazu nal ein Codeschnipsel geschrieben.
http://forum.sa-mp.com/showthread.php?t=275492&page=16
Der Versuch über Mta geht nur, wenn der Apieler in der nähe ist die Objekte in Mta werden auch eingestreamt dafür hat Mta seinen eigenen streamer
Danke, genau sowas habe ich gesucht. Ich war zwar in Mauzen's thread aber habe es irgendwie übersehen Jetzt muss ich das nur irgendwie in die bestehende .hmap einbauen
-
Das ist genau das selbe Prinzip welches bei dem One Piece Server genutzt wurde nur hat der die ganzen Daten in einer Datenbank gespeichert und mit Mathlab visualisiert.
/edit
Oskaar1994
Wieso ?Du musst nur die neue hmap noch einbinden.
Die koordinaten werden in den Arbeitsspeicher geladen davon werden die Z koordinaten letztendlich ermittelt -
Das ist genau das selbe Prinzip welches bei dem One Piece Server genutzt wurde nur hat der die ganzen Daten in einer Datenbank gespeichert und mit Mathlab visualisiert.
/edit
Oskaar1994
Wieso ?Du musst nur die neue hmap noch einbinden.
Die koordinaten werden in den Arbeitsspeicher geladen davon werden die Z koordinaten letztendlich ermitteltHabe mir den Code noch mal genauer durchgelesen und habe es jetzt kapiert Noch eine Frage: Wäre es schlauer den Code mit einer Schleife oder einem Timer mit einem Intervall von ca 500ms zu nutzen ? Ich kann mir vorstellen, dass der Server mit einer Schleife entweder abschmieren würde oder dass alles total laggt und dadurch die Koordinaten ungenau werden ?
-
Das wird eher durch den Timer laggen als durch die Schleife.
PAWn ist so konzipiert, dass es solange auf die nächste Ausführung des Codes wartet bis die Aktion abgeschlossen ist.
Defkato -> keine laggs.Bei Laggs kommen auch keine Ungenauigkeiten zustande, sondern es dauert einfach nur länger.
-
Ok danke dann wäre das schonmal geklärt Und mit den Ungenauigkeiten meine ich, falls es laggt und ich dann in ein Objekt falle stimmen die Koordinaten nicht.
-
Das wird eher durch den Timer laggen als durch die Schleife.
PAWn ist so konzipiert, dass es solange auf die nächste Ausführung des Codes wartet bis die Aktion abgeschlossen ist.
Defkato -> keine laggs.Bei Laggs kommen auch keine Ungenauigkeiten zustande, sondern es dauert einfach nur länger.
Naja was mögliche ist , ist den code über einen bot laufen zu lassen da jeder bot in einem eigenen thread besitzt.
Also wäre zur performanc Steigerung noch multiprocessing möglich :D.
Lass das ganze doch nicht seperat ablaufen aondern einzelnt ^^.
-
Habe jetzt noch ein paar kleine Probleme. Mir sind auf Anhieb ein paar Fehler aufgefallen, die habe ich jetzt verbessert, aber ein paar Dinge sind mir noch Rätselhaft.
Erstmal der Code:
new objectModels[MAX_OBJECTS];
forward ScanObject(playerid, objectid, Float:curx, Float:cury);
public ScanObject(playerid, objectid, Float:curx, Float:cury)
{
// End on invalid objects
if (!IsValidObject(objectid)) return;
new Float:sphere=GetColSphereRadius(objectModels[objectid]);new Float:px, Float:py, Float:pz;
GetPlayerPos(playerid, px, py, pz);
// Update z value, -0.5 offset might need to be adjusted
MapAndreas_SetZ_For2DCoord(px, py, pz-0.5);if (++curx > sphere*2) {
cury++;
curx = 0.0;
}
if (cury > sphere*2) {
// Object done, continue with the next one, 300ms falling time
SetTimerEx("ScanObject", 500, 0, "iiff", playerid, curobject+1, 0.0, 0.0);
return;
}// Scan the next position for that object
GetObjectPos(curobject, px, py, pz);
SetPlayerPos(playerid, px-sphere+curx, py-sphere+cury, pz+sphere);
SetTimerEx("ScanObject", 500, 0, "iiff", playerid, curobject, curx, cury);
}
Curobject ist nicht definiert, also wenn ich jetzt curobject erstelle, welchen Wert soll ich dann zuweisen ? curobject = objectid ? Dann wäre da noch objectModels und objectid. Bei objectModels soll ich dann nochmal einzeln alle Objektmodele zuweisen ? Also grade blick ich garnicht mehr durch. -
Deine erste annahme ist richtig einfach den namen des Funktionsparameters umschreiben.
Du benötigst die modelsize include von Y_Less und bei der funktion GetColSphereRadius wird die modelid benötigt daher auch das Array. Du kannst daher CreateObject hooken oder arbeitest mit dem streamer.
-
breadfish.de
Hat das Thema geschlossen.