Problem mit Ocmd-Befehle

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,


    bei mir gehen leider nicht alle OCMD Befehle, mir ist es ein rätsel, warum vielleicht könnt ihr mich ja helfen :)



    Diese Befehle gehen einfach nicht:



    ocmd:kick(playerid,params[])
    {
    new pID,reason[64],text[64];
    if(isUserAdmin(playerid,1))
    {
    if(sscanf(params,"us[128]",pID, reason)) return SendClientMessage(playerid,help_ora,"Benutze: /kick [Id/Name] [Text]");
    {
    format(text,sizeof(text), "Server:%s wurde von %s vom Server gekickt. Grund: %s",SpielerInfo[pID],SpielerInfo[playerid][pName],reason);
    SendClientMessageToAll(report_red,text);
    //Kick(pID);
    }
    }
    return 1;
    }


    ocmd:freeze(playerid,params[])
    {
    if(isUserAdmin(playerid,1))
    {
    new pID,string[128];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,help_ora,"/freeze [ID/Name]");
    format(string,sizeof(string),"Info: Spieler %s wurde gefreezed von %s",(pID),(playerid));
    TogglePlayerControllable(pID,0);
    GameTextForPlayer(pID,"~r~|STOP|",5000,0);
    return 1;
    }
    return 1;
    }




    Wiederum dieser schon :




    ocmd:addcar(playerid,params[])
    {
    new Float:vehx,Float:vehy,Float:vehz;
    new vehid,cc1,cc2;
    if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid,help_ora,"/addcar <Vehicle ID> <Farbe 1> <Farbe 2>");
    {
    if(vehid<400||vehid>611)return SendClientMessage(playerid,help_ora,"Bitte gültigen Fahrzeug ID angeben 400-611.");
    SendClientMessage(playerid, help_ora,"Tippe 0 für die Farbe schwarz ein");
    GetPlayerPos(playerid,vehx,vehy,vehz);
    new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1);
    SetVehicleNumberPlate(carid,"ADMIN");
    PutPlayerInVehicle(playerid, carid, 0);
    SendClientMessage(playerid,help_ora,"Das Admin-Fahrzeug wurde erstellt"); // #dev
    }
    return 1;
    }
    Wenn ich die Befehele Freeze oder Kick eingebe spuckt Crashdetect folgendes aus :




    [04:21:24] Number of vehicle models: 0
    [04:21:36] [debug] Run time error 4: "Array index out of bounds"
    [04:21:36] [debug] Accessing element at index 65535 past array upper bound 499
    [04:21:36] [debug] AMX backtrace:
    [04:21:36] [debug] #0 000012a8 in public ocmd_kick () from script.amx
    [04:21:36] [debug] #1 native CallLocalFunction () [00472260] from samp-server.exe
    [04:21:36] [debug] #2 000002ec in public OnPlayerCommandText () from script.amx



    Ich hoffe ihr könnt mir helfen :)



    €dit: eingerückt

    Do you have code that doesn't work, but still compiles without errors?


    [

  • new pID,reason[64],text[64];
    if(isUserAdmin(playerid,1))
    {
    if(sscanf(params,"us[128]",pID, reason)) return SendClientMessage(playerid,help_ora,"Benutze: /kick [Id/Name] [Text]");
    warum is die reason deklairung kleiner als im sscanf code?

    All in all it's just another brick in the wall

  • ocmd:kick(playerid,params[])
    {
    new pID, reason[128],text[128];
    if(!isUserAdmin(playerid,1)) return SendClientMessage(playerid,DEIN_FARBE,"Du bist kein Admin um dies zu tun!");
    {
    if(sscanf(params,"us[128]",pID, reason)) return SendClientMessage(playerid,help_ora,"Benutze: /kick [ID/Name] [Grund]");
    {
    format(text,sizeof(text), "Server: %s wurde von %s vom Server gekickt. Grund: %s",SpielerInfo[pID],SpielerInfo[playerid],reason);
    SendClientMessageToAll(report_red,text);
    Kick(pID);
    }
    }
    return 1;
    }

  • //Edit:


    Mir ist gerade aufgefallen, dass du einfach kein sscanf 2.0 benutzt, deshalb musst du es so schreiben:


    ocmd:kick(playerid,params[])
    {
    new pID, reason[128],text[128];
    if(!isUserAdmin(playerid,1)) return SendClientMessage(playerid,DEIN_FARBE,"Du bist kein Admin um dies zu tun!");
    if(sscanf(params,"us",pID, reason)) return SendClientMessage(playerid,help_ora,"Benutze: /kick [ID/Name] [Grund]");
    new name[24], name1[24];
    GetPlayerName(playerid, name, 24);
    GetPlayerName(pID, name1, 24);
    format(text,sizeof(text), "Server: %s wurde von %s vom Server gekickt. Grund: %s",name1,name,reason);
    SendClientMessageToAll(report_red,text);
    Kick(pID);
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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