Beiträge von Kaliber

    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:

    Wenn du den Befehl so haben willst, schreib es so:


    if(!strcmp(cmd, "/engine",true))
    {
    if(IsANoTachoVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid, COLOR_GREY, "Fahrräder haben keinen Motor!");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
    new engine,lights,alarm,doors,bonnet,boot,objective,vid = GetPlayerVehicleID(playerid),Float:health;
    GetVehicleHealth(vid, health);
    format(string, sizeof(string), "* %s startet den Motor",sendername);
    SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 2000);
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(health < 500)return SendClientMessage(playerid,COLOR_RED,"Das verficket fahrzeug ist kapput!");
    if(!IsPlayerInFrac(playerid,23)) return SendClientMessage(playerid,COLOR_RED,"Das verficket fahrzeug ist kapput!");
    if(PlayerInfo[playerid][pJob] != 16) return SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Trucker !");
    if(!IsPlayerInFrac(playerid,24)) return SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht bei den News Reportern !");
    if(PlayerInfo[playerid][pJob] != 17) return SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht beim Ordnungsamt !");
    if(engine == VEHICLE_PARAMS_ON) {
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid, COLOR_GREY, "Motor ausgeschaltet...");
    } else {
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid, COLOR_GREY, "Motor gestartet...");
    }
    return 1;
    }


    PS: Allerdings macht das mit den Abfragen, dem Job und den Fraks keinen Sinn...da du nicht in 2 Fraks gleichzeitig sein kannst bzw in 2 Jobs :rolleyes:


    mfg. :thumbup:

    Wenn du nicht willst, dass dieser Thread noch Stunden weiter geht, weil du keine vernünftige Fehlermeldungen/Informationen gibst, schick mir einfach kurz per PN deine TeamViewer Daten ;)


    mfg. :thumbup: