Beiträge von Kaliber

    Hier, mach es mal so:


    Wenn dein Hauptbestandteil aus money Pickups besteht, dann kannst du es smarter machen und brauchst diese gar nicht definieren.


    Dann sind die MoneyPickups alle INVALID_PICKUP_TYPE, das funktioniert solange du alle anderen definierst :)


    Dann suchst der nur in den anderen und wenn er es dort nicht findet, weiß er instant, dass es ein money pickup sein muss :)


    Eine Binäre Suche funktioniert leider nur mit geordneten Arrays. Also wenn sie sortiert wären, würde das gehen..sind sie aber hier leider nicht, da ja in der Mitte zum beispeil ein Pickup verschwinden könnte... :)


    //Edit:


    Zitat

    bestimmt 600-700 Zeilen mit einem # inzwischen


    Das sind aber ganz schön viele...da könntest du bestimmt etwas vereinfachen ^^

    Wie wäre es, wenn du das ein bisschen übersichtlicher gestaltest.


    Also, es würde funktionieren, wie Pr0x das gezeigt hat, aber nur unter der Vorraussetzung, dass du entweder ActorPickups oder MoneyPickups hast.
    Falls noch eine weitere Art Pickup hinzukommt, wird das als money interpretiert...


    Also hier mal ein kleines Beispiel wie man sowas aufbauen könnte:


    Nur so als Anregung bzw Idee, damit du es übersichtlicher hast ^^
    Musst halt auch schauen, dass du im Callback immer das Richtige Array verwendest, welches du unten angibst, da sich daran der Index anpasst :)


    //Edit:
    Parameter übergibst du mit SetTimerEx //Wiki Code buggt.lel


    volatile existiert in Pawn nicht, da das alles in einer VM ausgeführt wird und nicht direkt auf der Hardware.

    printf gibt immer aus dass die Pickupids 1, 2,3,4,5 sind, bei einer sizeof(GlobalActors) von 5, egal was ich als pickupid in die Funktion gebe

    Das liegt daran, dass du pickupids nicht setzen kannst, sondern sie werden zugewiesen...


    Wie vehicleids / objectids / actorids auch, werden vom Server erstellt :)


    Aber schau nochmal in meinen Code...hab doch gezeigt wie du es machen musst ^^

    Ich weiß um ehrlich zu sein nicht was die Schleife da oben genau soll

    Na..stellen wir uns mal folgendes vor, wir haben folgendes Array:


    [1,2,3,-1,-1,-1,-1]


    Dann ist der letzte Eintrag ja nicht -1, sondern 3...


    Ich dachte, wir reden hier von einem Array welches nicht voll gefüllt ist, wenn natürlich das Element immer auf einem statischen Feld ist..ist das ja trivial und du kannst es natürlich mit array[sizeof(array)-1] lösen..

    Das mit den Pickups musst du leider z.B. so machen:


    Ist es ausserdem Moeglich, irgendwie aus einem Array immer die letzte Zeile im Array auszulesen?

    Das ist gar nicht so leicht.
    Es geht mit invaliden Werten und wenn du immer das Array sortierst bzw keine leeren Felder drinnen hast.


    Hier mal ein Beispiel:


    Hoffe ich konnte dir bisschen zeigen, was man da so alles anstellen kann ^^

    Also mal als erstes, wenn du schon Makros nutzt, dann pack sie statisch rein, da brauchst keine extra Funktionen und auch keine Variablen:


    C
    PlayerTextDrawSetString(playerid, TeamText[playerid], "Team: "#FIRST_TEAM_COLOR_TAG);
    PlayerTextDrawShow(playerid,TeamText[playerid]);
    
    
    PlayerTextDrawSetString(playerid, LocText[playerid], "Location: "#FIRST_TEAM_LOCATION);
    PlayerTextDrawShow(playerid,LocText[playerid]);

    Der Grund aber, wieso das in SendClientMessage Funktioniert, aber nicht mit TextDraws oder GameTexten liegt daran, dass es dort diese Color codes mit den Klammern {FFFFFF} nicht gibt!



    Schau mal hier:
    http://wiki.sa-mp.com/wiki/Colors_List#GameText


    Wenn da musst du eben sowas verwenden:


    #define FIRST_TEAM_COLOR_TAG "~b~~h~~h~VIOLETT"


    #grammar nazi

    Du brauchst den String nicht formatieren, wenn es eine Konstante ist...



    #define FIRST_TEAM_COLOR_TAG "{610D96}VIOLET"


    SendClientMessage(playerid, -1, FIRST_TEAM_COLOR_TAG);

    Es reicht hier sowas...du musst dir einfach vorstelle, dass das Makro 1zu1 vom Compiler übersetzt wird...und das sieht ja nicht wirklich gut aus:


    SendClientMessage(playerid, -1, ""#"{610D96}VIOLET""");


    Ich meine gut, könnte sogar compilen...aber nunja e^pi*i ist auch -1...aber deshalb muss man es ja nicht hinschreiben xD

    ...habe das query doch geschrieben..


    Hier der vollständige Code, wenn du nicht weißt wie man ein query aufbaut und abschickt:


    C
    new DBResult:db_result,anzahl;
    db_result = db_query(db_handle, "SELECT COUNT(*) FROM `table`");
    db_get_field_int(db_result, 0, anzahl);
    db_free_result(db_result);
    
    
    //Anzhal der Spieler steht nun in anzahl

    Das mit den " oben ist richtig.


    Lass diese mal so, dann müsste folgendes gehen:


    Textdraw00 = TextDrawCreate(10.000000,379.000000,"Location: "#FIRST_TEAM_LOCATION);


    Aber auch das mit format müsste funktionieren ^^


    printe der halt mal, was da eigentlich drinnen steht oder schau, ob dir deine TextDraws so auch richtig angezeigt werden, wenn du statisch was reinschreibst ;) Eventuell liegts ja gar nicht am Makro :)