Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Modyfikacja

prośba o przerobienie Admin_Listen

modyfikacja

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 OpanowanY

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:20
  • Lokalizacja:Polska
Offline

Napisano 28.08.2013 11:59

Witam, mógłbym prosić o przerobienie pluginu tak aby działał dopiero gdy admin zginie? Wtedy plugin byłby uniwersalny i przydałby się na każdym serwerze.

 

Kod pluginu:

 


#include <amxmodx>
#include <amxmisc>
#include <engine>


// Counter for the SayText event.
new count[32][32]     
new g_voice_status[2]


public catch_say(id)
{
new reciever = read_data(0) //Reads the ID of the message recipient
new sender = read_data(1)   //Reads the ID of the sender of the message
new message[151]            //Variable for the message
new channel[151]
new sender_name[32]


if (is_running("czero")||is_running("cstrike"))
{
    read_data(2,channel,150)
   read_data(4,message,150)
    get_user_name(sender, sender_name, 31)
} else {
       read_data(2,message,150)
}
   
// DEBUG. 
// console_print(0, "DEBUG MESSAGE: %s", message)
// console_print(0, "DEBUG channel: %s", channel)
// console_print(0, "DEBUG sender: %s, %i", sender_name, sender)
// console_print(0, "DEBUG receiver: %i", reciever)
   
    //With the SayText event, the message is sent to the person who sent it last.
    //It's sent to everyone else before the sender recieves it.


// Keeps count of who recieved the message
    count[sender][reciever] = 1          
// If current SayText message is the last then...
    if (sender == reciever)
{      
       new player_count = get_playersnum()  //Gets the number of players on the server
       new players[32] //Player IDs
       get_players(players, player_count, "c")


       for (new i = 0; i < player_count; i++) 
{
// If the player is an admin...
          if (get_user_flags(players[i]) & ADMIN_LEVEL_B)
{     
// If the player did not recieve the message then...
             if (count[sender][players[i]] != 1)
{              
                message_begin(MSG_ONE, get_user_msgid("SayText"),{0,0,0},players[i])
                // Appends the ID of the sender to the message, so the engine knows what color to make the name.
                write_byte(sender)
                // Appends the message to the message (depending on the mod).
if (is_running("czero")||is_running("cstrike"))
       {
    write_string(channel)
       write_string(sender_name)
       }
                write_string(message)
                message_end()
             }
          }
          count[sender][players[i]] = 0  //Set everyone's counter to 0 so it's ready for the next SayText
       }
    }


    return PLUGIN_CONTINUE
}


public plugin_init(){
   register_plugin("AdminListen","2.3x","/dev/ urandom")
   register_srvcmd("amx_adminlisten_voice","voice_status")
   register_event("SayText","catch_say","b")
   return PLUGIN_CONTINUE
}


public plugin_modules(){
   require_module("engine") 
}


// *********************
// VoiceComm Stuff
// *********************


public client_infochanged(id)
{
   if ((get_user_flags(id) & ADMIN_LEVEL_B) && equal(g_voice_status,"1")) set_speak(id, 4)
}


public client_connect(id)
{
   if ((get_user_flags(id) & ADMIN_LEVEL_B) && equal(g_voice_status,"1")) set_speak(id, 4)
}


public voice_status(){
   read_argv(1,g_voice_status,1)
   new player_count = get_playersnum()
   new players[32] //Player IDs
   get_players(players, player_count, "c")
   for (new i = 0; i < player_count; i++) {
      if ((get_user_flags(players[i]) & ADMIN_LEVEL_B)){         
         if (equal(g_voice_status,"0")) set_speak(players[i], 0)
         if (equal(g_voice_status,"1")) set_speak(players[i], 4)
      }
   }
}
 

  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: modyfikacja

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych