Beiträge von Jeffry

    Was würde das bringen? Er will die Sprache des Spielers einstellen, so wäre es ja für alle gleich.


    So:
    if(dialogid == Dialog_psprache)
    {
    if(response)
    {
    if(listitem == 0)
    {
    sprached[playerid] = 1;
    }
    else if(listitem == 1)
    {
    sprachee[playerid] = 1;
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }
    @Windows: Du kannst aber auch einfach sagen "sprache[playerid] = 1;" ist deutsch, und "sprache[playerid] = 2;" ist englisch. Das spart Speicher. ;)




    EDIT: (Post unten)
    @Windows: Gerne! Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke!

    Schreibe den switch einfach nach dem GivePlayerWPS hin:

    Spoiler anzeigen
    COMMAND:clear(playerid,params[])
    {
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    new pID,reason[31],string[128],Menge,fv = IsAFraktionsVeh(playerid);
    if(isPlayerInFrakt(playerid,1) || isPlayerInFrakt(playerid,2) || isPlayerInFrakt(playerid,6) || isPlayerInFrakt(playerid,11))
    {
    if(Spieler[playerid][pDuty] == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht im Dienst.");
    if(Spieler[playerid][pFunkgeraet] != 0 || IsPlayerAtAktenPC(playerid) || fv != -1 && Fahrzeug[fv][Fraktion] == Spieler[playerid][pFraktion])
    {
    if(!isPlayerAMember(playerid,1))return SendClientMessage(playerid,GRAU,"Nicht den jeweiligen Rang.");
    if(sscanf(params,"uis[31]",pID,Menge,reason))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /clear [playerid/Name][Menge][Grund]");
    if(strlen(reason) > 30)return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /clear [playerid/Name][Menge][Grund darf maximal 30 Zeichen beinhalten]");
    if(Menge<1||Menge>60)return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /clear [playerid/Name][Menge 1-60][Grund]");
    if(pID == playerid)return SendClientMessage(playerid,GRAU,"Du kannst dir deine Akte nicht selber reinigen.");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
    if(GetPVarInt(pID,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,GRAU,"Das kannst du nicht!");
    if(Spieler[pID][pMaske] == 1)return SendClientMessage(playerid,GRAU,"Der Spieler besitzt keine Identität.");
    if(Spieler[pID][pWantedPoints] == 0)return SendClientMessage(playerid,GRAU,"Spieler hat keine Wanteds.");
    if((Spieler[pID][pWantedPoints] - Menge) < 0)
    {
    format(string,sizeof(string),"Falsche Angabe./Spieler kann nicht weniger als 0 Wanteds haben./Wanteds von %s (ID:%i) : %i.",SpielerName(pID),pID,Spieler[pID][pWantedPoints]);
    return SendClientMessage(playerid,GRAU,string);
    }
    format(string,sizeof(string),"Aktenbereinigung | Bearbeitet vom Beamten %s | Wanteds bereinigt: %i | Wanteds gesamt: %i | Grund: %s",SpielerName(playerid),Menge,Spieler[pID][pWantedPoints]-Menge,reason);
    SendClientMessage(pID,0xFF444BFF,string);
    GivePlayerWPS(pID,-Menge,reason);
    switch(Spieler[pID][pFraktion])
    {
    case 0:{SetPlayerColor(pID,NAMENWEISS);}//
    case 1:{}//SAPD
    case 2:{}//FBI
    case 3:{}//MEDIC
    case 4:{SetPlayerColor(pID,VAGOSFARBE);}//LSV
    case 5:{SetPlayerColor(pID,GROVEFARBE);}//GSF
    case 6:{}//ARMY
    case 7:{SetPlayerColor(pID,BALLASFARBE);}//BALLAS
    case 8:{SetPlayerColor(pID,ALARABIFARBE);}//TERRORS
    case 9:{SetPlayerColor(pID,YAKUZAFARBE);}//YAKUZA
    case 10:{}//SANEWSAG
    case 11:{}//OAMT
    case 12:{SetPlayerColor(pID,LCNFARBE);}//LCN
    case 13:{SetPlayerColor(pID,BIKERFARBE);}//Sons of Anarchy
    case 14:{}//FAHRSCHULE
    case 15:{}//SA ELEKTRONIK GmBh
    case 16:{}//Regierung
    case 17:{}//Sureño Syndikat
    case 18:{}//Die Sekte
    }
    format(string,sizeof(string),"Aktenbereinigung: %s | Bearbeitet vom Beamten %s | Wanteds bereinigt: %i | Wanteds gesamt: %i | Grund: %s",SpielerName(pID),SpielerName(playerid),Menge,Spieler[pID][pWantedPoints],reason);
    ForEachPlayer(p)
    {
    if(IsPlayerConnected(p))
    {
    if(isPlayerInFrakt(p,1) || isPlayerInFrakt(p,2) || isPlayerInFrakt(p,3) || isPlayerInFrakt(p,6) || isPlayerInFrakt(p,11))
    {
    if(Spieler[p][pDuty] != 0)
    {
    if(Spieler[p][pFunkgeraet] == 1 || (IsAFraktionsVeh(p) != -1 && Fahrzeug[IsAFraktionsVeh(p)][Fraktion] == Spieler[p][pFraktion]) || IsPlayerAtAktenPC(p))
    {
    SendClientMessage(p,0xFF444BFF,string);
    PlayCrimeReportForPlayer(p,p,3);
    }
    }
    }
    }
    }
    return 1;
    }
    return SendClientMessage(playerid,GRAU,"Du trägst kein Funkgerät mit dir./Du sitzt in keinem Fraktionsfahrzeug./Du bist an keinem Aktencomputer.");
    }
    return SendClientMessage(playerid,GRAU,"Du bist nicht in der jeweiligen Fraktion.");
    }

    Mit strtok kannst du strings nach Leerzeichen splitten. Mehr nicht.
    Der Rest wird ja durch andere Funktionen (z.B. strval) gemacht. Je nach dem was du auslesen willst, musst du die entsprechenden Funktionen kennen (floatstr, IsNumeric, ...).

    Es ist langsamer, allerdings merkst du im Spielgeschehen keinen Unterschied, da dies weniger als Millisekunden ausmacht.
    Daher ist es für mich erste Wahl, da ich nicht von einem Plugin abhängig bin, das von Version zu Version aktualisiert werden muss.

    Nicht direkt. Kommt auf dein Vorhaben an, aber wenn du nur solche Befehle erstellen willst, dann passt das so.
    Da strtok nicht viel macht, muss man auch nicht viel dazu wissen. Es gibt einfach nur einen String zurück, den man dann entsprechend verarbeiten muss.

    Klar, oft schreibt man die strtok's auch einfach hintereinander, je nach dem wie einem das gefällt. Ändern tut es nichts.
    if(!strcmp(cmd, "/veh", true))
    {
    new vehicleid[20],color1[20],color2[20], string[60], Float:mp[4];
    vehicleid=strtok(cmdtext,idx), color1=strtok(cmdtext,idx), color2=strtok(cmdtext,idx);
    if(!strlen(color2) || !IsNumeric(vehicleid) || !IsNumeric(color1) || !IsNumeric(color2))return SendClientMessage(playerid, -1, "Syntax: /veh [FahrzeugID] [Farbe1] [Farbe2]");
    format(string,sizeof string,"Du hast dir ein Fahrzeug erstellt. (%i|%i,%i)",strval(vehicleid),strval(color1),strval(color2)),
    SendClientMessage(playerid,-1,string);
    GetPlayerPos(playerid,mp[0],mp[1],mp[2]),GetPlayerFacingAngle(playerid,mp[3]),
    CreateVehicle(strval(vehicleid),mp[0],mp[1],mp[2],mp[3],strval(color1),strval(color2),-1);
    return 1;
    }

    Wie genau muss die Erklärung sein?
    Reicht dir das hier erst mal?
    Tutorial: http://forum.sa-mp.com/showthread.php?t=188617


    Funktionen die du benötigst, für den guten Umgang mit strtok:
    stock strtok(const string[], &index) //©Jeffry
    {
    new result[20], length = strlen(string), i = index;
    while ((i < length) && (string[i] == ' ')) i++;
    strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
    index++;
    return result;
    }


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


    stock IsNumeric(string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if ((string[i] > '9' || string[i] < '0')) return 0;
    }
    return 1;
    }



    Beispielbefehl:
    dcmd_befehl(playerid,params[])
    {
    new pID, tmp[20], idx;
    tmp = strtok(params, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,0xFF0000FF,"Fehler: /befehl [playerid/SpielerName]");
    if(IsNumeric(tmp)) pID = strval(tmp);
    else pID = ReturnPlayerID(tmp);
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0xFF0000FF,"Der Spieler ist nicht online");

    //Code hier.
    return 1;
    }

    gInfo[i][Owner] = cache_get_field_content(i,"Owner",gInfo[i][Owner],MySqlConnection);
    zu:
    cache_get_field_content(i,"Owner",gInfo[i][Owner],MySqlConnection,24);


    format(ltext,128,"Garage von "#SERVERFARBE"%s "#HTML_WHITE"\nStatus: %s",SpielerName(gInfo[gid][Owner]),GetLockedStatus(gInfo[gid][Locked]));
    zu:
    format(ltext,128,"Garage von "#SERVERFARBE"%s "#HTML_WHITE"\nStatus: %s",gInfo[gid][Owner],GetLockedStatus(gInfo[gid][Locked]));

    Spoiler anzeigen
    stock GivePlayerWPS(wantedplayer,WPSAnzahl,reason[])
    {
    Spieler[wantedplayer][pWantedPoints] += WPSAnzahl;
    if(Spieler[wantedplayer][pWantedPoints] > 60) Spieler[wantedplayer][pWantedPoints] = 60;
    SetPlayerWantedLevel(wantedplayer,Spieler[wantedplayer][pWantedPoints]/10);
    SetPlayerColor(wantedplayer,0xE20000FF);
    new string[145];
    format(string,sizeof(string),"* Wantedlevel: %i | Derzeitiges Fahndungslevel: %i",GetPlayerWantedLevel(wantedplayer),Spieler[wantedplayer][pWantedPoints]);
    SendClientMessage(wantedplayer,GELB,string);
    if(WPSAnzahl > 0)
    {
    Spieler[wantedplayer][pSuspectPoints]++;
    Spieler[wantedplayer][pLastSuspects]++;
    }
    format(pWantedReason1[wantedplayer],64,"%s(%i WPS)",reason,WPSAnzahl);
    if(Spieler[wantedplayer][pLastSuspects] == 5) Spieler[wantedplayer][pLastSuspects] = 0;
    PlayCrimeReportForPlayer(wantedplayer,wantedplayer,3);
    return 1;
    }


    Spoiler anzeigen
    COMMAND:einsperren(playerid,params[])
    {
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    new kaution,pID,string[128];
    if(isPlayerInFrakt(playerid,1) || isPlayerInFrakt(playerid,2) || isPlayerInFrakt(playerid,6))
    {
    //sapd zellen seite 1 //sapd zellen seite 2 //alka //fbi einjail punkt
    if(IsPlayerInRangeOfPoint(playerid,15,194.9551,158.5136,1003.0234) || IsPlayerInRangeOfPoint(playerid,15,194.1721,179.3675,1003.0234) || IsPlayerInRangeOfPoint(playerid,15,2581.0930,-1288.2515,1044.1250) || IsPlayerInRangeOfPoint(playerid,15,221.5675,113.1803,999.0156))
    {
    if(Spieler[playerid][pDuty] == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht im Dienst.");
    if(sscanf(params,"ui",pID,kaution))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /einsperren [playerid/Name][Kaution 1 = gestellt,2 = nicht gestellt]");
    if(kaution<1||kaution>2)return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /einsperren [playerid/Name][Kaution 1 = gestellt,2 = nicht gestellt]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
    if(GetPVarInt(pID,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,GRAU,"Das kannst du nicht!");
    if(pID == playerid)return SendClientMessage(playerid,GRAU,"Du kannst dich nicht selbst ins Gefängnis einsperren.");
    if(!ProxDetectorS(5.0,playerid,pID))return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht in deiner Nähe!");
    if(Spieler[pID][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Spieler ist bereits im Gefängnis.");
    if(Spieler[pID][pWantedPoints] == 0)return SendClientMessage(playerid,GRAU,"Spieler hat keine Wanteds.");
    if(kaution == 1)
    {
    Spieler[pID][pJailTime] = Spieler[pID][pWantedPoints]*30; Spieler[pID][pKaution] = 1;
    }
    else Spieler[pID][pJailTime] = Spieler[pID][pWantedPoints]*45; Spieler[pID][pKaution] = 2;
    if(IsPlayerInRangeOfPoint(pID,15,194.9551,158.5136,1003.0234) || IsPlayerInRangeOfPoint(pID,15,194.1721,179.3675,1003.0234)) Spieler[pID][pJailed] = 1;
    if(IsPlayerInRangeOfPoint(pID,15,221.5675,113.1803,999.0156)) Spieler[pID][pJailed] = 3;
    if(IsPlayerInRangeOfPoint(pID,15,2581.0930,-1288.2515,1044.1250)) Spieler[pID][pJailed] = 2;
    format(string,sizeof(string),"Du hast den Gesuchten %s eingesperrt. Wert: %i$",SpielerName(pID),Spieler[pID][pWantedPoints] * 5);
    SendClientMessage(playerid,ORANGE,string);
    SendClientMessageToAll(ORANGE,"");
    format(string,sizeof(string),"%s %s hat den Gesuchten %s eingesperrt!",SpielerFraktionsRangName(playerid),SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(0x00489184,string);
    ACMoney(pID,-Spieler[pID][pWantedPoints] * 5);
    fverwaltungen[16][Geld] += Spieler[pID][pWantedPoints] * 5;
    Spieler[pID][pWantedPoints] = 0;
    SetPlayerWantedLevel(pID,0);
    Spieler[pID][pJailedCount]++;
    SpawnPlayerEx(pID);
    format(string,sizeof(string),"HQ: An alle Einheiten, %s %s hat die gesuchte Person %s eingesperrt.",SpielerFraktionsRangName(playerid),SpielerName(playerid),SpielerName(pID));
    switch(Spieler[pID][pFraktion])
    {
    case 0:{SetPlayerColor(pID,NAMENWEISS);}//
    case 1:{}//SAPD
    case 2:{}//FBI
    case 3:{}//MEDIC
    case 4:{SetPlayerColor(pID,VAGOSFARBE);}//LSV
    case 5:{SetPlayerColor(pID,GROVEFARBE);}//GSF
    case 6:{}//ARMY
    case 7:{SetPlayerColor(pID,BALLASFARBE);}//BALLAS
    case 8:{SetPlayerColor(pID,ALARABIFARBE);}//TERRORS
    case 9:{SetPlayerColor(pID,YAKUZAFARBE);}//YAKUZA
    case 10:{}//SANEWSAG
    case 11:{}//OAMT
    case 12:{SetPlayerColor(pID,LCNFARBE);}//LCN
    case 13:{SetPlayerColor(pID,BIKERFARBE);}//Sons of Anarchy
    case 14:{}//FAHRSCHULE
    case 15:{}//SA ELEKTRONIK GmBh
    case 16:{}//Regierung
    case 17:{}//Sureño Syndikat
    case 18:{}//Die Sekte
    }
    ForEachPlayer(i)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,1) || isPlayerInFrakt(i,2) || isPlayerInFrakt(i,6) || isPlayerInFrakt(i,16))
    {
    SendClientMessage(i,0x000FFF87,string);
    }
    }
    }
    return 1;
    }
    return SendClientMessage(playerid,GRAU,"Nicht an den Zellen.");
    }
    return SendClientMessage(playerid,GRAU,"Du bist nicht in der jeweiligen Fraktion.");
    }

    Der Fehler hat überhaupt nichts mit dem SpielerSpeichern zu tun, sondern kommt vom Laden der Daten aus der Datenbank.


    ...und wie oft muss eigentlich noch gesagt werden, dass dieser Thread für kleine Fragen ist und nicht zum debuggen von MySQL Codes?