2 Fragen zu Scripts

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
  • Hii, ich bin anfäger was pwn betrifft aber möchte sehr gerne 2 sachen in meinem gamemode haben und zwar folgendes :


    Einmal wie man auf dem Script sehen kann die FPS/Ping/Packet anzeige am spieler:




    & wie auf GDM diese Drogen Box wo man sich 10Gramm rausnehmen kann und 10 Gramm einnehmen kann.


    Kann mir dabei jemand helfen? wäre echt lieb, mehr bräuchte ich nicht um meinen gamemode zu vervollständigen.

  • FPS/Ping/Packet


    Den Ping bekommst du über GetPlayerPing(playerid); das mit den FPS ist schon etwas komplizierter, die musst du berechnen.


    Ein einigermaßen gutes Beispiel findest du hier:


    http://forum.sa-mp.com/showthr…85&highlight=GetPlayerFPS


    Da findest du schonmal die Grundlage.


    Und das mit dem Packet machst du über die neue Funktionen: NetStats_PacketLossPercent(playerid);


    & wie auf GDM diese Drogen Box wo man sich 10Gramm rausnehmen kann und 10 Gramm einnehmen kann.


    Weiß grad nicht genau was du meinst...aber einfach eine Variable erstellen...erhöhen bzw speichern und fertig ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • #include <a_samp>


    new PlayerText3D:Info[MAX_PLAYERS];
    public OnPlayerStreamIn(playerid, forplayerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    Info[playerid] = CreatePlayer3DTextLabel(forplayerid, "Ping: 0\nFPS: 0", -1, 0.0, 0.0, 0.35, 30.0, playerid, 0);
    return 1;
    }
    public OnPlayerUpdate(playerid)
    {
    new string_3D[256];
    format(string_3D, sizeof(string_3D), "{ff0033}Ping: {ffffff}%d\n{ff0033}FPS: {ffffff}%d", GetPlayerPing(playerid), GetPlayerFPS(playerid));
    for(new i, j = GetMaxPlayers(); i != j; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(IsPlayerNPC(i)) continue;
    UpdatePlayer3DTextLabelText(i, Info[playerid], -1, string_3D);
    }
    return 1;
    }
    public OnPlayerStreamOut(playerid, forplayerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    for(new i; i < 6; i++) DeletePlayer3DTextLabel(forplayerid, Info[playerid]);
    return 1;
    }
    stock GetPlayerFPS(playerid)
    {
    SetPVarInt(playerid, "DrunkL", GetPlayerDrunkLevel(playerid));
    if(GetPVarInt(playerid, "DrunkL") < 100) SetPlayerDrunkLevel(playerid, 2000);
    else
    {
    if(GetPVarInt(playerid, "LDrunkL") != GetPVarInt(playerid, "DrunkL"))
    {
    SetPVarInt(playerid, "FPS", (GetPVarInt(playerid, "LDrunkL") - GetPVarInt(playerid, "DrunkL")));
    SetPVarInt(playerid, "LDrunkL", GetPVarInt(playerid, "DrunkL"));
    if((GetPVarInt(playerid, "FPS") > 0) && (GetPVarInt(playerid, "FPS") < 256)) return GetPVarInt(playerid, "FPS") - 1;
    }
    }
    return 0;
    }


    Was falsh das die so durch dreht ? ;D

  • Nah, die Aktualisierung ist zu krass :D


    Unter OnPlayerUpdate wird das ungefähr > 1000x die Sekunde aufgerufen ^^


    Schreibs mal so:


    Spoiler anzeigen
    #include <a_samp>

    Spoiler anzeigen
    new PlayerText3D:Info[MAX_PLAYERS],FPS_LAST[MAX_PLAYERS],FPS[MAX_PLAYERS];
    public OnPlayerConnect(playerid) return SetTimerEx("@Stream_Draw",1000,1,"i",playerid);
    public OnPlayerStreamIn(playerid, forplayerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    Info[playerid] = CreatePlayer3DTextLabel(forplayerid, "Ping: 0\nFPS: 0", -1, 0.0, 0.0, 0.35, 30.0, playerid, 0);
    return 1;
    }
    @StreamDraw(playerid);@StreamDraw(playerid) {
    new string_3D[256];
    format(string_3D, sizeof(string_3D), "{ff0033}Ping: {ffffff}%d\n{ff0033}FPS: {ffffff}%d", GetPlayerPing(playerid), FPS[playerid]);
    for(new i, j = GetMaxPlayers(); i != j; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
    UpdatePlayer3DTextLabelText(i, Info[playerid], -1, string_3D);
    }
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerUpdate(playerid)
    {
    new drunknew = GetPlayerDrunkLevel(playerid);
    if (drunknew < 100) return SetPlayerDrunkLevel(playerid, 2000),1;
    if (FPS_LAST[playerid] != drunknew) {
    new wfps = FPS_LAST[playerid] - drunknew;
    if ((wfps > 0) && (wfps < 200))FPS[playerid] = wfps;
    FPS_LAST[playerid] = drunknew;
    }
    return 1;
    }
    public OnPlayerStreamOut(playerid, forplayerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    for(new i; i < 6; i++) DeletePlayer3DTextLabel(forplayerid, Info[playerid]);
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S