Jak w temacie, gdzzieś na polskim serwerze widziałem taki. Ma ktoś?
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Plugin pokazujący odległość strzału który nas zabił
#1
Napisano 12.01.2015 19:50
#3
Napisano 12.01.2015 20:55
/* 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
"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.
#5
Napisano 12.01.2015 23:21
@Wielkie Joł
Pięknie działa ale ja chciałbym wyświetlanie w HUD, da się? i w metrach
Użytkownik Jooe edytował ten post 12.01.2015 23:25
#6
Napisano 12.01.2015 23:30
@Wielkie Joł
Pięknie działa ale ja chciałbym wyświetlanie w HUD, da się? i w metrach
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)
#7
Napisano 12.01.2015 23:54
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
#8
Napisano 13.01.2015 00:49
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
Użytkownik psilocybe edytował ten post 13.01.2015 00:50
#9
Napisano 13.01.2015 07:15
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)
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.
"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.
#10
Napisano 13.01.2015 09:17
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"
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
#11
Napisano 13.01.2015 09:40
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"
To akurat najprostsza rzecz jaka została
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
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ą
Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.
Potrzebujesz czegoś? Pisz!
"śpieszmy się pisać posty, tak szybko banują..." ~ sebul
#12
Napisano 13.01.2015 09:56
To akurat najprostsza rzecz jaka została
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"
#13
Napisano 13.01.2015 17:14
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"
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ę , 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 }
"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych