Script ist am spammen

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 versuche ein Problem zu lösen, und zwar:
    Wenn jemand eine bestimmte Waffe bekommt geht eine Nachricht an alle wer diese Spezialwaffe bekommen hat. Nur ist das Problem das wenn ich die Waffe nehme das dass Script dann den Chat vollspammt und gar nicht mehr aufhört.


    Erst wollte ich es mit einem einfachen Abgleich lösen also das die Playerid in eine Variable geschrieben wird und dann abgeglichen wird, wenn die ID noch nicht drin steht geht die Nachricht raus. Allerdings ist das schwachsinn es gäbe zu viele Sachen die nicht beachtet werden würden zumal wenn ein Player rausgeht und die ID noch drin steht.


    Kann mir da jemand helfen? Ich weiss nicht wie ich das Problem lösen soll, den ganzen krams hab ich in der OnPlayerUpdate Public, ich weiss echt nicht weiter.

  • Oben im Script:
    forward Waffe(playerid);


    Dann i wo im Script:
    public Waffe(playerid)
    {
    if(GetPlayerWeapon(playerid) == WaffenId)
    {
    new sendername[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "%s hat die XYZ (Also Name der Waffe^^) gefunden!", sendername);
    SendClientMessageToAll(0xFF0000FF, string);
    return 1;
    }
    return 1;
    }


    Nicht getestet...


    Edit:/ Aber ich glaube, dass nun jedes Mal die Naricht kommt wenn der Spieler mit dem Scrolrad die Waffe wechselt auf die angegebene ID^^

  • Ich hab nur das nackte Sendegestell:
    public OnPlayerUpdate(playerid)
    {
    if(GetPlayerWeapon(playerid) == 38){
    new name[30];
    new str[100];
    GetPlayerName(playerid,name,sizeof(name));
    format(str, sizeof(str), "Der Spieler %s bekam eine Promo-Waffe!", name);
    SendClientMessageToAll(COLOR_WHITE,str);
    pid == (playerid);

    }
    return 1;
    }

  • Is ja klar: Da der Spieler die Waffe bekommen hat, OnPlayerUpdate oft aufgerufen wird und du abgefragt hast, ob der Spieler die Waffe HAT wird die Message auch solange abgeschickt, bis der Spieler die Waffe nichtmehr hat. Mach doch einfach:


    stock GivePlayerWeaponEx(playerid,weaponid,ammo)
    {
    if(weaponid == 38)
    {
    new name[30];
    new str[100];
    GetPlayerName(playerid,name,sizeof(name));
    format(str, sizeof(str), "Der Spieler %s bekam eine Promo-Waffe!", name);
    SendClientMessageToAll(COLOR_WHITE,str);


    }
    GivePlayerWeapon(playerid,weaponid,ammo);
    return 1;
    }
    }


    Dann brauchst du die OnPlayerUpdate abfrage nicht. Die Nachricht bekommen alle Spieler wenn der Spieler die Waffe bekommt.