[ROZWIĄZANE] Headshot Sounds - ciąg dalszy :)
psilocybe
07.03.2012
Witam po raz kolejny 
Postanowiłem rozbudować plugin który napisał speedkill, lecz zanim go całkiem zepsuje, chciałem się dowiedzieć czy idę w dobrym kierunku
Faktem jest że o programowaniu w pawnie wiem bardzo mało, dlatego edycja w moim przypadku jest schematyczna, kombinuje i czasem się to udaje a czasem nie 
Sprawa wygląda następująco, chcę dodać warunek dla nowych broni, powiedzmy że na początek scout i awp, więc dodałem dwa warunki if weapon, pytanie brzmi czy to jest poprawne? Zauważyłem że np. przy headshot z noża, odgrywa dźwięk dla heada z noża jak również dla "zwykłego" heda, czyli już coś pomieszałem. Gdyby ktoś mógł mi to wytłumaczyć jak dalej schematycznie postępować aby dodać kolejne warunki z nowymi broniami.
Aktualnie kod wygląda tak:

Postanowiłem rozbudować plugin który napisał speedkill, lecz zanim go całkiem zepsuje, chciałem się dowiedzieć czy idę w dobrym kierunku


Sprawa wygląda następująco, chcę dodać warunek dla nowych broni, powiedzmy że na początek scout i awp, więc dodałem dwa warunki if weapon, pytanie brzmi czy to jest poprawne? Zauważyłem że np. przy headshot z noża, odgrywa dźwięk dla heada z noża jak również dla "zwykłego" heda, czyli już coś pomieszałem. Gdyby ktoś mógł mi to wytłumaczyć jak dalej schematycznie postępować aby dodać kolejne warunki z nowymi broniami.
Aktualnie kod wygląda tak:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "Headshot Sound Hud" #define VERSION "1.0" #define AUTHOR "speedkill" new ikonka new const muza[] = "misc/headshot2.wav" new const muza1[] = "misc/impressive2.wav" new const muza2[] = "misc/perfect3.wav" new const muza3[] = "misc/excelent3.wav" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("DeathMsg", "death", "a", "1>0") ikonka = get_user_msgid("StatusIcon") } public plugin_precache() { precache_sound(muza); precache_sound(muza1); precache_sound(muza2); precache_sound(muza3); } public death() { new Killer = read_data(1) new Victim = read_data(2) new Hs = read_data(3) new weapon = get_user_weapon(Killer) if(Killer != Victim && get_user_team(Killer) != get_user_team(Victim) && Hs) { if(weapon == CSW_KNIFE) { client_cmd(Victim, "spk %s",muza1) client_cmd(Killer, "spk %s",muza1) set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Killer, "IMPRESSIVE!") set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Victim, "IMPRESSIVE!") Display_Icon(Victim, 2, "d_knife", 255, 10, 0) Display_Icon(Killer, 2, "d_knife", 255, 10, 0) set_task(6.0,"wyłącz",Killer) set_task(6.0,"wyłącz",Victim) } if(weapon == CSW_AWP) { client_cmd(Victim, "spk %s",muza2) client_cmd(Killer, "spk %s",muza2) set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Killer, "PERFECT!") set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Victim, "PERFECT!") Display_Icon(Victim, 2, "d_awp", 255, 10, 0) Display_Icon(Killer, 2, "d_awp", 255, 10, 0) set_task(6.0,"wylacz2",Killer) set_task(6.0,"wylacz2",Victim) } if(weapon == CSW_SCOUT) { client_cmd(Victim, "spk %s",muza3) client_cmd(Killer, "spk %s",muza3) set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Killer, "EXCELENT!") set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Victim, "EXCELENT!") Display_Icon(Victim, 2, "d_scout", 255, 10, 0) Display_Icon(Killer, 2, "d_scout", 255, 10, 0) set_task(6.0,"wylacz3",Killer) set_task(6.0,"wylacz3",Victim) } else { client_cmd(Victim, "spk %s",muza) client_cmd(Killer, "spk %s",muza) set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Killer, "HEADSHOT!") set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1) show_hudmessage(Victim, "HEADSHOT!") } } } public wyłącz(id) { Display_Icon(id, 0, "d_knife", 255, 10, 0) } public wylacz2(id) { Display_Icon(id, 0, "d_awp", 255, 10, 0) } public wylacz3(id) { Display_Icon(id, 0, "d_scout", 255, 10, 0) } stock Display_Icon(id, enable, name[], red, green, blue) { if(is_user_connected(id)) { message_begin(MSG_ONE, ikonka, {0,0,0}, id); write_byte(enable); write_string(name); write_byte(red); write_byte(green); write_byte(blue); message_end(); } }
Nakupenda.
08.03.2012
humm, kod jest troszke zły, ponieważ jak zabijesz z AWP to wykonuje się część Headshota dla AWP i część dla innej broni. Wystarczy że zamieniłbyś przy CSW_AWP i CSW_SCOUT "if" na "else if"
ale łap switcha, wygląda ładniej a działanie poprawne
ale łap switcha, wygląda ładniej a działanie poprawne
public death()
{
new Killer = read_data(1)
new Victim = read_data(2)
new Hs = read_data(3)
new weapon = get_user_weapon(Killer)
if(Killer != Victim && get_user_team(Killer) != get_user_team(Victim) && Hs)
{
switch(weapon)
{
case CSW_KNIFE:
{
client_cmd(Victim, "spk %s",muza1)
client_cmd(Killer, "spk %s",muza1)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "IMPRESSIVE!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "IMPRESSIVE!")
Display_Icon(Victim, 2, "d_knife", 255, 10, 0)
Display_Icon(Killer, 2, "d_knife", 255, 10, 0)
set_task(6.0,"wyłącz",Killer)
set_task(6.0,"wyłącz",Victim)
}
case CSW_AWP:
{
client_cmd(Victim, "spk %s",muza2)
client_cmd(Killer, "spk %s",muza2)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "PERFECT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "PERFECT!")
Display_Icon(Victim, 2, "d_awp", 255, 10, 0)
Display_Icon(Killer, 2, "d_awp", 255, 10, 0)
set_task(6.0,"wylacz2",Killer)
set_task(6.0,"wylacz2",Victim)
}
case CSW_SCOUT:
{
client_cmd(Victim, "spk %s",muza3)
client_cmd(Killer, "spk %s",muza3)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "EXCELENT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "EXCELENT!")
Display_Icon(Victim, 2, "d_scout", 255, 10, 0)
Display_Icon(Killer, 2, "d_scout", 255, 10, 0)
set_task(6.0,"wylacz3",Killer)
set_task(6.0,"wylacz3",Victim)
}
default:
{
client_cmd(Victim, "spk %s",muza)
client_cmd(Killer, "spk %s",muza)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "HEADSHOT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "HEADSHOT!")
}
}
}
}
psilocybe
08.03.2012
Dzięki, za chwilę dam znać czy działa, myślę że tak 
Mam jeszcze jedno pytanie, czy jest możliwość wyłapania przez plugin podwójnego headshota? Chodzi mi o dwa heady jednym strzałem, zdarza się dość często na mapach awp i scout podwójny head jednym strzałem, a jako że wyciągnąłem sporo fajnych dźwięków z pewnej hardcorowej gry, chciał bym je wykorzystać
Gdyby nie było to zbyt trudne, może ktoś napisze jak wykryć double headshot jednym strzałem, chciał bym z awp i scout ten sam dźwięk przy double headshot, zachowując inne dźwięki dla pojedynczego heada z tych broni. Będę wdzięczny za pomoc przy tym.
Wkrótce zamieszczę zlecenie płatne dotyczące tego pluginu, mam co do niego większe plany ale to już będzie wymagało większego nakładu pracy.

Mam jeszcze jedno pytanie, czy jest możliwość wyłapania przez plugin podwójnego headshota? Chodzi mi o dwa heady jednym strzałem, zdarza się dość często na mapach awp i scout podwójny head jednym strzałem, a jako że wyciągnąłem sporo fajnych dźwięków z pewnej hardcorowej gry, chciał bym je wykorzystać

Gdyby nie było to zbyt trudne, może ktoś napisze jak wykryć double headshot jednym strzałem, chciał bym z awp i scout ten sam dźwięk przy double headshot, zachowując inne dźwięki dla pojedynczego heada z tych broni. Będę wdzięczny za pomoc przy tym.
Wkrótce zamieszczę zlecenie płatne dotyczące tego pluginu, mam co do niego większe plany ale to już będzie wymagało większego nakładu pracy.

Nakupenda.
08.03.2012
może tak:
nowe funkcje dodaj, funkcje od śmierci podmień
Edited by Nakupenda., 08.03.2012 13:57.
new Float:D_time[33], bool:double[33];
public client_authorized(id)
{
D_time[id] = 0;
double = false;
}
public client_disconnect(id)
{
D_time[id] = 0;
double = false;
}
public death()
{
new Killer = read_data(1)
new Victim = read_data(2)
new Hs = read_data(3)
new weapon = get_user_weapon(Killer)
if(D_time[id] == 0)
{
D_time[id] = get_gametime();
double[id] = false;
}
else
{
static Float:temp = get_gametime() - D_time[id];
if(temp <= 0.001)
{
double[id] = true
D_time[id] = 0
}
else
{
double[id] = false
D_time[id] = 0
}
}
if(Killer != Victim && get_user_team(Killer) != get_user_team(Victim) && Hs)
{
switch(weapon)
{
case CSW_KNIFE:
{
client_cmd(Victim, "spk %s",muza1)
client_cmd(Killer, "spk %s",muza1)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "IMPRESSIVE!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "IMPRESSIVE!")
Display_Icon(Victim, 2, "d_knife", 255, 10, 0)
Display_Icon(Killer, 2, "d_knife", 255, 10, 0)
set_task(6.0,"wyłącz",Killer)
set_task(6.0,"wyłącz",Victim)
}
case CSW_AWP:
{
if(double[id])
{
// kod, gdy jest podwojne zabicie z AWP
}
else
{
client_cmd(Victim, "spk %s",muza2)
client_cmd(Killer, "spk %s",muza2)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "PERFECT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "PERFECT!")
Display_Icon(Victim, 2, "d_awp", 255, 10, 0)
Display_Icon(Killer, 2, "d_awp", 255, 10, 0)
set_task(6.0,"wylacz2",Killer)
set_task(6.0,"wylacz2",Victim)
}
}
case CSW_SCOUT:
{
if(double[id])
{
// kod, gdy jest podwojne zabicie ze Scouta
}
else
{
client_cmd(Victim, "spk %s",muza3)
client_cmd(Killer, "spk %s",muza3)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "EXCELENT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "EXCELENT!")
Display_Icon(Victim, 2, "d_scout", 255, 10, 0)
Display_Icon(Killer, 2, "d_scout", 255, 10, 0)
set_task(6.0,"wylacz3",Killer)
set_task(6.0,"wylacz3",Victim)
}
}
default:
{
client_cmd(Victim, "spk %s",muza)
client_cmd(Killer, "spk %s",muza)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "HEADSHOT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "HEADSHOT!")
}
}
}
}
nowe funkcje dodaj, funkcje od śmierci podmień
Edited by Nakupenda., 08.03.2012 13:57.
psilocybe
08.03.2012
Dzięki za pomoc lecz niestety kod na podwójny headshot jest błędny, lub ja coś pokręciłem, podczas kompilacji wywala błąd 'undefined symbol id' i inne, nie wiem co mam robić, pewnie coś pokręciłem 
W załączniku *.sma, może jesteś w stanie to poprawić? Daję cały plugin ponieważ już dodałem wszystkie dźwięki i nie chcę pomieszać przy edycji.

W załączniku *.sma, może jesteś w stanie to poprawić? Daję cały plugin ponieważ już dodałem wszystkie dźwięki i nie chcę pomieszać przy edycji.
Attached Files
Nakupenda.
08.03.2012
ma dokładnie 198 linijek czyli mniej niż 200
więc wrzucam tu:

więc wrzucam tu:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Headshot Sound Hud"
#define VERSION "1.0"
#define AUTHOR "speedkill"
new ikonka
new Float:D_time[33], bool:double[33]
new const muza[] = "misc/headshot2.wav"
new const muza1[] = "misc/impressive2.wav"
new const muza2[] = "misc/perfect3.wav"
new const muza3[] = "misc/excelent3.wav"
new const muza4[] = "misc/supurb2.wav"
new const muza5[] = "misc/brutality2.wav"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "death", "a", "1>0")
ikonka = get_user_msgid("StatusIcon")
}
public plugin_precache()
{
precache_sound(muza);
precache_sound(muza1);
precache_sound(muza2);
precache_sound(muza3);
precache_sound(muza4);
precache_sound(muza5);
}
public client_authorized(id)
{
D_time[id] = 0.0;
double[id] = false;
}
public client_disconnect(id)
{
D_time[id] = 0.0;
double[id] = false;
}
public death()
{
new Killer = read_data(1)
new Victim = read_data(2)
new Hs = read_data(3)
new weapon = get_user_weapon(Killer)
if(D_time[Killer] == 0)
{
D_time[Killer] = get_gametime();
double[Killer] = false;
}
else
{
new Float:temp = get_gametime() - D_time[Killer];
if(temp <= 0.001)
{
double[Killer] = true
D_time[Killer] = 0.0
}
else
{
double[Killer] = false
D_time[Killer] = 0.0
}
}
if(Killer != Victim && get_user_team(Killer) != get_user_team(Victim) && Hs)
{
switch(weapon)
{
case CSW_KNIFE:
{
client_cmd(Victim, "spk %s",muza1)
client_cmd(Killer, "spk %s",muza1)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "IMPRESSIVE!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "IMPRESSIVE!")
Display_Icon(Victim, 2, "d_knife", 255, 10, 0)
Display_Icon(Killer, 2, "d_knife", 255, 10, 0)
set_task(6.0,"wyłącz",Killer)
set_task(6.0,"wyłącz",Victim)
}
case CSW_AWP:
{
if(double[Killer])
{
client_cmd(Victim, "spk %s",muza5)
client_cmd(Killer, "spk %s",muza5)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "BRUTALITY!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "BRUTALITY!")
Display_Icon(Victim, 2, "d_awp", 255, 10, 0)
Display_Icon(Killer, 2, "d_awp", 255, 10, 0)
set_task(6.0,"wylacz2",Killer)
set_task(6.0,"wylacz2",Victim)
}
else
{
client_cmd(Victim, "spk %s",muza2)
client_cmd(Killer, "spk %s",muza2)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "PERFECT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "PERFECT!")
Display_Icon(Victim, 2, "d_awp", 255, 10, 0)
Display_Icon(Killer, 2, "d_awp", 255, 10, 0)
set_task(6.0,"wylacz2",Killer)
set_task(6.0,"wylacz2",Victim)
}
}
case CSW_SCOUT:
{
if(double[Killer])
{
client_cmd(Victim, "spk %s",muza5)
client_cmd(Killer, "spk %s",muza5)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "BRUTALITY!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "BRUTALITY!")
Display_Icon(Victim, 2, "d_scout", 255, 10, 0)
Display_Icon(Killer, 2, "d_scout", 255, 10, 0)
set_task(6.0,"wylacz3",Killer)
set_task(6.0,"wylacz3",Victim)
}
else
{
client_cmd(Victim, "spk %s",muza3)
client_cmd(Killer, "spk %s",muza3)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "EXCELENT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "EXCELENT!")
Display_Icon(Victim, 2, "d_scout", 255, 10, 0)
Display_Icon(Killer, 2, "d_scout", 255, 10, 0)
set_task(6.0,"wylacz3",Killer)
set_task(6.0,"wylacz3",Victim)
}
}
case CSW_DEAGLE:
{
client_cmd(Victim, "spk %s",muza4)
client_cmd(Killer, "spk %s",muza4)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "SUPURB!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "SUPURB!")
Display_Icon(Victim, 2, "d_deagle", 255, 10, 0)
Display_Icon(Killer, 2, "d_deagle", 255, 10, 0)
set_task(6.0,"wylacz4",Killer)
set_task(6.0,"wylacz4",Victim)
}
default:
{
client_cmd(Victim, "spk %s",muza)
client_cmd(Killer, "spk %s",muza)
set_hudmessage (000, 255, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Killer, "HEADSHOT!")
set_hudmessage (255, 000, 000, -1.0, 0.2, 2, 0.02, 6.0, 0.01, 0.1, -1)
show_hudmessage(Victim, "HEADSHOT!")
}
}
}
}
public wyłącz(id)
{
Display_Icon(id, 0, "d_knife", 255, 10, 0)
}
public wylacz2(id)
{
Display_Icon(id, 0, "d_awp", 255, 10, 0)
}
public wylacz3(id)
{
Display_Icon(id, 0, "d_scout", 255, 10, 0)
}
public wylacz4(id)
{
Display_Icon(id, 0, "d_deagle", 255, 10, 0)
}
stock Display_Icon(id, enable, name[], red, green, blue) {
if(is_user_connected(id)) {
message_begin(MSG_ONE, ikonka, {0,0,0}, id);
write_byte(enable);
write_string(name);
write_byte(red);
write_byte(green);
write_byte(blue);
message_end();
}
}
psilocybe
08.03.2012
Wielkie dzięki kolego, kompilacja bez problemów, szacunek za dobre chęci i pomoc. Mam fajny pomysł jak rozwinąć ten plugin, lecz to już temat na zlecenia płatne, gdy będę miał już fundusze i kompletny plan będę miał Ciebie na uwadze
Jeszcze raz dzięki!


Muzzi
09.03.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz,
raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz,

Z pozdrowieniami,
Zespół AMXX.PL