Viuda Comunity

[Script] Afk Tranferido A Espect - Mensaje a tu gusto :D

Ir abajo

[Script] Afk Tranferido A Espect - Mensaje a tu gusto :D

Mensaje  angelitoox el Dom Nov 15, 2009 5:18 am

Bueno holap , aki les traigo este plugins q la funcion es q ejemplo : TREBOR Fue tranferido A Espectador x Estar afk xD .
Tambn este sma les brinda otros tipos de mensajes Q son Cuando estas afk Tambn tienes otra opcion q es de kikearte y El otro q es Q si estas mucho tiempo Espect el server te kikea.
Yo les puse para ser mas explicativo Al lado del mensaje les puse El mensaje Modificalo Eso lo borran o si kieren lo dejn total eso no influye en nada , Bueno yo me refiero cuando digo El mensaje Modificalo Es q modifikes el mensaje q esta al lado izkierdo de eso .
Ojo Muy importante No borrar Las comillas entre los mensajes Very Happy

Código:

// connected user's unassigned kick immunity time
#define IMMUNE_TIME_AFTER_CONNECT 5

// AFK check interval (seconds)
#define AFK_CHECK_INTERVAL 5

// max. allowed AFK time (seconds)
#define MAX_ALLOWED_AFK_TIME 45

// comment to disable HLTV kick
#define HLTV_KICK

#if defined HLTV_KICK
   new const g_hltv_kick_reason[] = "Sorry, HLTV isn't allowed on the full server"
#endif

// kick reasons
new const g_spec_kick_reason[] = "Ups , Fuiste kikeado X estar mucho tiempo en espectador" El mensaje modificalo
new const g_afk_kick_reason[]  = "Muahahah , Fuiste kikeado x estar afk :S" El mensaje modificalo
"

// AFK to Spectators transfer reason
new const g_afktospec_reason[] = "\yJijiji , Fuiste tranferido A Espectador x Estar afk xD" El mensaje Modificalo

// chat reasons
new const g_spec_kick_chat[] = "~Ups , Fuiste kikeado X estar mucho tiempo en espectador" El mensaje Modificalo
new const g_afk_kick_chat[]  = "El server kikeo a %s X estar Afk :$" El mensaje Modificalo
new const g_afktospec_chat[] = "%s Fue tranferido A Espectador x Estar afk xD " El mensaje Modificalo

// OPTIONS ABOVE

new const g_teamname[2][] = {"TERRORIST", "CT"}

#define MAX_PLAYERS 32
new bool:g_connected[MAX_PLAYERS + 1]
new g_origin[MAX_PLAYERS + 1][3]
new g_afktime[MAX_PLAYERS + 1]
new g_specgametime[MAX_PLAYERS + 1]

new g_maxplayers
new g_pcvar_reservation

public plugin_init() {
   register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

   register_event("TeamInfo", "event_spectate", "a", "2=UNASSIGNED", "2=SPECTATOR")
   register_event("TeamInfo", "event_playteam", "a", "2=TERRORIST", "2=CT")

   g_maxplayers = get_maxplayers()
   g_pcvar_reservation = get_cvar_pointer("amx_reservation")

   set_task(float(AFK_CHECK_INTERVAL), "task_afk_check", _, _, _, "b")
}

public client_connect(id) {
   g_connected[id] = true

   if (get_playersnum(1) <= g_maxplayers - get_pcvar_num(g_pcvar_reservation))
      return

#if defined HLTV_KICK
   if (is_user_hltv(id)) {
      client_kick(id, g_hltv_kick_reason)
      return
   }
#endif

   static players[32], num, i, tchar[2]
   new candidate, candidatetime
   get_players(players, num, "b")
   for (new x; x < num; ++x) {
      i = players[x]

#if defined IMMUNE_SPEC_ACCESS
      if (get_user_flags(i) & IMMUNE_SPEC_ACCESS)
         continue
#endif

      if (is_user_hltv(i)) {
#if defined HLTV_KICK
         client_kick(i, g_hltv_kick_reason)
         return
#else
         continue
#endif
      }

      get_user_team(i, tchar, 1)
      if (((tchar[0] == 'U' && get_user_time(i, 1) > IMMUNE_TIME_AFTER_CONNECT) || tchar[0] == 'S') && (!candidatetime || g_specgametime[i] < candidatetime)) {
         candidatetime = g_specgametime[i]
         candidate = i
      }
   }

   if (candidate) {
      chat_msg(candidate, g_spec_kick_chat)
      client_kick(candidate, g_spec_kick_reason)
      return
   }

   static origin[3], afktime
   get_players(players, num, "a")
   for (new x; x < num; ++x) {
      i = players[x]
      get_user_origin(i, origin)
      if (!is_user_afk(i, origin)) {
         g_afktime[i] = 0
         g_origin[i] = origin
         continue
      }

      afktime = g_afktime[i]
      if (afktime >= MAX_ALLOWED_AFK_TIME && afktime > candidatetime) {
         candidatetime = afktime
         candidate = i
      }
   }

   if (candidate) {
      chat_msg(candidate, g_afk_kick_chat)
      client_kick(candidate, g_afk_kick_reason)
   }
}

public task_afk_check() {
   static players[32], num, i, bool:allafk, origin[3]
   for (new a; a < 2; ++a) {
      get_players(players, num, "ae", g_teamname[a])
      allafk = true
      for (new x; x < num; ++x) {
         i = players[x]
         get_user_origin(i, origin)
         if (is_user_afk(i, origin)) {
            g_afktime[i] += AFK_CHECK_INTERVAL
            if (g_afktime[i] < MAX_ALLOWED_AFK_TIME)
               allafk = false
         }
         else {
            g_afktime[i] = 0
            g_origin[i] = origin
            allafk = false
         }
      }

      if (!allafk)
         continue

      for (new x; x < num; ++x) {
         i = players[x]
         chat_msg(i, g_afktospec_chat)
         user_to_spec(i, g_afktospec_reason)
      }
   }
}

public event_spectate() {
   new id = read_data(1)
   if (g_connected[id] && !g_specgametime[id])
      g_specgametime[id] = floatround(get_gametime())
}

public event_playteam() {
   new id = read_data(1)
   if (g_connected[id])
      clear_vars(id)
}

public client_disconnect(id) {
   g_connected[id] = false
   clear_vars(id)
}

clear_vars(id) {
   g_origin[id][0] = 0
   g_origin[id][1] = 0
   g_origin[id][2] = 0
   g_afktime[id] = 0
   g_specgametime[id] = 0
}

bool:is_user_afk(id, const origin[3]) {
   return (origin[0] == g_origin[id][0] && origin[1] == g_origin[id][1])
}

chat_msg(id, const text[]) {
   static name[32]
   get_user_name(id, name, 31)
   client_print(0, print_chat, text, name)
}

stock client_kick(id, const reason[] = "") {
   server_cmd("kick #%d ^"%s^"", get_user_userid(id), reason)
   server_exec()
}

stock user_to_spec(id, const reason[] = "") {
   user_kill(id, 1)
   engclient_cmd(id, "jointeam", "6")
   show_menu(id, 1023, reason)
}
avatar
angelitoox
Miembro Veterano
Miembro Veterano

Cantidad de envíos : 81
Nivel : 163
Fecha de inscripción : 10/09/2009

Ver perfil de usuario

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.