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)//
}
}
Attached Files
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
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);
}
?
Edited by Nakupenda., 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