Beiträge von Jeffry

    Fernando.:
    Das wird nicht funktionieren, wenn einer der Spieler nicht online ist, da -1 immer kleiner ist als irgendwie mögliche Abstände.


    return -1.00;
    zu:
    return 999999999.00;


    Generell wäre es so besser:
    stock PlayerNearPlayer(p1,p2,Float:dist)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(p2,x,y,z);
    return IsPlayerInRangeOfPoint(p1, dist, x, y, z);
    }
    ;)


    if(!PlayerNearPlayer(pID, playerid, 3.0)) return SCM(playerid, ROT, "Du bist nicht bei dem Spieler.");

    if(dialogid == 30)
    {
    if(response == 1)
    {
    new m_count = 0;
    for(new i=0; i<MAX_MAPS; i++) if(!isnull(ServerMaps[i][mapname])) m_count++;
    new LoadingMapName[30];
    if(!isnull(ServerMaps[listitem][mapname]))
    {
    format(LoadingMapName,sizeof(LoadingMapName),"%s",GetMapName(listitem));
    ShowPlayerDialog(playerid,56,DIALOG_STYLE_LIST,LoadingMapName,"Unload Map\nReload Map","Select","Back");
    }
    else
    {
    new count = 0;
    new dir:dHandle = dir_open("./scriptfiles/Maps");
    new item[40], type;
    printf("Ungeladene Maps:");
    while(dir_list(dHandle, item, type))
    {
    if(type == FM_DIR) continue;
    else if(type == FM_FILE)
    {
    printf("Item: %s", item);
    if(IsMapLoaded(item)) continue;
    count++;
    printf("Zähle item %s -> count: %d (== %d)", item, count, (listitem+1)-m_count);
    if(count == (listitem+1)-m_count)
    {
    printf("Lade...");
    strdel(item,strlen(item)-4,strlen(item));
    format(LoadingMapName,sizeof(LoadingMapName),"%s",item);
    printf("LoadingMapName: %s", LoadingMapName);
    ShowPlayerDialog(playerid,56,DIALOG_STYLE_LIST,item,"Load Map","Select","Back");
    break;
    }
    }
    }
    dir_close(dHandle);
    }
    }
    }


    So, wie sieht es damit aus?

    Oh, nicht dran gedacht. :wacko:


    Poste bitte die "IsMapLoaded" und die "GetMapName" Funktion, dann kann ich nachvollziehen wie du das machst.
    Wäre auch gut wenn du gleich noch den Befehl dazu gibst, mit dem du die Maps in der Liste anzeigen lässt (1. Bild), schaden kanns ja nicht.

    Hallo zusammen,


    ich möchte hiermit vorschlagen, bei dem mobilen Design eine Pop-Up-Meldung zu dem Logout-Button hinzuzufügen.


    Warum?
    Es ist mir schon einige Male passiert, dass ich aus Versehen auf den Logout-Button getippt habe, obwohl ich auf die Start-Seite (Ordner-Symbol) drücken wollte.


    Besonders an öffentlichen Plätzen (Bahnhof, Flughafen, Zug, ...) ist das nicht so toll wenn einem 100 Leute auf die Finger glotzen, da man sich wieder einloggen muss und dabei das Passwort eingeben muss (außer man speichert es im Browser...aber da kann ich es mir auch gleich auf die Stirn schreiben). Und vor allem ist es ziemlich umständlich, wenn das Passwort aus Sonderzeichen besteht.


    Es wäre sinnvoll, einfach eine Pop-Up-Meldung einzubauen, die fragt:
    "Möchten Sie sich wirklich ausloggen?"
    [JA] ~ [NEIN]


    Damit wird verhindert, dass man sich ständig aus Versehen ausloggt.


    Wäre super, wenn man das einbauen könnte.
    Vielen Dank! :)




    Wie immer natürlich ist dies nur ein Vorschlag. Wenn der Aufwand zu immens ist oder es technisch bzw. lizenzrechtlich nicht machbar ist habe ich damit kein Problem, der Vorschlag kann jederzeit geschlossen werden.

    Debugge es doch mal:
    else if(listitem > sizeof(ServerMaps))
    {
    new count = 0;
    new dir:dHandle = dir_open("./scriptfiles/Maps");
    new item[40], type;
    printf("Ungeladene Maps:");
    while(dir_list(dHandle, item, type))
    {
    if(type == FM_DIR) continue;
    else if(type == FM_FILE)
    {
    printf("Item: %s", item);
    if(IsMapLoaded(item)) continue;
    count++;
    printf("Zähle item %s -> count: %d (== %d)", item, count, (listitem+1)-sizeof(ServerMaps));
    if(count == (listitem+1)-sizeof(ServerMaps))
    {
    printf("Lade...");
    strdel(item,strlen(item)-4,strlen(item));
    format(LoadingMapName,sizeof(LoadingMapName),"%s",item);
    printf("LoadingMapName: %s", LoadingMapName);
    ShowPlayerDialog(playerid,56,DIALOG_STYLE_LIST,item,"Load Map","Select","Back");
    break;
    }
    }
    }
    dir_close(dHandle);
    }


    Was wird denn geprintet?
    Kannst du zudem vielleicht auch noch einen Screenshot von dem Dialog posten (http://www.tinypic.com) und dazu erklären, was passieren soll, wenn du die entsprechende Zeile andrückst?

    der Befehl mysql_function_query gibt es noch in der r34 ich nutze es selbst und habe keine Probleme ich gucke auch die Videos von MrMonat HD und kann alles so wie er nutzen


    Dann nutzt du nicht die R34. Wenn doch, dann hast du möglicherweise mysql_tquery mit einem Makro zu mysql_function_query definiert.
    Ab R33 gelten folgende Funktionen: http://wiki.sa-mp.com/wiki/MySQL/R33


    Offiziell gibt es die mysql_function_query in R33+ aber nicht mehr.

    Nun gut es war lediglich ein Hinweis, da ich selbst mal solch eine Funktion geschrieben habe, die läuft jedoch über getdate


    Klar, es kommt ja immer auf die Anwendung drauf an. In meinem Fall ist die Anwendung auf internationale Möglichkeiten bestimmt, in deinem Beispiel wird nur die Zeit des Servers akzeptiert, du kannst es nicht manipulieren, zum Beispiel eine Stunde drauf rechnen, weil ich mich als Spieler gerade in Griechenland befinde, bzw. eine Stunde abziehen weil ich grade in England rumsitze.


    Übrigens funktioniert dein Anti-Cheat nicht, wenn du dem Spieler Waffen über AddPlayerClass gibst, wenn er/sie sich Waffen im Ammu-Nation kauft oder wenn er/sie die Waffen über statische Pickups aufnimmt, dafür müssten noch Ausnahmen bzw. Erkennungen eingebaut werden. :thumbup:

    Fernando.:
    Tacho7[playerid] = TextDrawCreate(576.625000, 411.0, "usebox");
    TextDrawFont(Tacho7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);
    TextDrawUseBox(Tacho7[playerid], 1);
    TextDrawBoxColor(Tacho7[playerid], 0x000000FF);
    TextDrawTextSize(Tacho7[playerid], 40.0, 40.0);
    TextDrawLetterSize(Tacho7[playerid], 10.0, 3.0);
    TextDrawSetPreviewModel(Tacho7[playerid], 411);


    Alternativ kannst du nächstes mal das hier verwenden:
    http://forum.sa-mp.com/showthread.php?t=406833

    Jeffry nix gegen deinen Codeschnipsel jedoch kommt dein Codeschnipsel nicht mit der Sommerzeit klar ^^ entweder ziehst du noch getdate dazu oder machst ein extra funktionsparameter


    Soll er auch gar nicht. Er ist auf GMT+0 programmiert, und die kennt bekanntlich keine Sommerzeit.
    gettime() gibt dir den Timestamp ja auch in GMT+0 zurück. (http://www.unixtimestamp.com/index.php)


    Die Zeitverschiebung kannst du einfach mit (3600*GMT_OFFSET) dazurechnen (wie NicoWiss schon sagte), bzw. musst du sogar. Das beinhaltet auch die Sommer- und Winterzeit. Da es nicht in jedem Land die Sommer- und Winterzeit gibt, kann man das auch nicht berücksichtigen. Für meinen Server zum Beispiel läuft alles auf GMT+0, da er international ist. Hier müssen die Spieler selbst die Uhr vorstellen, da es ja nicht in jedem Land bzw. in jeder Zeitzone die Umstellung gibt. Ein Code der sich automatisch umstellt wäre hier fehl am Platz, da dann alle die den Code ändern müssten, bei denen es keine Umstellung gibt. Insofern ist das genau so gewollt.

    der Compiler schiebt sich das irgendwie zurecht.


    Das macht der Compiler nicht, sonst würde das hier keine Errors ergeben, tatsächlich sagt er aber, dass Waffen2 nicht definiert ist. Würde er es vor die if-Klammer ziehen, wäre es definiert, ebenso wenn er es als globales Array ansehen würde.
    if(dialogid == 1)
    {
    new Waffen[10][5];
    Waffen[0][1] = 1;
    }
    if(dialogid == 2)
    {
    Waffen2[0][1] = 1;
    new Waffen2[10][5];
    Waffen2[0][2] = 1;
    }

    => error 017: undefined symbol "Waffen2" (in Zeile 8)


    Hatte ich mir zuerst auch gedacht, ist aber nicht so.



    Es könnte aber auch daran liegen, dass PAWN nur indirekt Mehrdimenionale Arrays unterstützt, denn diese werden sozusagen zusammen gerechnet.
    sprich aus Waffen[10][2] wird Waffen[20].


    Glaube ich nicht, und selbst wenn, dann müsste es ja funktionieren, da es mit ein-dimensionalen Arrays ohne Probleme geht (siehe Beispiele oben).
    So sieht es eher im RAM aus, zehn Pointer mit der jeweiligen Länge zwei (bei [10][2]) die hintereinander liegen.



    Die Definition fällt schlichtweg durch die kommenden Klammern durch (wie z.B. bei Java switch-case), da auch das hier funktioniert:
    if(dialogid == 1)
    {
    new Waffen[10][5];
    Waffen[0][1] = 1;
    }
    if(dialogid == 2)
    {
    Waffen[0][2] = 1;
    }
    Waffen[0][3] = 1;




    => Wenn das also nicht so gewollt ist (Warum sollte es?), dann ist das ein Fehler im Compiler. Der Compiler ist im Grunde genommen auch nur ein Programm, und jedes Programm kann ja bekanntermaßen Fehler beinhalten.

    Ich habe es grade bei mir getestet, es ist tatsächlich so.
    Und zwar geht es, wenn es ein ein-dimensionales Array ist (Waffen[10]) oder eine normale Variable. Bei zwei-dimensionalen Arrays (Waffen[10][5]) geht es nicht mehr.
    Muss wohl am Kompiler liegen.


    Also: Das zweite Array umbenennen.



    Geht nicht:
    if(dialogid == 1)
    {
    new Waffen[10][2];
    Waffen[0][1] = 1;
    }
    if(dialogid == 2)
    {
    new Waffen[10][2];
    Waffen[0][0] = 1;
    }


    Geht:
    if(dialogid == 1)
    {
    new Waffen[10];
    Waffen[0] = 1;
    }
    if(dialogid == 2)
    {
    new Waffen[10];
    Waffen[0] = 1;
    }