Noi suntem viitoruL
Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.

Furien VIP

In jos

Furien VIP Empty Furien VIP

Mesaj Scris de woken Dum Ian 06, 2013 2:33 am

Descriere: Am vazut ca multe servere au nevoie de un plugin complex pentru VIP . Astazi am facut acest plugin, si sa il public sa il aveti si voi . :)

Descarcare: [Trebuie sa fiti inscris si conectat pentru a vedea acest link]

Nume
: Furien VIP
Versiune: 1.0
Autor: hadesownage
Multumiri: geo_neo9

Instalare:
1. Fisierul furien_vip.sma il puneti in addons/amxmodx/scripting
2. Fisierul furien_vip.amxx il puneti in addons/amxmodx/plugins
4. Fisierul colorchat.inc il puneti in addons/amxmodx/scripting/include
5. Fisierul vip.html il puneti in addons/amxmodx/configs
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
Cod:
furien_vip.amxx

Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):
-

Comenzi publice (se tasteaza in joc prin apasarea tastei Y):
/furienvip - Afiseaza meniul VIP, doar vipii au acces
/vips - Afiseaza VIPII online
/vip - Afiseaza informatii despre vip

Module necesare (se sterge ; din fata modulului de mai jos; acestea le gasiti in fisierul amxmodx\configs\modules.ini):
    cstrike
    fun
    hamsandwich


Avantaje:
Meniul unui VIP contine urmatoarele:
GRAVITATIE
INVIZIBILITATE
M4A1 + DEAGLE
AK47 + DEAGLE
HEGRENADE + FLASHBANG

Alte Detalii:
* Meniul VIP se poate utiliza doar odata pe runda .
* Flagul pentru vip este "R", se poate modifica din sma:
#define ACCES "ADMIN_LEVEL_F"
#define ACCES_LEVEL ADMIN_LEVEL_F

Sursa:
Cod:




*/

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#include <colorchat>

#define PLUGIN "VIP PLUGIN"
#define VERSION "1.0"
#define AUTHOR "hadesownage"

#define ACCES "ADMIN_LEVEL_F"
#define ACCES_LEVEL ADMIN_LEVEL_F
#define MAX_HEALTH 225

#define COLOR "^x04"
#define CONTACT "/vip pentru detalii"

new maxplayers
new gmsgSayText
new g_ScoreAttrib;

new limita[33];

new gHealth_add, gHealth_max

public plugin_init() {
   register_plugin(PLUGIN, VERSION, AUTHOR)
   gHealth_add = register_cvar("vip_hp_add", "5")
   gHealth_max = register_cvar("vip_hp_max", "100")
   register_event("DeathMsg", "VIP_KILL", "ae")
   register_event("CurWeapon", "CurWeapon", "be", "1=1")
   RegisterHam(Ham_Spawn, "player", "SetSomeThing", 1)
   register_logevent("round_start", 2, "1=Round_Start")
   register_clcmd ("say /vip" , "vipinfo" , -1);
   register_clcmd ("say_team /vip" , "vipinfo" , -1);
   register_clcmd("say /furienvip", "check_acces");
   register_clcmd("say /vips", "print_adminlist");
   maxplayers = get_maxplayers()
   gmsgSayText = get_user_msgid("SayText")
   register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
   RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn", 0);
   g_ScoreAttrib = get_user_msgid("ScoreAttrib");
   register_event("ResetHUD", "resetModel", "b")
   return PLUGIN_CONTINUE
}

public round_start()
{
   new iPlayers[32]
   new iNum
   
   get_players( iPlayers, iNum )
   
   for( new i = 0; i < iNum; i++ )
   {
      limita[iPlayers[i]] = 0;
   }
}

public VIP_KILL() {
   new killer = read_data(1)
   new victim = read_data(2)
   
   if(!killer || !victim)
      return

   if(get_user_flags(killer) & ACCES_LEVEL) {
      if(killer && is_user_alive(killer)) {
         if(cs_get_user_team(victim) == CS_TEAM_T) {
            if(get_user_health(killer) < 200 - 10) {
               set_user_health(killer, get_user_health(killer) + 10)
            }

            if(cs_get_user_money(killer) < 16000 - 800) {
               cs_set_user_money(killer, cs_get_user_money(killer) + 800)
            }

         }

         if(cs_get_user_team(victim) == CS_TEAM_CT) {
            if(cs_get_user_money(killer) < 16000 - 700) {
               cs_set_user_money(killer, cs_get_user_money(killer) + 700)
            }
         }
      }
   }
}

public SetSomeThing(id) {
   if(!(get_user_flags(id) & ACCES_LEVEL))
      return

   if(get_user_health(id) < 225) {
      set_user_health(id, 225)
   }
   
   if(get_user_armor(id) < 225) {
      set_user_armor(id, 225)
   }

   set_task(0.5, "ScoreBoard", id + 6910)
}

public ScoreBoard(tID) {
   new id = tID - 6910
   
   message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
   write_byte(id)
   write_byte(4)
   message_end()
}

public CurWeapon(id) {
   if(!(get_user_flags(id) & ACCES_LEVEL))
      return

   new CW = read_data(2)

   if(CW != CSW_KNIFE)
      return
   else

   if(get_user_health(id) < 50)
      set_task(5.0, "hp_up",id, _, _, "b")
}

public hp_up(id) {
   new addhealth = get_pcvar_num(gHealth_add)
   if(!addhealth)
      return

   new maxhealth = get_pcvar_num(gHealth_max)

   if(maxhealth > MAX_HEALTH) {
      set_pcvar_num(gHealth_max, MAX_HEALTH)
      maxhealth = MAX_HEALTH
   }
   
   new health = get_user_health(id)
   
   if(is_user_alive(id) && (health < maxhealth)) {
      set_user_health(id, health + addhealth)
      new cvar_health[5]
      get_pcvar_string(gHealth_max, cvar_health, 4)
      set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
      show_hudmessage(id, "[VIP-REGENERATION] Viata ta se incarca pana la %s !", cvar_health)
      message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
      write_short(1<<10)
      write_short(1<<10)
      write_short(0x0000)
      write_byte(0)
      write_byte(191)
      write_byte(255)
      write_byte(75)
      message_end()
   } else {
      if(is_user_alive(id) && (health > maxhealth))
         emit_sound(id,CHAN_VOICE, "fvox/medical_repaired.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
         
      remove_task(id)
   }
   
   
}

public vipinfo(id) show_motd(id,"/addons/amxmodx/configs/vip.html")

public print_adminlist(user)
{
   new adminnames[33][32]
   new message[256]
   new contactinfo[256], contact[112]
   new id, count, x, len
   
   for(id = 1 ; id <= maxplayers ; id++)
      if(is_user_connected(id))
         if( get_user_flags(id) & read_flags(ACCES) )
            get_user_name(id, adminnames[count++], 31)

   len = format(message, 255, "%s VIPS ONLINE: ",COLOR)
   if(count > 0) {
      for(x = 0 ; x < count ; x++) {
         len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
         if(len > 96 ) {
            print_message(user, message)
            len = format(message, 255, "%s ",COLOR)
         }
      }
      print_message(user, message)
   }
   else {
      len += format(message[len], 255-len, "Nici un VIP online.")
      print_message(user, message)
   }
   
   get_cvar_string("amx_contactinfo", contact, 63)
   if(contact[0])  {
      format(contactinfo, 111, "%s Cumpara VIP -- %s", COLOR, contact)
      print_message(user, contactinfo)
   }
}

print_message(id, msg[]) {
   message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
   write_byte(id)
   write_string(msg)
   message_end()
}

public HamPlayerSpawn(id)
{
   if( get_user_flags(id) & read_flags(ACCES) )
   {
      set_user_scoreattrib(id, 4);
   }
}
stock set_user_scoreattrib(id,
attrib = 0)
{
   message_begin(MSG_BROADCAST, g_ScoreAttrib, _, 0);
   write_byte(id);
   write_byte(attrib);
   message_end( );
}

public plugin_precache() {
        precache_model("models/player/vip_ct/vip_ct.mdl")
        precache_model("models/player/vip_t/vip_t.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if( get_user_flags(id) & read_flags(ACCES) ) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
      cs_set_user_model(id, "vip_t")
                }
                else if(userTeam == CS_TEAM_CT) {
         
      set_user_rendering(id,kRenderFxGlowShell,0,176,255,kRenderFxNone,0)
      cs_set_user_model(id, "vip_ct")
                }
                else {
      cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}

public check_acces(id){
   if(!is_user_alive(id))
      return PLUGIN_HANDLED;

   if(limita[id] == 1){
      ColorChat(id,GREEN,"[Furien VIP]^x01 Ai folosit deja meniul");
      return PLUGIN_HANDLED;
   }

   if( get_user_flags(id) & read_flags(ACCES) )
      furien_menu(id)
   else
      ColorChat(id,GREEN,"[Furien VIP]^x01 Nu ai acces la meniu");

   return PLUGIN_CONTINUE
}

public furien_menu(id){
        new menu = menu_create( "Furien VIP Menu", "menu_handler" )
        menu_additem(menu, "GRAVITATIE", "1", 0)
        menu_additem(menu, "INVIZIBILITATE", "2", 0)
        menu_additem(menu, "M4A1 + DEAGLE", "3", 0)
        menu_additem(menu, "AK47 + DEAGLE", "4", 0)
        menu_additem(menu, "HEGRENADE + FLASHBANG", "5", 0)
       
        menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
        menu_display(id, menu, 0);
}

public menu_handler ( id, menu, item ) {
   
   if( item == MENU_EXIT )
   {
      return 1
   }
   
   new data[6], szName[64];
   new access, callback;
   menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
   new key = str_to_num(data);

   switch(key)
   {
   
      case 1:{
         ColorChat(id,GREEN,"[Furien VIP]^x01 Acum poti sari mai tare");
         set_user_gravity(id,0.7)
         limita[id] += 1
              }

      case 2:{
         ColorChat(id,GREEN,"[Furien VIP]^x01 Acum esti 100% invizibil");
         set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);
         limita[id] += 1
      }
      
      case 3:{
         ColorChat(id,GREEN,"[Furien VIP]^x01 Ai primit M4A1 + DEAGLE");
         give_item(id, "weapon_m4a1");
         give_item(id, "weapon_deagle");
         cs_set_user_bpammo(id, CSW_M4A1, 90);
         cs_set_user_bpammo(id, CSW_DEAGLE, 35);
         limita[id] += 1
      }
   
      case 4:{
         ColorChat(id,GREEN,"[Furien VIP]^x01 Ai primit AK47 + DEAGLE");
         give_item(id, "weapon_ak47");
         give_item(id, "weapon_deagle");      
         cs_set_user_bpammo(id, CSW_AK47, 90);
         cs_set_user_bpammo(id, CSW_DEAGLE, 35);
         limita[id] += 1
      }
   
      case 5:{
         ColorChat(id,GREEN,"[Furien VIP]^x01 Ai primit 2 Flashuri + 1 HE");
         give_item(id, "weapon_flashbang");
         give_item(id, "weapon_flashbang");
         give_item(id, "weapon_hegrenade");   
         limita[id] += 1
      }
   }
   
   menu_destroy(menu);
   return 1
   
}[/sursa]

[b]Includeul folosit:[/b]
[sursa=colorchat.inc]/* Fun functions
*
* by Numb
*
* This file is provided as is (no warranties).
*/


enum Color
{
   NORMAL = 1, // clients scr_concolor cvar color
   GREEN, // Green Color
   TEAM_COLOR, // Red, grey, blue
   GREY, // grey
   RED, // Red
   BLUE, // Blue
}

new TeamName[][] =
{
   "",
   "TERRORIST",
   "CT",
   "SPECTATOR"
}

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
   static message[256];

   switch(type)
   {
      case NORMAL: // clients scr_concolor cvar color
      {
         message[0] = 0x01;
      }
      case GREEN: // Green
      {
         message[0] = 0x04;
      }
      default: // White, Red, Blue
      {
         message[0] = 0x03;
      }
   }

   vformat(message[1], 251, msg, 4);

   // Make sure message is not longer than 192 character. Will crash the server.
   message[192] = '^0';

   static team, ColorChange, index, MSG_Type;
   
   if(id)
   {
      MSG_Type = MSG_ONE;
      index = id;
   } else {
      index = FindPlayer();
      MSG_Type = MSG_ALL;
   }
   
   team = get_user_team(index);
   ColorChange = ColorSelection(index, MSG_Type, type);

   ShowColorMessage(index, MSG_Type, message);
      
   if(ColorChange)
   {
      Team_Info(index, MSG_Type, TeamName[team]);
   }
}

ShowColorMessage(id, type, message[])
{
   message_begin(type, get_user_msgid("SayText"), _, id);
   write_byte(id)      
   write_string(message);
   message_end();   
}

Team_Info(id, type, team[])
{
   message_begin(type, get_user_msgid("TeamInfo"), _, id);
   write_byte(id);
   write_string(team);
   message_end();

   return 1;
}

ColorSelection(index, type, Color:Type)
{
   switch(Type)
   {
      case RED:
      {
         return Team_Info(index, type, TeamName[1]);
      }
      case BLUE:
      {
         return Team_Info(index, type, TeamName[2]);
      }
      case GREY:
      {
         return Team_Info(index, type, TeamName[0]);
      }
   }

   return 0;
}

FindPlayer()
{
   static i;
   i = -1;

   while(i <= get_maxplayers())
   {
      if(is_user_connected(++i))
      {
         return i;
      }
   }

   return -1;
}
woken
woken
FONDATOR
FONDATOR

Data de inscriere : 01/06/2012

Mesaje : 637

Varsta : 25


Sus In jos

Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum