Beiträge von Jeffry

    Im Befehl (das Query gegebenenfalls an eure Spaltennamen anpassen):
    mysql_pquery(handle, "SELECT name, fraktion FROM users WHERE rank = 6;", "OnLeaderOnline", "d", playerid);


    Ganz unten im Gamemode (das FraktionsName müsst ihr anpassen):
    forward OnLeaderOnline(playerid);
    public OnLeaderOnline(playerid)
    {
    new rows = cache_get_row_count();
    if(!rows) return SendClientMessage(playerid, 0xFF0000FF, "Error: Etwas ist schief gegangen.");
    new str[512], name[32], frak;
    for(new i = 0; i < rows; i++)
    {
    cache_get_field_content(i, "name", name);
    frak = cache_get_field_content_int(i, "fraktion");
    if(ReturnPlayerID(name) != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}%s [%s] - {00FF00}Online\n", str, name, FraktionsName[frak]);
    else format(str, sizeof(str), "%s{FFFFFF}%s [%s] - {FF0000}Offline\n", str, name, FraktionsName[frak]);
    }
    ShowPlayerDialog(playerid, 4521, DIALOG_STYLE_MSGBOX, "OnlineList", str, "Ok");
    return 1;
    }

    Im Befehl (das Query gegebenenfalls an deine Spaltennamen anpassen):
    mysql_pquery(handle, "SELECT name, fraktion FROM users WHERE rank = 8;", "OnLeaderOnline", "d", playerid);


    Ganz unten im Gamemode (das FraktionsName musst du anpassen):
    forward OnLeaderOnline(playerid);
    public OnLeaderOnline(playerid)
    {
    new rows = cache_get_row_count();
    if(!rows) return SendClientMessage(playerid, 0xFF0000FF, "Error: Etwas ist schief gegangen.");
    new str[512], name[32], frak;
    for(new i = 0; i < rows; i++)
    {
    cache_get_field_content(i, "name", name);
    frak = cache_get_field_content_int(i, "fraktion");
    if(ReturnPlayerID(name) != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}%s [%s] - {00FF00}Online\n", str, name, FraktionsName[frak]);
    else format(str, sizeof(str), "%s{FFFFFF}%s [%s] - {FF0000}Offline\n", str, name, FraktionsName[frak]);
    }
    ShowPlayerDialog(playerid, 4521, DIALOG_STYLE_MSGBOX, "OnlineList", str, "Ok");
    return 1;
    }stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    GetPlayerName(i, l_name, MAX_PLAYER_NAME);
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }

    Dini oder MySQL?


    Wenn Dini, dann geht es nur, wenn du den Leader in einer Datei die der Fraktion zugewiesen ist speicherst.
    Wenn MySQL, dann kann man es mit einem Query auslesen.

    Da ihr anscheinend beide die gleiche Methode nutzt.
    Um das aus der Datenbank auszulesen:

    SQL
    SELECT name, fraktion FROM users WHERE rang = 6;


    Dann damit den Cache auslesen (das Result) und entsprechend dann anzeigen.


    Den Beispielcode habe ich oben gepostet, da muss man dann den Name der aus der Datenbank ausgelesen wurde einfügen.
    Versucht damit mal wie weit ihr kommt, und postet dann gegebenenfalls den Code den ihr bis zum Problem habt, falls eines auftaucht.

    InterpolateCameraPos(playerid, 187.600982, -1791.727050, 119.087432, 193.731567, -1789.235473, 118.845245, 5000);
    InterpolateCameraLookAt(playerid, 189.006942, -1790.279785, 114.512641, 195.057144, -1788.512817, 114.078620, 5000);
    SetTimerEx("InterPos2", 5000, false, "d", playerid); Die 5000 musst du an die Zeit anpassen, die die erste Interpolation dauert.


    forward InterPos2(playerid);
    public InterPos2(playerid)
    {
    InterpolateCameraPos(playerid, 187.600982, -1791.727050, 119.087432, 193.731567, -1789.235473, 118.845245, 5000);
    InterpolateCameraLookAt(playerid, 189.006942, -1790.279785, 114.512641, 195.057144, -1788.512817, 114.078620, 5000);
    return 1;
    }

    stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    GetPlayerName(i, l_name, MAX_PLAYER_NAME);
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }


    Du nimmst diese Funktion, damit kannst du dann abfragen, ob der Spieler online ist.
    if(ReturnPlayerID(entsprechenderName) != INVALID_PLAYER_ID) //online
    else //offline


    Zum Beispiel:
    if (strcmp(cmd, "/ot", true) == 0)
    {
    new str[512];
    if(ReturnPlayerID("Basti") != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}Basti - {00FF00}Online\n", str);
    else format(str, sizeof(str), "%s{FFFFFF}Basti - {FF0000}Offline\n", str);
    if(ReturnPlayerID("Hansi") != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}Hansi - {00FF00}Online\n", str);
    else format(str, sizeof(str), "%s{FFFFFF}Hansi - {FF0000}Offline\n", str);
    if(ReturnPlayerID("Ulli") != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}Ulli - {00FF00}Online\n", str);
    else format(str, sizeof(str), "%s{FFFFFF}Ulli - {FF0000}Offline\n", str);
    ShowPlayerDialog(playerid, 4521, DIALOG_STYLE_MSGBOX, "Spieler", str, "Ok");
    return 1;
    }


    Dort wo jetzt die Namen "hart" drin stehen kannst du dann die Variable für den entsprechenden Leader einfügen.

    if(strcmp(cmdtext,"/buygun",true) == 0)
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    printf("Pos: %f / %f / %f | Range: %d", x, y, z, IsPlayerInRangeOfPoint(playerid,30.0,235.6019,168.0306,1003.0300));
    if(IsPlayerInRangeOfPoint(playerid,30.0,235.6019,168.0306,1003.0300))
    {
    if(PlayerInfo[playerid][pGunLic] == 1)
    {
    ShowPlayerDialog(playerid,DIALOG_GUNMENUE,DIALOG_STYLE_LIST,"Gun Menü","Waffen Kaufen\nLaser Menü","Auswählen","Abbrechen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie haben keinen Waffenschein.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind nicht im Waffenladen.");
    }
    return 1;
    }


    Debugge es mal so. Gebe den Befehl ein und poste dann was im Server Log steht, als Position.

    Das ist zum Teil ein Fehler in SA-MP.
    Versuche es mal mit einem Timer, das behebt es meistens.
    Nach:
    OnPlayerCommandText(playerid,"/wave");
    das einfügen:
    SetTimerEx("OnPlayerCommandText", 1000, false, "ds", playerid, "/wave");

    Kommt die Info-Meldung wie der Befehl zu verwenden ist, wenn du nur

    Zitat

    /leadererstellen


    eingibst?


    Wenn nein, hast du im Compiler eine mehrzeilige Meldung mit vielen Zahlen?