Geht das gegen Godmodes?

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
  • public enticheat(playerid)
    {
    new health = GetPlayerHealth(playerid);
    for(new i; i<MAX_PLAYERS; i++)
    {
    SetPlayerHealth(i, health-1 );
    if (health == 100)
    {
    Kick(playerid);
    }
    return 1;
    }


    Würde das als Anti-Godmode gehen?

  • Also, ich will jetzt jede Sekunde dem Spieler 1Health abzeihen lassen und dann übverprüfen, wenn er dann immer noch 100HP hat, soll der Server ihn Kicken.


    Wie mache ich des dann, damit der Server es merkt?

  • Im Grunde genommen müsste das klappen, allerdings ist s0beit dagegen selbst geschützt und lässt die Gesundheit vom Server manipulieren.


    Am besten irgendwohin porten, sein Health auf 100 setzen (vorher das aktuelle speichern) und dann eine Explosion dort erstellen und kurze Zeit später das Health abchecken.

    the ones who are crazy enough to think that they can change the world, are the ones who do
    - Steve Jobs

  • Geht das danna uch so:


    public anticheat(playerid)
    {
    new health = GetPlayerHealth(playerid);
    for(new i; i<MAX_PLAYERS; i++)
    {
    SetPlayerHealth(i, health-1 );
    if (health == 100)
    {
    Kick(playerid);
    }
    new health = GetPlayerHealth(playerid);
    for(new i; i<MAX_PLAYERS; i++)
    {
    SetPlayerHealth(i, health+1 );
    return 1;
    }

  • du setzt ihm 100 HP
    du machst bei ihm CreateExplosion
    nach einer sekunde+1millisekunde, frägst du ab ob er 100HP hat, wenn ja >>Godmode


    Ein Beispiel:
    if(strcmp(cmd, "/godmode", true) == 0)
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, Grau, "/godmode [Playerid]");
    return 1;
    }
    giveplayerid = strval(tmp);
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(AdminDuty[giveplayerid] == 1)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "An Admins im Admindienst kannst du keinen GM Check machen");
    return 1;
    }
    if(IsPlayerConnected(giveplayerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    format(string, sizeof(string), "AdmCMD: %s wurde auf Godmode getestet von %s",giveplayer, sendername);
    AdminNachricht(COLOR_LIGHTRED,string,1);
    new Float:boomx, Float:boomy, Float:boomz;
    GetPlayerPos(giveplayerid,boomx, boomy, boomz);
    SetPlayerHealth(giveplayerid, 100);
    SetPlayerArmour(giveplayerid, 0);
    CreateExplosion(boomx, boomy , boomz, 7, 10);
    SetTimerEx("GodModeCheck", 1500, 0, "d", giveplayerid);
    }
    else
    {
    format(string, sizeof(string), "%d ist nicht online.", giveplayerid);
    SendClientMessage(playerid, COLOR_RED, string);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du kannst diesen Befehl nicht benutzen!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst eingelogt sein um den Befehl nutzen zu können!");
    }
    return 1;
    }


    Function GodModeCheck(playerid)
    {
    new Float:Leben2;
    GetPlayerHealth(playerid, Leben2);
    if(Leben2 >= 99)
    {
    HackShieldBan(playerid,"Godmode");
    }
    else
    {
    SetPlayerHealth(playerid,100);
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Habe etwas versucht:



    dcmd_scan(playerid, params[])
    {
    #pragma unused params
    if(Player[playerid][admin] < 2){
    return SendClientMessage(playerid,COLOR_RED,"You must be a Admin or higher for this Command");
    }
    new idscan;
    if(sscanf(params, "u", idscan)) return SendClientMessage(playerid, 0xFFFFFF, "/scan [ID]");
    {
    giveplayerid = strval(tmp);
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    new Float:boomx, Float:boomy, Float:boomz;
    GetPlayerPos(giveplayerid,boomx, boomy, boomz);
    SetPlayerHealth(giveplayerid, 100);
    SetPlayerArmour(giveplayerid, 0);
    CreateExplosion(boomx, boomy , boomz, 7, 10);
    SetTimerEx("GodModeCheck", 1500, 0, "d", giveplayerid);
    }
    return 1;
    }


    Function GodModeCheck(playerid)
    {
    if(Leben2 >= 99)
    {
    Ban(playerid,"Godmode");
    }
    else
    {
    SetPlayerHealth(playerid,100);
    }
    return 1;
    }


    Da kommt aber das:


    error 010: invalid function or declaration
    error 010: invalid function or declaration
    error 010: invalid function or declaration
    error 021: symbol already defined: "JBC_SetPlayerHealth"
    error 010: invalid function or declaration
    warning 203: symbol is never used: "dcmd_scan"
    warning 203: symbol is never used: "ret_memcpy"