Freeze/UnFreeze klappt nicht

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 Community!
    Sry das ich so oft nach hilfe frage, aber irgendwie mache ich immer iwas falsch :o
    Könnt ihr mir Helfen das meinn Freeze/Unfreeze klappt?
    Er Freezt mich, aber wenn ich es wieder eingebe soll die sscanf abfrage so kommen wie es dort steht und dann soll er mich unfreezen


    ocmd:freeze(playerid,params[])
    {
    if(pInfo[playerid][padmin] >=2)
    {
    new pID, grund[128], string[128],string2[128];
    if(pInfo[pID][pfreeze] == 1)
    {
    //unfreezen
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /freeze [playerid]");
    format(string,sizeof(string),"Du hast %s entfreezt.",SpielerName(pID));
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string2,sizeof(string2),"[AdmCmd]: Du wurdest von Admin %s entfreezt.",SpielerName(playerid));
    SendClientMessage(pID,COLOR_ROT,string2);
    TogglePlayerControllable(pID,1);
    pInfo[pID][pfreeze] =0;
    }
    else if(pInfo[pID][pfreeze] == 0)
    {
    //Freezen
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /freeze [playerid] [grund]");
    format(string,sizeof(string),"Du hast %s gefreezt Grund: %s",SpielerName(pID),grund);
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string2,sizeof(string2),"[AdmCmd]: Du wurdest von %s gefreezt. Grund: %s",SpielerName(playerid),grund);
    SendClientMessage(pID,COLOR_ROT,string2);
    TogglePlayerControllable(pID,0);
    }
    return 1;

    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen befehl zu nutzen!");
    }
    return 1;
    }

  • Du hast ja zuerst:
    if(pInfo[pID][pfrezze]==0)
    Woher soll er hier die pID nehmen?


    Du bestimmst ja erst nachher die pID mit sscanf.
    -->
    if(pInfo[pID][pfrezze]==0){
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /freeze [playerid]");
    }
    Du musst zuerst die sscanf Abfrage machen und erst dann die if-Abfrage:



    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /freeze [playerid]");
    if(pInfo[pID][pfrezze]==0)
    {
    blabla....
    }

  • Klappt soweit aber,
    er entfreezt nicht


    ocmd:freeze(playerid,params[])
    {
    if(pInfo[playerid][padmin] >=2)
    {
    new pID, grund[128], string[128],string2[128];
    if(sscanf(params,"u[128]",pID))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /freeze [playerid]");
    if(pInfo[pID][pfreeze] == 1)
    {
    //unfreezen
    format(string,sizeof(string),"Du hast %s entfreezt.",SpielerName(pID));
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string2,sizeof(string2),"[AdmCmd]: Du wurdest von Admin %s entfreezt.",SpielerName(playerid));
    SendClientMessage(pID,COLOR_ROT,string2);
    TogglePlayerControllable(pID,1);
    pInfo[pID][pfreeze] =0;
    }
    if(sscanf(params,"us[128]",pID,grund))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /freeze [playerid] [grund]");
    else if(pInfo[pID][pfreeze] == 0)
    {
    //Freezen
    format(string,sizeof(string),"Du hast %s gefreezt Grund: %s",SpielerName(pID),grund);
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string2,sizeof(string2),"[AdmCmd]: Du wurdest von %s gefreezt. Grund: %s",SpielerName(playerid),grund);
    SendClientMessage(pID,COLOR_ROT,string2);
    TogglePlayerControllable(pID,0);
    }
    return 1;

    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen befehl zu nutzen!");
    }
    return 1;
    }


    //EDIT: Klappt