Schleife,Waffen abfragen

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 arbeite mal wieder am meinem Selfmade, und habe ein Anti - Cheat System angefangen.
    Bis jetzt enthalten:


    • Anti - GeldCheat


    Was ich nun mache:


    • Anti Waffencheat


    Ich würde es gerne so machen, das man alle Waffen besitzen kann sobald die in einer Player Variable enthalten sind.
    Sprich z.B


    new pWaffen[MAX_PLAYERS][13][50];


    Dann wird in einem Timer mit einer Schleife gearbeitet.


    new Waffen[13][2];
    for(new i; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, Waffen[i][0], Waffen[i][1]);
    if(Waffen[i][0] != pWaffen[playerid][i][Waffen[i][0]];
    }


    Aber ich denke, das wird so nicht ganz so viel sinn machen.
    Deswegen würde ich euch mal fragen wie man sowas am besten machen könnte.


    INFO: Jeder Spieler kann jede Waffe besitzen , vorrausgesetzt, er hat sie von einer Funktion bekommen, z.B GivePlayerWeaponEx(playerid, wid, ammo)
    In der Funktion wird dann die Variable befüllt/updated


    Mit Freundlichen Grüßen,


    Michael aka MrPawn

  • Genau das weiß ich ja nicht.


    Ich möchte wissen wie ich am besten abfragen kann ob er eine Waffe hat die nicht in der Variable ist.
    Und wie man diese Waffe mit der Variable füllen kann, (Es sollen mehrere IDS in die Variable rein).
    Und wie man diese ID anschließend wieder aus der Variable holen kann. (Falls die Muniition leer geht, etc)


    Ich würde gerne wissen wie man das am besten Scripten könnte.


    Mit Freundlichen Grüßen,


    Michael ak MrPawn

  • Auf leer prüfen:
    OnPlayerUpdate


    new w,a;
    for(new i; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, w, a);
    if(a == 0) pWaffen[playerid][i] = 0;
    }


    Beim Geben der Waffe:
    pWaffen[playerid][GetWeaponSlot(weaponID)] = weaponID; (GetWeaponSlot: http://pastebin.com/qz56UCRe)



    Und beim Timer kannst du dann fragen:
    new w,a;
    for(new i; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, w, a);
    if(pWaffen[playerid][i] != 0 && pWaffen[playerid][i] != w && a > 0) //Ban


    Das wären so die Grundzüge.

  • meins ist so



    if(newkeys & KEY_FIRE && (!noacheat)) { if(Spawned[playerid]) { static weapon; weapon = GetPlayerWeapon(playerid); if(!PlayerWeapons[playerid][weapon] && weapon != 40 && weapon != 0) { format(string, sizeof(string), "** Anti-Cheat: %s wurde vom Server gebannt. Grund: Waffen Cheat", GetName(playerid)); SendClientMessageToAll(Rot, string); TogglePlayerControllable(playerid, false); ResetPlayerWeapons(playerid); //Loggen format(string,sizeof(string),"(%d/%d/%d) [%d:%d:%d] %s wurde vom Anti-Cheat System gebannt. Grund: Waffenhack",day,month,year,hour,minute,second,GetName(playerid)); CheatLog(string); //Bannen SaveSpieler(playerid); BanEx(playerid, "Waffen Cheat"); } } }

  • meins ist so



    if(newkeys & KEY_FIRE && (!noacheat)) { if(Spawned[playerid]) { static weapon; weapon = GetPlayerWeapon(playerid); if(!PlayerWeapons[playerid][weapon] && weapon != 40 && weapon != 0) { format(string, sizeof(string), "** Anti-Cheat: %s wurde vom Server gebannt. Grund: Waffen Cheat", GetName(playerid)); SendClientMessageToAll(Rot, string); TogglePlayerControllable(playerid, false); ResetPlayerWeapons(playerid); //Loggen format(string,sizeof(string),"(%d/%d/%d) [%d:%d:%d] %s wurde vom Anti-Cheat System gebannt. Grund: Waffenhack",day,month,year,hour,minute,second,GetName(playerid)); CheatLog(string); //Bannen SaveSpieler(playerid); BanEx(playerid, "Waffen Cheat"); } } }


    Das ist vom BSRP Script Kopiert. Das hatte ich auch damals