Fehler bei einem Befehl.

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,
    ich komme bei einem Problem nicht weiter.


    Vorwort: Setze mich das erste Mal mit der ocmd.inc in Verbindung und habe auch keine Tutorials oder Beschreibungen darüber gefunden.


    Es kommt beim Speichern immer diese Fehlermeldung:
    :\Users\Tobias\Desktop\GTA\Script\gamemodes\Tassan.pwn(6) : fatal error 100: cannot read from file: "ocmd"


    In meinem Script steht das:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    ocmd:goto(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT,"NUTZUNG: /goto [ID]");
    if(!IsPlayerConnected(pID) || pID == INVALID_PLAYER_ID) return SCM(playerid, COLOR_GREY, "Diese ID ist nicht vergeben.");
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,0x646464FF,"Du besitzt nicht die benötigten Rechte für diesen Befehl.");
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos (pID,X,Y,Z);
    SetPlayerPos(playerid,X,Y,Z);
    return 1;
    }


    Das ist meine ocmd.inc:

    #include </a_samp>
    forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
    #define ocmd:%1(%2) forward ocmd_%1(%2);\
    public ocmd_%1(%2)
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    cmdtext[0]='_';
    new ocmdStr[128],ocmdParams[128],bool:ocmdAffe,ocmdFu;
    for(new i;i<128;i++)
    {
    if(cmdtext[i]=='\0')break;
    if((cmdtext[i]==' ')&&(!ocmdAffe))
    {
    ocmdAffe=true;
    continue;
    }
    if(!ocmdAffe)ocmdStr[i]=cmdtext[i];
    else
    {
    ocmdParams[ocmdFu]=cmdtext[i];
    ocmdFu++;
    }
    }
    format(ocmdStr,128,"ocmd%s",ocmdStr);
    if(!strlen(ocmdParams))format(ocmdParams,128," ");
    if(CallLocalFunction(ocmdStr,"ds",playerid,ocmdParams))return 1;
    cmdtext[0]='/';
    return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
    }
    #define OnPlayerCommandText ocmdOnPlayerCommandText
    {
    ocmd:goto(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT,"NUTZUNG: /goto [ID]");
    if(!IsPlayerConnected(pID) || pID == INVALID_PLAYER_ID) return SCM(playerid, COLOR_GREY, "Diese ID ist nicht vergeben.");
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,0x646464FF,"Du besitzt nicht die benötigten Rechte für diesen Befehl.");
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos (pID,X,Y,Z);
    SetPlayerPos(playerid,X,Y,Z);
    return 1;
    }



    Das war nur ein Versuch ;) ich weiß leider nicht wie ich hier weiter komme.
    Habe leider nicht viel darüber gefunden.
    Kann mir einer helfen?

    2 Mal editiert, zuletzt von Toxic ()

  • Du die ocmd Commands in keinen Public.
    Mach die außerhalb.
    Also nicht in public OnPlayerCommandText ;)
    machs die ocmd commands z.B. ganz ganz unten im Script. ;)

  • Ab es behoben, jetzt kommt das hier (alles gleich im Script geblieben):



    C:\Users\Tobias\Desktop\GTA\Script\gamemodes\Tassan.pwn(106) : error 020: invalid symbol name ""
    C:\Users\Tobias\Desktop\GTA\Script\gamemodes\Tassan.pwn(106) : warning 215: expression has no effect
    C:\Users\Tobias\Desktop\GTA\Script\gamemodes\Tassan.pwn(106) : error 017: undefined symbol "params"
    C:\Users\Tobias\Desktop\GTA\Script\gamemodes\Tassan.pwn(106) : error 029: invalid expression, assumed zero
    C:\Users\Tobias\Desktop\GTA\Script\gamemodes\Tassan.pwn(106) : fatal error 107: too many error messages on one line

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    ocmd:goto(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,BLAU,"NUTZUNG: /goto [ID]");
    if(!IsPlayerConnected(pID) || pID == INVALID_PLAYER_ID) return SCM(playerid, COLOR_GREY, "Diese ID ist nicht vergeben.");
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,0x646464FF,"Du besitzt nicht die benötigten Rechte für diesen Befehl.");
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos (pID,X,Y,Z);
    SetPlayerPos(playerid,X,Y,Z);
    return 1;
    }

  • Du darfst die ocmd Commands nicht innerhalb von anderen Publics posten. mach das den ocmd Befehl hier rein:


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }



    // HIER



    public OnPlayerCommandText(playerid, cmdtext[])