Beiträge von Jeffry

    Willkommen auf Breadfish!


    Da war eine Klammer auf zu viel am Ende.
    Schreibe es so:
    if((AFK[playerid] == 1) && strcmp(cmd,"/back",true) && strcmp(cmd,"/pm",true))
    {
    return SendClientMessage(playerid,4, COLOR_RED,"Du kannst keine Commands ausführen wenn du AFK bist. Benutze /back um wiederzukommen.");
    }

    Schreibe es so:
    if(strcmp(cmd,"/Scheine",true)==0) {
    if(IsPlayerConnected(playerid)) {
    new text[8][40],string[1280];
    if(PlayerInfo[playerid][pCarLic]) { text[0]= "{05FF00}Bestanden{A9C4E4}"; } else { text[0]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    if(PlayerInfo[playerid][pFlyLic]) { text[1]= "{05FF00}Bestanden{A9C4E4}"; } else { text[1]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    if(PlayerInfo[playerid][pBoatLic]) { text[2]= "{05FF00}Bestanden{A9C4E4}"; } else { text[2]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    if(PlayerInfo[playerid][pFishLic]) { text[3]= "{05FF00}Bestanden{A9C4E4}"; } else { text[3]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    if(PlayerInfo[playerid][pGunLic]) { text[4]= "{05FF00}Bestanden{A9C4E4}"; } else { text[4]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    if(PlayerInfo[playerid][pMotoLic]) { text[5]= "{05FF00}Bestanden{A9C4E4}"; } else { text[5]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    if(PlayerInfo[playerid][pLKWLic]) { text[6]= "{05FF00}Bestanden{A9C4E4}"; } else { text[6]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    if(PlayerInfo[playerid][pRollerLic]) { text[7]= "{05FF00}Bestanden{A9C4E4}"; } else { text[7]= "{FF2800}Nicht Bestanden{A9C4E4}"; }
    format(string,sizeof(string),"- Führerschein: %s\n- Fluglizenz: %s\n- Segelschein: %s\n- Angelschein: %s\n- Waffenschein: %s\n- Motorradschein: %s\n- LKW Schein: %s\n- Rollerschein: %s",
    text[0],text[1],text[2],text[3],text[4],text[5],text[6],text[7]);
    ShowPlayerDialog(playerid,128,DIALOG_STYLE_MSGBOX,"Deine Scheine",string,"Ok","");
    return 1;
    }
    }


    Zu Problem 1:
    Poste den Code, mit dem du das Fahrzeug speicherst, wenn der Spieler den Server verlässt.


    Zu Problem 3: Das verschieben wir auf später, wenn die anderen zwei Probleme behoben sind.

    Zum Problem:
    Wie hast du "SPEEDO" deklariert?


    Zu der Frage:
    Ich denke nicht, dass das normal ist, zumindest habe ich es noch nie so hinbekommen, geschweige den jemanden gesehen der das so hinbekommen hat. Außerdem hat er ja unendlich viel Nitro.

    anders weiß ich sonst nicht wie ich es machen soll...


    Ich denke, so sieht es um einiges besser aus, teste das mal:

    Spoiler anzeigen
    public EroberungAbfrageMap1(playerid)
    {
    new bool:show;
    if(gTeam[playerid] == TEAM_USARMY)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 0) show = true;
    }
    else if(gTeam[playerid] == TEAM_RUSSLAND)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 1) show = true;
    }
    if(show)
    {
    PlayerTextDrawShow(playerid, Textdraw43[playerid]);//Hintergrund
    PlayerTextDrawShow(playerid, Textdraw44[playerid]);//1
    SetTimerEx("EroberungBalken1",1000,false, "d", playerid);
    }
    else EroberungBalken5(playerid);
    return 1;
    }

    Spoiler anzeigen
    public EroberungBalken1(playerid)
    {
    new bool:show;
    if(gTeam[playerid] == TEAM_USARMY)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 0) show = true;
    }
    else if(gTeam[playerid] == TEAM_RUSSLAND)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 1) show = true;
    }
    if(show)
    {
    PlayerTextDrawShow(playerid, Textdraw45[playerid]);//2
    SetTimerEx("EroberungBalken2",1000,false, "d", playerid);
    }
    else EroberungBalken5(playerid);
    return 1;
    }

    Spoiler anzeigen
    public EroberungBalken2(playerid)
    {
    new bool:show;
    if(gTeam[playerid] == TEAM_USARMY)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 0) show = true;
    }
    else if(gTeam[playerid] == TEAM_RUSSLAND)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 1) show = true;
    }
    if(show)
    {
    PlayerTextDrawShow(playerid, Textdraw46[playerid]);//3
    SetTimerEx("EroberungBalken3",1000,false, "d", playerid);
    }
    else EroberungBalken5(playerid);
    return 1;
    }

    Spoiler anzeigen
    public EroberungBalken3(playerid)
    {
    new bool:show;
    if(gTeam[playerid] == TEAM_USARMY)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 0) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 0) show = true;
    }
    else if(gTeam[playerid] == TEAM_RUSSLAND)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 1) show = true;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 1) show = true;
    }
    if(show)
    {
    PlayerTextDrawShow(playerid, Textdraw47[playerid]);//4
    SetTimerEx("EroberungBalken4",1000,false, "d", playerid);
    }
    else EroberungBalken5(playerid);
    return 1;
    }

    Spoiler anzeigen
    public EroberungBalken4(playerid)
    {
    new show = 0;
    if(gTeam[playerid] == TEAM_USARMY)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 0) show = 1;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 0) show = 2;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 0) show = 3;
    }
    else if(gTeam[playerid] == TEAM_RUSSLAND)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, -226.1881,1167.8138,19.7422) && CheckEroberungMap1A == 1) show = 1;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -111.0474,1133.0267,19.7422) && CheckEroberungMap1B == 1) show = 2;
    else if(IsPlayerInRangeOfPoint(playerid, 7.0, -11.3303,1219.5079,19.3527) && CheckEroberungMap1C == 1) show = 3;
    }
    if(show != 0)
    {
    if(show == 1)
    {
    CheckEroberungMap1A = 0;
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben erfolgreich '{FF0000}A{FFFFFF}' erobert!");
    }
    else if(show == 2)
    {
    CheckEroberungMap1B = 0;
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben erfolgreich '{FF0000}B{FFFFFF}' erobert!");
    }
    else
    {
    CheckEroberungMap1C = 0;
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben erfolgreich '{FF0000}C{FFFFFF}' erobert!");
    }
    PlayerTextDrawShow(playerid, Textdraw48[playerid]);//5
    SetTimerEx("EroberungBalken5",1000,false, "d", playerid);
    }
    else EroberungBalken5(playerid);
    return 1;
    }

    Spoiler anzeigen
    public EroberungBalken5(playerid)
    {
    PlayerTextDrawHide(playerid, Textdraw43[playerid]);//Hintergrund
    PlayerTextDrawHide(playerid, Textdraw44[playerid]);//1
    PlayerTextDrawHide(playerid, Textdraw45[playerid]);//2
    PlayerTextDrawHide(playerid, Textdraw46[playerid]);//3
    PlayerTextDrawHide(playerid, Textdraw47[playerid]);//4
    PlayerTextDrawHide(playerid, Textdraw48[playerid]);//5
    return 1;
    }

    Schreibe es so:
    //Admin Godmode
    ocmd:agod(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel") < 1 )return SCM(playerid,COLOR_GRAU,"Du bist nicht befugt diesen Befehl zu nutzen!");
    switch(GetPVarInt(playerid, "GodMode"))
    {
    case 0:
    {
    SetPlayerHealth(playerid, 9999999.0);
    SendClientMessage(playerid, COLOR_ROT, "GodMode aktiviert. Nutze ihn nicht aus!");
    SetPVarInt(playerid, "GodMode", 1);
    printf("%i",GetPVarInt(playerid, "GodMode"));
    }
    case 1:
    {
    SetPlayerHealth(playerid,100.0);
    SendClientMessage(playerid, COLOR_ROT, "GodMode deaktiviert.");
    SetPVarInt(playerid, "GodMode", 0);
    printf("%i",GetPVarInt(playerid, "GodMode"));
    }
    }
    return 1;
    }

    Ich würde das RewardPlayer ganz weg lassen, denn wenn du 20 Stats hast, dann musst du es mit 20 Parametern machen, und das wird irgendwann einfach nur chaotisch.
    Schreibe die Werte direkt beim Laden in die Variable:
    PlayerFile_Load(playerid)
    {
    new file[100], File:PFile, Name[24], LineFromFile[100], ParameterName[50], ParameterValue[50];
    format(Name, sizeof(Name), APlayerData[playerid][PlayerName]);
    format(file, sizeof(file), PlayerFile, Name);

    if (fexist(file))
    {
    PFile = fopen(file, io_read);
    fread(PFile, LineFromFile);
    while (strlen(LineFromFile) > 0)
    {
    StripNewLine(LineFromFile);
    sscanf(LineFromFile, "s[50]s[50]", ParameterName, ParameterValue);

    if (strcmp(ParameterName, "Password", false) == 0)
    {
    format(APlayerData[playerid][PlayerPassword], 50, ParameterValue);
    }
    if (strcmp(ParameterName, "Money", false) == 0)
    {
    APlayerData[playerid][PlayerMoney] = strval(ParameterValue);
    GivePlayerMoney(playerid, APlayerData[playerid][PlayerMoney]);
    }
    if (strcmp(ParameterName, "Score", false) == 0)
    {
    APlayerData[playerid][PlayerScore] = strval(ParameterValue);
    SetPlayerScore(playerid, APlayerData[playerid][PlayerScore]);
    }
    fread(PFile, LineFromFile);
    }
    fclose(PFile);
    return 1;
    }
    return 0;
    }

    Vom Prinzip her war dein Code richtig, nur musst du dir bei der Arbeit mit SA-MP immer bewusst sein: Das ist SA-MP, und SA-MP besteht praktisch nur aus Fehlern. (Mehr oder weniger xD)


    Die Sync ist kompletter Schrott, und ich tippe stark drauf, dass es hier ebenfalls so ist. Du tunst das Fahrzeug, und fragst gleichzeitig ab, ob es die Tuning ID hat:
    GetVehicleComponentInSlot(cInfo[i][id_x],CARMODTYPE_SPOILER);
    bzw, welche Tuning ID es in diesem Slot hat.


    So, jetzt ist es so, dass in der kurzen Zeit der Spoiler noch nicht am Fahrzeug dran ist, sprich es wird 0 ausgegeben (Latenz zwischen Spieler und Server).


    Bei GetVehicleComponentType ist die Latenz egal, da es nur den Slot eines Items ausgibt, da muss der Spieler nicht mit einbezogen werden.



    Das ist wie, wenn du SetPlayerPos machst, und eine Zeile drunter mit GetPlayerPos die Position ausgeben lässt, dann bekommst du die Position, die der Spieler vor SetPlayerPos hatte.

    Du hast die else's vor den Abfragen vergessen:

    Spoiler anzeigen
    if(strcmp(cmd, "/admin", true) == 0 || strcmp(cmd, "/a", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "NUTZE: (/a)dmin [admin chat]");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] == 1)
    {
    format(string, sizeof(string), "*%d Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2)
    {
    format(string, sizeof(string), "*%d Super-Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 3)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 4)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 1337)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 1338)
    {
    format(string, sizeof(string), "*%d FrakManager %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2000)
    {
    format(string, sizeof(string), "*%d High-Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2001)
    {
    format(string, sizeof(string), "*%d stelv.Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2002)
    {
    format(string, sizeof(string), "*%d Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pSupporter] >= 1)
    {
    format(string, sizeof(string), "*%d Supporter %s[%d]: %s", PlayerInfo[playerid][pSupporter], sendername, playerid, result);
    }
    else return 1;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pSupporter] >= 1 || PlayerInfo[i][pAdmin] >= 1)
    {
    SendClientMessage(i,COLOR_YELLOW4,string);
    }
    }
    }
    Log("OA-Chat.txt",string);
    }
    return 1;
    }

    Also das ist eine sehr interessante Art da ran zu gehen, aber gut. So wie das aussieht fehlt das GivePlayerMoney, schreibe es mal so:
    RewardPlayer(playerid, Money, Points)
    {
    APlayerData[playerid][PlayerMoney] = APlayerData[playerid][PlayerMoney] + Money;
    APlayerData[playerid][PlayerScore] = APlayerData[playerid][PlayerScore] + Points;
    GivePlayerMoney(playerid, Money);
    return 1;
    }

    Klappt es, wenn du es so schreibst?
    Möglicherweise funktioniert die andere Funktion nicht sofort.


    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] != vehicleid)continue;
    if(GetVehicleComponentType(componentid) == CARMODTYPE_SPOILER) cInfo[i][c_spoiler] = componentid;
    new query[128];
    format(query,sizeof(query),"UPDATE autos SET c_spoiler='%i' WHERE id='%i'",cInfo[i][c_spoiler], cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    }
    return 1;
    }

    Code
    0|The State|Autohaus SF|No-one|-1661.969604|1217.775146|7.250000|7|1600000|10|69371479|1|0|100|100|10


    Das hier sind die xyz Koordinaten:

    Code
    -1661.969604|1217.775146|7.250000


    Was das Zeug davor oder danach ist kann man nicht sicher sagen. Am besten zu schaust dir das enum von der Variable an, in die die Daten geladen werden, dann weißt du wofür die Sachen stehen, bzw schau dir die Ladefunktion an.

    In dem Log findet sich nichts von UPDATE, das heißt entweder hast du den Spieler nicht gespeichert, oder du das SpielerSpeichern nicht aufgerufen.
    Setze mal einen Print an das Ende von deinem SpielerSpeichern und schaue ob der geprintet wird. Dann schaue nochmal in dem MySQL Log nach.
    print(query);

    Willkommen auf Breadfish!


    Du hattest bei dem query den zweiten Parameter vergessen, ich schätze mal das ist "i".
    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] != vehicleid)continue;
    cInfo[i][c_spoiler] = GetVehicleComponentInSlot(cInfo[i][id_x],CARMODTYPE_SPOILER);
    new query[128];
    format(query,sizeof(query),"UPDATE autos SET c_spoiler='%i' WHERE id='%i'",cInfo[i][c_spoiler], i);
    mysql_function_query(dbhandle,query,false,"","");
    }
    return 1;
    }


    Die if-Abfragen habe ich dir auch angepasst, das ist besser so.

    Ok, aber an was siehst du denn, dass das Fahrzeug Slot 0 hat?
    In dem Log steht nichts von Slot 0, oder siehst du da was?


    Problem ist, dass ich das Problem nicht nachvollziehen kann, weil der Log ja nichts von Slot 0 sagt, daher die Frage, woran erkennst du das? 8|