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
  • Hallo liebe Community,


    ich arbeite gerade an einem kleinen (zudem mein erster) TDM Gamemode. Nun habe ich ein paar probleme mit DCMD. Und zwar habe ich 3 Befehle (bei einem bin ich mir nicht ganz sicher ob er so richtig ist :S ) der erste klappt wunderbar, und als die die den zweiten geschrieben habe hatte ich auf einmal 4 Errors. Ich poste mal meine Befehle, und wäre liebt wenn Ihr mir sagen könntet ob der dritte Befehl so richtig ist bzw was ich verändern muss. Ich scripte noch nicht solange aber ich wollte direkt mit was schweren und schnellen anfangen, zudem finde ich es 10mal übersichtlicher.


    dcmd(aheal, 5, cmdtext);
    return 0;
    }
    dcmd_aheal(playerid, params[])
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerAdmin(playerid))
    {
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00D7FFFF, "Information: Du wurdest von einem Admin geheilt.");
    SendClientMessage(playerid, 0x00D7FFFF, "Information: Der gewählte Spieler wurde geheilt.");
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Der gewählte Spieler befindet sich nicht auf dem Server.");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "Benutzung:/aheal [Name/ID des Spielers]");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Du bist kein Administrator.");
    return 1;
    }

    dcmd(akill, 5, cmdtext);
    return 0;
    }
    dcmd_akill(playerid, params[])
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerAdmin(playerid))
    {
    if(IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 0.0);
    SendClientMessage(id, 0x00D7FFFF, "Information: Du wurdest von einem Admin getötet.");
    SendClientMessage(playerid, 0x00D7FFFF, "Information: Der gewählte Spieler wurde getötet.");
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Der gewählte Spieler befindet sich nicht auf dem Server.");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Benutzung:/akill [Name/ID des Spielers].");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Du bist kein Administrator.");
    return 1;
    }

    dcmd(firstaid, 8, cmdtext);
    return 0;
    }

    dcmd_firstaid(playerid, params[])
    {
    new id;
    if (strlen(pramas))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00D7FFFF, "Information: Du hast deine Wunden mit deinem Erste-Hilfekasten verarztet.");
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "Benutzung: /firstaid.");
    return 1;
    }
    return 1;
    }


    Und das sind die Erros:


    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\CnG.pwn(140) : error 017: undefined symbol "cmdtext"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\CnG.pwn(140) : error 029: invalid expression, assumed zero
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\CnG.pwn(140) : warning 215: expression has no effect
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\CnG.pwn(140) : error 001: expected token: ";", but found "]"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\CnG.pwn(140) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.



    Über Unterstützung würde ich mich sehr freuen :)


    Mit freundlichen Grüßen


    Dominik

  • hast du die dcmd cmds in OnPlayerComandText?
    Bei dcmd muss es so sein:
    OnPlayerCommandText(...)
    {
    dcmd(aheal,5,cmdtext);
    dcmd(akill,5,cmdtext);
    dcmd(firstaid,8,cmdtext);
    //und immer so weiter
    return 0;
    }
    //die cmds selbst kommen dann ausserhalb von Publics irgendwo im gamemode
    dcmd_aheal(playerid, params[])
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerAdmin(playerid))
    {
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00D7FFFF, "Information: Du wurdest von einem Admin geheilt.");
    SendClientMessage(playerid, 0x00D7FFFF, "Information: Der gewählte Spieler wurde geheilt.");
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Der gewählte Spieler befindet sich nicht auf dem Server.");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "Benutzung:/aheal [Name/ID des Spielers]");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Du bist kein Administrator.");
    return 1;
    }
    //und hier dann immer weiter


    wieso benutzt du nicht sscanf?

  • Ich scripteerst seit circa einer Woche. Ich wollte mich nicht mit strcmp beschäftigen da ja alle sagen das es langsam und unübersichtlich wäre (ist es auch ;) ). SScanf finde ich jetzt nicht unbedigt so "leicht". Aber ich kanns ja mal versuchen, learing by doing ^^