Beiträge von Sub Royal

    Moin


    Warum funktioniert MapAndreas bei mir nicht richtig?



    C
    stock TeleportPlayerToRandomPosition(playerid)
    {
    	new Float:Z;
    	new Float:rx1=((frandom((floatabs(MAP_WORLDBOUNDS[0][0]-MAP_WORLDBOUNDS[0][1])))+MAP_WORLDBOUNDS[0][1]));
    	new Float:ry2=((frandom((floatabs(MAP_WORLDBOUNDS[0][2]-MAP_WORLDBOUNDS[0][3])))+MAP_WORLDBOUNDS[0][3]));
    	MapAndreas_FindZ_For2DCoord(rx1,ry2,Z);
    	SetPlayerPos(playerid,rx1,ry2,Z);
    }

    Ich werde zwar teleportiert, jedoch ist die Z Koordinate irgendwie immer unter der Erde, woran liegt das?

    Vielen Dank!


    Dann habe ich folgende Sache.


    Will bei Worldbounds x_max und x_min und y_max und y_min tauschen
    Dazu habe ich folgendes


    stock const Float:MAP_WORLDBOUNDS[][]={
    {-1728.326, -2977.858, -945.9079, -2323.897}
    };


    Jedoch meckert der wegen constant expression.


    Was ist daran falsch? Brauche ich fuer jeden Wert ne neue Variable?

    @Jeffry


    Vielen Dank schonmal, das mit dem return value war mir jetzt am wichtigsten.
    Also das heisst wenn ich das richtig verstehe, kann ich strcmp bei OnPlayerCommandText auch fuer jeden Command durch sscanf ersetzen?


    Warum bringt das hier Errors?




    test.c(36) : error 008: must be a constant expression; assumed zero
    test.c(70-71) : error 008: must be a constant expression; assumed zero


    Wird genutzt fuer


    C
    new rand = random(sizeof(Colors));
    SetPlayerColor(playerid,Color[rand]);

    Wie kann ich das MapAndreas Include nutzen?
    Mich stoert bei der Funktion das Ampersand Symbol



    C
    stock TeleportPlayerToRandomPosition(playerid)
    {
    	new Float:Z;
    	//MapAndreas_FindZ_For2DCoord(GlobalZones[0][1], GlobalZones[0][3], &Float:Z);
    	SetPlayerPos(playerid,frandom(GlobalZones[0][1]),frandom(GlobalZones[0][3]),Float:Z);
    }

    Das ganze hier haut ja irgendwie nicht hin, warum nicht? Bitte um Rat


    Weiterhin eine andere Frage: Was fuer einen Return Wert hat sscanf?

    Moin habe folgendes Kommando


    Der Teil


    for(new i; i <dropval/MoneyVal; i++) war vorher for(new i; i <dropval/1000; i++), wollte jedoch den Wert eines Geldpakets variabel einstellen und habe daher jetzt via #define einen Wert festgesetzt.



    Mit maxmoney will ich verhindern dass die MAX_PICKUPS Grenze ueberschritten wird



    Problem ist jedoch: Wenn ich z.B. MoneyVal 330 habe und dann beispielsweise irgendwas durch 330 habe, dann habe ich doch nen Float als Bedingungen im Zweifelsfall oder?



    Oder wird dieser Fall schon durch das Modulo ausgeschlossen? Kann ich den Befehl uebrigends vereinfachen?


    Weil ich habe probiert einen Float als Iterator zu nehmen und dann die Bedingungen auch als Float, aber wenn ich den Float erhoehen will mit ++ wird er interessanterweise um 1 kleiner statt groesser ?(


    Gibt es weiterhin die Moeglichkeit Pickups zu loeschen nach einer bestimmten Zeit, also wenn keiner die mit diesem Command gedroppten Pickups einsammelt innerhalb einiger Minuten?


    Habe da irgendwie an einen Timer gedacht der die PickupID uebergibt und dann mit einer Funktion IsValidPickup ueberprueft ob dieses existiert, und wenn ja es destroyed und das PickupArray neu sortiert.
    Jedoch sehe ich nur den Haken dass wenn man irgendwie 1000 Dinger droppt man dann 1000 Timer hat was wohl stark unguenstig ist fuer den Server


    Bitte um Rat

    Warum gibt es eigentlich den ganzen Stuff mit GetClientVersion etc.?


    Weil man kann ja nur mit der Client Version verbinden die auch der entsprechenden Server Version entspricht oder nicht?
    Oder kann man mit 0.3.7 auf nen 0.3a Server verbinden? Wenn nicht machen die ganzen Funktionen mit den Client Versionen ja nicht wirklich viel sinn

    Boah danke es klappt :D
    Habe gedacht es sei komplexer.



    Vielen Dank dafuer!!! Aber wie funktioniert das Ampersand & Symbol in PAWN eigentlich? Identisch wie in C?


    Nochwas:


    Gibt es irgendwelche einfachen Anticheat Loesungen die man per Include, FS oder wie auch immer direkt einbauen kann, und fertig?


    Weiterhin will ich mein Report System so anpassen, dass wenn man einen Report abruft als Admin, immer der letzte angezeigt wird, also wie in einer Queue, aber leider scheinen Queues in PAWN nicht realisierbar zu sein.


    Gibts da ne andere Loesung? Vielleicht ein Array der groesse MAX_PLAYERS, und das dann von vorne nach hinten mit strings auffuellen?

    Danke dir schonmal, das hat geholfen :D
    Ich wollte es jetzt noch ein bisschen uebertreiben


    Wenn der Spieler Linke Pfeiltaste oder Rechtepfeiltaste drueckt, soll bei Links der Spieler den naechsten Spieler mit kleinerer Spieler ID spectaten, als der Aktuell, und bei Rechts der mit der groesseren ID.


    Folgendes habe ich dazu bisher





    Ich hoffe das ist nicht zuviel fuer kleine Scripting Fragen :D
    Mir viele nur der Weg ein die ID vom aktuellen Spieler zu speichern, und dann alle Spieler durchzugehen, und um zu schauen ob der naechste gueltige Spieler dann eine ID > aktuelle ID hat bzw < und wenn nicht zu continuen;


    Das ist mein jetziges Konstrukt von dem ich mir erhoffe dass es irgendwie im Ansatz klappt


    Speezy zeig mal deinen Code



    So Moin habe folgendes Problem:



    Ich will dass der Spieler bei dem Diese Funktion aufgerufen wird, einem Spieler zuschaut der 1. nicht er selbst ist. 2. einer der nicht in TEAM_SPECTATOR ist und 3. natuehrlich connected ist. Das wars schon.
    Die Spieler ID sollte am besten random ausgesucht werden.


    Wie kriege ich das hin? Meine Konstruktion mag der Compiler leider nicht.
    Ich sehe jedoch keinen anderen Weg, da ich das Array ja dynamisch erstellen muss, damit ich keinen Nullen drin habe, und da kommts zum Problem wenn ein Spieler die ID 0 hat.


    Bitte um Rat

    Das habe ich schon zuvor probiert, gibt leider den gleichen Fehler


    Ich ueberlege gerade, ist es eventuell sinvoller nen rekursiven Aufruf der Funktion TeamAlives zu machen? Also den Teil ab TeamAlives(true) in TeamAlives reinzupacken und dann mit switch(count) zu arbeiten?


    Also so?


    Danke @Kaliber :D habe es nicht 1:1 uebernommen weil ich es irgendwie nicht ganz verstanden habe :/
    Habe es daher als Denkanstoss genommen, hoffe mein Erzeugniss ist auch halbwegs effizient



    Jedoch meckert der Compiler dass TeamsAlive ein value returnen soll :D

    Erstmal um den Code schöner zu machen würde ich einen Switch empfehlen.

    Wie kann ich das machen bzw. wie kann ich das in den cases pruefen?


    Letztendlich sind das ueber 200 Zeilen nur um zu schauen ob in den anderen Teams Gegner verbleiben :D bei 6 Teams


    Spieler die nicht mehr Leben werden in ein Team TEAM_SPECTATOR gebracht, daher bin ich am ueberlegen ob es eventuell einfachere Moeglichkeiten gibt.
    Habe gedacht vielleicht schauen, wieviele Spieler im Server sind, wieviele davon TEAM_SPECTATOR, und wieviele dann in welchem Team sind
    KA haha

    Gibt es eigentlich nen Fix fuer das Nightvision Goggles Problem in SA;MP? Habe viele Freds in Google gefunden die auf das englischen SAMP Forum verweisen, aber beim Aufruf scheinen die Themen zwischenzeitlich geloescht zu sein.


    Weiterhin habe ich hier Bedingungen um zu pruefen ob nur noch 1 Team verbleibt auf dem Server, bzw. nur noch 1 Team am leben ist um den Sieger festzustellen.
    Kann ich das eventuell anders darstellen? Weil so ist es pott haesslich


    Kann man dafuer eventuell ne Funktion schreiben? Leider habe ich keinen Ansatz dafuer

    Habe ne Frage :D


    Wie wende ich meine binaersuchfunktion an wenn ich beispielsweise nur in der ersten Dimension meines Arrays suchen will?


    Beispiel Array[][]={
    {12,"blah"},
    {13,"blah2"}
    }
    Wenn ich z.B. nach der 13 suchen will


    Und wie kann ich bei nem Float beim printen die Nachkommastellen begrenzen?

    Bin sehr begeistert von der Binaersuche im Vergleich zu der Variante mit dem Iterator bei dem Pickupsystem :D


    Bei einem Array mit der Groesse MAX_PICKUPS verdammt schnell


    Bench for iterator: executes, by average, 13.32 times/ms.
    Bench for binarysearch: executes, by average, 2623.24 times/ms.


    Aber warum findet Binaersuche eigentlich so wenig Anwendung in SA-MP Allgemein? Habe gerade mal 1 Thema dazu im englischen SA-MP Forum gefunden.. Gibt doch bestimmt super viele Anwendungen dafuer