Beiträge von Kaliber

    Lösch das was du bisher hast und schreibe es so:


    static const RangNamen[][] = {"-","Praktikant","Auszubildener","Angestellter","CoLeader","Leader"};
    ocmd:setrank(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,GRAU,"Du bist nicht bei der Polizei angestellt");
    if(!isPlayerRang(playerid,5))return SendClientMessage(playerid,GRAU,"Du bist kein Leader!.");
    new pID,rank,s[128];
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,HELLBLAU,"/setrank [Name/ID] [Rank]");
    if(rank<1||rank>5)return SendClientMessage(playerid,GRAU,"Bitte gültigen Fraktions Rang angeben.");
    SetPVarInt(pID,"FraktionRang",rank);
    format(s,sizeof(s),"Du hast %s zum %s befördert",sName(pID),RangNamen[rank]);
    SendClientMessage(playerid,HELLBLAU,s);
    format(s,sizeof(s),"Du wurdest von %s zum %s befördert",sName(playerid),RangNamen[rank]);
    SendClientMessage(pID,HELLBLAU,s);
    SpielerSpeichern(pID);
    return 1;
    }


    mfg. :thumbup:

    wenn ich auf irgendein klicke, passiert nix. (STYLE - LIST)


    Schreibe das alles mal so:


    if(dialogid==DIALOG_GANGFIGHT)
    {
    if(!response) return 1;
    switch(listitem) {
    case 0: SetPlayerColor(playerid,0xFFFF00FF),SetPlayerSkin(playerid,108);
    case 1: SetPlayerColor(playerid,0xFF00E1FF),SetPlayerSkin(playerid,102);
    case 2: SetPlayerColor(playerid,0x5FFF00FF),SetPlayerSkin(playerid,107);
    }
    GivePlayerWeapon(playerid,24,500);
    GivePlayerWeapon(playerid,25,250);
    GivePlayerWeapon(playerid,31,750);
    GivePlayerWeapon(playerid,29,750);
    GivePlayerWeapon(playerid,34,15);
    onGF[playerid] = 1;
    }


    mfg. :thumbup:

    Naja...einfach so:



    PS: Ungetestet, sollte allerdings funktionieren ;)


    mfg. :thumbup:

    Deswegen.


    Dann wäre der sicherste Code der hier:


    ReturnPlayerID(l_PlayerName[]) {
    new pName[MAX_PLAYER_NAME+1];
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    GetPlayerName(i,pName,sizeof pName);
    if(!strcmp(pName,l_PlayerName)) return i;
    }
    return INVALID_PLAYER_ID;
    }


    So, weil bei Jeffrys Methode auch Fehler auftreten.


    Sagen wir einer heißt Jeffry, der andere Jeff und der andere Jef...dann hat man mit strfind ein Problem...


    und mit strcmp + true hat man das Problem wenn es Jeffry und JeffRy gibt...


    deshalb wäre der Code oben von mir der, der zu 100% die richtige Spielerid returnt ^^


    mfg. :thumbup:

    Mal im Ernst, wieso schreibt ihr es nicht einfach so:


    stock ReturnPlayerID(l_PlayerName[]) //(c) by Kaliber
    {
    new pName[MAX_PLAYER_NAME+1];
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    GetPlayerName(i,pName,sizeof pName);
    if(!strcmp(pName,l_PlayerName,true)) return i;
    else if(strfind(pName,l_PlayerName,true)!=-1) return i;
    }
    return INVALID_PLAYER_ID;
    }


    mfg. :thumbup:

    was soll ich denn bieten? ^^


    Naja einfach eine Gegenleistung halt.


    Oder erwartest (verlangst) du von diesem Scripter, dass er sich mehrere Stunden / Tage / Wochen kostenlos mit dir auseinandersetzt und dir etwas beibringt? :huh:


    mfg. :thumbup:

    1. Dir kann man ohne mit dir befreundet zu sein keine PN schreiben...was ziemlich suboptimal ist ;)


    2. Ich frage einfach mal offen, weil es bestimmt alle interessiert, was bietest du?


    mfg. :thumbup:

    Das mit einer Schleife zu realisierne ist möglich, wenn man zusätzlich noch eine variabel deklariert .


    Du hast da noch flüchtigkeits Fehler drinnen ^^


    Schreibs mal so:


    stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME + 1],cName=-1,i;
    for(; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    else if(strfind(l_name, l_PlayerName, true) != -1 && cName == -1)cName = i;
    }
    }
    return (!cName)?(INVALID_PLAYER_ID):(i);
    }


    mfg. :thumbup:

    Du hast da ein else vergessen, ich denke mal daran liegt das


    Nein, das könnte man so machen, durch das return 1; wird der Code beendet ;)


    Der Fehler ist ein Klammerfehler, schreibe es so:


    Spoiler anzeigen
    switch(dialogid) {
    case LOGIN: {
    if(!response) return SendClientMessage(playerid,0xFF3200FF,"Du hast den Login vorgang abbgebrochen"),Kick(playerid);
    return Login(playerid,MD5_Hash(inputtext));
    }
    case REGISTER: {
    if(!response) return SendClientMessage(playerid,0x00FF14FF,"Du musst dich Registrieren um Spielen zu können !"),Kick(playerid);
    if(!inputtext[0]) {
    SendClientMessage(playerid,0xFF1400FF,"Dieses Feld darf nicht leer sein!");
    SendClientMessage(playerid,0xFF1400FF,"Gebe dein gewünschtes Passwort ein!");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte suche dir ein sicheres Passwort aus um dich zu Registrieren!","Registrieren","Abbrechen");
    return 1;
    }
    return Register(playerid,MD5_Hash(inputtext));
    }
    }


    mfg. :thumbup:

    Mach es so:


    //Oben in dein Script:
    static const admin_rang[][] = {"User","Probe Supporter","Supporter","Administrator","Rcon-Administrator","Team-Leiter","CEO"};


    //und den Command so:
    ocmd:ooc(playerid,params[])
    {
    if(!params[0]) return SendClientMessage(playerid,ROT,"Benutze: /ooc [Nachricht]");
    if(!GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,ROT,"Du bist kein Administrator!");
    new text[144];
    format(text,sizeof(text),"((%s %s: %s))",admin_rang[GetPVarInt(playerid,"Adminlevel")],SpielerName(playerid),params);
    SendClientMessageToAll(BLAU,text);
    return 1;
    }


    mfg. :thumbup:


    So wird das nichts ^^ Sobald 1 Spieler online ist, wird die Schleife unterbrochen :D


    Versuche es mal so:


    public OnRconLoginAttempt(ip[], password[], success)
    {
    if(success) return 0;
    new i,pIp[16],string[317 + MAX_PLAYER_NAME];
    for(; i!=MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
    GetPlayerIp(i,pIp,16);
    if(strcmp(ip,pIp)) continue;
    PlayerInfo[i][pRconLogins]++;
    if(PlayerInfo[i][pRconLogins] < 3) break;
    format(string,sizeof(string),"AdmCmd: Das Adminsystem hat den Spieler %s (ID:%i) gebannt. Grund: 3 fehlerhafte RCON-Login Versuche",SpielerName(i),i);
    SendClientMessageToAll(0xFF0000AA,string);
    format(string,sizeof(string),"%s, du wurdest vom Adminsystem gebannt.\nDer Grund für die Verbannung war: \n\n3 Fehlerhafte RCON-Login versuche.\nSollte es sich hierbei um einen Fehler handeln, schreibe einen Antrag für die Entbannung.\nSolltest du versucht haben, das RCON Passwort herauszufinden,\ngibts für dich keine Chancen für die Entbannung.",SpielerName(i));
    ShowPlayerDialog(i,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Verbannung von "#STAG"",string,"Ok","");
    KickedUser(i);
    mysql_rescue_function();
    break;
    }
    return 1;
    }


    mfg. :thumbup: