Senior Member
|
02-27-2019
, 07:27
tk_revenge_extra error
|
#1
|
hello to all I have an error with this plugin can you tell me why
thank you
HTML Code:
* AMX Mod script.
*
* (c) Copyright 2002, OLO, Adapted by Rav, Traduced by -SpS- Actarus
* This file is provided as is (no warranties).
*
* MENU OPTIONS AFTER TK:
*
* 1. Tuer maintenant
* 2. Slap avec 50hp
* 3. Ne joue pas le prochain tour
* 4. Reduire la vie
* 5. Enterre le joueur
* 6. Colorie le joueur
* 7. Bombe humaine
* 8. Mauvaise visee (jambes)
*
* 9. Pardonner le TK
*
* Changelog:
*
* V 1.11 - Changed glow effect
* V 1.12 - Added Timebomb
* V 1.13 - Added hud message format changed
* V 1.14 - Added Give bad aim (option 8)
* V 1.15 - Added "say tkinfo" motd!
* V 1.16 - Error Fix, special FX update
* V 1.17 - Added More randon messages & announcements
* V 1.18 - MOTD updated
* V 1.19 - Weapon & distance added to report on team attack
* V 2.00 - Removed jandom join jessages, added spawn protection/mirror damage (with slap)
* V 2.10 - Hud message colours changed, user burried now displays for longer (bug)
* V 2.20 - Added more special effects, corrected space error.
* V 2.21 - Changed Slap, reduce health, bad aim now changeable.
* V 2.22 - HUD Messages changed, tk_spsafe is now cvar "10" is default "0" disabled
* V 2.23 - Fixed (when attacked during spawn protection armour is lost)
* V 2.24 - Added various cvars - see below
* V 2.25 - Ban after set team kills & slay on tk attack at spawn added
* V 2.26 - Hud messages & colurs changed
* V 2.27 - Variable punishments on menu options
* V 2.28 - Fixed lightening effect not showing & Slap will not kill player if health is low (leaves on 1hp)
* V 2.29 - Added tk_saymode (no hud messages) & FF autoreply
* V 2.30 - Added tk_forgive, if tk_ban 1 and tk is forgiven, it will not be counted towards ban
* V 2.31 - Added tk_revenge , if enabled.. revenge system is as per normal, if set to 0, no revenge system at all. Good for clanmatches. (default is 1)
* V 2.32 - Fixed players not being punished next round & Option 4 actioning after killer quit or dead.
* V 2.33 - Removed some unused/redundant code (prechache)
* V 2.34 - Changed Special Effects (lightening)
* V 2.35 - Changed CVAR tk_saymode to tk_sayhud 1 or o - 1 hud messages or 0 normal text & tk_spkill default is now 0
* V 2.36 - Added multiple slap on option 2 with delay of 4 seconds.
* V 2.37 - Fixed: "Punish Next Round" & "ForgiveTK"
* V 2.39 - Repeat slap for spawn protection & force drop weapons on attacker
* V 2.40 - Ban for team kills now active and id is written. (Default bantime is 5mins)
* V 2.41 - Forgive tk bug resolved
*
* New CVARS
*
* // SPAWN CVARS
* tk_spsafe - Time setting for spawn protection. rcon tk_spsafe < value > to change seconds (default is 10)
* tk_spkill - If enabled team attacks at spawn (within spawn protection time) will be slayed (default is 1)
*
* // PUNISH LEVEL CVARS
* tk_reduce - Amount of health to be removed from killer (menu option 4) Default it 35
* tk_slap - Amount of damage when user is slapped (default is 50)
* tk_brange - Range of human timbomb affecting other players (default is 250)
*
* // GENERAL CVARS
* tk_sayhud - mode 1 give revenge messages in hud format (pretty say) mode 0 gives normal server text (default is 1)
* tk_forgive - if tk_ban 1 and team kill is forgiven, it will not be counted towards killers ban total (default is 1 (ON))
*
* CVAR LISTING (all included in tk_revenge_cvars.cfg, for easy adding to server.cfg)
*
* tk_spkill 1.0
* tk_spsafe 10.0
* tk_reduce 35.0
* tk_slap 50.0
* tk_bancount 4.0
* tk_bantime 5.0
* tk_ban 1.0
* tk_brange 250.0
* tk_sayhud 1
* tk_forgive 1
*
* Credits:
*
* OLO - For writing origional tkrevenge
* Ludwig van - For writing timebomb & slim version for this plugin
*
*/
#include <amxmodx>
#include <fun>
#define MAX_NAME_LENGTH 32
#define MAX_DATA_LENGTH 256
#define MAX_PLAYERS 32
#define MAX_NAME_LENGTH 32
#define MAX_DATA_LENGTH 256
#define ON 1
#define OFF 0
#define YES 1
#define NO 0
// Customizable options begin here (edit to suit)
new BOMB_FUSE = 5 // fuse time (can be changed)
// new get_cvar_num("tk_brange") = 250 // killing radius of bomb. (96 is playerheight)
new BAD_AIM = 192 // Legs (192), Arms (48), Stomach (8), Chest (4), head (2)
// End of custom options
// Special Effects
new bloodspray
new blooddrop
new smoke
new white
new fire
new light
// TimeBomb Settings
new Float:ejl_ff
new IsBomb[33]
new IsKamik[33]
new bool:rs = false
new bool:bKamikCredit = true
// Revenge
new gMenu
new gKillers[33]
new gPunishMe[33]
new Bantk[33]
new Float:tk_spsafe = 0.0
new body_part[8][] = {"le corps entier","La tete","le buffet","le ventre","le bras gauche","le bras droit","la jambe gauche","la jambe droite"}
explode(vec1[3]){
// blast circles
message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1)
write_byte( 21 )
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] + 16)
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] + 1936)
write_short( white )
write_byte( 0 ) // startframe
write_byte( 0 ) // framerate
write_byte( 3 ) // life 2
write_byte( 20 ) // width 16
write_byte( 0 ) // noise
write_byte( 188 ) // r
write_byte( 220 ) // g
write_byte( 255 ) // b
write_byte( 255 ) //brightness
write_byte( 0 ) // speed
message_end()
//Explosion2
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( 12 )
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_byte( 188 ) // byte (scale in 0.1's) 188
write_byte( 10 ) // byte (framerate)
message_end()
//TE_Explosion
message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1)
write_byte( 3 )
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_short( fire )
write_byte( 65 ) // byte (scale in 0.1's) 188
write_byte( 10 ) // byte (framerate)
write_byte( 0 ) // byte flags
message_end()
//Smoke
message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1)
write_byte( 5 ) // 5
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_short( smoke )
write_byte( 10 ) // 2
write_byte( 10 ) // 10
message_end()
}
fireball(vec1[3])
{
//client_print(0,print_console,"Test")
message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1)
write_byte( 17 )
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] +256)
write_short( fire )
write_byte( 120 ) // scale * 10
//get_cvar_num("atac_explosion_range") / 10
write_byte( 255 ) // brightness
message_end()
}
blood(vec1[3])
{
//LAVASPLASH
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( 10 )
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
message_end()
}
bloody(vec1[3])
{
message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1)
write_byte( 115 )
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] +25)
write_short( bloodspray )
write_short( blooddrop )
write_byte( 70 ) // color index
write_byte( 15 ) // size
message_end()
}
lightning(vec1[3],vec2[3])
{
//Lightning
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( 0 )
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_coord(vec2[0])
write_coord(vec2[1])
write_coord(vec2[2])
write_short( light )
write_byte( 1 ) // framestart
write_byte( 5 ) // framerate
write_byte( 2 ) // life
write_byte( 20 ) // width
write_byte( 30 ) // noise
write_byte( 12 ) // r, g, b
write_byte( 50 ) // r, g, b
write_byte( 200 ) // r, g, b
write_byte( 200 ) // brightness
write_byte( 200 ) // speed
message_end()
//Sparks
message_begin( MSG_PVS, SVC_TEMPENTITY,vec2)
write_byte( 9 )
write_coord( vec2[0] )
write_coord( vec2[1] )
write_coord( vec2[2] )
message_end()
}
// Timebomb Countdown
public timebomb_timer(){
new hibomb = 100
new maxpl = get_maxplayers() +1
new a
for(a = 1; a < maxpl; a++) {
if ((IsBomb[a] != 0) && (IsBomb[a] < hibomb)){
hibomb = a
}
}
for(a = 1; a < maxpl; a++) {
if (IsBomb[a] > 0){
emit_sound(a,CHAN_ITEM, "buttons/blip2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
if (IsBomb[a] == 1){
blowem_up(a)
}else{
IsBomb[a] -= 1
if (a == hibomb){
new name[32]
new team[32]
get_user_name(a,name,32)
get_user_team(a,team,32)
if(equal(team,"T", 1)){
set_hudmessage(200,0,0, 0.03, 0.76, 2, 0.02, 2.0, 0.01, 0.1, 2)
}else{
set_hudmessage(0,100,200, 0.03, 0.76, 2, 0.02, 2.0, 0.01, 0.1, 2)
}
show_hudmessage(0,"%s explosera dans %d secondes.",name,IsBomb[a])
if (IsBomb[a] == 11){
client_cmd(0,"spk ^"fvox/remaining^"")
}
if (IsBomb[a] < 11){
new temp[48]
num_to_word(IsBomb[a],temp,48)
client_cmd(0,"spk ^"fvox/%s^"",temp)
}
}
if(is_user_alive(a) == 0){
blowem_up(a)
}
}
}
}
}
// Timebomb goes off
public blowem_up(id){
new bombguyfrags
new bgf_message = 0
if(id == 100){
new maxpl = get_maxplayers() +1
for(new a = 1; a < maxpl; a++) {
if ((IsBomb[a] > 0) || (IsKamik[a] == 1)){
IsKamik[a] = 0
IsBomb[a] = 0
new name[32]
get_user_name(a,name,32)
set_user_rendering(a,kRenderFxNone,255,255,255, kRenderNormal,16)
set_hudmessage(200,255,200, 0.03, 0.76, 2, 0.02, 2.0, 0.01, 0.1, 2)
show_hudmessage(0,"%s sert de repas aux vautours.",name)
new origin[3]
get_user_origin(a,origin)
origin[2] = origin[2] - 26
user_kill(a,1)
}
}
}
else
{
if (IsBomb[id] > 0){
new name[32]
new team[32]
get_user_name(id,name,32)
set_user_rendering(id,kRenderFxNone,255,255,255, kRenderNormal,16)
set_hudmessage(200,255,200, 0.03, 0.76, 2, 0.02, 2.0, 0.01, 0.1, 2)
show_hudmessage(0,"%s a exploser.",name)
set_cvar_string("mp_friendlyfire","0")
ejl_ff = get_cvar_float("mp_friendlyfire")
new origin[3]
get_user_origin(id,origin)
get_user_team(id, team , 32)
new maxpl = get_maxplayers() +1
for(new a = 1; a < maxpl; a++) {
new origin1[3]
new team1[32]
get_user_origin(a,origin1)
get_user_team(a, team1 , 32)
if(is_user_alive(a) != 0){
if( ! (origin[0]-origin1[0] > get_cvar_num("tk_brange") || origin[0]-origin1[0] < - get_cvar_num("tk_brange") ||
origin[1]-origin1[1] > get_cvar_num("tk_brange") || origin[1]-origin1[1] < - get_cvar_num("tk_brange") ||
origin[2]-origin1[2] > get_cvar_num("tk_brange") || origin[2]-origin1[2] < - get_cvar_num("tk_brange")) ){
if(ejl_ff == 0){
if(!equal(team, team1, 1)){
client_print(a,print_chat,"[AMX] : Dsl, la bombe t'as eu.")
if((a != id) && (bKamikCredit == true) && (IsKamik[id] == 1) ){
bombguyfrags = get_user_frags(id)
bombguyfrags +=1
bgf_message +=1
set_user_frags(id,bombguyfrags)
}
user_kill(a,1)
explode(origin1)
}
}
if(ejl_ff == 1){
if(rs == false){
client_print(a,print_chat,"[AMX] : Sorry, la bombe t'as tuer.")
if((!equal(team, team1, 1)) && (bKamikCredit == true) && (IsKamik[id] == 1) ){
bombguyfrags = get_user_frags(id)
bombguyfrags +=1
bgf_message +=1
set_user_frags(id,bombguyfrags)
}
if(a != id){
explode(origin1)
}
user_kill(a,1)
}
else
{
client_print(a,print_chat,"[AMX] Sorry, la bombe t'as tuer.")
if(a == id){
user_kill(a,1)
}
}
}
}
}
}
IsBomb[id] = 0
IsKamik[id] = 0
if(ejl_ff == 0){
client_print(id,print_chat,"[AMX] Sorry, la bombe t'as tuer.")
user_kill(id,1)
}
if((bKamikCredit == true) && (bgf_message > 0)){
client_print(id,print_chat,"[AMX] : Tu as fait %d morts.", bgf_message)
}
origin[2] = origin[2] - 26
explode(origin)
set_cvar_string("mp_friendlyfire","1")
}
}
}
// Menu Option Number 1 (Kill Now)
public menu_option1(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
new name1[32], name2[32]
get_user_name(id,name1,32)
get_user_name(gKillers[id],name2,32)
user_kill(gKillers[id])
new origin[3]
get_user_origin(gKillers[id],origin)
origin[2] = origin[2] - 26
new sorigin[3]
sorigin[0] = origin[0] + 150
sorigin[1] = origin[1] + 150
sorigin[2] = origin[2] + 400
blood(origin)
fireball(origin)
explode(origin)
emit_sound(gKillers[id],CHAN_ITEM, "weapons/headshot2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s a tuer %s pour cause de TK",name1,name2)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s a tuer %s pour cause de TK",name1,name2)
}
else
client_print(id,print_chat,"[AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
// Menu Option Number 2 (Slap with 50hp (Default Setting))
public menu_option2(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
new name1[32], name2[32]
get_user_name(id,name1,32)
get_user_name(gKillers[id],name2,32)
if(get_user_health(gKillers[id]) < get_cvar_num("tk_slap")){
set_user_health(gKillers[id],get_cvar_num("tk_slap") + 1)
}
user_slap(gKillers[id],get_cvar_num("tk_slap"))
new origin[3]
get_user_origin(gKillers[id],origin)
origin[2] = origin[2] - 26
new sorigin[3]
sorigin[0] = origin[0] + 150
sorigin[1] = origin[1] + 150
sorigin[2] = origin[2] + 400
lightning(sorigin,origin)
bloody(origin)
emit_sound(0,CHAN_ITEM, "ambience/thunder_clap.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s a mi un coup de boule a %s pour cause de TK",name1,name2)
new param[2]
param[0] = gKillers[id]
set_task(4.0,"delayed_slap",1234,param,1)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s a mi un coup de boule a %s pour cause de TK",name1,name2)
new param[2]
param[0] = gKillers[id]
set_task(4.0,"delayed_slap",1234,param,1)
}
else
client_print(id,print_chat," [AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
public delayed_slap(param[]){
user_slap(param[0],0)
new origin[3]
get_user_origin(param[0],origin)
origin[2] = origin[2] - 26
new sorigin[3]
sorigin[0] = origin[0] + 150
sorigin[1] = origin[1] + 150
sorigin[2] = origin[2] + 400
lightning(sorigin,origin)
bloody(origin)
emit_sound(0,CHAN_ITEM, "ambience/thunder_clap.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
return PLUGIN_HANDLED
}
// Menu Option Number 3 (Punish Next Round)
public menu_option3(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
new name[32]
get_user_name(gKillers[id],name,32)
set_user_hitzones(gKillers[id],0,BAD_AIM)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s Apprend a viser maintenant (les jambes)",name)
client_print(gKillers[id],print_chat,"[AMX] Tu dois viser que les jambes maintenant, BONNE CHANCE!")
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s Apprend a viser maintenant (les jambes)",name)
set_hudmessage(200, 100, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(gKillers[id],"Tu dois viser que les jambes maintenant, BONNE CHANCE!")
}
else
client_print(id,print_chat,"[AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
// Menu Option Number 4 (Reduced Health to 35hp (Default Setting))
public menu_option4(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
new name1[32], name2[32]
new oldhealth
oldhealth = get_user_health(gKillers[id])
get_user_name(id,name1,32)
get_user_name(gKillers[id],name2,32)
set_user_health(gKillers[id],oldhealth - get_cvar_num("tk_reduce"))
new origin[3]
get_user_origin(gKillers[id],origin)
origin[2] = origin[2] - 26
new sorigin[3]
sorigin[0] = origin[0] + 150
sorigin[1] = origin[1] + 150
sorigin[2] = origin[2] + 400
lightning(sorigin,origin)
emit_sound(gKillers[id],CHAN_ITEM, "ambience/thunder_clap.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s a reduit la vie de %s a cause du TK",name1,name2)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s a reduit la vie de %s a cause du TK",name1,name2)
}
else
client_print(id,print_chat,"[AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
// Menu Option Number 5 (Bury Killer)
public menu_option5(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
new name1[32], name2[32]
get_user_name(id,name1,32)
get_user_name(gKillers[id],name2,32)
new origin[3]
get_user_origin(gKillers[id], origin)
new height = random_num(20,50)
origin[2] -= height
set_user_origin(gKillers[id], origin)
fireball(origin)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s a enterrer %s tu fais moins le malin!",name1,name2)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s a enterrer %s tu fais moins le malin!",name1,name2)
}
else
client_print(id,print_chat,"[AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
// Menu Option Number 6 (Glow Killer)
public menu_option6(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
new name1[32], name2[32]
get_user_name(id,name1,32)
get_user_name(gKillers[id],name2,32)
new red = random_num(50,255)
new green = random_num(50,255)
new blue = random_num(50,255)
set_user_rendering(gKillers[id],kRenderFxGlowShell,red,green,blue,kRenderNormal,16)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s a colorer %s tu fais une belle cible",name1,name2)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s a colorer %s tu fais une belle cible",name1,name2)
}
else
client_print(id,print_chat,"[AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
// Menu Option Number 7 (Make Timebomb (Evil))
public menu_option7(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
new arg[32]
read_argv(1,arg,32)
new player = gKillers[id]
if (player){
if(is_user_alive(player) == 0){
client_print(id,print_console,"Le joueur est mort et ne peut etre amorcer")
return PLUGIN_HANDLED
}
IsBomb[player] = BOMB_FUSE
new name2[32]
get_user_name(player,name2,32)
set_user_rendering(player,kRenderFxGlowShell, 255,0,0, kRenderNormal,16)
client_cmd(0,"spk ^"vox/warning _comma _comma detonation device activated^"")
client_print(0,print_chat,"%s est devenu une bombe humaine, sauvez Vous!!!", name2)
}
else{
client_print(id,print_console,"Trop tard, il a quitte le jeux!")
}
}
return PLUGIN_HANDLED
}
// Menu Option Number 8 (Punish Next Round)
public menu_option8(id,keys){
if (gPunishMe[gKillers[id]]){
++Bantk[gKillers[id]]
new name[32]
get_user_name(gKillers[id],name,32)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s ne jouera pas le prochain tour",name)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[TEAM KILL REVENGE]^n^n%s ne jouera pas le prochain tour",name)
}
else
client_print(id,print_chat,"[AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
// Menu Option Number 9 (Forgive Team Kill)
public menu_option9(id,keys){
if (gPunishMe[gKillers[id]]) {
gPunishMe[gKillers[id]]=0
++Bantk[gKillers[id]]
if (get_cvar_num("tk_ban") == 1){
if(get_cvar_num("tk_forgive") == 1){
--Bantk[gKillers[id]]
}
}
new name1[32], name2[32]
get_user_name(id,name1,32)
get_user_name(gKillers[id],name2,32)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s a pardonner %s c'est un noob!",name1,name2)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s a pardonner %s c'est un noob!",name1,name2)
}
else
client_print(id,print_chat,"[AMX] Trop tard pour reagir")
return PLUGIN_HANDLED
}
// Menu Format
public show_tkmenu(param[]){
if(get_cvar_num("tk_revenge") == 1){
new szmenu[256], name[32]
get_user_name(param[1],name,32)
format(szmenu,256,"\yTK Revenge on %s^n^n\w1. Tuer maintenant!^n2. Slap avec \r(50hp)\w^n3. Visee merdique \r(Legs)\w^n4. Reduit la vie \r(35hp)\w^n5. Enterre le^n6. Colorise le^n7. Bombe humaine \r(EVIL)\w^n8. Puni au prochain tour^n^n9. \yPardonne le TK",name)
show_menu(param[0],((1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)),szmenu)
}
}
// Handle death event
public death_msg(id){
if(get_cvar_num("tk_revenge") == 1){
new killer = read_data(1)
new victim = read_data(2)
if ( killer && (killer!=victim) ) {
if (get_user_team(killer)==get_user_team(victim)) {
gKillers[victim] = killer
gPunishMe[killer] = 1
new param[2]
param[0] = victim
param[1] = killer
set_task(0.25,"show_tkmenu",0,param,2)
}
}
}
return PLUGIN_CONTINUE
}
// Punish next round handling
public delayed_kill(param[]){
client_print(param[0],print_chat,"Tu as ete punis, pour avoir tuer un coequipier")
user_kill(param[0])
gPunishMe[param[0]]=0
return PLUGIN_CONTINUE
}
// Team attack control & spawn protection/slaying
public damage_event()
{
if(get_cvar_num("tk_revenge") == 1){
new victim = read_data(0);
new damage = read_data(2);
new weapon, hitplace
new attacker = get_user_attacker(victim,weapon,hitplace);
if ( attacker && (attacker!=victim) ) {
if (get_user_team(attacker)==get_user_team(victim)) {
set_user_flags(attacker,(1<<0),31)
gKillers[victim] = attacker
new name[32]
get_user_name(attacker,name,32)
if (tk_spsafe > get_gametime()){
if(get_cvar_num("tk_spkill") == 1){
user_kill(attacker)
new origin[3]
get_user_origin(attacker,origin)
origin[2] = origin[2] - 26
new sorigin[3]
sorigin[0] = origin[0] + 150
sorigin[1] = origin[1] + 150
sorigin[2] = origin[2] + 400
blood(origin)
fireball(origin)
explode(origin)
emit_sound(attacker,CHAN_ITEM, "weapons/headshot2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
if(get_cvar_num("tk_sayhud") == 0){
client_print(0,print_chat,"[AMX] %s a ete tuer, pour avoir attaquer un coequipier!",name)
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 3.0, 0.02, 0.02, 10)
show_hudmessage(0,"[VENGEANCE DE LA VICTIME]^n^n%s a ete tuer, pour avoir attaquer un coequipier!",name)
return PLUGIN_HANDLED
}
set_user_health(victim, get_user_health(victim) + damage);
user_slap(attacker,damage)
user_slap(attacker,0)
client_cmd(attacker,"drop")
client_cmd(attacker,"drop")
new armor = get_user_armor(victim)
if (armor > 1){
set_user_armor(victim, 100)
return PLUGIN_CONTINUE
}
if(get_cvar_num("tk_sayhud") == 0){
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 4.0, 0.02, 0.02, 10)
show_hudmessage(attacker,"[ATTAQUE SUR COEQUIPIERS]^n^nProtection de debut de round^nDommage %dhp retransmis!", damage)
show_hudmessage(victim,"[PROTECTION DEBUT DE ROUND]^n^nDommage %dhp retransmis!", damage)
return PLUGIN_HANDLED
}
new wpn[32]
new ammo, clip, myweapon = get_user_weapon(attacker,ammo,clip)
get_weaponname(myweapon,wpn,32)
replace(wpn,32,"weapon_","");
new start[3], end[3]
get_user_origin(victim,start,0)
get_user_origin(attacker,end,0)
new distance = get_distance(start,end)
new adistance = distance
if(get_cvar_num("tk_sayhud") == 0){
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 4.0, 0.02, 0.02, 10)
show_hudmessage(attacker,"[RAPPORT ATTAQUE COEQUIPIER]^n^nTu vas etre surement puni!^nLe dernier tirs a causer %ihp de dommage dans %s^navec %s de %dft",damage, body_part[hitplace], wpn, adistance / 39)
}
}
}
return PLUGIN_HANDLED
}
// Reset all punishments & handle banning for team kills
public reset_hud(id){
if(get_cvar_num("tk_revenge") == 1){
if(get_cvar_num("tk_spkill") == 1){
if(get_cvar_num("tk_spsafe") > 0){
client_print(id,print_chat,"[AMX] La protection TK est actif, n'attaquez pas vos coequipiers")
}
}
if (get_cvar_num("tk_ban") == 1){
if (Bantk[id] == get_cvar_num("tk_bancount") + 1){
new BanAuthid[256]
new Bname[33]
get_user_authid(id,BanAuthid,256)
get_user_name(id,Bname,32)
client_cmd(id,"echo [AMX] Tu as ete banni 5 minutes pour TK!;disconnect")
server_cmd("banid %i %s;writeid",get_cvar_num("tk_bantime"),BanAuthid)
client_print(0,print_chat,"[AMX] %s a ete banni %i minutes pour avoir TK %i fois", Bname, get_cvar_num("tk_bantime"), get_cvar_num("tk_bancount") )
}
}
set_user_rendering(id)
remove_task(1)
remove_task(0)
if (gPunishMe[id]){
gPunishMe[id] = 0
new param[2]
param[0] = id
set_task(0.25,"delayed_kill",0,param,2)
}
if(get_cvar_num("tk_ban") == 1){
if (Bantk[id] > 1){
if(get_cvar_num("tk_sayhud") == 0){
client_print(id,print_chat,"[AMX] Tu as tuer %i coequipiers,sur %i attention, tu vas etre banni", Bantk[id] -1, get_cvar_num("tk_bancount"))
}
else
{
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 4.0, 0.02, 0.02, 10)
show_hudmessage(id,"[RAPPORT ATTAQUE COEQUIPIER]^n^nTu as tuer %i coequipiers,sur %i attention, tu vas etre banni", Bantk[id] -1, get_cvar_num("tk_bancount"))
}
}
}
}
return PLUGIN_CONTINUE
}
// FF autoreply
public reply_ff(id){
if(get_cvar_num("mp_friendlyfire") == 0){
if(get_cvar_num("tk_sayhud") == 0){
client_print(id,print_chat,"[AMX] Friendly Fire est inactif")
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 4.0, 0.02, 0.02, 10)
show_hudmessage(id,"Friendly Fire est inactif^nTu ne crains rien!")
}
else
{
if(get_cvar_num("tk_sayhud") == 0){
client_print(id,print_chat,"[AMX] Friendly Fire est actif")
return PLUGIN_HANDLED
}
set_hudmessage(220,80,0, 0.05, 0.50, 2, 0.1, 4.0, 0.02, 0.02, 10)
show_hudmessage(id,"Friendly Fire est actif^nFais attention!")
}
return PLUGIN_HANDLED
}
// Set levels for new players
public client_connect(id){
gPunishMe[id] = 0
IsBomb[id] = 0
Bantk[id] = 1
return PLUGIN_CONTINUE
}
// Set levels for leaving players
public client_disconnect(id){
gPunishMe[id] = 0
IsBomb[id] = 0
Bantk[id] = 1
return PLUGIN_CONTINUE
}
// Reset punishment markers
public reset_punishment(){
for(new id=0;id<33;++id)
gPunishMe[id] = 0
return PLUGIN_CONTINUE
}
// Spawn Protection/slay
public new_round() {
tk_spsafe = get_gametime() + get_cvar_float("tk_spsafe")
}
// Spawn Protection/slay
public roundtime(id) {
new remaining = read_data(1);
if (remaining == get_cvar_float("mp_roundtime") * 60) {
new_round();
}
return PLUGIN_CONTINUE;
}
// MOTD window with Plugin Information
public tk_info(id){
show_motd(id,"Shows options for punishment after a player is TK'd. Live damage showing Damage, weapon and distance. Spawn protection for 10 second.^n^nMenu options are^n^n1. Kill Now^n2. Slap with 50hp^n3. Give bad aim^n4. Reduce Health to 35hp^n5. Bury Killer^n6. Glow Killer^n7. Make Timebomb (Evil)^n8. Punish next round^n9. Forgive TK^n^nSettings Include:^n^nSpawn Protection^nMirror Damage^nSlay on attack^nBan team kills^nPunishment levels changeable^n^nWritten by Rav","TKR 2.41 -SpS- Actarus")
return PLUGIN_HANDLED
}
// Pre-Load Special Effects
public plugin_precache()
{
precache_sound( "ambience/thunder_clap.wav")
precache_sound( "weapons/headshot2.wav")
smoke = precache_model("sprites/steam1.spr")
light = precache_model("sprites/lgtning.spr")
white = precache_model("sprites/white.spr")
fire = precache_model("sprites/explode1.spr")
precache_sound( "buttons/blip2.wav")
bloodspray = precache_model("sprites/bloodspray.spr")
blooddrop = precache_model("sprites/blood.spr")
return PLUGIN_CONTINUE
}
public plugin_init(){
register_plugin("TK Revenge Extra","2.41","-SpS- Actarus")
gMenu = register_menuid("TK Revenge")
register_menucmd(gMenu,(1<<0),"menu_option1")
register_menucmd(gMenu,(1<<1),"menu_option2")
register_menucmd(gMenu,(1<<2),"menu_option3")
register_menucmd(gMenu,(1<<3),"menu_option4")
register_menucmd(gMenu,(1<<4),"menu_option5")
register_menucmd(gMenu,(1<<5),"menu_option6")
register_menucmd(gMenu,(1<<6),"menu_option7")
register_menucmd(gMenu,(1<<7),"menu_option8")
register_menucmd(gMenu,(1<<8),"menu_option9")
register_event("TextMsg","reset_punishment","a","2&#Game_C","2&#Game_w")
register_event("Damage", "damage_event", "b", "2!0");
register_event("ResetHUD","reset_hud","b")
register_event("RoundTime", "roundtime", "bc")
register_event("DeathMsg","death_msg","a")
register_clcmd("say tkinfo","tk_info")
set_task(1.0,"timebomb_timer",3,"",0,"a",9999)
set_cvar_float("mp_t",0.0)
register_cvar("tk_spkill", "0")
register_cvar("tk_spsafe", "10.0")
register_cvar("tk_reduce", "35.0")
register_cvar("tk_slap", "50.0")
register_cvar("tk_bancount", "4.0")
register_cvar("tk_bantime", "5.0")
register_cvar("tk_ban", "1.0")
register_cvar("tk_brange", "250.0")
register_cvar("tk_sayhud", "1")
register_cvar("tk_revenge", "1.0")
register_cvar("tk_forgive", "1.0")
register_cvar("tk_revenge", "1.0")
register_clcmd("say ff","reply_ff")
register_clcmd("say ffon","reply_ff")
register_cvar("amx_rvs_tkrevenge_extra", "TKR 2.41 par -SpS- Actarus",FCVAR_SERVER)
return PLUGIN_CONTINUE
}
log error
tanks you
|
|