关于ultimate_sounds,请高手帮忙
/* AMX Mod script.*
* ::Ultimate sounds::
*by Hephaistos (hephaistos@djeyl.net)
*
* First Blood
* First kill since round start
* firstblood_mode < flags >
* "a" - messages
* "b" - sounds
*
*
* Head Shot
* It's all in the name
* hs_mode < flags >
* "a" - messages
* "b" - sounds
*
*
* Multi Kill
* Multiple kills, max 3 sec in between
* multi_mode < flags >
* "a" - messages
* "b" - sounds
*
*
* Killing Spree
* Multiple kills without dying
* spree_mode < flags >
* "a" - messages
* "b" - sounds
*
*
* C4
*
* bomb_mode < flags >
* "a" - exploded
* "b" - planting
* "c" - defusing
* "d" - planted
* "e" - defused
* "f" - failed to defuse
* "g" - pickup
* "h" - dropped
* "i" - sounds
*
*
* HE Kills
* HE-Kills
* hekill_mode < flags >
* "a" - show normal HE-Kill in hud
* "b" - show suicide HE-Kill in hud
* "c" - sounds
*
*
* Knife Kills
* Knife Kills
* knife_mode < flags >
* "a" - messages
* "b" - sounds
*
* Last Man
*
* lastman_mode < flags >
* "a" - messages
* "b" - hp
* "c" - sounds
*
* Thanks to ToT|V!PER, OLO, JustinHoMi, PsychoGuard and dJeyL for your plugins
*
*
*/
#include <amxmod>
#define KNIFF_MESSAGES 4
#define HE_MESSAGES 4 /* Number of Random Messages for Normal HE Kills */
#define HE_SMESSAGES4 /* Number of Random Messages for Suicide HE Kills */
#define LAST_MESSAGES_NOHP 4
#define LAST_MESSAGES_HP 4
new planter
new defuser
new c4timer
new defusing
new Float:last_omg
new Float:last_plan
new alone_ann = 0
#define MULTI_START 2
#define MULTI_STEP 1
#define MULTI_LEVELS 4
#define MULTI_INTERVAL 3.0
#define SPREE_START 5
#define SPREE_STEP 5
#define SPREE_LEVELS 5
#define SPREE_TOP SPREE_START + SPREE_STEP * (SPREE_LEVELS - 1)
new bool:first = true
new multi_timer = {0,...}
new multi_count = {0,...}
new multi_messages[] = {
"%s: Double Kill!!",
"%s: Multi-Kill!",
"%s: Ultra-Kill!!!",
"%s: Monster-kill!!!"
}
new multi_sounds[] = {
"misc/doublekill.wav",
"misc/multikill.wav",
"misc/ultrakill.wav",
"misc/monsterkill.wav"
}
new spree_count = {0,...}
new spree_messages[] = {
"%s is on a killing spree!",
"%s is on a rampage!",
"%s is dominating!",
"%s is unstoppable!",
"%s is Godlike!"
}
new spree_sounds[] = {
"misc/killingspree.wav",
"misc/rampage.wav",
"misc/dominating.wav",
"misc/unstoppable.wav",
"misc/godlike.wav"
}
new Blue = {0,63,191}
new Red = {255,0,0}
new Orange = {200,100,0}
new kniff_messages[] = {
"%s sliced and diced %s",
"%s pulled out knife and gutted %s",
"%s sneaks carefully behind and knifed %s",
"%s knived %s"}
new he_messages[] = {
"%s sends a little gift to %s",
"%s throws a small present to %s",
"%s made a precision throw to %s",
"%s got a big explosion for %s"} /* Random Messages for Normal HE Kills */
new hes_messages[] = {
"%s detonated himself with a grenade",
"%s trys the effect of a HE Grenade",
"%s kicked a grenade into his own ass",
"%s explodes!"} /* Random Messages for Suicide HE Kills */
new last_messages_nohp[] = {"%i terrorist vs %i CT^n%s: Now all depend on you!",
"%i terrorist vs %i CT^n%s: I hope you still have a healthpack.",
"%i terrorist vs %i CT^n%s: All your teammates were killed. Good luck!",
"%i terrorist vs %i CT^n%s: Now you are alone. Have fun!"}
new last_messages_hp[] = {"%i terrorist vs %i CT^n%s (%i hp): Now all depend on you!",
"%i terrorist vs %i CT^n%s (%i hp): I hope you still have a healthpack.",
"%i terrorist vs %i CT^n%s (%i hp): All your teammates were killed. Good luck!",
"%i terrorist vs %i CT^n%s (%i hp): Now you are alone. Have fun!"}
get_bemode() {
new bemode
get_cvar_string("bomb_mode",bemode,9)
return read_flags(bemode)
}
get_spree() {
new spree
get_cvar_string("spree_mode",spree,2)
return read_flags(spree)
}
get_multi() {
new multi
get_cvar_string("multi_mode",multi,2)
return read_flags(multi)
}
public reset_multi(param[]){
new id = param
multi_timer = 0
multi_count = 0
}
public client_putinserver(id){
reset_all(id)
return PLUGIN_CONTINUE
}
public reset_all(id){
if (multi_timer){
remove_task(id)
multi_timer = 0
}
multi_count = 0
spree_count = 0
}
public say_spree(id){
new name
new spree_level
new message
spree_level = (spree_count - SPREE_START) / SPREE_STEP
if (spree_level > SPREE_LEVELS - 1) {
spree_level = SPREE_LEVELS - 1;
}
new spree = get_spree()
if (spree&1){
get_user_name(id,name,31)
format(message,127,spree_messages,name)
set_hudmessage(Blue, Blue, Blue, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2)
show_hudmessage(0,message)
client_print(0,print_chat,"* %s",message)
}
if (spree&2){
client_cmd(0,"spk %s",spree_sounds)
}
}
public say_multi(id){
new name
new multi_level
multi_level = (multi_count - MULTI_START) / MULTI_STEP
if (multi_level > MULTI_LEVELS - 1) {
multi_level = MULTI_LEVELS - 1;
}
new multi = get_multi()
if (multi&1){
get_user_name(id,name,31)
set_hudmessage(Red, Red, Red, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2)
show_hudmessage(0,multi_messages,name)
}
if (multi&2){
client_cmd(0,"spk %s",multi_sounds)
}
} public death_event(){
new killer = read_data(1)
new victim = read_data(2)
new name_v
new message
get_user_name(victim,name_v,31)
if (killer == victim){
if (spree_count >= SPREE_START){
format(message,127,"%s was looking good till he killed himself!",name_v)
set_hudmessage(Blue, Blue, Blue, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2)
show_hudmessage(0,message)
client_print(0,print_chat,"* %s",message)
}
} else {
if (killer){
new name_k
get_user_name(killer,name_k,31)
if (spree_count >= SPREE_START){
format(message,127,"%s's killing spree was ended by %s",name_v,name_k)
set_hudmessage(Blue, Blue, Blue, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2)
show_hudmessage(0,message)
client_print(0,print_chat,"* %s",message)
}
if (get_user_team(killer) != get_user_team(victim)){
if (first){
first = false
new fbmode
get_cvar_string("firstblood_mode",fbmode,2)
new fbmode_bit = read_flags(fbmode)
if (fbmode_bit & 1) {
format(message,127,"%s drew first blood!",name_k)
set_hudmessage(Red, Red, Red, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2)
show_hudmessage(0,message)
client_print(0,print_chat,"* %s",message)
}
if (fbmode_bit & 2) {
client_cmd(0,"spk misc/firstblood.wav")
}
}
if (multi_timer){
remove_task(killer)
multi_timer = 0
}
multi_count++
if (multi_count >= MULTI_START && (multi_count - MULTI_START) % MULTI_STEP == 0){
say_multi(killer)
}
new param
param = killer
set_task(MULTI_INTERVAL,"reset_multi",killer,param,1)
spree_count++
if (spree_count >= SPREE_START && spree_count <= SPREE_TOP && (spree_count - SPREE_START) % SPREE_STEP == 0){
say_spree(killer)
}
}
}
}
reset_all(victim)
}
public got_bomb(id){
new bemode = get_bemode()
if (bemode&1){
planter = id
defuser = defusing = 0
if ((read_data(1)==2) && (last_omg < get_gametime())){
new bplayers_t, numte
get_players(bplayers_t,numte,"e","TERRORIST")
last_omg = get_gametime() + 15.0
new name
get_user_name(planter, name , 32)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(bplayers_t,"Omg! %s reached the target!",name)
}
}
}
public bdef_g(id){
new bemode = get_bemode()
if (read_data(1) == 3){
if (last_plan < get_gametime()){
if (bemode&2){
new bplayers_t, numte
get_players(bplayers_t,numte,"e","TERRORIST")
last_plan = get_gametime() + 15.0
new name
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
get_user_name(planter, name , 32)
show_hudmessage(bplayers_t,"%s is planting the bomb!",name)
}
}
}
else {
defuser = defusing = id
if (last_plan < get_gametime()){
if (bemode&4){
new bplayers_ct, numct
get_players(bplayers_ct,numct,"e","CT")
last_plan = get_gametime() + 15.0
new name
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
get_user_name(defusing, name , 32)
show_hudmessage(bplayers_ct,"%s is defusing the bomb ",name)
}
}
}
}
public bdef_l(id)
defusing = 0
public disable_c4(){
c4timer = 0
last_plan = 0.0
last_omg = 0.0
remove_task(8038)
}
public bomb_planted(){
new bemode = get_bemode()
if (bemode&256){
client_cmd(0,"spk djeyl/c4powa")
}
if (bemode&8){
new name
get_user_name(planter, name , 32)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0,"%s set us up the bomb!!!",name)
c4timer = get_cvar_num("mp_c4timer") - 2
set_task(1.0,"bomb_c",8038,"",0,"b")
last_plan = 0.0
}
}
public bomb_c(){
new bemode = get_bemode()
if (--c4timer > 0){
if (c4timer == 30 || c4timer == 20){
if (bemode&256){
new temp
num_to_word(c4timer,temp,48)
client_cmd(0,"spk ^"vox/%s seconds until explosion^"",temp)
}
}
else if (c4timer < 11){
if (bemode&256){
new temp
num_to_word(c4timer,temp,48)
client_cmd(0,"spk ^"vox/%s^"",temp)
}
}
if (defusing)
client_print(defusing,print_center,"%d",c4timer)
}
else{
remove_task(8038)
}
}
public bomb_defused(){
new bemode = get_bemode()
if (bemode&256){
client_cmd(0,"spk djeyl/laugh")
}
if (bemode&16){
new name
get_user_name(defuser, name , 32)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0,"%s defused the bomb!",name)
disable_c4()
}
} public bomb_failure(){
new bemode = get_bemode()
if (defuser){
if (bemode&256){
client_cmd(0,"spk djeyl/witch")
}
if (bemode&32){
new name
get_user_name(defuser, name , 32)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0,"%sfailed to defuse the bomb...",name)
}
}
}
public bomb_pickup(id){
new bemode = get_bemode()
if (bemode&64){
new bplayers_t, numte
get_players(bplayers_t,numte,"e","TERRORIST")
new name
get_user_name(id, name , 32)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(bplayers_t,"%s pick up the bomb...",name)
}
}
public bomb_drop(){
new bemode = get_bemode()
if (bemode&128){
new bplayers_t, numte
get_players(bplayers_t,numte,"e","TERRORIST")
new name
get_user_name(planter, name , 32)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(bplayers_t,"%s dropped the bomb!!!",name)
}
}
public he_kills(){
new killer_id = read_data(1)
new victim_id = read_data(2)
new killer_name, victim_name
get_user_name(killer_id,killer_name,33)
get_user_name(victim_id,victim_name,33)
new hekmode
get_cvar_string("hekill_mode",hekmode,8)
new hekmode_bit = read_flags(hekmode)
if (hekmode_bit & 1) {
if (victim_id != killer_id)
{
if (hekmode_bit & 4) {
client_cmd(0,"spk djeyl/grenade")
}
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0,he_messages[ random_num(0,HE_MESSAGES-1)],killer_name,victim_name)
}
}
if (hekmode_bit & 2) {
if (victim_id == killer_id)
{
if (hekmode_bit & 4) {
client_cmd(0,"spk djeyl/witch")
}
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0,hes_messages[ random_num(0,HE_SMESSAGES-1) ],victim_name)
}
}
}
public knife_kill(){
new kniffmode
get_cvar_string("kniff_mode",kniffmode,4)
new kniffmode_bit = read_flags(kniffmode)
if (kniffmode_bit & 1) {
new killer_id = read_data(1)
new victim_id = read_data(2)
new killer_name, victim_name
get_user_name(killer_id,killer_name,33)
get_user_name(victim_id,victim_name,33)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(0,kniff_messages[ random_num(0,KNIFF_MESSAGES-1) ],killer_name,victim_name)
}
if (kniffmode_bit & 2) {
client_cmd(0,"spk misc/humiliation")
}
}
public roundend_msg(id){
alone_ann = 0
first = true
}
public death_msg(id){
new lmmode
get_cvar_string("lastman_mode",lmmode,8)
new lmmode_bit = read_flags(lmmode)
new players_ct, players_t, ict, ite, last
get_players(players_ct,ict,"ae","CT")
get_players(players_t,ite,"ae","TERRORIST")
if (ict==1&&ite==1){
new name1, name2
get_user_name(players_ct,name1,32)
get_user_name(players_t,name2,32)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
if (lmmode_bit & 1){
if (lmmode_bit & 2){
show_hudmessage(0,"%s (%i hp) vs. %s (%i hp)",name1,get_user_health(players_ct),name2,get_user_health(players_t))
}
else {
show_hudmessage(0,"%s vs. %s",name1,name2)
}
if (lmmode_bit & 4){
client_cmd(0,"spk misc/maytheforce")
}
}
}
else {
if (ict==1&&ite>1&&alone_ann==0&&(lmmode_bit & 4)){
last=players_ct
client_cmd(last,"spk misc/oneandonly")
}
else if (ite==1&&ict>1&&alone_ann==0&&(lmmode_bit & 4)){
last=players_t
client_cmd(last,"spk misc/oneandonly")
}
else {
return PLUGIN_CONTINUE
}
alone_ann = last
new name
get_user_name(last,name,32)
if (lmmode_bit & 1){
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
if (lmmode_bit & 2){
show_hudmessage(0,last_messages_hp[ random_num(0,LAST_MESSAGES_HP-1) ],ite ,ict ,name,get_user_health(last))
}
else {
show_hudmessage(0,last_messages_nohp[ random_num(0,LAST_MESSAGES_NOHP-1) ],ite ,ict ,name )
}
}
if (lmmode_bit & 4){
client_cmd(last,"spk misc/maytheforce")
}
}
return PLUGIN_CONTINUE
}
public hs(){
new hsmode
get_cvar_string("hs_mode",hsmode,4)
new hsmode_bit = read_flags(hsmode)
if (hsmode_bit & 1){
new killer_id = read_data(1)
new victim_id = read_data(2)
new victim_name
get_user_name(victim_id,victim_name,33)
set_hudmessage(Orange, Orange, Orange, -1.0, 0.30, 0, 3.0, 3.0, 0.15, 0.15, 1)
show_hudmessage(killer_id,"::HEADSHOT::^nYou oWnEd %s !!",victim_name)
}
if (hsmode_bit & 2){
client_cmd(0,"spk misc/headshot")
}
}
public plugin_precache()
{
for (new i=0; i < MULTI_LEVELS; i++){
precache_sound(multi_sounds)
}
for (new i=0; i < SPREE_LEVELS; i++){
precache_sound(spree_sounds)
}
precache_sound( "djeyl/c4powa.wav")
precache_sound( "djeyl/laugh.wav")
precache_sound( "djeyl/grenade.wav")
precache_sound( "djeyl/witch.wav")
precache_sound( "misc/firstblood.wav")
precache_sound( "misc/headshot.wav")
precache_sound( "misc/humiliation.wav")
precache_sound( "misc/maytheforce.wav")
precache_sound( "misc/oneandonly.wav")
return PLUGIN_CONTINUE
}
public plugin_init() {
register_plugin("Ultimate sound","0.76","hephaistos@djeyl.net")
register_event("DeathMsg","hs","a","3=1")
register_event("DeathMsg","knife_kill","a","4&kni")
register_event("DeathMsg","he_kills","a","4&gren")
register_event("StatusIcon", "got_bomb", "be", "1=1", "1=2", "2=c4")
register_event("SendAudio", "bomb_planted", "a", "2&%!MRAD_BOMBPL")
register_event("SendAudio", "bomb_defused", "a", "2&%!MRAD_BOMBDEF")
register_event("TextMsg", "bomb_failure", "a", "2&#Target_B")
register_event("BarTime", "bdef_g", "be", "1=10", "1=5","1=3")
register_event("BarTime", "bdef_l", "be", "1=0")
register_event("TextMsg", "bomb_pickup", "bc", "2&#Got_bomb")
register_event("TextMsg", "bomb_drop", "bc", "2&#Game_bomb_d")
register_event("SendAudio", "disable_c4", "a", "2&%!MRAD_terwin","2&%!MRAD_ctwin","2&%!MRAD_rounddraw")
register_event("TextMsg","disable_c4","a","2&#Game_C","2&#Game_w")
register_event("DeathMsg", "death_event", "a")
register_event("SendAudio","roundend_msg","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
register_event("TextMsg","roundend_msg","a","2&#Game_C","2&#Game_w")
register_event("DeathMsg","death_msg","a")
register_cvar("lastman_mode","abc")
register_cvar("spree_mode","ab")
register_cvar("multi_mode","ab")
register_cvar("firstblood_mode","ab")
register_cvar("bomb_mode","abcdefghi")
register_cvar("hekill_mode","abc")
register_cvar("kniff_mode","ab")
register_cvar("hs_mode","ab")
return PLUGIN_CONTINUE
}
上面是ultimate_sounds的源码,我想请高手帮我把First Blood分离出来,原来有个First Blood.sma,但不好用,杀完人没有hudmessage,也没有Sound.也没有messages,而这个文件我编译测试上面的功能全部都有,所以我想请点通的高手抽空帮我分离一下,在这先谢谢大家了.:) 没有高手帮忙吗?:'( 为什么还是没人帮我解答?:'(
页:
[1]