Arkadaşlar elimde last request v1.6 plugini var. Bunu biraz daha geliştirmek istiyorum.

1. Knife Duel
2. Deagle Duel
3. Grenades Duel
4. Scout Duel
5. Ak47 Duel
6. Awp Duel
7. Usp Duel

yani 3 tane fazladan ekleyebilirseniz sevinirim.

.txt dosyası bende var diğerleri gibi yapın ben .txt editlerim.

yani

DUEL_1 = Knife Duel
DUEL_2 = Deagle Duel
DUEL_3 = Grenades Duel
DUEL_4 = Scout Duel
DUEL_5 = Ak47 Duel
DUEL_6 = Awp Duel
DUEL_7 = Usp Duel

YAPANA ÇOK TEŞEKKÜR EDERİM



v1.6 plugini

Kod:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#define PLUGIN "Jailbreak Last Request"
#define VERSION "1.6"
#define AUTHOR "rube"

/*================================================================================
   Variables | bools | Cvars      
=================================================================================*/

new g_maxPlayers, g_msgSayText, beacon_sprite

new cvar_granadas_bpammo, cvar_scout_bpammo, cvar_effect

new bool:touch_weapons[33], bool:once[33], bool:player_challenged[33], bool:duel_active,
bool:knife_duel[33] ,bool:deagle_duel[33], bool:grenade_duel[33], bool:scout_duel[33]

new tag[] = "[JailBreak]"

/*================================================================================
   Init n' precache      
=================================================================================*/

public plugin_precache() 
{   
   beacon_sprite = precache_model("sprites/shockwave.spr")
}

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   
   register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
   
   RegisterHam(Ham_Touch, "weaponbox", "fw_touch_weapon")
   RegisterHam(Ham_Touch, "armoury_entity", "fw_touch_weapon")
   RegisterHam(Ham_Touch, "weapon_shield", "fw_touch_weapon")
   RegisterHam(Ham_Spawn, "player", "fw_player_respawn", 1)
   RegisterHam(Ham_Killed, "player", "fw_player_killed")   
      
   register_forward(FM_CmdStart,"fw_cmdstart",1)
   
   // Comando de jugador - Client commands
   register_clcmd("say /lr", "duel_menu")
   register_clcmd("say !lr", "duel_menu")
   register_clcmd("say_team /lr", "duel_menu")
   register_clcmd("say_team !lr", "duel_menu")
   
   // Cvars
   cvar_granadas_bpammo = register_cvar("jb_grenade_bpammo","10") // amount bpammo grenade | cantidad de granadas
   cvar_scout_bpammo = register_cvar("jb_scout_bpammo", "10") // amount bpammo scout | cantidad de balas pa' la scout
   cvar_effect = register_cvar("jb_effect", "2") // 0 = glow , 1 = beacon, 2 = glow n' beacon
   
   g_maxPlayers = get_maxplayers()
   
   g_msgSayText = get_user_msgid("SayText")
   
   register_dictionary("jailbreak_last_request.txt")
}

/*================================================================================
   Round Start            
=================================================================================*/

public event_round_start()
{
   duel_active = false
}
      
/*================================================================================
   forwards            
=================================================================================*/

public fw_player_respawn(id)
{
   if(!is_user_alive(id) || !cs_get_user_team(id))
      return
     
   set_user_rendering(id)
   remove_task(id)
   touch_weapons[id] = false 
   once[id] = false 
   knife_duel[id] = false
   deagle_duel[id] = false
   grenade_duel[id] = false
   scout_duel[id] = false   
   player_challenged[id] = false
}

public fw_touch_weapon(weapon, id)
{
   if (!is_user_connected(id))
      return HAM_IGNORED;
   
   new players[32], pnum, tempid;
   get_players(players, pnum, "a");
   for( new i; i<pnum; i++ )
   {        
      tempid = players[i];
   }
   
   if (touch_weapons[id] || touch_weapons[tempid])
      return HAM_SUPERCEDE;
   
   return HAM_IGNORED;
}


public fw_cmdstart(player,uc_handle,random_seed)
{
   if(deagle_duel[player])
   {
      cs_set_user_bpammo(player, CSW_DEAGLE, 1)
   }
}

public fw_player_killed(victim, attacker, shouldgib)
{
   new name[32]
   get_user_name(attacker, name, 31)
         
   if(duel_active)
   {
      if(cs_get_user_team(victim) == CS_TEAM_CT && player_challenged[victim])
      {
         knife_duel[attacker] = false
         deagle_duel[attacker] = false
         grenade_duel[attacker] = false
         scout_duel[attacker] = false
         once[attacker] = false
         strip_user_weapons(attacker)
         give_item(attacker, "weapon_knife")
         set_user_rendering(attacker)
         duel_menu(attacker)
      }
      else if(cs_get_user_team(victim) == CS_TEAM_CT && !player_challenged[victim])
      {
         set_task(0.4, "kill_player", attacker)
         set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
         show_hudmessage(0, "%L", LANG_PLAYER,"DUEL_DOWN", name)
            
      }
   }
   remove_task(attacker)
   remove_task(victim)
}

public kill_player(id)
{
   user_kill(id)
}

/*================================================================================
   Main Menu            
=================================================================================*/

public duel_menu(id)
{   
   if(!is_user_alive(id))
      return PLUGIN_HANDLED
   
   if (!once[id])
   {
      if(cs_get_user_team(id) == CS_TEAM_T)
      {
         new cts[32], ts[32], ctsnum, tsnum 
   
         for (new id=1; id <= g_maxPlayers; id++)
         {
            if (!is_user_connected(id) || !is_user_alive(id)) 
            { 
               continue 
            } 
   
            if (cs_get_user_team(id) == CS_TEAM_T) 
            { 
               ts[tsnum++] = id
            } 
            else if (cs_get_user_team(id) == CS_TEAM_CT) 
            { 
               cts[ctsnum++] = id
            } 
         } 
         if (tsnum == 1 && ctsnum >= 1) 
         {  
         
            static opcion[64]
   
            formatex(opcion, charsmax(opcion),"\y%L:", id, "CHOOSE_DUEL")
            new iMenu = menu_create(opcion, "sub_duel_menu")
   
            formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_1")
            menu_additem(iMenu, opcion, "1")   
   
            formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_2")
            menu_additem(iMenu, opcion, "2")
         
            formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_3")
            menu_additem(iMenu, opcion, "3")   
   
            formatex(opcion, charsmax(opcion),"\w%L", id, "DUEL_4")
            menu_additem(iMenu, opcion, "4")
         

            menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL)
            menu_display(id, iMenu, 0)
                  
         }
         else if   (tsnum == 1 && ctsnum < 1)
         {
            ChatColor(id, "%L", LANG_PLAYER,"NOT_CTS", tag) 
         }
         else if   (tsnum > 1)
         {
            ChatColor(id, "%L", LANG_PLAYER,"ONLY_LAST", tag)
         }
      }
      else
      {
         ChatColor(id, "%L", LANG_PLAYER,"ONLY_TTS", tag) 
      }
   }
   else
   {
      ChatColor(id, "%L", LANG_PLAYER,"KILL_CHALLENGED", tag) 
   }
   return PLUGIN_HANDLED
}

public sub_duel_menu(id, menu, item)
{
   
   if (item == MENU_EXIT)
   {
      menu_destroy(menu)
      return PLUGIN_HANDLED
   }
   
   new Data[6], Name[64]
   new Access, Callback
   
   menu_item_getinfo(menu, item, Access, Data,5, Name, 63, Callback)
   
   new Key = str_to_num(Data)
   
   switch (Key)
   {
      case 1:
      {   
         knife_duel[id] = true
         choose_enemy(id)
      }
      case 2: 
      {
         deagle_duel[id] = true
         choose_enemy(id)
      }
      case 3: 
      {
         grenade_duel[id] = true
         choose_enemy(id)
      }
      case 4: 
      {
         scout_duel[id] = true
         choose_enemy(id)
      }
   }
   
   menu_destroy(menu)   
   return PLUGIN_HANDLED
}

/*================================================================================
   Menu of challenges            
=================================================================================*/

public choose_enemy(id)
{
   static opcion[64]
   
   formatex(opcion, charsmax(opcion),"\y%L:", id, "CHOOSE_ENEMY")
   new iMenu = menu_create(opcion, "sub_choose_enemy")
   
   new players[32], pnum, tempid
   new szName[32], szTempid[10]
   
   get_players(players, pnum, "a")
   
   for( new i; i<pnum; i++ )
   {
      tempid = players[i]
      
      if (cs_get_user_team(tempid) != CS_TEAM_CT)
      {
         continue
      }
      
      get_user_name(tempid, szName, 31)
      num_to_str(tempid, szTempid, 9)
      menu_additem(iMenu, szName, szTempid, 0)
   }
   
   menu_display(id, iMenu)
   return PLUGIN_HANDLED
}

public sub_choose_enemy(id, menu, item)
{
   if( item == MENU_EXIT )
   {
      menu_destroy(menu)
      return PLUGIN_HANDLED
   }
   
   new Data[6], Name[64]
   new Access, Callback
   menu_item_getinfo(menu, item, Access, Data,5, Name, 63, Callback)
   
   new tempid = str_to_num(Data)
   
   new mapname[32], challenger[32], challenged[32], ct_origin[3], te_origin[3]

   get_mapname(mapname,31)
   get_user_name(id, challenger, 31)
   get_user_name(tempid, challenged, 31)
   
   // strip weapons
   strip_user_weapons(id)
   strip_user_weapons(tempid)
   
   // health
   set_user_health(id, 100)
   set_user_health(tempid, 100)
   
   // effects
   switch (get_pcvar_num(cvar_effect))
   {
      case 0: // glow
      {
         set_user_rendering(id, kRenderFxGlowShell, 250, 0, 0, kRenderNormal, 20)   
         set_user_rendering(tempid, kRenderFxGlowShell, 0, 0, 250, kRenderNormal, 20)
      }
      case 1: // beacon
      {
         set_task(1.0, "beacon", id)
         set_task(1.0, "beacon", tempid)
      }
      case 2: // glow n' beacon
      {
         set_user_rendering(id, kRenderFxGlowShell, 250, 0, 0, kRenderNormal, 20)   
         set_task(1.0, "beacon", id)
         set_user_rendering(tempid, kRenderFxGlowShell, 0, 0, 250, kRenderNormal, 20)
         set_task(1.0, "beacon", tempid)
      }
   }
   
   // player challenged
   player_challenged[tempid] = true
   
   // lr menu once until he kills the player challenged
   once[id] = true 
   
   // unable pick up weapon (only the 2 players on duel)
   touch_weapons[id] = true
   touch_weapons[tempid] = true
         
   if(knife_duel[id])
   {
      give_item(id, "weapon_knife")
      give_item(tempid, "weapon_knife")
            
      if(equali(mapname,"some1s_jailbreak"))
      {
         ct_origin[0] = -759, ct_origin[1] = 1047, ct_origin[2] = 100
         te_origin[0] = -585, te_origin[1] = 867, te_origin[2] = 100
         set_user_origin(id,te_origin)
         set_user_origin(tempid,ct_origin)
      }
      
      set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
      show_hudmessage(0, "%L",LANG_PLAYER,"KNIFE_DUEL", challenger, challenged)
      
   }
   else if(deagle_duel[id])
   {
      deagle_duel[tempid] = true
      
      cs_set_weapon_ammo(give_item(id, "weapon_deagle"), 1)
      cs_set_weapon_ammo(give_item(tempid, "weapon_deagle"), 1)
      
      if(equali(mapname,"some1s_jailbreak"))
      {
         ct_origin[0] = -1352, ct_origin[1] = 271, ct_origin[2] = 38
         te_origin[0] = -1338, te_origin[1] = -782, te_origin[2] = 38
         set_user_origin(id,te_origin)
         set_user_origin(tempid,ct_origin)
      }
      
      set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
      show_hudmessage(0, "%L", LANG_PLAYER,"DEAGLE_DUEL", challenger, challenged)
   }
   else if(grenade_duel[id])
   {
      give_item(id, "weapon_hegrenade")
      give_item(tempid, "weapon_hegrenade")
      cs_set_user_bpammo(id, CSW_HEGRENADE,get_pcvar_num(cvar_granadas_bpammo))      
      cs_set_user_bpammo(tempid, CSW_HEGRENADE,get_pcvar_num(cvar_granadas_bpammo))
      
      if(equali(mapname,"some1s_jailbreak"))
      {
         ct_origin[0] = -1756, ct_origin[1] = -2526, ct_origin[2] = 36
         te_origin[0] = -3020, te_origin[1] = -2529, te_origin[2] = 36
         set_user_origin(id,te_origin)
         set_user_origin(tempid,ct_origin)
      }
      
      set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
      show_hudmessage(0, "%L", LANG_PLAYER,"GRENADE_DUEL", challenger, challenged)
   }
   else if(scout_duel[id])
   {
      give_item(id, "weapon_scout")
      give_item(tempid, "weapon_scout")
      cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(cvar_scout_bpammo))
      cs_set_user_bpammo(tempid, CSW_SCOUT, get_pcvar_num(cvar_scout_bpammo))
      
      if(equali(mapname,"some1s_jailbreak"))
      {
         ct_origin[0] = -2898, ct_origin[1] = -2040, ct_origin[2] = 37
         te_origin[0] = -2908, te_origin[1] = 905, te_origin[2] = 37
         set_user_origin(id,te_origin)
         set_user_origin(tempid,ct_origin)
      }
      
      set_hudmessage( 0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
      show_hudmessage(0, "%L", LANG_PLAYER,"SCOUT_DUEL", challenger, challenged)
   }
   
   duel_active = true
   
   menu_destroy(menu)
   return PLUGIN_HANDLED
}

public beacon(id)
{
   if(cs_get_user_team(id) == CS_TEAM_CT)
   {
      static origin[3]
      get_user_origin(id, origin)
      message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
      write_byte(TE_BEAMCYLINDER)   // TE id
      write_coord(origin[0])       // x
      write_coord(origin[1])      // y
      write_coord(origin[2]-20)   // z
      write_coord(origin[0])       // x axis
      write_coord(origin[1])       // y axis
      write_coord(origin[2]+200)   // z axis
      write_short(beacon_sprite)   // sprite
      write_byte(0)         // startframe   
      write_byte(1)         // framerate   
      write_byte(6)         // life
      write_byte(2)           // width
      write_byte(1)            // noise    
      write_byte(0)           // red  
      write_byte(0)            // green 
      write_byte(250)       // blue
      write_byte(200)         // brightness
      write_byte(0)         // speed
      message_end()
   }
   else
   {
      static origin[3]
      get_user_origin(id, origin)
      message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
      write_byte(TE_BEAMCYLINDER)   // TE id
      write_coord(origin[0])       // x
      write_coord(origin[1])      // y
      write_coord(origin[2]-20)   // z
      write_coord(origin[0])       // x axis
      write_coord(origin[1])       // y axis
      write_coord(origin[2]+200)   // z axis
      write_short(beacon_sprite)   // sprite
      write_byte(0)         // startframe   
      write_byte(1)         // framerate   
      write_byte(6)         // life
      write_byte(2)           // width
      write_byte(1)            // noise    
      write_byte(250)         // red  
      write_byte(0)            // green 
      write_byte(0)          // blue
      write_byte(200)         // brightness
      write_byte(0)         // speed
      message_end()
   }
   set_task(1.0, "beacon", id)
      
}

/*================================================================================
   Stocks               
=================================================================================*/

stock ChatColor(const id, const input[], any:...)
{
   new count = 1, players[32]
   static msg[191]
   vformat(msg, 190, input, 3)
   
   replace_all(msg, 190, "!g", "^4") // Green Color
   replace_all(msg, 190, "!y", "^1") // Default Color
   replace_all(msg, 190, "!team", "^3") // Team Color
   
   if (id) players[0] = id
   else get_players(players, count, "ch")
   for (new i = 0; i < count; i++)
   {
      if (is_user_connected(players[i]))
      {
         message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
         write_byte(players[i])
         write_string(msg)
         message_end()
      }
   }
}