←  Szukam pluginu

AMXX.pl: Support AMX Mod X i SourceMod

»

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

  • +
  • -
Grzegorz93 - zdjęcie 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 + ;)
Odpowiedz

  • +
  • -
Grzegorz93 - zdjęcie Grzegorz93 06.05.2012

odświeżam
Odpowiedz

MasterOfGames - zdjęcie 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

Odpowiedz

  • +
  • -
Nakupenda. - zdjęcie 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);
}
Odpowiedz

MasterOfGames - zdjęcie 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
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 06.05.2012

a testowaliscie to ?

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

  • +
  • -
KariiO - zdjęcie KariiO 06.05.2012

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

  • +
  • -
sebul - zdjęcie 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.
Odpowiedz

  • +
  • -
Nakupenda. - zdjęcie 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);
}

?
Użytkownik Nakupenda. edytował ten post 06.05.2012 14:37
Odpowiedz

MasterOfGames - zdjęcie 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);
}
Odpowiedz

  • +
  • -
radim - zdjęcie radim 06.05.2012

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

  • +
  • -
sebul - zdjęcie 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.
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie 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
Odpowiedz

  • +
  • -
sebul - zdjęcie 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.
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie 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
Odpowiedz