Skocz do zawartości
Tasa

Funkcje Fps i Packet Loss

Rekomendowane odpowiedzi

Witam, ktoś wie jakie funkcje służą do pobrania packet lossa i Fps'ów? Bo mam zamiar je pokazać w text drawie.

Też prosiłbym o wskazanie, jak wyświetlić to w text drawie, bo myślałem że zrobie z pingiem, a to jest kompletnie inaczej.

Edytowane przez Tasa

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

FPS nie istnieje w sa-mp, a jak istnieje to jest bardzo niedokładne. ( Trzeba samemu napisać )

Funkcja na Packet Loss: https://wiki.sa-mp.com/wiki/NetStats_PacketLossPercent

I na prawde polecam Ci przeglądać google.pl tam jest dużo rzeczy na temat sa-mp...

Edytowane przez Dejv

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ło ja pierdziele, to ja w życiu sam nie napisze na FPS'y. No dobra, a wiesz jakim sposobem można dać Packet Loss i Ping na text draw? Bo próbowałem z GetPlayerPing i w ogóle, no ale to jest kompletnie inaczej niż z GetPlayerName czy coś.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
21 minut temu, Tasa napisał:

ło ja pierdziele, to ja w życiu sam nie napisze na FPS'y. No dobra, a wiesz jakim sposobem można dać Packet Loss i Ping na text draw? Bo próbowałem z GetPlayerPing i w ogóle, no ale to jest kompletnie inaczej niż z GetPlayerName czy coś.

Przecież wystarczy sformatować tekst w textdrawie i update'ować go co sekundę dla każdego z graczy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach


    new string[256]; 
    GetPlayerPing(playerid);
    format(string,sizeof(string),"Ping: ");
    
    Textdraw5 = TextDrawCreate(530.366210, 6.416674, string);
    TextDrawLetterSize(Textdraw5, 0.166544, 1.191666);
    TextDrawAlignment(Textdraw5, 1);
    TextDrawColor(Textdraw5, 80);
    TextDrawSetShadow(Textdraw5, 0);
    TextDrawSetOutline(Textdraw5, 0);
    TextDrawBackgroundColor(Textdraw5, 255);
    TextDrawFont(Textdraw5, 2);
    TextDrawSetProportional(Textdraw5, 1);
    TextDrawShowForPlayer(playerid, Textdraw5);

Ja to zrobiłem tak i nie wiem co wpisać po ''Ping:'', aby wyświetlała się liczba która będzie odpowiedzialna za ping.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A może po prostu ruszysz głową?

new ping = GetPlayerPing(playerid);
    format(string,sizeof(string),"Ping: %d", ping);

 

Nie wiem czy ta wartość to string czy integer, jak string to daj %s i tyle.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
7 minut temu, DaGaXeR napisał:

A może po prostu ruszysz głową?

new ping = GetPlayerPing(playerid);
    format(string,sizeof(string),"Ping: %d", ping);

 

Nie wiem czy ta wartość to string czy integer, jak string to daj %s i tyle.

A może po prostu nie wiedziałem, że to tak trzeba?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

public OnPlayerConnect(playerid)
{  
    new string[256]; 
    GetPlayerPing(playerid);
    format(string,sizeof(string),"Ping: %d");
    
    Textdraw5 = TextDrawCreate(530.366210, 6.416674, string);
    TextDrawLetterSize(Textdraw5, 0.166544, 1.191666);
    TextDrawAlignment(Textdraw5, 1);
    TextDrawColor(Textdraw5, 80);
    TextDrawSetShadow(Textdraw5, 0);
    TextDrawSetOutline(Textdraw5, 0);
    TextDrawBackgroundColor(Textdraw5, 255);
    TextDrawFont(Textdraw5, 2);
    TextDrawSetProportional(Textdraw5, 1);
    TextDrawShowForPlayer(playerid, Textdraw5);
    
    return 1;
}
 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tworzenie textdrawa przenieś do OnGameModeInit i zamiast 'string' daj " " czyli:

Textdraw5 = TextDrawCreate(530.366210, 6.416674, " ");
// ...

Następnie w OnPlayerConnect, to co masz na początku, a później użyj funkcji TextDrawSetString Jak użyć? Wytłumaczone na wiki.

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No i nadal nic sie nie pokazuje.

W OnGameModeInit

    Textdraw5 = TextDrawCreate(530.366210, 6.416674, " ");
    TextDrawLetterSize(Textdraw5, 0.166544, 1.191666);
    TextDrawAlignment(Textdraw5, 1);
    TextDrawColor(Textdraw5, 80);
    TextDrawSetShadow(Textdraw5, 0);
    TextDrawSetOutline(Textdraw5, 0);
    TextDrawBackgroundColor(Textdraw5, 255);
    TextDrawFont(Textdraw5, 2);
    TextDrawSetProportional(Textdraw5, 1);

 

W OnPlayerConnect

    new string[256]; 
    GetPlayerPing(playerid);
    format(string,sizeof(string),"Ping: %d"); //Tu próbowałem z %s i z %d i nadal nie działało.
    TextDrawSetString(Textdraw5, string);
    
    
    TextDrawShowForPlayer(playerid, Textdraw5);

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
new string[256]; 
format(string,sizeof(string),"Ping: %d", GetPlayerPing(playerid));
TextDrawSetString(Textdraw5, string);
TextDrawShowForPlayer(playerid, Textdraw5);

 

Edytowane przez Skipper

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wszystko pięknie śmiga, dziękuje za pomoc. Do zobaczenia i do następnego tematu. :D

 

A jeszcze jedno pytanko

Czy to ma prawo śmigać? Zrobiłem to na takiej samej zasadzie jak przy pingu tylko format jest inny. Nie mam jak sprawdzić, bo zawsze będe miał 0.0 pcl, chyba że na serwerze z hostingiem to przetestuje, ale płacić nie mam zamiaru dla takiej błachostki :P

forward PCL(playerid);
public PCL(playerid)
{
    new string[256]; 
    format(string,sizeof(string),"Pcl: %.2f", NetStats_PacketLossPercent(playerid));
    TextDrawSetString(Textdraw5, string);
    TextDrawShowForPlayer(playerid, Textdraw5);
}

 

No i jeszcze jedno pytanko, aby nie zakładać nowego tematu.

Jak zmniejszyć dystans który potrzeba, aby nick i pasek hp gracza sie renderowały?

Edytowane przez Tasa

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ten packetloss zadziala na hostingu normalnie, na localu zawsze pokazuje 0. Po za tym ci pseudo pawnerzy dali ci bledny kod, bo wykonuje sie on globalnie a nie dla kazdego gracza oddzielnie, kazdy bedzie widzial taki sam pl/ping czy co tam jeszcze masz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Teraz, Lagowy napisał:

Ten packetloss zadziala na hostingu normalnie, na localu zawsze pokazuje 0. Po za tym ci pseudo pawnerzy dali ci bledny kod, bo wykonuje sie on globalnie a nie dla kazdego gracza oddzielnie, kazdy bedzie widzial taki sam pl/ping czy co tam jeszcze masz.

A więc jak zrobić dla jednego gracza?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zrobiłem coś takiego i czy to będzie odpowiadać za jednego gracza?

public OnGameModeInit

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    Textdraw5 = TextDrawCreate(530.366210, 6.416674, "");
    TextDrawLetterSize(Textdraw5, 0.166544, 1.191666);
    TextDrawAlignment(Textdraw5, 1);
    TextDrawColor(Textdraw5, 80);
    TextDrawSetShadow(Textdraw5, 0);
    TextDrawSetOutline(Textdraw5, 0);
    TextDrawBackgroundColor(Textdraw5, 255);
    TextDrawFont(Textdraw5, 2);
    TextDrawSetProportional(Textdraw5, 1);
    }

    SetTimer("PCL", 1203, true);

To na dole

forward PCL(playerid);
public PCL(playerid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new string[256]; 
            format(string,sizeof(string),"Pcl: %.2f", NetStats_PacketLossPercent(playerid));
            TextDrawSetString(Textdraw5, string);
        }
    }
}

public OnPlayerDisconnect

{

TextDrawDestroy(Textdraw5[playerid]);

}

public OnPlayerConnect

{

TextDrawShowForPlayer(playerid, Textdraw5[playerid]);

}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiecie jakim sposobem można zrobić coś takiego, że gdy gracz zaloguje sie na rcona to pokazuje ''Ten gracz zalogował sie na rcona'' czy coś?

Bo szukałem na google i nie widziałem takiej funkcji, gdy gracz wpisze tą komende rcona to stanie sie to i to.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×