/makeadmin hilfe

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
  • guten tag ich bräuchte mal hilfe bei /makeadmin


    so sieht meine anbrfrage aus ob der spieler admin ist


    if(Spieler[playerid][Adminlevel] == 2)


    undzwa soll es o sein das man /makeadmin [ID] [Level]


    nutzen kan


    so sieht der befehl im moment aus bitte um hilfe


    if(strcmp("/makeadmin",cmdtext,true)==0)
    {
    return 1;
    }

  • *facepalm* Falls du nicht so ein guter Scripter bist, so verwende bitte einen anderen Command-Erzeuger, in meinem Falle wäre das Ocmd, weil Ocmd schneller als die anderen sind (strcmp, dcmd, zcmd, rcmd). Bitte downloade dir das und dazu noch das sscanf stock, findest du im offizielen englischen sa-mp wiki.


    Um zum Thema zu kommen:



    ocmd:makeadmin(playerid,params[])//Ocmd ist der erzeuger des Befehls, playerid ist die ID und params sind die parameter
    {
    new pID, rang, string[128];
    if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_RED,"Fehler: /makeadmin [playerid] [rang]");
    format(string,sizeof(string),"%s wurde von %s zum Administrator Level %i ernannt. Herzlichen Glückwunsch!",GetSpielerName(pID),GetSpielerName(playerid),rang);
    if(IsPlayerConnected(pID))
    {
    PlayerInfo[playerid][Admin] = rang;
    SendClientMessageToAll(string);

    }
    return 1;
    }




  • Irgendwie lässt du dir jeden Befehl machen oder?
    Nunja.. ich habs jz nur in dcmd..

    cmd_makeadmin(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel") == 5)
    {
    new pID, rank, string[128], string2[128];
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,COLOR_HELLBLAU,"Benutze: /makeadmin [ID] [Rank]");
    if(rank<0||rank>5)return SendClientMessage(playerid,COLOR_DUNKELROT,"Bitte einen gültigen Rang angeben.");
    if(IsPlayerConnected(pID))
    {
    format(string,sizeof(string),"Sie haben (%d)%s auf Rank %i befördert!",pID,SpielerName(pID), rank);
    SendClientMessage(playerid, COLOR_GRÜN, string);
    format(string2, sizeof(string2),"Herlichen Glückwunsch! (%d)%s hat Ihnen Adminrank %i gegeben!",playerid,SpielerName(playerid), rank);
    SendClientMessage(pID, COLOR_GRÜN, string2);
    SetPVarInt(pID,"Adminlevel",rank);
    SpielerSpeichern(pID);
    }
    }
    return 1;
    }

  • 1 habe ich das ganze script so aufgebaut und werde es jetzt nicht wegen einem befehl umbauen


    2 mal anSebastian was labberst du das ich mir jeden befehl machen lasse nur weil ich abundzu ein paar fragen stelle auserdem hat das doch überhaubt rein garnichts mit der frage zutun soory aber solche unnötigen sprüche regen mich halt ein wenig auf besonders wen sie nichtmal stimmen

  • wen dann richtig


    ocmd:makeadmin(playerid,params[])//Ocmd ist der erzeuger des Befehls, playerid ist die ID und params sind die parameter
    {
    new pID, rang, string[128];
    if(Spieler[playerid][Adminlevel] == 2)
    {
    if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_RED,"Fehler: /makeadmin [playerid] [rang]");
    format(string,sizeof(string),"%s wurde von %s zum Administrator Level %i ernannt. Herzlichen Glückwunsch!",GetSpielerName(pID),GetSpielerName(playerid),rang);
    if(IsPlayerConnected(pID))
    {
    PlayerInfo[playerid][Admin] = rang;
    SendClientMessageToAll(string);

    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Nicht das Adminlevel oder so");
    }
    return 1;
    }

    Stahlbau Azubi deswegen kaum Aktiv



  • alsolangsam fühle ich michverarcht wieoft muss man den hier sage das es kein ocmd oder sonstwas sein soll sonderngenau so wie ich es oben gepostet habe

  • dann hier


    if(strcmp("/makeadmin",cmdtext,true)==0)
    {
    {
    new pID, rang, string[128];
    if(Spieler[playerid][Adminlevel] == 2)
    {
    if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_RED,"Fehler: /makeadmin [playerid] [rang]");
    format(string,sizeof(string),"%s wurde von %s zum Administrator Level %i ernannt. Herzlichen Glückwunsch!",GetSpielerName(pID),GetSpielerName(playerid),rang);
    if(IsPlayerConnected(pID))
    {
    PlayerInfo[playerid][Admin] = rang;
    SendClientMessageToAll(string);

    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Nicht das Adminlevel oder so");
    }
    }
    return 1;
    }


    Weis nicht ob's geht

    Stahlbau Azubi deswegen kaum Aktiv

  • aha, wenn du scripten könntest, wieso amchste dann enn makeadmin nciht selbst ??
    aber um beim thema zu bleiben...
    falls du selber schonmal cmds mit parametern gemacht hast, wirst du feststellen dass es um einiges einfacher wäre, wenn du dir einfach mal dcmd, zcmd, ocmd oder sowas runterladen würdest.


    und nein das von raphael kann nicht gehen...
    mit strcmp kann man nicht einfach "params" verwenden... genau das is das problem dabei

  • Sry4pwn


    Zitat

    aha, wenn du scripten könntest, wieso amchste dann enn makeadmin nciht selbst ??


    1 wüsste ich nicht was dich das angeht und 2 hat aus das 0 mit dem Thema zutun. Also las es doch einfach so eine scheiße zu schreiben


    Zitat

    falls du selber schonmal cmds mit parametern gemacht hast, wirst du feststellen dass es um einiges einfacher wäre, wenn du dir einfach mal dcmd, zcmd, ocmd oder sowas runterladen würdest.


    ja aber wie bereits oben gesagt ist das script kommplett so aufgebaut und ich habe erlich keine lust ds komplett umzuschreiben deswegen frage ich ja wie ich den befehl machen muss den i-wie muss es ja gehen aber hier bekommt man ja i-wie keien richtigen antworten entweder nur in ocmd obwohl man 1.000.000 mal gesagt kein ocmd oder man wird gefragt warum man es nicht selber macht was eine meiner meinung nacht total unnötige frage ist könnte ich das würde ich hier nicht fragen.

  • alsolangsam fühle ich michverarcht wieoft muss man den hier sage das es kein ocmd oder sonstwas sein soll sonderngenau so wie ich es oben gepostet habe


    Du musst einfach nur das was hier im Befehl drin ist in deinem Befehl einfügen da gibt es nicht viel zu verarschen! bisschen mit denken :D

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hey, pass mal auf! Du schreibst uns keine Fehler, also können wir das wohl kaum wissen, was falsch ist!
    Aber bitte, oben ist der Ausgang...

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Hey, pass mal auf! Du schreibst uns keine Fehler, also können wir das wohl kaum wissen, was falsch ist!
    Aber bitte, oben ist der Ausgang...



    was soll ich den bitte für fehler schreiben wen mir keiner einen code schreibt soory für die aussage oben aber ich frage ob mir da jemand helfen kan und jeder postet was mit ocmd obwohl ich 100 mal gesagt habe das ich kein ocmd nutze und dan werde ich auchnoch verwarnt das problem an der sache ist ja nur dieses ocmd ich möchte jetzt nicht das gaze schript umschreiben deswegen möchte ich jetzt nicht auf ocmd umsteigen aber i-wie versteh das keiner weil immer noch jeder ocmd cods postet

  • Naya also erstens brauchst du nicht erwarten, dass dir jemand den ganzen Code macht,


    Und im allgemeinen musst du garnicht dein komplettes Script umstellen, du kannst auch strcmp.für cmds ohne Parameter hernehmen und ocmd für Befehle mit.


    Dafür musst du nicht alles umstellen

  • ok also den ganzen code wollte ich auch garnicht ich weis bloß nicht wie ich das mache mit diesen parametern weist du also leeraste ID usw ok und dan ich beides nutzen kan wurde mir gesagt geht nicht also du bist jetzt erlichgesagt der erste das was postet was wirklich hilft danke erstmal jetzt guck ich erstmal ob ich selber was hinbekomme mit ocmd

  • D.Fence:


    Ganz oben:
    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    Unter OnPlayerCommandText:
    dcmd(makeadmin, 9, cmdtext);


    Irgendwo in keinem Public:
    dcmd_makeadmin(playerid,params[])//Ocmd ist der erzeuger des Befehls, playerid ist die ID und params sind die parameter
    {
    new pID, rang, string[128];
    if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_RED,"Fehler: /makeadmin [playerid] [rang]");
    format(string,sizeof(string),"%s wurde von %s zum Administrator Level %i ernannt. Herzlichen Glückwunsch!",GetSpielerName(pID),GetSpielerName(playerid),rang);
    if(IsPlayerConnected(pID))
    {
    PlayerInfo[pID][Admin] = rang;
    SendClientMessageToAll(string);

    }
    return 1;
    }


    Bitte, danke ...



    Hier noch die Namensfunktion
    forward GetSpielerName(playerid);
    public GetSpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
    }

    Einmal editiert, zuletzt von Alexus ()

  • Bitte, danke ...


    Jo danke hat Fast alle geklappt also musst ein bsichen was umschreiben waren i-wie 9 errors einen habe ich aber noch den hier


    C:\Users\D.Fence\Desktop\SAMP Hamachi Server\gamemodes\Selfmade.pwn(4455) : error 017: undefined symbol "sscanf"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    die zeile:


    if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_RED,"Fehler: /makeadmin [playerid] [rang]");


    pls help

  • Ja du musst noch den sscanf stock einfügen.


    (irgendwo im Script am besten unten weil du den nicht mehr bearbeiten brauchst und der lang ist)




    Spoiler anzeigen
    stock sscanf(sstring[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(sstring))
    #else
    if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    sstringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
    {
    sstringPos++;
    }
    while (paramPos < paramCount && sstring[sstringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = sstring[sstringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = sstring[++sstringPos];
    }
    do
    {
    sstringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = sstring[sstringPos];
    do
    {
    sstringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, sstring[sstringPos++]);
    }
    case 'f':
    {

    Spoiler anzeigen
    new changestr[16], changepos = 0, strpos = sstringPos;
    while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
    {
    changestr[changepos++] = sstring[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    sstringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = sstringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = sstring[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    sstring[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - sstringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, sstring[sstringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    sstring[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    sstringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = sstring[sstringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = sstring[sstringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    sstringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
    {
    sstringPos++;
    }
    while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
    {
    sstringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }