Beiträge von linux_

    Hallo,


    erstmal die folgenden Sachen definieren:

    pizza = CreatePickup(1318,1,2332.4329,75.1643,26.6210); //pizza station ein/ausgang
    pizzaex = CreatePickup(1318,1,372.2419,-133.2569,1001.4922);
    ammu = CreatePickup(1318,1,2333.5654,61.6528,26.7058); // ammu ein/aus
    ammuex = CreatePickup(1318,1,285.8144,-86.2198,1001.5229);
    deaglebuy = CreatePickup(1212,1,288.0807,-63.1561,1001.5156);

    Hallo,


    ich würde bei einem AntiCheatSystem einfach alle Systeme in einen Timer rein machen und diesen in einer Dauerschleife aufrufen. Angenommen du hast 200 Spieler, so würdest du 200 Anti Cheat Timer haben. Dieser würde nur zu viele Ressourcen fressen.

    Hallo,


    da ich jetzt offline gehe, schreib mich einfach morgen an, per PN. Bin gegen 20 Uhr zu Hause. RMR habe ich mal gespielt, aber nicht unter diesem Namen. Ich poste dann zusätzlich in diesen Beitrag die Lösung rein. Aber wie gesagt, dass erst morgen.

    Hallo,


    dennoch lässt sich immer nur ein Checkpoint gleichzeitig setzen. Insofern kommt man da eh nicht drum rum. Was du meinst, sind die Checkpoints auf der Map, die man pro Spieler 100x setzen kann.

    Hallo,


    viele Sachen sieht man nicht direkt mit dem Auge. Deswegen habe ich deinen Befehl jetzt einfach mal nachgebaut. Wenn es jetzt immer noch nicht geht, melde dich bitte bei mir per PN und wir machen das via. TS 3 und TeamViewer. Allerdings dann aber schnell. Muss arbeiten etc.



    ocmd:swatduty(playerid, params[])
    {
    new string[128];

    if (!IsPlayerInFrac(playerid, 1))
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Du befindest dich nicht in der richtigen Fraktion.");
    }
    else
    {
    if (!IsPlayerInRangeOfPoint(playerid,4.0,220.7069,109.1577,1003.2188)&&!IsPlayerInRangeOfPoint(playerid,4.0,1553.8889,-1637.0688,6.2188)&&!IsPlayerInRangeOfPoint(playerid,4.0,-2949.8298,1771.3398,23.8950))
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Du kannst dir hier keine Spezialausrüstung anlegen.");
    }
    else
    {
    if (OnDuty[playerid] == 0)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Du musst zuerst in den Dienst gehen.");
    }
    else
    {
    if (PlayerInfo[playerid][swat] == 0)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Du bist noch nicht für den SWAT-Dienst eingeteilt worden.");
    }
    else
    {
    if (OnSwat[playerid] == 0)
    {
    SetPlayerSkin(playerid, 285);
    GivePlayerWeapon(playerid, 31, 800);
    GivePlayerWeapon(playerid, 20, 34);
    GivePlayerWeapon(playerid, 46, 1);

    format(string, sizeof(string), "HQ: %s hat die Spezialausrüstung angelegt.", MeinName(playerid));
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if (IsACop(i))
    {
    SendClientMessage(i, 0x2A77A1FF, string);
    }
    }

    OnSwat[playerid] = 1;
    }
    else
    {
    OnSwat[playerid] = 0;
    SetPlayerSkin(playerid, 1);
    OnDuty[playerid] = 0;
    SetPlayerColor(playerid, 0xFFFFFFFF);

    format(string, sizeof(string), "HQ: %s hat die Spezialausrüstung abgelegt.", MeinName(playerid));
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if (IsACop(i))
    {
    SendClientMessage(i, 0x2A77A1FF, string);
    }
    }
    }
    }
    }
    }
    }

    return 1;
    }

    Hallo,


    du erstellst dir erstmal eine Variable über OnGameModeInit, wo auch deine #defines zu finden sind.


    #define MAX_WEAPONS 50new PlayerWeapons[MAX_PLAYERS][MAX_WEAPONS];


    Dann erstellst du dir einen eigenen Stock, der sich z.B. AddPlayerWeapon nennt. Du vergibst deine Waffen dann nur noch über diesen Stock. Du gibst als Parameter die Player ID, die Waffen ID und die Munition an.
    stock AddPlayerWeapon(playerid, weaponid, ammo) { PlayerWeapons[playerid][weaponid] = 1; GivePlayerWeapon(playerid, weaponid, ammo);}



    Dann erstellst du dir einen Timer:


    OnGameModeInit
    SetTimer("AntiWeaponHackTimer", 500, true);



    Timer:
    forward AntiWeaponHackTimer();public AntiWeaponHackTimer() { for (new i = 0; i < MAX_PLAYERS; i++) { if (GetPVarInt(i, "loggedin")) { // Hier die Überprüfung, welche Waffe der Spieler in der Hand hat. Wenn dies keine Faust, kein Fallschirm, kein Satchel Charge und kein Detonator ist, überprüft das Script (bzw. sollst du gleich machen), ob die Waffe, die der Spieler in der Hand hat, erlaubt ist. In PlayerWeapons muss dementsprechend bei der Waffe eine 1 stehen, wenn er diese hat. 0 = Bann } }}


    Wahrscheinlich sind die Zeilenumbrüche und so weiter gleich weg bzw. mein Code sieht wie eine Katastrophe aus. Ich habe dies aber alles hier im WYSIWYG Editor geschrieben. Ich denke, dass du dich trotzdem zurecht findest.

    Hallo,


    ich gebe dir noch einen Tipp, der dir evtl. beim führen des Servers hilft. Achte darauf, dass die User von Fraktion zu Fraktion möglichst die selben Befehle haben. Also nicht so etwas:

    • /atzearmor
    • /ballasarmor
    • /atzeenter
    • /atzeexit
    • /benter
    • /bexit


    Das nervt einfach nur die meisten User. Ich würde für diesen Befehl einfach /members machen. Erspart dir einfach nur mehr Codezeilen und den Usern Nerven.

    Hallo,


    eine alternative: Solltest du einen Streamer verwenden, solltest du den Boden einfach mit CreateObject machen und den letzten streamen lassen. Das mit dem freezen ist in meinen Augen Schwachsinn.


    PS: Mach dir ein Selfmade. 96 % der GF Server sind -> Beschissen