CallBack wird nur teilweise ausgeführt

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
  • Huhu ich bin grad dabei an meinem AntiMoneyCheat für meinen GM zu arbeiten, nur leider wird die Funktion nur zum Teil ausgeführt...
    public AntiCheat(){
    upcount++;
    new fmx[64+32];
    format(fmx,sizeof fmx,"mapname %s",(upcount == 1) ? (names[0]) : (upcount == 2) ? (names[1]) : (names[2]));
    SendRconCommand(fmx);
    if(upcount == 3)upcount = 0;
    new pname[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++){
    new waffen = GetPlayerWeapon(i);
    if(waffen == 38|| waffen == 35|| waffen == 36|| waffen == 37|| waffen == 9) // verbotene waffen (ID 38 = minigun) (ID 4 = messer (knife))
    {
    GetPlayerName(i, pname, sizeof(pname));
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:WeaponHack!", pname);
    SendClientMessageToAll(BAN ,string1);
    SendClientMessage(i, 0x66FF00FF, "Haha, you noob cheated and now you are banned!");
    BanEx(i, "Weapon Hack" );
    }


    new ping = GetPlayerPing(i);
    if(ping != 65535){
    if(ping > MAX_PING){
    new name[MAX_PLAYERS];
    GetPlayerName(i, name, sizeof(name));
    SendClientMessage(i, COLOR_RED, "Dein Ping war zu hoch und du bist deswegen gekickt worden!");
    format(string1,sizeof(string1),"%s wurde wegen zu hohem Ping gekickt!", name);
    SendClientMessageToAll(COLOR_RED, string1);
    Kick(i);
    }}
    new accFormat[128];
    GetPlayerName(i, pname, sizeof(pname));
    format(accFormat,sizeof accFormat,"Accounts/%s.sav",pname);
    if(!IsPlayerNPC(i)){
    if(fexist(accFormat) && Spieler[i][eingeloggt])
    {
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld")){
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );}
    else {
    format(accFormat,sizeof accFormat,"Accounts/%s_tmp.sav",pname);
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld")){
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    dini_Remove(accFormat);
    }}}}}
    return 1;
    }

    Vllt findet ihr Fehler...

  • So jetzt... ich liebe diese Forum Formatierung :cursing:

  • Habe mir mal die Zeit genommen und das ganze etwas korrekter eingerückt.
    Der Fehler ist nicht behoben.

    public AntiCheat()
    {
    upcount++;
    new fmx[64+32];
    format(fmx,sizeof fmx,"mapname %s",(upcount == 1) ? (names[0]) : (upcount == 2) ? (names[1]) : (names[2]));
    SendRconCommand(fmx);
    if(upcount == 3)upcount = 0;
    new pname[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++){
    new waffen = GetPlayerWeapon(i);
    if(waffen == 38|| waffen == 35|| waffen == 36|| waffen == 37|| waffen == 9){ // verbotene waffen (ID 38 = minigun) (ID 4 = messer (knife))
    GetPlayerName(i, pname, sizeof(pname));
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:WeaponHack!", pname);
    SendClientMessageToAll(BAN ,string1);
    SendClientMessage(i, 0x66FF00FF, "Haha, you noob cheated and now you are banned!");
    BanEx(i, "Weapon Hack" );
    }
    new ping = GetPlayerPing(i);
    if(ping != 65535){
    if(ping > MAX_PING){
    new name[MAX_PLAYERS];
    GetPlayerName(i, name, sizeof(name));
    SendClientMessage(i, COLOR_RED, "Dein Ping war zu hoch und du bist deswegen gekickt worden!");
    format(string1,sizeof(string1),"%s wurde wegen zu hohem Ping gekickt!", name);
    SendClientMessageToAll(COLOR_RED, string1);
    Kick(i);
    }
    }
    new accFormat[128];
    GetPlayerName(i, pname, sizeof(pname));
    format(accFormat,sizeof accFormat,"Accounts/%s.sav",pname);
    if(!IsPlayerNPC(i)){
    if(fexist(accFormat) && Spieler[i][eingeloggt]){
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld")){
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    }
    else{
    format(accFormat,sizeof accFormat,"Accounts/%s_tmp.sav",pname);
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld")){
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    dini_Remove(accFormat);
    }
    }
    }
    }
    }
    return 1;
    }


  • public AntiCheat()
    {
    upcount++;
    new fmx[64+32];
    format(fmx,sizeof fmx,"mapname %s",(upcount == 1) ? (names[0]) : (upcount == 2) ? (names[1]) : (names[2]));
    SendRconCommand(fmx);
    if(upcount == 3) return upcount = 0;
    new pname[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new waffen = GetPlayerWeapon(i);
    if(waffen == 38|| waffen == 35|| waffen == 36|| waffen == 37|| waffen == 9) // verbotene waffen (ID 38 = minigun) (ID 4 = messer (knife))
    {
    GetPlayerName(i, pname, sizeof(pname));
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:WeaponHack!", pname);
    SendClientMessageToAll(BAN ,string1);
    SendClientMessage(i, 0x66FF00FF, "Haha, you noob cheated and now you are banned!");
    BanEx(i, "Weapon Hack" );
    }


    new ping = GetPlayerPing(i);
    if(ping != 65535)
    {
    if(ping > MAX_PING)
    {
    new name[MAX_PLAYERS];
    GetPlayerName(i, name, sizeof(name));
    SendClientMessage(i, COLOR_RED, "Dein Ping war zu hoch und du bist deswegen gekickt worden!");
    format(string1,sizeof(string1),"%s wurde wegen zu hohem Ping gekickt!", name);
    SendClientMessageToAll(COLOR_RED, string1);
    Kick(i);
    }
    }
    new accFormat[128];
    GetPlayerName(i, pname, sizeof(pname));
    format(accFormat,sizeof accFormat,"Accounts/%s.sav",pname);
    if(!IsPlayerNPC(i))
    {
    if(fexist(accFormat) && Spieler[i][eingeloggt])
    {
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld"))
    {
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    }
    else
    {
    format(accFormat,sizeof accFormat,"Accounts/%s_tmp.sav",pname);
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld"))
    {
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    dini_Remove(accFormat);
    }
    }
    }
    }
    }
    return 1;
    }

  • Zitat

    Huhu ich bin grad dabei an meinem AntiMoneyCheat für meinen GM zu arbeiten, nur leider wird die Funktion nur zum Teil ausgeführt...


    Eine sehr präzise Angabe.Welcher Teil wird denn ausgeführt ? Schon mal versucht mit Debug-Notes zu arbeiten ?

  • Ich check die Zeilen hier nicht.


    Zitat

    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld"))

    Wieso wird überprüft, ob das momentane Geld auf der Hand kleiner als das was in der Account Variable gespeichert ist überprüft?
    Wird bestimmt ein Spaß bei den ganzen vorhandenen InGame Automaten ^^

  • public AntiCheat()
    {
    upcount++;
    new fmx[64+32];
    format(fmx,sizeof fmx,"mapname %s",(upcount == 1) ? (names[0]) : (upcount == 2) ? (names[1]) : (names[2]));
    SendRconCommand(fmx);
    if(upcount == 3) return upcount = 0;
    new pname[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new waffen = GetPlayerWeapon(i);
    if(waffen == 38|| waffen == 35|| waffen == 36|| waffen == 37|| waffen == 9) // verbotene waffen (ID 38 = minigun) (ID 4 = messer (knife))
    {
    GetPlayerName(i, pname, sizeof(pname));
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:WeaponHack!", pname);
    SendClientMessageToAll(BAN ,string1);
    SendClientMessage(i, 0x66FF00FF, "Haha, you noob cheated and now you are banned!");
    BanEx(i, "Weapon Hack" );
    }


    new ping = GetPlayerPing(i);
    if(ping != 65535)
    {
    if(ping > MAX_PING)
    {
    new name[MAX_PLAYERS];
    GetPlayerName(i, name, sizeof(name));
    SendClientMessage(i, COLOR_RED, "Dein Ping war zu hoch und du bist deswegen gekickt worden!");
    format(string1,sizeof(string1),"%s wurde wegen zu hohem Ping gekickt!", name);
    SendClientMessageToAll(COLOR_RED, string1);
    Kick(i);
    }
    }
    new accFormat[128];
    GetPlayerName(i, pname, sizeof(pname));
    format(accFormat,sizeof accFormat,"Accounts/%s.sav",pname);
    if(!IsPlayerNPC(i))
    {
    if(fexist(accFormat) && Spieler[i][eingeloggt])
    {
      if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld")) // <--- bis hierhin wird geprüft.
    {
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    }
    else
    {
    format(accFormat,sizeof accFormat,"Accounts/%s_tmp.sav",pname);
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld"))
    {
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    dini_Remove(accFormat);
    }
    }
    }
    }
    }
    return 1;
    }
    @ 8D, ich schau mal eben nach Moment.

  • Versuch ma so:

    public AntiCheat()
    {
    upcount++;
    new fmx[64+32];
    format(fmx,sizeof fmx,"mapname %s",(upcount == 1) ? (names[0]) : (upcount == 2) ? (names[1]) : (names[2]));
    SendRconCommand(fmx);
    if(upcount == 3) return upcount = 0;
    new pname[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new waffen = GetPlayerWeapon(i);
    if(waffen == 38|| waffen == 35|| waffen == 36|| waffen == 37|| waffen == 9) // verbotene waffen (ID 38 = minigun) (ID 4 = messer (knife))
    {
    GetPlayerName(i, pname, sizeof(pname));
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:WeaponHack!", pname);
    SendClientMessageToAll(BAN ,string1);
    SendClientMessage(i, 0x66FF00FF, "Haha, you noob cheated and now you are banned!");
    BanEx(i, "Weapon Hack" );
    }


    new ping = GetPlayerPing(i);
    if(ping != 65535)
    {
    if(ping > MAX_PING)
    {
    new name[MAX_PLAYERS];
    GetPlayerName(i, name, sizeof(name));
    SendClientMessage(i, COLOR_RED, "Dein Ping war zu hoch und du bist deswegen gekickt worden!");
    format(string1,sizeof(string1),"%s wurde wegen zu hohem Ping gekickt!", name);
    SendClientMessageToAll(COLOR_RED, string1);
    Kick(i);
    }
    }
    new accFormat[128];
    GetPlayerName(i, pname, sizeof(pname));
    format(accFormat,sizeof accFormat,"Accounts/%s.sav",pname);
    if(!IsPlayerNPC(i))
    {
    if(fexist(accFormat) && Spieler[i][eingeloggt])
    {
    new geeeld = dini_Int(accFormat,"Geld");
    if(GetPlayerMoney(i) < geeeld) //wie 8d schon sagt, das hier hat keinen sinn xD aber zum testen ok.
    {
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    }
    else
    {
    format(accFormat,sizeof accFormat,"Accounts/%s_tmp.sav",pname);
    if(GetPlayerMoney(i) < dini_Int(accFormat,"Geld"))
    {
    format(string1, sizeof(string1), "***%s wurde gebannt, Grund:Moneyhack!", pname);
    SendClientMessageToAll(0x66FF00FF,string1);
    BanEx(i, "Moneyhack" );
    dini_Remove(accFormat);
    }
    }
    }
    }
    }
    return 1;
    }

  • lol hast recht garned gesehn xD
    das ist als ob man das macht:

    if(GetPlayerMoney(playerid) == 100)
    {
    print("ok");
    }else{
    if(GetPlayerMoney(playerid) == 100)
    {
    print("auch ok");
    }}

    lol.

  • Hab meinen Denkfehler gefunden. Wenn die regüläre Acc Datei %s.sav nicht existiert wird else ausgeführt und man somit gebannt weil die %s_tmp.sav Datei nicht vorhanden ist :D Danke für die Hilfe ;)
    ~close. :thumbup: