widoczność gracza w zależności od jego pingu
Grzegorz93
05.05.2012
Cześć.
Na wstępie powiem nie wiedziałem jak to ująć w słowa, oraz że nie potrafię tego na tym forum znaleźć, a wiem że gdzieś to tutaj było.
Szukam pluginu na serwer 4FUN, który ustawia widoczność gracza w zależności od jego pingu.
Za pomoc będzie +
Na wstępie powiem nie wiedziałem jak to ująć w słowa, oraz że nie potrafię tego na tym forum znaleźć, a wiem że gdzieś to tutaj było.
Szukam pluginu na serwer 4FUN, który ustawia widoczność gracza w zależności od jego pingu.
Za pomoc będzie +
MasterOfGames 06.05.2012
Zrobiłem taki plugin. Myślę że wszystko powinno działać, ale proszę żeby ktoś jednak to sprawdził.
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "Widocznosc na ping"
#define VERSION "1.0"
#define AUTHOR "MasterOfGames"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public Ping(id)
{
new p, l
new ping = get_user_ping(id, p, l); //Pobiera ping gracza do zmiennej ping//
if(ping < 255) //sprawdza czy ping jest ponizej 255//
{
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, ping); //jesli tak to ustawia widocznosc na ping//
}
else if(ping > 255) //sprawdza czy ping jest powyzej 255//
{
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255); //jesli tak to ustawia widocznosc na 255 (bo to jest max)//
}
}
Załączone pliki
Nakupenda.
06.05.2012
troche bardziej ogarniete liczby, zeby typ z pingiem 30 nie byl niewidzialny
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "Widocznosc na ping"
#define VERSION "1.0"
#define AUTHOR "MasterOfGames"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public Ping(id)
{
new p, l
new ping = get_user_ping(id, p, l);
if(ping < 150)
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, floatround(ping/2.0)+150);
else
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}
MasterOfGames 06.05.2012
Znaczy się ja zrobiłem dokładnie to co chciał autor, no ale rzeczywiście, masz rację, bo prawie każdy by był niewidzialny (prawie), tylko laggerzy byliby widoczni
G[o]Q
06.05.2012
a testowaliscie to ?
bo moge wam w ciemno powiedzieć ze to nie zadziala xDD
bo moge wam w ciemno powiedzieć ze to nie zadziala xDD
sebul
06.05.2012
Nie ma nigdzie zarejestrowanej funkcji "Ping", no i funkcja get_user_ping trochę inaczej działa. Do tego ping gracza trzeba by sprawdzać powiedzmy co 1 sek. żeby to jakoś wyglądało.
Nakupenda.
06.05.2012
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "Widocznosc na ping"
#define VERSION "1.1"
#define AUTHOR "Nakupenda."
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
set_task(5.0, "Ping",
}
public Ping(id)
{
new p, l
get_user_ping(id, p, l);
if(p < 150)
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, floatround(p/2.0)+150);
else
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}
?
Użytkownik Nakupenda. edytował ten post 06.05.2012 14:37
MasterOfGames 06.05.2012
Nakupenda masz błąd.
jak już to by było:
Hmm... ja bym myślał raczej żeby to nie sprawdzało bez przerwy, bo gracz co sekundę będzie miał inną widoczność, więc może niech sprawdzi powiedzmy 5 razy i zostawia? To by wyglądało chyba tak:
set_task(5.0, "Ping",
jak już to by było:
set_task(5.0, "Ping", _, _, _, "b")
Hmm... ja bym myślał raczej żeby to nie sprawdzało bez przerwy, bo gracz co sekundę będzie miał inną widoczność, więc może niech sprawdzi powiedzmy 5 razy i zostawia? To by wyglądało chyba tak:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "Widocznosc na ping"
#define VERSION "1.1"
#define AUTHOR "Nakupenda."
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
set_task(1.0, "Ping", _, _, _, "a", 5)
}
public Ping(id)
{
new p, l
get_user_ping(id, p, l);
if(p < 150)
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, floatround(p/2.0)+150);
else
set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}
radim
06.05.2012
Nie lepiej to zrobić w prethinku, gdzie funkcja wywoływana jest kilka/kilkadziesiąt razy na sekundę ?
sebul
06.05.2012
A ja się pytam, gdzie w tamtych kodach w tasku macie id gracza...
Co do postu wyżej, to raczej robienie tego kilkadziesiąt razy na sekundę nie jest zbyt dobrym pomysłem, w zupełności wystarczyło by 10 razy na sekundę, wtedy też to będzie w miarę dobrze wyglądać.
Część kodu wyciągnięta z innego pluginu.
Co do postu wyżej, to raczej robienie tego kilkadziesiąt razy na sekundę nie jest zbyt dobrym pomysłem, w zupełności wystarczyło by 10 razy na sekundę, wtedy też to będzie w miarę dobrze wyglądać.
#include <amxmodx>
#include <engine>
#define PLUGIN "Ping Render"
#define VERSION "0.1"
#define AUTHOR "Sebul"
#define DELAY_TIME 0.1
#define MIN_RENDER 100
new g_MaxPlayers;
new Float:g_TimeThink;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
g_MaxPlayers = get_maxplayers();
}
public client_PostThink(id) {
static i, last_think, iPing, iLoss, Float:current_time;
if(last_think > id) {
current_time = get_gametime();
if(g_TimeThink < current_time) {
g_TimeThink = current_time+DELAY_TIME;
for(i=1; i<=g_MaxPlayers; ++i) {
if(is_user_alive(i)) {
get_user_ping(i, iPing, iLoss);
iPing = iPing/2 + MIN_RENDER;
set_rendering(i, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, (iPing > 255) ? 255 : iPing);
}
}
}
}
last_think = id;
}
Część kodu wyciągnięta z innego pluginu.
G[o]Q
07.05.2012
sebul lepszym pomyslem bylby task przy spawnie a najlepsze wyjscie wg mnie to pobieranie pingu po spawnie i robienie sredniej pingu co spawn i na podstawie tego ustawianie renderingu zeby nie bylo skoków bo zdarza sie mieć ping 60 potem 100 i znow 60
sebul
07.05.2012
Nie wiem czy lepszy będzie task, może i tak. A co do średniej to nie wiem czy udało by się osiągnąć taki efekt, że gracz ciągle zmienia swoją widoczność, bo mi o to właśnie chodziło, mniej więcej tak jak to gdzieś chyba tutaj na forum ktoś zrobił, że gracz wyglądał jak hologram, w zależności też od tego jaki miał ping.
G[o]Q
07.05.2012
wlasnie mi chodzi o to zeby nie bylo takich skoków
to chyba hardbot zrobil i nawet zmusil tym sebe do skomentowania xDD
task bedzie lepszy bo postthink wykonuje sie to 60+ razy na sekunde i sprawdza czas a to juz jest troche wieksze obciązenie niz task mimo ze pewnie obie funkcje są zrobione w podobny sposób na poziomie natywnym
to chyba hardbot zrobil i nawet zmusil tym sebe do skomentowania xDD
task bedzie lepszy bo postthink wykonuje sie to 60+ razy na sekunde i sprawdza czas a to juz jest troche wieksze obciązenie niz task mimo ze pewnie obie funkcje są zrobione w podobny sposób na poziomie natywnym