Plugin umożliwia zapisywanie statystyk dowolnej broni w grze. Fragi są zliczane przy każdej wiadomości DeathMsg (lista zabójstw w prawym, górnym rogu). Aby to działało plugin musi mieć możliwość złapania tej wiadomości. Dobrym sposobem jest skompilowanie Challenge z wykorzystaniem modułu Orpheu, jednak wtedy musi on być zainstalowany na serwerze.
znajdź
//#define USING_ORPHEUzamień na
#define USING_ORPHEUi przekompiluj
Jeśli nie chcemy angażować orpheu równie skuteczne jest rozsyłanie wiadomości funkcją emessage_begin(), wtedy w naszym pluginie dodającym broń trzeba znaleźć fragment odpowiedzialny za DeathMsg. W przykładzie użyłem head_splash, a w nim znajduje się funkcja:
_make_deathmsg(pwnzor, pwned, hs, const szWeapon[]){
static msgDeathMsg=0;
if(!msgDeathMsg)
msgDeathMsg = get_user_msgid("DeathMsg");
message_begin(MSG_ALL, msgDeathMsg);
write_byte(pwnzor);
write_byte(pwned);
write_byte(hs);
write_string(szWeapon);
message_end();
}zamiast tych funkcji trzeba użyć ich odpowiedników z e na początku, czyli to_make_deathmsg(pwnzor, pwned, hs, const szWeapon[]){
static msgDeathMsg=0;
if(!msgDeathMsg)
msgDeathMsg = get_user_msgid("DeathMsg");
emessage_begin(MSG_ALL, msgDeathMsg);
ewrite_byte(pwnzor);
ewrite_byte(pwned);
ewrite_byte(hs);
ewrite_string(szWeapon);
emessage_end();
}Dzięki jednemu i drugiemu wyjściu możemy być pewni, że statystyki będą liczone.
Jak to wykorzystać w wyzwaniu? Wystarczy przypisać nowej broni numer do statystyk funkcją
challenge_custom_weapon("nazwa broni");to nam zwróci indeks, który potem używamy tak jak indeksy innych broni CSW_*; nazwa to parametr szWeapon[] z _make_deathmsg(), czyli to co się pokazuje w konsoli po zdobyciu fraga daną broniąR3X killed SomeOne with <nazwa broni>
Zabójstwa z head_splasha mają nazwę broni "his/her feet
CSW_HEADSPLASH = challenge_custom_weapon("his/her feet <img src='http://img.amxx.pl/public/style_emoticons/default/smile.gif' class='bbc_emoticon' alt=':)' />");Całość od szkieletu różni się tym fragmentem:
new CSW_HEADSPLASH;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
chid = register_challenge("Zabij 100 graczy z HeadSplash", "to dostaniesz nagrodę");
CSW_HEADSPLASH = challenge_custom_weapon("his/her feet <img src='http://img.amxx.pl/public/style_emoticons/default/smile.gif' class='bbc_emoticon' alt=':)' />");
challenge_uses_stats(CSW_HEADSPLASH);
}
//czy spełnia wymagania
stock hasAccess(id){
return (ch_get_user_stats(id, CSW_HEADSPLASH) >= 100);
}

Dodatki SourceMod




Moja zawartość
Mężczyzna
Napisane przez 
head_splash.amxx
