←  Szukam pluginu

AMXX.pl: Support AMX Mod X i SourceMod

»

Plugin pokazujący odległość strzału który...

  • +
  • -
Jooe - zdjęcie Jooe 12.01.2015

Jak w temacie, gdzzieś na polskim serwerze widziałem taki. Ma ktoś? :)

Odpowiedz

  • +
  • -
psilocybe - zdjęcie psilocybe 12.01.2015

W statsx jest coś takiego, z menu admina wejdź w konfirugracje Statystyk i poszukaj ;)

Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie Wielkie Jol 12.01.2015

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Wielkie Jol"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("DeathMsg", "DeathMsg", "a")
}

public DeathMsg(){
	new killer = read_data(1);
	new victim = read_data(2);
	new Float:Distance;
	if(!is_user_connected(killer) || killer == victim || !is_user_connected(victim))
		return PLUGIN_CONTINUE
		
	Distance = entity_range(killer, victim)
	client_print(victim, 3, "Dystans z ktorego Cie zabito to %.2f unitow", Distance)
	return PLUGIN_CONTINUE
}

Użytkownik Wielkie Jol edytował ten post 12.01.2015 20:59
Odpowiedz

  • +
  • -
patryQ1997 - zdjęcie patryQ1997 12.01.2015

Może o to chodziło? http://amxx.pl/topic...info-beams-iii/

Odpowiedz

  • +
  • -
Jooe - zdjęcie Jooe 12.01.2015

@Wielkie Joł

 

Pięknie działa :) ale ja chciałbym wyświetlanie w HUD, da się? :D i w metrach :D


Użytkownik Jooe edytował ten post 12.01.2015 23:25
Odpowiedz

  • +
  • -
NieWiemMamMac@ - zdjęcie NieWiemMamMac@ 12.01.2015

@Wielkie Joł

 

Pięknie działa :) ale ja chciałbym wyświetlanie w HUD, da się? :D i w metrach :D

client_print(victim, 3, "Dystans z ktorego Cie zabito to %.2f unitow", Distance)

na:

set_hudmessage(255, 0, 0, 0.11, 0.82, 0, 6.0, 5.0)
show_hudmessage(victim, "Dystans z ktorego Cie zabito to %.2f unitow", Distance)
Odpowiedz

  • +
  • -
Jooe - zdjęcie Jooe 12.01.2015

Również działa ładnie, tylko jeszcze w metrach żeby było. Bo ta jednostka jest zbyt wysoka, z bliskiej odległości pokazuje po 210

 

EDIT: a jednak wiadomość w hud nie działa, z czymś innym i się pomyliło


Użytkownik Jooe edytował ten post 13.01.2015 00:15
Odpowiedz

  • +
  • -
psilocybe - zdjęcie psilocybe 13.01.2015

Ostatni parametr to kanał hud (-1 auto), możliwe że inne hud nadpisują wiadomość więc zamień set_hudmessage na ten:

set_hudmessage (255, 000, 000, -1.0, 0.25, 2, 0.02, 4.0, 0.01, 0.1, -1)

Co do jednostek to wysokość modelu gracza:

 

 

78 units = 78 inches = (2,54 x 78 =) 198,12cm

 

Przyjęto że 1 game unit to 1 cal czyli (Distance * 2.54) * 0.01 da Ci wynik w metrach, trzeba matematyki by pokazać metry dlatego już mnie tu nie ma :D


Użytkownik psilocybe edytował ten post 13.01.2015 00:50
Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie Wielkie Jol 13.01.2015

Zamień

set_hudmessage(255, 0, 0, 0.11, 0.82, 0, 6.0, 5.0)
show_hudmessage(victim, "Dystans z ktorego Cie zabito to %.2f unitow", Distance)

na

set_hudmessage(255, 0, 0, 0.11, 0.82, 0, 6.0, 5.0)
show_hudmessage(victim, "Dystans z ktorego Cie zabito to %.2f unitow", Distance/39.37)

@psilocybe

Wystarczy prosta proporcja.  

Skoro 78 unitów to 198,12 cm

to ile unitów to będzie 100cm(1m)?

 

(78*100cm)/198,12cm = ~39,37

 

Więc by teraz uzyskać jednostkę w metrach, to najzwyczajniej dzielimy ilość unitów, jakie nas dzieli od zabójcy przez 39,37.

Odpowiedz

  • +
  • -
psilocybe - zdjęcie psilocybe 13.01.2015

No tak, wychodzi na to że mała skrzynka(32x32) ma około 81cm, jest to realne jak na silnik GoldSource.

 

Teraz jako member Support Teamu Wielkie Jol powinieneś wytłumaczyć nam jak za pomocą funkcji format, pokazać "Dystans z którego Cie zabito to X metrów XX centymetrów" :D

 

Może się przydać bo przykład jest dobry, a wyczerpiemy temat do zera, może ktoś będzie chciał tak pokazać odległość? Osobiście wybrał bym opcję zaokrąglenia tego do pełnych metrów funkcją floatround, lub ewentualnie jedno miejsce po przecinku czyli %.1f


Użytkownik psilocybe edytował ten post 13.01.2015 09:17
Odpowiedz

  • +
  • -
wiwi249 - zdjęcie wiwi249 13.01.2015

Teraz jako member Support Teamu Wielkie Jol powinieneś wytłumaczyć nam jak za pomocą funkcji format, pokazać "Dystans z którego Cie zabito to X metrów XX centymetrów" :D

To akurat najprostsza rzecz jaka została :D

static HUD[64];
formatex(HUD, charsmax(HUD), "Dystans z ktorego Cie zabito to %.2f metrow", Distance/39.37)
set_hudmessage(255, 0, 0, 0.11, 0.82, 0, 6.0, 5.0)
show_hudmessage(victim, HUD)

Przyjęto że 1 game unit to 1 cal czyli (Distance * 2.54) * 0.01 da Ci wynik w metrach, trzeba matematyki by pokazać metry dlatego już mnie tu nie ma :D

Gdzie byłeś jak o to pytałem? Kiedyś wrzucałem pytanie o unity w grze na forum i nikt nie umiał mi pomóc. dziękuję <3 Przynajmniej teraz wiem, że w tej mojej SR-25 co zrobiłem i widnieje w dziale Offtopic dałem ponad 2,5 razy za małą prędkośc wylotową xD

Odpowiedz

  • +
  • -
psilocybe - zdjęcie psilocybe 13.01.2015


To akurat najprostsza rzecz jaka została :D

 

Nie widzę żebyś rozbił to na metry i centymetry, mi chodzi o to jak zastosować tu funkcję format np.:

// Przykład formatowania czasu (prosta zamiana sekund na mm:ss)

new iSekundy = 75;
format(szText, 127, "%02d:%02d", iSekundy/60, iSekundy%60); // 01:15

Zastosować to tak, by zamiast "10.85 metrów" wyświetlić "10 metrów 85 centymetrów" :D

Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie Wielkie Jol 13.01.2015

No tak, wychodzi na to że mała skrzynka(32x32) ma około 81cm, jest to realne jak na silnik GoldSource.

 

Teraz jako member Support Teamu Wielkie Jol powinieneś wytłumaczyć nam jak za pomocą funkcji format, pokazać "Dystans z którego Cie zabito to X metrów XX centymetrów" :D

 

Może się przydać bo przykład jest dobry, a wyczerpiemy temat do zera, może ktoś będzie chciał tak pokazać odległość? Osobiście wybrał bym opcję zaokrąglenia tego do pełnych metrów funkcją floatround, lub ewentualnie jedno miejsce po przecinku czyli %.1f

To żeś mnie wkopał w robotę xD, nie jest jakoś doskonale wytłumaczone, bo tłumaczyć za bardzo nie umiem, ale jeżeli chociaż trochę ogarniasz matematykę, powinieneś wiedzieć co tam jest napisane. Testowane, zwraca realne wyniki.

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Wielkie Jol"


#define UnitsPerMeter 39.37

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("DeathMsg", "DeathMsg", "a")
}

public DeathMsg(){
	new killer = read_data(1);
	new victim = read_data(2);
	new Float:Distance;
	if(!is_user_connected(killer) || killer == victim || !is_user_connected(victim))
		return PLUGIN_CONTINUE
	new gMeters, gCentimeters;
	Distance = entity_range(killer, victim)/UnitsPerMeter // pobieramy odlegosc miedzy zabojca a ofiara, dzielimy od razu, by miec metry
	gMeters = floatround(Distance, floatround_floor) // przy metrach zaokraglamy w dol co wazne, bedziemy wtedy wiedzieli ile metrow mamy, no bo przeciez nie mozemy zaokraglic do gory, bo przy 1.6 metrze pokaze nam dwa
	gCentimeters = floatround((Distance - gMeters)*100, floatround_round); // Odejmujemy od naszej 'glownej wartosci' ktora liczylismy na poczatku ilosc metrow jaka sobie przed momentem policzylismy.
	//najpierw mnozymy wynik przez 100, bo przeciez nam bedzie zaokraglalo np. liczbe 0.71, a nam chodzi o centymetry, nie o metry
	//0.71m = 71cm czyli oczywiscie mnozymy przez 100 ( nie tlumacze jakos super, no ale mam nadzieje ze wiadomo o co chodzi xD )
	//zaokraglamy ta liczbe, bo inaczej bedziemy mieli np. 71.4cm, nie chodzi nam chyba o to, prawda?
	client_print(victim, 3, "Dystans z ktorego Cie zabito to %d Metrow %d Centymetrow", gMeters, gCentimeters)
	// wuala wyswietlamy dystans.
	
	return PLUGIN_CONTINUE
}

Wielkie Jol (13.01.2015 17:16):
zaraz pewnie wyskoczy jakiś RGB albo grankee ze swoim rozwiązaniem xD, ograniczającym się do dwóch linijek, no ale ja takim matematycznym podejściem to zrobiłem - taki mi pomysł wpadł do głowy.

Jeżeli czegoś nie rozumiecie z tego mojego bełkotu xD, to postaram się wytłumaczyć
Wielkie Jol (13.01.2015 17:17):
a i prefix dałem zmiennym g, że niby są globalne, ale w rzeczywistości są lokalne, także proszę mnie nie ganić za to, już nie chce mi się poprawiać :P
Odpowiedz