| Offline | 
				 				
					  | 
				 				
					  | 
				 				 
				 Csatlakozott:2016.02.10. 12:46 Hozzászólások:429 Megköszönt másnak: 62 alkalommal Megköszönték neki: 157 alkalommal				
			 | 
			
				
				
					
						Csabika20034 írta: /* AMX Mod X *   AFK Bomb Transfer * * (c) Copyright 2006 by VEN * * This file is provided as is (no warranties) * *     DESCRIPTION *       Plugin allow transfer bomb from AFK terrorist to closest non-AFK teammate. *       Plugin will have no effect: *         - at the freezetime *         - if bomb is planting *         - on non-bomb maps (comment #define BOMB_MAP_CHECK to suppress) * *     MODULES *       fakemeta * *     CVARS *       afk_bombtransfer_spawn (N: seconds, default: 7) - max. allowed bomb carrier AFK time *         affects on spawned AFK bomb carrier which never moved after spawn * *       afk_bombtransfer_time (N: seconds, default: 15) - max. allowed bomb carrier AFK time *         affects on any AFK bomb carrier except one which obey previous CVAR * *     HUD MESSAGES *       Terrorist team (green color) *         Bomb transferred to "NEW_CARRIER_NAME" *         since "AFK_CARRIER_NAME" is AFK * *       New bomb carrier (yellow color) *         You got the bomb! * *       Note: by defult message display time is 7 seconds (define MSG_TIME) * *     VERSIONS *       0.4   backpack transfer method greatly improved *             added pcvar natives support (backward compatibility saved) *             few code optimization *       0.3   now fakemeta instead of engine required (efficiency++ if engine is disabled) *             "non-bomb map" check can be disabled (//#define BOMB_MAP_CHECK) *             backpack finding method improved *             few code optimization *             added comments to the plugin source code *       0.2   fixed format issue *             code optimized *             description improved * *       0.1   first release */   /* *************************************************** Init **************************************************** */   #include <amxmodx> #include <fakemeta> #include <colorchat>   // plugin's main information #define PLUGIN_NAME "AFK Bomb Transfer" #define PLUGIN_VERSION "0.4" #define PLUGIN_AUTHOR "VEN"   // comment to avoid autodisabling the plugin on maps which not contain bomb targets #define BOMB_MAP_CHECK   // float value, hud messages display time (in seconds) #define MSG_TIME 7.0   // CVAR name, affects on spawned AFK bomb carrier which never moved after spawn new CVAR_SPAWN[] = "afk_bombtransfer_spawn"   // CVAR value, max. allowed bomb carrier AFK time (in seconds) new DEFAULT_SPAWN[] = "7"   // CVAR name, affects on any AFK bomb carrier except one which obey previous CVAR new CVAR_TIME[] = "afk_bombtransfer_time"   // CVAR value, max. allowed bomb carrier AFK time (in seconds) new DEFAULT_TIME[] = "15"   // do not set this value less than "maxplayers" #define MAX_PLAYERS 32   // initial AMXX version number supported CVAR pointers in get/set_pcvar_* natives #define CVAR_POINTERS_AMXX_INIT_VER_NUM 170   // determine if get/set_pcvar_* natives can be used #if defined AMXX_VERSION_NUM && AMXX_VERSION_NUM >= CVAR_POINTERS_AMXX_INIT_VER_NUM     #define CVAR_POINTERS     new g_pcvar_spawn     new g_pcvar_time #endif   new TEAM[] = "TERRORIST" new WEAPON[] = "weapon_c4"   #define FL_ONGROUND (1<<9)   new bool:g_freezetime = true new bool:g_spawn new bool:g_planting   new g_carrier   new g_pos[MAX_PLAYERS + 1][3] new g_time[MAX_PLAYERS + 1]   new g_maxplayers   public plugin_init() {     register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)   #if defined CVAR_POINTERS     g_pcvar_spawn = register_cvar(CVAR_SPAWN, DEFAULT_SPAWN)     g_pcvar_time = register_cvar(CVAR_TIME, DEFAULT_TIME) #else     register_cvar(CVAR_SPAWN, DEFAULT_SPAWN)     register_cvar(CVAR_TIME, DEFAULT_TIME) #endif   #if defined BOMB_MAP_CHECK     // is current map not contain bomb targets?     if (!engfunc(EngFunc_FindEntityByString, -1, "classname", "func_bomb_target"))         return #endif       register_event("WeapPickup", "event_got_bomb", "be", "1=6")     register_event("BarTime", "event_bar_time", "be")     register_event("TextMsg", "event_bomb_drop", "bc", "2=#Game_bomb_drop")     register_event("TextMsg", "event_bomb_drop", "a", "2=#Bomb_Planted")     register_event("HLTV", "event_new_round", "a", "1=0", "2=0")       register_logevent("logevent_round_start", 2, "1=Round_Start")       set_task(1.0, "task_afk_check", _, _, _, "b") // plugin's core loop       g_maxplayers = get_maxplayers() }   /* *************************************************** Base **************************************************** */   public event_new_round() {     g_freezetime = true     g_spawn = true     g_planting = false     g_carrier = 0 }   public event_got_bomb(id) {     g_carrier = id }   public event_bar_time(id) {     if (id == g_carrier) {         g_planting = bool:read_data(1)         get_user_origin(id, g_pos[id])         g_time[id] = 0     } }   public event_bomb_drop() {     g_spawn = false     g_planting = false     g_carrier = 0 }   public logevent_round_start() {     new id[32], num     get_players(id, num, "ae", TEAM)       if (!num) // is server empty?         return       g_freezetime = false       // update afk timers and current positions     new x     for (new i = 0; i < num; ++i) {         x = id[i]         get_user_origin(x, g_pos[x])         g_time[x] = 0     } }   public task_afk_check() {     if (g_freezetime) // is freezetime right now?         return       // afk check     new id[32], num, x, origin[3]     get_players(id, num, "ae", TEAM)     for (new i = 0; i < num; ++i) {         x = id[i]         get_user_origin(x, origin)         if (origin[0] != g_pos[x][0] || origin[1] != g_pos[x][1] || (x == g_carrier && g_planting)) {             g_time[x] = 0             g_pos[x][0] = origin[0]             g_pos[x][1] = origin[1]             if (g_spawn && x == g_carrier)                 g_spawn = false         }         else             g_time[x]++     }       // is bomb not currently carried or Ts number less than 2?     if (!g_carrier || num < 2)         return   #if defined CVAR_POINTERS     new max_time = get_pcvar_num(g_spawn ? g_pcvar_spawn : g_pcvar_time) #else     new max_time = get_cvar_num(g_spawn ? CVAR_SPAWN : CVAR_TIME) #endif       // is plugin disabled (cvar <= 0) or carrier isn't afk?     if (max_time <= 0 || g_time[g_carrier] < max_time)         return       // find who from non-afk Ts is the closest to the afk carrier     get_user_origin(g_carrier, origin)     new min_dist = 999999, dist, recipient, origin2[3]     for (new i = 0; i < num; ++i) {         x = id[i]         if (g_time[x] < max_time) {             get_user_origin(x, origin2)             dist = get_distance(origin, origin2)             if (dist < min_dist) {                 min_dist = dist                 recipient = x             }         }     }       if (!recipient) // is all Ts afk?         return       new carrier = g_carrier     engclient_cmd(carrier, "drop", WEAPON) // drop the backpack     new c4 = engfunc(EngFunc_FindEntityByString, -1, "classname", WEAPON) // find weapon_c4 entity     if (!c4)         return       new backpack = pev(c4, pev_owner) // get backpack entity     if (backpack <= g_maxplayers)         return       // my backpack transfer trick (improved)     set_pev(backpack, pev_flags, pev(backpack, pev_flags) | FL_ONGROUND)     dllfunc(DLLFunc_Touch, backpack, recipient)       // hud messages stuff below     set_hudmessage(0, 255, 0, 0.35, 0.8, _, _, MSG_TIME)     new message[128], c_name[32], r_name[32]     get_user_name(carrier, c_name, 31)     get_user_name(recipient, r_name, 31)     format(message, 127, "A bombat att adtak ^"%s^"^n-nek mert ^"%s^" AFKzik!", r_name, c_name)     for (new i = 0; i < num; ++i)         show_hudmessage(id[i], "%s", message)       set_hudmessage(255, 255, 0, 0.42, 0.3, _, _, MSG_TIME, _, _, 3)     //show_hudmessage(recipient, "Meg kaptad a Bombat!")    ColorChat(recipient, GREEN, "Megkaptad a Bombát") }   /* **************************************************** EOF **************************************************** */ 
 Off Topic Melyik része ebből nem volt érthető?
  "Ha kikommentelted a show_hudmessage-t, akkor a felette levőt miért nem vetted ki? A set_hudmessage-re értem.. próbáljuk kerülni az ilyeneket, mert feleslegesen van ott és más hibákhoz is vezethet" /* AMX Mod X *   AFK Bomb Transfer * * (c) Copyright 2006 by VEN * * This file is provided as is (no warranties) * *     DESCRIPTION *       Plugin allow transfer bomb from AFK terrorist to closest non-AFK teammate. *       Plugin will have no effect: *         - at the freezetime *         - if bomb is planting *         - on non-bomb maps (comment #define BOMB_MAP_CHECK to suppress) * *     MODULES *       fakemeta * *     CVARS *       afk_bombtransfer_spawn (N: seconds, default: 7) - max. allowed bomb carrier AFK time *         affects on spawned AFK bomb carrier which never moved after spawn * *       afk_bombtransfer_time (N: seconds, default: 15) - max. allowed bomb carrier AFK time *         affects on any AFK bomb carrier except one which obey previous CVAR * *     HUD MESSAGES *       Terrorist team (green color) *         Bomb transferred to "NEW_CARRIER_NAME" *         since "AFK_CARRIER_NAME" is AFK * *       New bomb carrier (yellow color) *         You got the bomb! * *       Note: by defult message display time is 7 seconds (define MSG_TIME) * *     VERSIONS *       0.4   backpack transfer method greatly improved *             added pcvar natives support (backward compatibility saved) *             few code optimization *       0.3   now fakemeta instead of engine required (efficiency++ if engine is disabled) *             "non-bomb map" check can be disabled (//#define BOMB_MAP_CHECK) *             backpack finding method improved *             few code optimization *             added comments to the plugin source code *       0.2   fixed format issue *             code optimized *             description improved * *       0.1   first release */   /* *************************************************** Init **************************************************** */   #include <amxmodx> #include <fakemeta> #include <colorchat>   // plugin's main information #define PLUGIN_NAME "AFK Bomb Transfer" #define PLUGIN_VERSION "0.4" #define PLUGIN_AUTHOR "VEN"   // comment to avoid autodisabling the plugin on maps which not contain bomb targets #define BOMB_MAP_CHECK   // float value, hud messages display time (in seconds) #define MSG_TIME 7.0   // CVAR name, affects on spawned AFK bomb carrier which never moved after spawn new CVAR_SPAWN[] = "afk_bombtransfer_spawn"   // CVAR value, max. allowed bomb carrier AFK time (in seconds) new DEFAULT_SPAWN[] = "7"   // CVAR name, affects on any AFK bomb carrier except one which obey previous CVAR new CVAR_TIME[] = "afk_bombtransfer_time"   // CVAR value, max. allowed bomb carrier AFK time (in seconds) new DEFAULT_TIME[] = "15"   // do not set this value less than "maxplayers" #define MAX_PLAYERS 32   // initial AMXX version number supported CVAR pointers in get/set_pcvar_* natives #define CVAR_POINTERS_AMXX_INIT_VER_NUM 170   // determine if get/set_pcvar_* natives can be used #if defined AMXX_VERSION_NUM && AMXX_VERSION_NUM >= CVAR_POINTERS_AMXX_INIT_VER_NUM     #define CVAR_POINTERS     new g_pcvar_spawn     new g_pcvar_time #endif   new TEAM[] = "TERRORIST" new WEAPON[] = "weapon_c4"   #define FL_ONGROUND (1<<9)   new bool:g_freezetime = true new bool:g_spawn new bool:g_planting   new g_carrier   new g_pos[MAX_PLAYERS + 1][3] new g_time[MAX_PLAYERS + 1]   new g_maxplayers   public plugin_init() {     register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)   #if defined CVAR_POINTERS     g_pcvar_spawn = register_cvar(CVAR_SPAWN, DEFAULT_SPAWN)     g_pcvar_time = register_cvar(CVAR_TIME, DEFAULT_TIME) #else     register_cvar(CVAR_SPAWN, DEFAULT_SPAWN)     register_cvar(CVAR_TIME, DEFAULT_TIME) #endif   #if defined BOMB_MAP_CHECK     // is current map not contain bomb targets?     if (!engfunc(EngFunc_FindEntityByString, -1, "classname", "func_bomb_target"))         return #endif       register_event("WeapPickup", "event_got_bomb", "be", "1=6")     register_event("BarTime", "event_bar_time", "be")     register_event("TextMsg", "event_bomb_drop", "bc", "2=#Game_bomb_drop")     register_event("TextMsg", "event_bomb_drop", "a", "2=#Bomb_Planted")     register_event("HLTV", "event_new_round", "a", "1=0", "2=0")       register_logevent("logevent_round_start", 2, "1=Round_Start")       set_task(1.0, "task_afk_check", _, _, _, "b") // plugin's core loop       g_maxplayers = get_maxplayers() }   /* *************************************************** Base **************************************************** */   public event_new_round() {     g_freezetime = true     g_spawn = true     g_planting = false     g_carrier = 0 }   public event_got_bomb(id) {     g_carrier = id }   public event_bar_time(id) {     if (id == g_carrier) {         g_planting = bool:read_data(1)         get_user_origin(id, g_pos[id])         g_time[id] = 0     } }   public event_bomb_drop() {     g_spawn = false     g_planting = false     g_carrier = 0 }   public logevent_round_start() {     new id[32], num     get_players(id, num, "ae", TEAM)       if (!num) // is server empty?         return       g_freezetime = false       // update afk timers and current positions     new x     for (new i = 0; i < num; ++i) {         x = id[i]         get_user_origin(x, g_pos[x])         g_time[x] = 0     } }   public task_afk_check() {     if (g_freezetime) // is freezetime right now?         return       // afk check     new id[32], num, x, origin[3]     get_players(id, num, "ae", TEAM)     for (new i = 0; i < num; ++i) {         x = id[i]         get_user_origin(x, origin)         if (origin[0] != g_pos[x][0] || origin[1] != g_pos[x][1] || (x == g_carrier && g_planting)) {             g_time[x] = 0             g_pos[x][0] = origin[0]             g_pos[x][1] = origin[1]             if (g_spawn && x == g_carrier)                 g_spawn = false         }         else             g_time[x]++     }       // is bomb not currently carried or Ts number less than 2?     if (!g_carrier || num < 2)         return   #if defined CVAR_POINTERS     new max_time = get_pcvar_num(g_spawn ? g_pcvar_spawn : g_pcvar_time) #else     new max_time = get_cvar_num(g_spawn ? CVAR_SPAWN : CVAR_TIME) #endif       // is plugin disabled (cvar <= 0) or carrier isn't afk?     if (max_time <= 0 || g_time[g_carrier] < max_time)         return       // find who from non-afk Ts is the closest to the afk carrier     get_user_origin(g_carrier, origin)     new min_dist = 999999, dist, recipient, origin2[3]     for (new i = 0; i < num; ++i) {         x = id[i]         if (g_time[x] < max_time) {             get_user_origin(x, origin2)             dist = get_distance(origin, origin2)             if (dist < min_dist) {                 min_dist = dist                 recipient = x             }         }     }       if (!recipient) // is all Ts afk?         return       new carrier = g_carrier     engclient_cmd(carrier, "drop", WEAPON) // drop the backpack     new c4 = engfunc(EngFunc_FindEntityByString, -1, "classname", WEAPON) // find weapon_c4 entity     if (!c4)         return       new backpack = pev(c4, pev_owner) // get backpack entity     if (backpack <= g_maxplayers)         return       // my backpack transfer trick (improved)     set_pev(backpack, pev_flags, pev(backpack, pev_flags) | FL_ONGROUND)     dllfunc(DLLFunc_Touch, backpack, recipient)       // hud messages stuff below     set_hudmessage(0, 255, 0, 0.35, 0.8, _, _, MSG_TIME)     new message[128], c_name[32], r_name[32]     get_user_name(carrier, c_name, 31)     get_user_name(recipient, r_name, 31)     format(message, 127, "A bombat att adtak ^"%s^"^n-nek mert ^"%s^" AFKzik!", r_name, c_name)     for (new i = 0; i < num; ++i)         show_hudmessage(id[i], "%s", message)      ColorChat(recipient, GREEN, "Megkaptad a Bombát") }   /* **************************************************** EOF **************************************************** */ 
  	
		
			
			 Ők köszönték meg Dooz nek ezt a hozzászólást: ZiT3K (2021.04.08. 13:30) | 
		 
	 	
  
						
					 | 
				 
				 
			 |