Beiträge von Jeffry

    mysql_query("SELECT sum(spalte) FROM tabelle");
    mysql_store_result();
    new summe = mysql_fetch_int();


    So könnte ich mir das vorstellen, kann es nur grade nicht testen. Falls es nicht tut, werde ich es später für dich testen, gibst einfach eine Rückmeldung. :)

    Du hast ja auch die falsche Zeile ersetzt. :pinch:


    mysql_query("SELECT COUNT(`ID`) FROM `enters`;");
    mysql_store_result();
    new jE = mysql_fetch_int();
    mysql_free_result();

    for(new d = 0; d != jE+1; d++) {
    //zeug
    }



    mysql_query("SELECT COUNT(`id`) FROM `dutypoints`;");
    mysql_store_result();
    new jD = mysql_fetch_int();
    mysql_free_result();

    for(new d = 0; d != jD+1; d++) {
    //zeug
    }

    Function Stats(playerid,targetid)
    {
    if(Spieler[playerid][Ausweis] == 1)
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    new string[1500];
    format(string, sizeof string, "{0000FF}[Stats von %s auf [GOR] German Oldschool Reallife{FFFFFF}\n", Spieler[playerid][Name]);
    format(string, sizeof string, "%s{0000FF}[Allgemeines]{FFFFFF}\n",string);
    format(string, sizeof string, "%sLevel: %s Respektpunkte: %s Skin ID: %i\n",string, Spieler[playerid][Level],Spieler[playerid][Respektpunkte],GetPlayerSkin(playerid));
    format(string, sizeof string, "%sTode: %s Morde: %s",string,Spieler[playerid][Tode],Spieler[playerid][Kills]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Deine Statistik",string,"OK","");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED, "Du bestizt keinen Personalausweis!");
    }
    }


    string kann in sich selbst geschrieben werden. Daher wird der Rest übernommen. Das %s am Anfang jedes Format steht für den ersten Parameter, der "string" ist.



    format(string, sizeof(string), "123");
    format(string, sizeof(string), "%s456", string);
    //Ergibt in string: 123456

    Auf Anfrage in PM:


    ocmd:ferstellen(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new Float:x,Float:y,Float:z;
    new fraktname[35],waffe,muni;
    if(sscanf(params,"s[120]ii",fraktname,waffe,muni))return SendClientMessage(playerid, COLOR_GRAU," Verwendung: /ferstellen [fraktions-name] [waffenID] [munition]");
    {
    if(waffe <0||waffe >46)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Waffe zwischen 0-46 wählen!");
    if(muni <0||muni >500)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Munition zwischen 0-500 wählen!");
    GetPlayerPos(playerid,x,y,z);
    CreateFraktion(fraktname,x,y,z,waffe,muni);
    print(fraktname);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
    }
    return 1;
    }



    ocmd:fdelete(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    for(new i=0; i<MAX_FRAKT; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.5,fInfo[i][f_x],fInfo[i][f_y],fInfo[i][f_z]))
    {
    new datei[264];
    format(datei,sizeof(datei),"/Fraktionsystem/Fraktionen/%i.ini",i);
    if(dini_Exists(datei))
    {
    dini_Remove(datei);
    KillFraktion(i);
    printf("Fraktion %d wurde gelöscht.",i);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ROT," FEHLER: Du bist nicht in der nähe einer Fraktion!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
    }
    return 1;
    }


    Die Schleife beim Erstellen-Befehl ist da falsch, da du sie ja schon bei "CreateFraktion" hast, sonst hast du zwei, was folglich 25 Fraktionen erstellt.
    Beim Löschen hat ein return 1; gefehlt.

    Danke, jetzt ist mir das auch klar warum das passiert.
    Du selektierst die ANZAHL der Zeilen (nicht die Zeilen!), da bekommst du ja logischerweise nur eine Zahl zurück, das heißt genau eine Zeile.


    Ändere
    new jE = mysql_num_rows();


    zu:
    new jE = mysql_fetch_int();


    Das Selbe für "jD" versteht sich.


    Dann sollte es eigentlich funktionieren.
    Wenn nicht, poste noch mal den Log.

    Dann schalte mal den MySQL Debug Modus an und poste dann hier was im Server_log steht.
    Außerdem kannst du mal versuchenbdas Semikolon am Ende des queries weg zu machen, vielleicht hilft das was. Bei einem query ist es unüblich ein Semikolon zu setzen.

    Wenn du die Variable änderst, heißt das nicht, dass automatisch die Werte in deiner .cfg geändert werden! Du musst nach dem /fpark sowas wie "SpeichereAuto(autoID)" aufrufen, wo das Auto gespeichert (=in die .cfg geschrieben) wird.
    Und ja, es liegt an dem Respawn Befehl.


    if(strcmp(cmd, "/respawncars", true) == 0 || strcmp(cmd, "/rc", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] < 4)
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Supporter/Administrator.");
    return 1;
    }
    new bool:unwanted[CAR_AMOUNT];
    for(new player=0; player<MAX_PLAYERS; player++)
    {
    if(IsPlayerInAnyVehicle(player))
    {
    unwanted[GetPlayerVehicleID(player)]=true;
    }
    }
    for(new car = 0; car <= CAR_AMOUNT; car++)
    {
    if(!unwanted[car])
    {
    SetVehicleToRespawn(car); //Alternativ kannst du das auch mal entfernen, falls die Autos am Spawn stehen und nicht an der gespeicherten Pos.
    new id;
    for(new i=0; i<sizeof(FractionCars); i++)
    {
    if(car == FactionCars[i][fCarid])
    {
    id = i;
    break;
    }
    }
    SetVehiclePos(car,FactionCars[id][fPos][0],FactionCars[id][fPos][1],FactionCars[id][fPos][2]);
    SetVehicleZAngle(car,FactionCars[id][fPos][3]);
    }
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "Alle unbesetzen Fahrzeuge wurden von %s respawnt.", sendername);
    BroadCast(COLOR_WHITE,string);
    }
    return 1;
    }

    Da ich die Frage danach schon einige Male gesehen habe:


    stock GetPosVorSpieler(playerid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:a;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    else GetPlayerFacingAngle(playerid, a);
    GetPlayerPos(playerid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }
    return false;
    }


    Benutzung:

    Spoiler anzeigen

    //Setzt den Spieler 5 Meter vor den anderen Spieler.
    new Float:x, Float:y, Float:z;
    GetPosVorSpieler(pID, 5.0, x, y, z); //pID = Spieler, dessen Position abgefragt wird.
    SetPlayerPos(playerid, x, y, z); //playerid = Spieler, dessen Position gesetzt wird.



    Keywords: GetPosVorSpieler, GetPosInfrontOfPlayer, GetXYZVorSpieler, GetXYZInfrontOfPlayer, GetXYVorSpieler, GetXYInfrontOfPlayer, SpielerPosVorSpieler, SetSpielerVorSpieler.