Problem mit Commands

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 Leute.
    Also ich habe mir gestern mal angeguckt wie man Commands mit Parametern erstellt sprich:
    /kick [playerid]
    /ban [playerid]
    usw.
    Soo jetzt habe ich das gemacht,
    gehe in meinen Server,
    und merke, dass egal was ich mache ob ich /ban eingebe, ob ich /warn eingebe,
    immer führt das script den /kick befehl aus...
    Woran liegt das?
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    //Amdin Befehle
    new idx, cmd[128];
    cmd=strtok(cmdtext,idx);
    if(!strcmp(cmd,"/kick",true,5&& IsPlayerAdmin(playerid))) {
    new sID[128], pID;
    sID=strtok(cmdtext,idx);
    if(!strlen(sID)) {
    return SendClientMessage(playerid,COLOR_RED,"Nutze: /kick [playerid]");
    }
    pID=strval(sID);
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    Kick(pID);
    SendClientMessage(playerid, COLOR_RED, "Spieler gekickt.");
    }
    cmd=strtok(cmdtext,idx);
    if(!strcmp(cmd,"/ban",true,5&& IsPlayerAdmin(playerid))) {
    new sID[128], pID;
    sID=strtok(cmdtext,idx);
    if(!strlen(sID)) {
    return SendClientMessage(playerid,COLOR_RED,"Nutze: /ban [playerid]");
    }
    pID=strval(sID);
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    Ban(pID);
    SendClientMessage(playerid, COLOR_RED, "Spieler gebant.");
    }
    if(!strcmp(strget(cmdtext, 0), "/setteam"))
    if(IsPlayerAdmin(playerid))
    {
    strtok(cmdtext,idx);
    new id;
    new group;
    id = strval(strtok(cmdtext,idx));
    group = strval(strtok(cmdtext,idx));
    gTeam[id] = group;
    SetPlayerColor(id,team_color[group]);
    return 1;
    }
    if(!strcmp(strget(cmdtext, 0), "/teams"))
    if(IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid, COLOR_RED, " COP=0 MEDIC=1 ADAC=2 FW=3");
    return 1;
    }
    //Polizei Befehle
    cmd=strtok(cmdtext,idx);
    if(!strcmp(cmd,"/warn",true,5&& gTeam[playerid] == TEAM_COP)) {
    new sID[128], pID;
    sID=strtok(cmdtext,idx);
    if(!strlen(sID)) {
    return SendClientMessage(playerid,COLOR_RED,"Nutze: /warn [playerid]");
    }
    pID=strval(sID);
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    GameTextForPlayer(pID,"Halten sie ihr Fahrzeug an!",8000,6);
    }
    cmd=strtok(cmdtext,idx);
    if(!strcmp(cmd,"/jail",true,5&& gTeam[playerid] == TEAM_COP)) {
    new sID[128], pID;
    sID=strtok(cmdtext,idx);
    if(!strlen(sID)) {
    return SendClientMessage(playerid,COLOR_RED,"Nutze: /jail [playerid]");
    }
    pID=strval(sID);
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    //SetPlayerPos(pID, X, Y, Z);
    SendClientMessage(playerid,COLOR_YELLOW,"Spieler erfolgreich gejailt!");
    }
    cmd=strtok(cmdtext,idx);
    if(!strcmp(cmd,"/unjail",true,5&& gTeam[playerid] == TEAM_COP)) {
    new sID[128], pID;
    sID=strtok(cmdtext,idx);
    if(!strlen(sID)) {
    return SendClientMessage(playerid,COLOR_RED,"Nutze: /unjail [playerid]");
    }
    pID=strval(sID);
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    //SetPlayerPos(pID, X, Y, Z);
    SendClientMessage(playerid,COLOR_YELLOW,"Spieler erfolgreich unjailt!");
    }
    //ADAC Befehl
    if(strcmp(cmd, "/abschleppen", true)==0&& gTeam[playerid] == TEAM_ADAC){
    if(IsPlayerInAnyVehicle(playerid)){
    new vehid = GetPlayerVehicleID(playerid);
    if(!IsTrailerAttachedToVehicle(vehid)){
    new Float:x, Float:y, Float:z;
    GetVehiclePos(vehid, x, y, z );
    new vehiclet;
    GetVehicleWithinDistance(playerid, x, y, z, 100.0, vehiclet);
    AttachTrailerToVehicle(vehiclet, vehid);
    }
    else{
    DetachTrailerFromVehicle(vehid);
    }
    }
    return 1;
    }
    return 1;
    }
    Hier ist der OnPlayerCommandText() Teil..
    Hoffe ihr könnt helfen.
    Habe null Warnings und null Errors drinne, und geht trotzdem nihct..
    wwas habe ich falsch gemacht bzw was habe ich nichct beachtet??
    MfG
    Maxx

  • versuchs ma mit dcmd und SSCANF ist A. einfacher und B. kürzer


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • da kommen bei mir extrem viele nicht behebbare fehler...
    MfG
    Maxx
    Edit:
    Diese Fehler kommen dann:
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(201) : error 017: undefined symbol "dcmd_kick"
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(204) : warning 225: unreachable code
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(204) : error 017: undefined symbol "dcmd_kick"
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(206) : error 017: undefined symbol "params"
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(210) : error 017: undefined symbol "params"
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(219) : warning 225: unreachable code
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(219) : warning 217: loose indentation
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(219) : error 017: undefined symbol "cmd"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.
    Kann mir einer Helfen?
    MfG
    Maxx

    Einmal editiert, zuletzt von Maxx ()

  • kp wo fehler is aber probier ban mal mit dem meins is bischen länger
    if(strcmp(cmd, "/ban", true) == 0)
    {
    new reason[256],givep[24];
    if (PlayerInfo[playerid][pAdminLevel] >= 3 || IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, ORANGE, "USAGE: /ban [playerid] [reason]");
    SendClientMessage(playerid, ORANGE, "FUNCTION: Will BAN the specified player. **PLEASE ENTER THE ID ONLY!**");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    new adminlevel = PlayerInfo[playerid][pAdminLevel];
    GetPlayerName(giveplayerid,givep,24);
    if (IsPlayerAdmin(giveplayerid) && Hax[giveplayerid] == 1)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
    {
    reason[idx - offset] = cmdtext[idx];
    idx++;
    }
    reason[idx - offset] = EOS;
    if(!strlen(reason))
    {
    SendClientMessage(playerid, ORANGE, "USAGE: /ban [SpielerID] [Begründung]");
    return 1;
    }
    else
    {
    new sstring[256];
    new ip[128];
    printf("[ADMIN NEWS]: Admin %s banned %s. Reason: %s", sendername, giveplayer, reason);
    format(string, sizeof(string), "-| %s wurde von den Admins gebannt [Begründung: %s cYa]|-", sendername,giveplayer,reason);
    SendClientMessageToAll(ADMIN_RED, string);
    GetPlayerIp(giveplayerid,ip,128);
    format(sstring, sizeof(sstring), "-| Banned Player's IP: 24.74.134.42 |-");
    SendClientMessageToAdmins(ADMIN_RED, sstring,1);
    }
    }
    else if (PlayerInfo[giveplayerid][pAdminLevel] > adminlevel)
    {
    format(string, sizeof(string), "-| [%i]%s tried to ban you! |-",playerid,player);
    SendClientMessage(giveplayerid, ADMIN_RED,string);
    SendClientMessage(playerid, ADMIN_RED, "Du kannst keinen Admin mit höherem Rang Bannen!");
    }
    else if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
    {
    reason[idx - offset] = cmdtext[idx];
    idx++;
    }
    reason[idx - offset] = EOS;
    if(!strlen(reason))
    {
    SendClientMessage(playerid, ORANGE, "USAGE: /ban [playerid] [reason]");
    return 1;
    }
    else
    {
    new sstring[256];
    new ip[128];
    printf("[ADMIN NEWS]: Admin %s banned %s. Reason: %s", sendername, giveplayer, reason);
    format(string, sizeof(string), "-| Administrator %s banned %s. [Reason: %s ]|-", sendername,giveplayer,reason);
    SendClientMessageToAll(ADMIN_RED, string);
    GetPlayerIp(giveplayerid,ip,128);
    format(sstring, sizeof(sstring), "-| Banned Player's IP: %s |-", ip);
    SendClientMessageToAdmins(ADMIN_RED, sstring,1);
    new vehicleID = GetPlayerVehicleID(giveplayerid);
    if (strcmp(VehicleInfo[vehicleID][owner],PlayerInfo[giveplayerid][name],false) == 0)
    {
    SetVehicleToRespawn(vehicleID);
    SetVehicleVirtualWorld(vehicleID,0);
    PlayerInfo[giveplayerid][vowned] = 0;
    PlayerInfo[giveplayerid][vowner] = 0;
    strmid(VehicleInfo[vehicleID][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
    VehicleInfo[vehicleID][bought] = 0;
    VehicleInfo[vehicleID][secure] = 0;
    SavePlayer(giveplayerid);
    }
    PlayerInfo[giveplayerid][pAdminLevel] = 0;
    BanEx(giveplayerid,reason);
    BanLog(string);
    }
    }
    else if(giveplayerid == INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), "%d is not an active player.", giveplayerid);
    SendClientMessage(playerid, RED, string);
    }
    }
    else
    {
    SendClientMessage(playerid, RED, "You are not an admin with the required level.");
    }
    return 1;
    }

  • ich hab es mir nochmal angeschaut, und habe es letzten endes mit dcmd gemacht.
    ist zwar etwas anders aber wenn mans kann isses echt extrem easy, habe keine Fehler, keine Errors mehr mit dem dcmd.
    nur jetzt kommt immer ein Warning mit nem anderen Befehl... :
    C:\Dokumente und Einstellungen\...\Desktop\Scripten\gamemodes\Server.pwn(205) : warning 225: unreachable code
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.
    Und der dazugehörige Teil:
    //adac
    if (strcmp("/schleppen", cmdtext, true, 10) == 0){//in dieser line is der Warning....
    if(IsPlayerInAnyVehicle(playerid)){
    new vehid = GetPlayerVehicleID(playerid);
    if(!IsTrailerAttachedToVehicle(vehid)){
    new Float:x, Float:y, Float:z;
    GetVehiclePos(vehid, x, y, z );
    new vehiclet;
    GetVehicleWithinDistance(playerid, x, y, z, 100.0, vehiclet);
    AttachTrailerToVehicle(vehiclet, vehid);
    }
    else{
    DetachTrailerFromVehicle(vehid);
    }
    }
    }
    return 1;
    Hoffe ihr könnt mir ein letztes mal helfen.
    MfG
    Maxx

  • if (strcmp("/schleppen", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehid = GetPlayerVehicleID(playerid);
    if(!IsTrailerAttachedToVehicle(vehid))
    {
    new Float:x, Float:y, Float:z;
    GetVehiclePos(vehid, x, y, z );
    new vehiclet;
    GetVehicleWithinDistance(playerid, x, y, z, 100.0, vehiclet);
    AttachTrailerToVehicle(vehiclet, vehid);
    }
    else
    {
    DetachTrailerFromVehicle(vehid);
    }
    }
    return 1;
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • bin ich auch, hatte mit strok usw. noch nie probleme, ob die CPU nun paar Prozente mehr ausgelastet wird, ist egal, Linux teilt sich das schon selber ein meiner Meinung nach, Linux ist ja bekannt als bessere Ressourcen "Übertragung", jeder weiß wovon ich sprechen will, weiß grade net wie ich es am besten aussagen soll ^^

  • bin ich auch, hatte mit strok usw. noch nie probleme, ob die CPU nun paar Prozente mehr ausgelastet wird, ist egal, Linux teilt sich das schon selber ein meiner Meinung nach, Linux ist ja bekannt als bessere Ressourcen "Übertragung", jeder weiß wovon ich sprechen will, weiß grade net wie ich es am besten aussagen soll ^^


    Linux llaggt nicht sviel. Für die die es nicht verstehen ;)