Probleme mit dcmd

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 fange langsam an zu Scripten, deshalb habe ich mir erstmal das dcmd tutorial angeschaut.


    Jetzt gibt es aber ein Problem. Wenn ich den Code aus dem TUT in meinen GM kopiere, heißt über meine schon erstellten befehle, kommen etwa 12 errors. Wenn ich diesen aber allein einkopiere, ist kein einziger fehler. Wie das ganze aufgebaut ist, bzw. warum was passiert, wollte ich mir danach anschauen.


    Funktionierend:

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(heal, 4, cmdtext);
    return 0;
    }


    dcmd_heal(playerid, params[])
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00FF00AA, "You have been healed");
    SendClientMessage(playerid, 0x00FF00AA, "Player healed");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Player not found");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/heal <playerid>\"");
    }
    return 1;
    }



    Nicht funktionierend:


    public OnPlayerCommandText(playerid, cmdtext[])
    //----------------------------------------
    {
    dcmd(heal, 4, cmdtext);
    return 0;
    }


    dcmd_heal(playerid, params[])
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00FF00AA, "You have been healed");
    SendClientMessage(playerid, 0x00FF00AA, "Player healed");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Player not found");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/heal <playerid>\"");
    }


    //----------------------------------------
    { if (strcmp("/port", cmdtext, true, 10) == 0) //Port Kommando
    {
    SetPlayerPos(playerid, 2070.7808,1355.2747,10.8203); //port Koordinaten
    return 1;


    }
    if (strcmp(cmdtext, "/afk", true) == 0) { // /afk befehl
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format(str, 256,"*%s ist afk!", pname, cmdtext[4]);
    SendClientMessage(playerid, rot, "Tippe /back, wenn du wieder da bist!");
    SendClientMessageToAll(AQUAGREEN, str);
    TogglePlayerControllable(playerid, 0);
    SetPlayerColor(playerid, schwarz);
    return 1;
    }
    if(strcmp(cmdtext, "/back", true) ==0) { // /back befehl
    new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
    format (str, 256, "*%s ist wieder zurück!", pname, cmdtext[4]);
    SendClientMessageToAll(AQUAGREEN, str);
    GameTextForPlayer(playerid,"Willkommen zurueck!", 2500,3);
    TogglePlayerControllable(playerid, 1);
    SetPlayerColor(playerid, weiß);
    return 1;
    }
    return 0;
    }

  • public OnPlayerCommandText(playerid, cmdtext[])
    //----------------------------------------
    {
    dcmd(heal, 4, cmdtext);


    if(strcmp("/port", cmdtext, true) == 0) //Port Kommando
    {
    SetPlayerPos(playerid, 2070.7808,1355.2747,10.8203); //port Koordinaten
    return 1;
    }
    if (strcmp(cmdtext, "/afk", true) == 0)
    { // /afk befehl
    new str[128], pname[20]; GetPlayerName(playerid, pname, 20);
    format(str, 128,"*%s ist afk!", pname, cmdtext[4]);
    SendClientMessage(playerid, rot, "Tippe /back, wenn du wieder da bist!");
    SendClientMessageToAll(AQUAGREEN, str);
    TogglePlayerControllable(playerid, 0);
    SetPlayerColor(playerid, schwarz);
    return 1;
    }
    if(strcmp(cmdtext, "/back", true) ==0)
    { // /back befehl
    new str[128], pname[20]; GetPlayerName(playerid, pname, 20);
    format (str, 128, "*%s ist wieder zurück!", pname, cmdtext[4]);
    SendClientMessageToAll(AQUAGREEN, str);
    GameTextForPlayer(playerid,"Willkommen zurueck!", 2500,3);
    TogglePlayerControllable(playerid, 1);
    SetPlayerColor(playerid, weiß);
    return 1;
    }
    return 0;
    }
    dcmd_heal(playerid, params[])
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00FF00AA, "You have been healed");
    SendClientMessage(playerid, 0x00FF00AA, "Player healed");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Player not found");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/heal <playerid>\"");
    }
    return 1;
    }
    So solltes funktionieren, Dcmd-Befehle stehen immer außerhalb von Publics, nur die Definierung steht im OnPlayerCommandText Callback ;)