Stadt Abfragen ?

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
  • Hi, Ich habe mal danach gesucht wie man die Stadt abfragt in der sich der Spieler befindet.


    dann bin ich auf dieses INC gestoßen: http://pastebin.com/1mQw1mLE


    Mein Problem ist jetzt dass ich den Spieler nach dem Tod in der Stadt spawnen will wo er gestorben ist. Es funktioniert irgendwie nicht.


    Ich müsste ja quasi die letzte Stadt abfragen und danach sagen das er in dieser Stadt spawnen soll ich wüsste nur nicht wie man das mach da es ja unter OnPlayerSpawn geschieht
    und der Spieler dann schon gespawnt ist also müsste ich irgendwie die Stadt unter OnPlayerDeath in eine Datei speichern und dann beim spawnen wieder auslesen.


    Währe toll wenn mir damit jemand helfen könnte
    MFG: KiraYamato

  • Diese Include wird dir nicht viel weiterhelfen, ausser du willst den Spieler in wirklich jedem Gebiet/Zone wo er stirbt spawnen.
    Was du machen kannst wenn du nur LS/SF/LV brauchst ist, dass du 3 Gangzonen über die Map ziehst beim Callback OnPlayerDeath abfrägst in welcher Zone er sich befunden hat (Hint: Einfachste Lösung if) und dann dem Spieler eine tmp Variable zu weißt du musst da nichts in eine File speichern


    MFG

  • Ok, mein Problem ist nun das ich gar keine Erfahrung mit Ganz Zonen habe. Kann ich auch statt 3 Ganzonen für jede Stadt mehrere für eine Stadt nehmen das es relativ genau wird ?
    Villeicht könntest du mir da helfen.


    MFG

  • Ich habe in meinem Script zB alle Viertel auf der ganzen Map gekennzeichnet mit gSAZones.


    Hier die Coords.


  • Die hatte ich ja auch schon vorher, ich weis nur nicht wie damit umzugehen ist.


    Ich hab jetzt mal rumprobiert und bin hierzu gekommen:


    Code
    LosSantos1 = GangZoneCreate(-239,-3000,3000,459.5);
    	SanFierro1 = GangZoneCreate(-3000,-3000,-1236,1639.5);
    	SanFierro2 = GangZoneCreate(-1239,-1668.5,-239,459.5);
    	SanFierro3 = GangZoneCreate(-1239,-3000,-235,-1668.5);
    	SanFierro4 = GangZoneCreate(-1236,452,-976,1160);
    	SanFierro5 = GangZoneCreate(-3000,1640,-1892,2180);
    	LasVenturas1 = GangZoneCreate(-983,464,3000,3004);
    	LasVenturas2 = GangZoneCreate(-3000,2176,-972,3000);
    	LasVenturas3 = GangZoneCreate(-1892,1640,-972,2176);
    	LasVenturas4 = GangZoneCreate(-1236,1151.5,-968,1639.5);

    Ich hab das mit diesem Editor gemacht: http://dev.prineside.com/gtasa_gangzone_editor/


    aber jetzt sagt der mir das die ganzen variablen nicht genutzt worden sind, das liegt denke ich daran das ich sie noch nicht sichtbar gemacht habe was ich aber auch nicht will, die sollen ja nicht zu sehen sein


    ich versuche jetzt mal die Zonen abzufragen mit IsPlayerInZone und hoffe das es funktioniert


    //Edit: Funktioniert auch nicht da ich da ja den string der zone angeben muss


    Ich hab mir mal einen befehl erstellt um zu sehen ob diese Funktion auch wirklich funktioniert aber anscheinend ist geht sie nicht:


    ocmd:myzone(playerid,params[])
    {
    if(IsPlayerInZone(playerid,"Los Santos"))
    {
    SendClientMessage(playerid,WHITE,"Los Santos");
    return 1;
    }
    if(IsPlayerInZone(playerid,"San Fierro"))
    {
    SendClientMessage(playerid,WHITE,"San Fierro");
    return 1;
    }
    if(IsPlayerInZone(playerid,"Las Venturas"))
    {
    SendClientMessage(playerid,WHITE,"Las Venturas");
    return 1;
    }
    SendClientMessage(playerid,RED,"Keine Zone");
    return 1;
    }


    Und er gibt mir immer keine zone aus.

    Einmal editiert, zuletzt von KiraYamato ()

  • Also die genannten Lösungen bringen dich nicht so weit tipp von mir.


    Nutze areas des streamer plugins
    http://forum.sa-mp.com/showthread.php?t=102865


    Da erstellst du ein polygon via CreateDynamicPolygon mit den Koordinaten von einem Umris der städte oder du erstellst direkt rechtecke (areas sind keine gangzones und werden auf der map nicht angezeigt) sobald der user in eine Zone reinfährt wird das Callback OnPlayerEnterDynamicArea aufgerufen und du kannst dem spieler rine variable setzen in welcher stadt er aktuell ist.

  • Ok danke das hört sich nach einer guten Lösung an, ich werde mir das mal anschauen ^^


    Edit:


    ok ich hab mir das jetzt mal durchgelesen aber wie muss ich denn CreateDynamicPolygon verwenden ?


    Ich brauche ja die einzelnden punkte aber wozu muss ich dann da noch minx und miny usw angeben ? er hat dann doch schon den umriss den ich haben will :I also irgendwie ist das total kompliziert

  • Ok, dann versuche ich das mal.


    aber ne frage hätte ich da noch.
    und zwar hat der eine eine Antwort gegeben mit dem Inhalt:


    new Float:Points[12] =
    {2305.5264, 1783.7133, 2305.5264, 1882.6989, 2167.5994, 1882.6989, 2167.5994, 1859.0988, 2128.2075, 1783.7133, 2305.5264, 1783.7133};
    AdminHQArea = CreateDynamicPolygon(Points, 5.0, 15.0, sizeof(Points));


    wenn mich nicht alles irrt müssten die dann hier angegeben sein als


    new Float:Points[12] =
    {x, y, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5};


    Sprich er hat 6 Punkte die er angegeben hat richtig ?


    und die 5.0, 15.0 in CreateDynamicPolygon Steht dann für die Z Koordinaten also minz und maxz


    und man könnte jetzt einfach sagen z.b.


    LosSantos = CreateDynamicPolygon(Points, sizeof(Points));


    und bei minx, maxx, miny, maxy, minz, maxz einfach frei lassen weil die optional sind?


    Nur damit ich sicher bin das ich es jetzt verstehe nicht das ich dann anfange und es dann wieder nicht funktioniert ^^

  • man kann es so z.b machen:
    New LosSantos ,SanFierro,LasVenturas;
    LosSantos = CreateDynamicRectangle(-992.5172,-4000.0000,4000.0000,528.0000);
    SanFierro = CreateDynamicRectangle(-4000.0000,-4000.0000,-992.5172,4000.0000);
    LasVenturas = CreateDynamicRectangle(-992.5172,528.0000,4000.0000,4000.0000);

    Verwendung:
    public OnPlayerEnterDynamicArea(playerid,areaid)
    {
    if(areaid==LosSantos)
    usw...
    }

    lg.

    Xbox Modding Profi
    Mein Xbox Setup:


    Xbox360 Trinity/Valhalla Reach Edition (Flash , Retail)
    Xbox360 Corona (xk3y, Retail)
    Xbox360 Corona (RGH2)
    Xbox360 Xenon (JTAG)
    2x XboxOne (Retail)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Maverick hat dir bereits ein Beispiel gebracht zu ( Die Variablen LosSantos und ... bitte als globale Variablen deklarieren )


    CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);bitte beachte das dies eine Möglichkeit wäre das System umzusetzen, daher diesen Syntax nicht mit CreateDynamicPolygon mischenZu CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1);minz und maxz sind optional, das bedeutet du kannst die werte füllen falls du möchtest ab einer höhe von 300 längeneinheiten in SAMP der User zu keiner Stadt gehört.ansonsten wäre der Syntax

    Code
    CreateDynamicPolygon(Points);


    warum jetzt nur das Array übergeben ?


    minz wird mit der konstante
    -FLOAT_INFINITY bereits vorinitalisiert genau wie maxz in dem beispiel von dir oben möchte der Author nur das eine bestimmter Körper zur Area gehört.