←  Szukam pluginu

AMXX.pl: Support AMX Mod X i SourceMod

»

widoczność gracza w zależności od jego pingu

  • +
  • -
Grzegorz93's Photo 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 + ;)
Quote

  • +
  • -
Grzegorz93's Photo Grzegorz93 06.05.2012

odświeżam
Quote

MasterOfGames's Photo 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

Quote

  • +
  • -
Nakupenda.'s Photo 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);
}
Quote

MasterOfGames's Photo 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
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 06.05.2012

a testowaliscie to ?

bo moge wam w ciemno powiedzieć ze to nie zadziala xDD
Quote

  • +
  • -
KariiO's Photo KariiO 06.05.2012

nigdzie nie użyli funkcji Ping ale dobra :D
Quote

  • +
  • -
sebul's Photo 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.
Quote

  • +
  • -
Nakupenda.'s Photo 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", B)
}
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.
Quote

MasterOfGames's Photo MasterOfGames 06.05.2012

Nakupenda masz błąd.
set_task(5.0, "Ping", B)

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);
}
Quote

  • +
  • -
radim's Photo radim 06.05.2012

Nie lepiej to zrobić w prethinku, gdzie funkcja wywoływana jest kilka/kilkadziesiąt razy na sekundę ?
Quote

  • +
  • -
sebul's Photo 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ć.
#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.
Quote

  • +
  • -
G[o]Q's Photo 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
Quote

  • +
  • -
sebul's Photo 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.
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 07.05.2012

wlasnie mi chodzi o to zeby nie bylo takich skoków :D

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 :D
Quote