Fehler bei den Fraktionen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey wenn ich bei makeleader die Fraktions ID angebe zeigt er mir in der Nachricht nicht den Fraktionsnamen an.


    Fraktions Enum:
    enum FrakDaten
    {
    frakname[128],
    Float:fx,
    Float:fy,
    Float:fz,
    Float:fr,
    frakint,
    frakworld,
    frakcolor




    }
    new FrakInfo[][FrakDaten] = {
    {"Zivilist", 0.0, 0.0, 0.0, 0.0, 0,0,WEISS},
    {"LSPD", 2331.1563, -1388.4844, 26.2266, 0.0, 0, 0, BLAU}
    };


    Makeleader befehl:
    CMD:makeleader(playerid, params[])
    {
    if(SpielerInfo[playerid][pAdmin] < 4) return SCM(playerid, ROT,"{CACA00}[INFO]:{FFFFFF} Dein Adminrang reicht nicht aus.");
    new pID, fID;
    if(sscanf(params,"ui", pID, fID)) return SCM(playerid, ROT,"{CACA00}[INFO]:{FFFFFF} /makeleader <Name> <Fraktion>.");
    if(fID >= sizeof(FrakInfo)) return SCM(playerid, ROT,"{CACA00}[INFO]:{FFFFFF} Diese Fraktion existiert nicht.");
    SpielerInfo[pID][pFrak] = fID;
    SpielerInfo[pID][pRang] = 6;
    new string[128], str[128];
    format(string, sizeof(string), "[INFO]: %s hat dich zum Leader der Fraktion %s gemacht.", PlayerName(playerid), fID);
    format(str, sizeof(str), "[INFO]: Du hast %s zum Leader der Fraktion %s gemacht.", PlayerName(pID), fID);
    SendClientMessage(pID, HELLBLAU, string);
    SendClientMessage(playerid, HELLBLAU ,str);
    SavePlayer(pID);


    return 1;
    }



    So und wenn ich noch n Spawnchange machen will möchte ich auch , dass er an den angegebenen Koordinaten spawnt.
    Allerdings zeigt mir die Konsole folgendes:

    Code
    [debug] Run time error 6: "Invalid Instruction"
    Unknown Opcode 0x0 at adress 0x00000004
    AMX backtrace:
    #0 00000004 in Public OnPlayerSpawn <> from testeins.amx
    Fachkraftx3 died 255


    So nun der Code für OnPlayerSpawn
    public OnPlayerSpawn(playerid)
    {
    GivePlayerMoney(playerid,1000000);
    new fID;
    fID = SpielerInfo[playerid][pFrak];
    if(SpielerInfo[playerid][pSpawn]==1)
    {
    if(!isFraktion(playerid, 0))
    {
    SetPlayerPos(playerid, FrakInfo[fID][fx], FrakInfo[fID][fy], FrakInfo[fID][fz]);
    SetPlayerFacingAngle(playerid, FrakInfo[fID][fr]);
    SetPlayerInterior(playerid, FrakInfo[fID][frakint]);
    SetPlayerVirtualWorld(playerid, FrakInfo[fID][frakworld]);
    SetPlayerColor(playerid, FrakInfo[fID][frakcolor]);
    SendClientMessage(playerid, ROT, "Fraktionstest");


    }
    }
    return 1;
    }


    Spawnchange Befehl:
    CMD:spawnchange(playerid, params[])
    {
    if(isFraktion(playerid, 0)) return SCM(playerid,GRAU,"{CACA00}[INFO]:{FFFFFF} Du bist in keiner Fraktion.");
    if(SpielerInfo[playerid][pSpawn]==0)
    {
    SpielerInfo[playerid][pSpawn]=1;
    }
    if(SpielerInfo[playerid][pSpawn]==1)
    {
    SpielerInfo[playerid][pSpawn]=0;
    }
    new str[128];
    format(str,sizeof(str),"{CACA00}[INFO]:{FFFFFF} Du hast deinen Spawn geändert.");
    SendClientMessage(playerid,GRAU, str);
    SavePlayer(playerid);


    return 1;
    }
    Hoffentlich könnt ihr mir helfen.

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • #define WEISS 0xFFFFFFFF
    #define BLAU 0x0A00FFFF

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • enum FrakDaten
    {
    frakname[128],
    Float:fx,
    Float:fy,
    Float:fz,
    Float:fr,
    frakint,
    frakworld,
    frakcolor
    }
    new FrakInfo[][FrakDaten] = {
    {"Zivilist", 0.0, 0.0, 0.0, 0.0, 0,0,WEISS},
    {"LSPD", 2331.1563, -1388.4844, 26.2266, 0.0, 0, 0, BLAU}
    };


    CMD:makeleader(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdmin] < 4)return SCM(playerid,ROT,"{CACA00}[INFO]:{FFFFFF} Dein Adminrang reicht nicht aus!");
    new pID,fID;
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,ROT,"{CACA00}[INFO]:{FFFFFF} /makeleader <Name> <Fraktion>");
    if(fID > sizeof FrakInfo)return SendClientMessage(playerid,ROT,"{CACA00}[INFO]:{FFFFFF} Diese Fraktion existiert nicht!");
    SpielerInfo[pID][pFrak] = fID;
    SpielerInfo[pID][pRang] = 6;
    new string[128];
    format(string,128,"[INFO]: %s hat dich zum Leader der Fraktion %s gemacht!",PlayerName(playerid),FrakInfo[fID][frakname]);
    SendClientMessage(pID,HELLBLAU,string);
    format(string,128,"[INFO]: Du hast %s zum Leader der Fraktion %s gemacht!",PlayerName(pID),FrakInfo[fID][frakname]);
    SendClientMessage(playerid,HELLBLAU;string);
    SavePlayer(pID);
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    GivePlayerMoney(playerid,1000000);
    new fID = SpielerInfo[playerid][pFrak];
    if(SpielerInfo[playerid][pSpawn] == 1)
    {
    if(!isFraktion(playerid,0))
    {
    SetPlayerPos(playerid,FrakInfo[fID][fx],FrakInfo[fID][fy],FrakInfo[fID][fz]);
    SetPlayerFacingAngle(playerid,FrakInfo[fID][fr]);
    SetPlayerInterior(playerid,FrakInfo[fID][frakint]);
    SetPlayerVirtualWorld(playerid,FrakInfo[fID][frakworld]);
    SetPlayerColor(playerid,FrakInfo[fID][frakcolor]);
    SendClientMessage(playerid,ROT,"Fraktionstest");
    }
    }
    return 1;
    }
    CMD:spawnchange(playerid,params[])
    {
    if(isFraktion(playerid,0))return SCM(playerid,GRAU,"{CACA00}[INFO]:{FFFFFF} Du bist in keiner Fraktion!");
    if(SpielerInfo[playerid][pSpawn] == 0)
    {
    SpielerInfo[playerid][pSpawn] = 1;
    SendClientMessage(playerid,GRAU,"{CACA00}[INFO]:{FFFFFF} Du hast deinen spawn geändert!");
    SavePlayer(playerid);
    return 1;
    }
    else if(SpielerInfo[playerid][pSpawn] == 1)
    {
    SpielerInfo[playerid][pSpawn] = 0;
    SendClientMessage(playerid,GRAU,"{CACA00}[INFO]:{FFFFFF} Du hast deinen spawn geändert!");
    SavePlayer(playerid);
    return 1;
    }
    return 1;
    }

    Einmal editiert, zuletzt von AirM4X ()

  • @[NGD]Manne:
    danke aber was hab ich falsch gemacht ^^?

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • spawnchange


    Schreib den Befehl mal so:


    CMD:spawnchange(playerid) {
    if(isFraktion(playerid,0))return SCM(playerid,GRAU,"{CACA00}[INFO]:{FFFFFF} Du bist in keiner Fraktion!");
    SpielerInfo[playerid][pSpawn] = !SpielerInfo[playerid][pSpawn];
    SendClientMessage(playerid,GRAU,"{CACA00}[INFO]:{FFFFFF} Du hast deinen spawn geändert!");
    return SavePlayer(playerid);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • @[NGD]Manne:
    danke aber was hab ich falsch gemacht ^^?


    Du wolltest den Fraktionsnamen auslesen, hast %s für Strings benutzt, das war richtig.
    Hast aber dann fID benutzt, was ein Integer ist.
    ;)


    EDIT:
    Kaliber: Da kommt doch das gleiche bei raus :thumbup:

  • Beitrag von Jeffry ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Den Run-Time-Error behebt es aber nicht, da hat [NGD]Manne schon Recht.


    Davon hat er gar nicht geredet? :huh:


    Er redete davon, dass der Befehl der selbe ist, aber er hatte einen Fehler darin, deshalb ich das korrigiert :rolleyes:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Den Runtime Error hab ich selber bemerkt. Das war nur eine spielerei.
    Hat aufjedenfall funktioniert. Darf ich eig im selben Thema noch eine andere Frage stellen ?
    Weil wenn ja bräucht ich mal eure Hilfe.


    Denn wenn ich den Spieler Speicher.
    Hier der Stock:
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Fraktion", SpielerInfo[playerid][pFrak], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Rang", SpielerInfo[playerid][pRang], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Spawn", SpielerInfo[playerid][pSpawn], "Name", SpielerInfo[playerid][pName]);
    }
    }


    Dann Speichert er bei Geld : -1 bei Tode: -1 bei Kills: -1 und Health bleibt ganz 0.
    Wie kann ich also nun das Geld das er hat richtig Speichern und das Leben :) ?
    Danke schonma ;)
    Achja und wie kann ich das Geld und Leben wieder abrufen. Das hab ich ja eig. mit LoadPlayer.
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pHealth] = mysql_GetFloat("accounts","Health","Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFrak] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pRang] = mysql_GetInt("accounts", "Rang", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pSpawn] = mysql_GetInt("accounts", "Spawn", "Name", SpielerInfo[playerid][pName]);

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • Hast du dem Spieler auch Werte gegeben, zum Beispiel 10 Kills oder so, bei
    SpielerInfo[playerid][pKills]
    ?


    Wenn ja, dann schalte mal den mysql_debug oder mysql_log mit 1 oder LOG_ALL (je nach Plugin) ein und poste was im Log ausgegeben wird, wenn du den Spieler speicherst.

  • Hö :o ? Das musst du mir jetz erklären
    Jeffry:

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • Jeffry:
    .Toby:

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • Naja, was du machst ist Folgendes (Beispiel Kills):


    • Kills als -1 aus der Datenbank laden.

      Zitat

      [16:38:42] CMySQLHandler::Query(SELECT `Kills` FROM `accounts` WHERE `Name` = 'Fachkraftx3') - Successfully executed.
      [16:38:42] CMySQLHandler::FetchRow() - Return: -1


    • Kills als -1 in die Datenbank speichern.

      Zitat

      [16:39:06] CMySQLHandler::Query(UPDATE `accounts` SET `Kills` = '-1' WHERE `Name` = 'Fachkraftx3') - Successfully executed.



    Also an sich stimmt das. Du hast den Wert (SpielerInfo[playerid][pKills]) einfach nirgends geändert, zwischen Laden und Speichern.

  • Jeffry:
    Ok und wie kann ich dann das Geld setzen mit (GivePlayerMoney).
    Muss ich das mit z.B. new money = SpielerInfo[playerid][pGeld] und dann GivePlayerMoney(playerid,money); machen?

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • Jeffry:
    Also ungefähr so
    new money = SpielerInfo[playerid][pGeld];
    GivePlayerMoney(playerid,money);
    Haut das hin ?

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox