Заявка за преработка на DeathRun VIP плъгин

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Заявка за преработка на DeathRun VIP плъгин

Мнение от ElitePower » 31 Дек 2016, 18:15

Става дума за този плъгин. Искам да се премахнат моделите и звуците, да остане само менюто. Менюто да се отваря автоматично при влизане в сървъра на хора с флаг а.

Нещата, които да ги има в менюто:

Health 100
Armor 100
He Grenade
Godmode 20 секунди (да има възможност да се увеличава)
Hook 4 секунди (да има възможност да се увеличава)
Speed
Gravity
NightVision
Deagle (да има 7 патрона без да се презарежда)
Последно промяна от OciXCrom на 31 Дек 2016, 20:06, променено общо 1 път.
Причина: Редактирано заглавие!

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от ElitePower » 02 Яну 2017, 15:40

Поне, който има желание да премахне моделите, да си остане само менюто.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <xs>
#include <engine>

#define FLAG ADMIN_IMMUNITY

new const VIP[] = "DeathRunVip"
new const VIP_MODEL[] = "models/player/DeathRunVip/DeathRunVip.mdl"

new const MENU_POPUP[] = "misc/DeathRunVip/vip_menu_popup.wav"
new const MENU_OK[] = "misc/DeathRunVip/vip_menu_ok.wav"
new const VIP_CONNECT[] = "misc/DeathRunVip/vip_connect.wav"

#define TASKID_SHOWHUD	2931
#define TASKID_MODEL		3810 

new player_model[33][32]
new Float: g_counter
new bool: g_model[33]
new g_hudsync
new cvar_gravity
new cvar_speed
new SayTxT

new gCylinderSprite;

public plugin_precache()
{
	precache_model(VIP_MODEL)
        precache_sound(VIP_CONNECT)

	precache_sound(MENU_POPUP)
	precache_sound(MENU_OK)

	gCylinderSprite = precache_model( "sprites/shockwave.spr" );
}

public plugin_init()
{
	register_plugin("Deathrun V.I.P", "1.0", "DoviuX")

	cvar_gravity = register_cvar("dr_vip_gravity", "500")
	cvar_speed = register_cvar("dr_vip_speed", "500")

	RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)
	register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
	register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")

	g_hudsync = CreateHudSyncObj()
	SayTxT = get_user_msgid("SayText");
}

public client_connect(client)
{
	if(get_user_flags(client) & FLAG)
	{
		client_cmd(client, "spk %s", VIP_CONNECT)

    		new name[32];
    		get_user_name(client, name, 31);
        	set_hudmessage( 0, 255, 0, -1.0, 0.29, 0, 6.0, 12.0 );
        	show_hudmessage( 0, "Vip %s is connecting to the server!.", name);
	}
}

public bacon_spawn(id)
{
    if (!is_user_alive(id))
        return
    
    static CsTeams: team ; team = cs_get_user_team(id)
    
    if (team == CS_TEAM_T && (get_user_flags(id) & FLAG))
    {   
	set_task(2.0, "T_menu", id)

    	new iOrigin[ 3 ];
    	get_user_origin( id, iOrigin );

    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

	copy(player_model[id], 31, VIP)
		
	new currentmodel[32];
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
		
	if(!equal(currentmodel, player_model[id]))
	{
		Task_Model(id + TASKID_MODEL)
		g_counter += 0.1;
	}

	if(!task_exists(TASKID_SHOWHUD + id))
	   set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

	set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25) 
    }
    else if (team == CS_TEAM_CT && (get_user_flags(id) & FLAG))
    {
	set_task(2.0, "CT_menu", id)

    	new iOrigin[ 3 ];
    	get_user_origin( id, iOrigin );

    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

	copy(player_model[id], 31, VIP)

	strip_user_weapons(id)
	give_item(id, "weapon_knife")
		
	new currentmodel[32];
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
		
	if(!equal(currentmodel, player_model[id]))
	{
		Task_Model(id + TASKID_MODEL)
		g_counter += 0.1;
	}

	if(!task_exists(TASKID_SHOWHUD + id))
	   set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

	set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25) 
    }
}

public T_menu(id)
{
	if(!is_user_alive(id))
	   return PLUGIN_HANDLED

	client_cmd(id, "spk %s", MENU_POPUP)
		
    	new gmenu = menu_create("\y~::*V.I.P Menu*::~" , "Vip_Handler");
    	menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
    	menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
    	menu_additem(gmenu ,"\wGravity", "3" , 0);
    	menu_additem(gmenu ,"\wSpeed", "4" , 0);
    	menu_additem(gmenu ,"\wDeagle with \r2 ammo", "5" , 0);
    	menu_additem(gmenu ,"\wHegrenade", "6" , 0);
    	menu_additem(gmenu ,"\wNightVision (\rFor dark maps\w)", "7" , 0);
 
    	menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
    	menu_display(id , gmenu , 0);

	return PLUGIN_CONTINUE
}

public CT_menu(id)
{
	if(!is_user_alive(id))
	   return PLUGIN_HANDLED
		
	client_cmd(id, "spk %s", MENU_POPUP)

    	new gmenu = menu_create("\y~::*V.I.P Menu*::~" , "VipCt_Handler");
    	menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
    	menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
    	menu_additem(gmenu ,"\wGravity", "3" , 0);
    	menu_additem(gmenu ,"\wSpeed", "4" , 0);
    	menu_additem(gmenu ,"\wHegrenade", "5" , 0);
    	menu_additem(gmenu ,"\wNightVision (\rFor dark maps\w)", "6" , 0);
 
    	menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
    	menu_display(id , gmenu , 0);

	return PLUGIN_CONTINUE
}

public Vip_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_health(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /ghealth!")
      }

      case 2:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_armor(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /garmor!")
      }

      case 3:
      {
	client_cmd(id, "spk %s", MENU_OK)

	new Float: gravity
	gravity	= get_pcvar_float(cvar_gravity) / 800

	set_user_gravity(id, gravity)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /ggravity!")
      }
      
      case 4:
      {
	new Float: speed
	speed	= get_pcvar_float(cvar_speed)

	client_cmd(id, "spk %s", MENU_OK)

	set_user_maxspeed(id, speed)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /gspeed!")
      }
      
      case 5:
      {
	give_item(id, "weapon_deagle")

	new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
	if(weapon_id)
	{
		cs_set_weapon_ammo(weapon_id, 2);
	}

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed deagle with /g2 /ybullets!")
      }
      
      case 6:
      {
	give_item(id, "weapon_hegrenade")

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed /wexplosive /gHe /yGrenade!")
      }

      case 7:
      {
	cs_set_user_nvg(id)

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed nightvision!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public VipCt_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_health(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /ghealth!")
      }

      case 2:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_armor(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /garmor!")
      }

      case 3:
      {
	client_cmd(id, "spk %s", MENU_OK)

	new Float: gravity
	gravity	= get_pcvar_float(cvar_gravity) / 800

	set_user_gravity(id, gravity)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /ggravity!")
      }
      
      case 4:
      {
	new Float: speed
	speed	= get_pcvar_float(cvar_speed)

	client_cmd(id, "spk %s", MENU_OK)

	set_user_maxspeed(id, speed)
	client_printcolor(player, "/g[V.I.P]/y: You choosed /gspeed!")
      }
      
      case 5:
      {
	give_item(id, "weapon_hegrenade")

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed /wexplosive /gHe /yGrenade!")
      }

      case 6:
      {
	cs_set_user_nvg(id)

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: You choosed nightvision!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public Task_ShowHUD(task)
{
	new id = task - TASKID_SHOWHUD
	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	static health, armour
	health = get_user_health(id)
	armour = get_user_armor(id)
	
	set_hudmessage(150, 150, 150, 0.40, 0.92, 0, 0.0, 0.3, 0.0, 0.0)
	ShowSyncHudMsg(id, g_hudsync , ".::*Health: %d -|V.I.P|- Armour: %d*::.", health, armour)
	
	set_task(0.1, "Task_ShowHUD", TASKID_SHOWHUD + id)		
	
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
    if(is_user_alive(id))
    {
        if(get_user_flags(id) & FLAG)
        {
            
            new oldbuttons = get_user_oldbutton(id);
        
            
            oldbuttons &= ~IN_JUMP;
            entity_set_int(id, EV_INT_oldbuttons, oldbuttons);
        }
    }
}  

public Task_Model(task)
{
	new id = task - TASKID_MODEL 
	
	fm_set_user_model(id, player_model[id])
}

stock Create_BeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
	message_begin( MSG_PVS, SVC_TEMPENTITY, origin ); 
	write_byte( TE_BEAMCYLINDER );
	write_coord( origin[ 0 ] );
	write_coord( origin[ 1 ] );
	write_coord( origin[ 2 ] );
	write_coord( origin[ 0 ] );
	write_coord( origin[ 1 ] );
	write_coord( origin[ 2 ] + addrad );
	write_short( sprite );
	write_byte( startfrate );
	write_byte( framerate );
	write_byte(life );
	write_byte( width );
	write_byte( amplitude );
	write_byte( red );
	write_byte( green );
	write_byte( blue );
	write_byte( brightness );
	write_byte( speed );
	message_end();
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
	message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
	write_byte(TE_SPRITE)
	write_coord(floatround(origin[0]))
	write_coord(floatround(origin[1]))
	write_coord(floatround(origin[2]))
	write_short(sprite)
	write_byte(scale) 
	write_byte(brightness)
	message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul)
{
	new Float:fLen = xs_vec_len(fIn)
	xs_vec_copy(fIn, fOut)
	
	fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
	fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

public fw_SetClientKeyValue(id, infobuffer, key[], value[])
{   
	if (g_model[id] && equal(key, "model"))
		return FMRES_SUPERCEDE
	
	return FMRES_IGNORED
}

public fw_ClientUserInfoChanged(id, infobuffer)
{   
	if (!g_model[id])
		return FMRES_IGNORED
	
	new currentmodel[32]; 
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
	
	if(!equal(currentmodel, player_model[id]))
		fm_set_user_model(id, player_model[id]) 
	
	return FMRES_IGNORED
}

stock fm_set_user_model(player, modelname[])
{   
	engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)
	
	g_model[player] = true
}

stock fm_get_user_model(player, model[], len)
{   
	engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
}

stock fm_reset_user_model(player)
{         
	g_model[player] = false
	
	dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
}

stock client_printcolor(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 txt
	replace_all(msg,190,"/y","^1");// orange txt
	replace_all(msg,190,"/ctr","^3");// team txt
	replace_all(msg,190,"/w","^0");// team txt
	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, SayTxT, _, players[i]);
			write_byte(players[i]);
			write_string(msg);
			message_end();
		}
}	

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от OciXCrom » 02 Яну 2017, 16:24

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <xs>
#include <engine>

#define FLAG ADMIN_IMMUNITY

new const MENU_POPUP[] = "misc/DeathRunVip/vip_menu_popup.wav"
new const MENU_OK[] = "misc/DeathRunVip/vip_menu_ok.wav"
new const VIP_CONNECT[] = "misc/DeathRunVip/vip_connect.wav"

#define TASKID_SHOWHUD   2931

new g_hudsync
new cvar_gravity
new cvar_speed
new SayTxT

new gCylinderSprite;

public plugin_precache()
{
        precache_sound(VIP_CONNECT)

   precache_sound(MENU_POPUP)
   precache_sound(MENU_OK)

   gCylinderSprite = precache_model( "sprites/shockwave.spr" );
}

public plugin_init()
{
   register_plugin("Deathrun V.I.P", "1.0", "DoviuX")

   cvar_gravity = register_cvar("dr_vip_gravity", "500")
   cvar_speed = register_cvar("dr_vip_speed", "500")

   RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)

   g_hudsync = CreateHudSyncObj()
   SayTxT = get_user_msgid("SayText");
}

public client_connect(client)
{
   if(get_user_flags(client) & FLAG)
   {
      client_cmd(client, "spk %s", VIP_CONNECT)

          new name[32];
          get_user_name(client, name, 31);
           set_hudmessage( 0, 255, 0, -1.0, 0.29, 0, 6.0, 12.0 );
           show_hudmessage( 0, "Vip %s is connecting to the server!.", name);
   }
}

public bacon_spawn(id)
{
    if (!is_user_alive(id))
        return
   
    static CsTeams: team ; team = cs_get_user_team(id)
   
    if (team == CS_TEAM_T && (get_user_flags(id) & FLAG))
    {   
   set_task(2.0, "T_menu", id)

       new iOrigin[ 3 ];
       get_user_origin( id, iOrigin );

       Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
       Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
       Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

   if(!task_exists(TASKID_SHOWHUD + id))
      set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

   set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25)
    }
    else if (team == CS_TEAM_CT && (get_user_flags(id) & FLAG))
    {
   set_task(2.0, "CT_menu", id)

       new iOrigin[ 3 ];
       get_user_origin( id, iOrigin );

       Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
       Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
       Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

   strip_user_weapons(id)
   give_item(id, "weapon_knife")

   if(!task_exists(TASKID_SHOWHUD + id))
      set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

   set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25)
    }
}

public T_menu(id)
{
   if(!is_user_alive(id))
      return PLUGIN_HANDLED

   client_cmd(id, "spk %s", MENU_POPUP)
      
       new gmenu = menu_create("\y~::*V.I.P Menu*::~" , "Vip_Handler");
       menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
       menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
       menu_additem(gmenu ,"\wGravity", "3" , 0);
       menu_additem(gmenu ,"\wSpeed", "4" , 0);
       menu_additem(gmenu ,"\wDeagle with \r2 ammo", "5" , 0);
       menu_additem(gmenu ,"\wHegrenade", "6" , 0);
       menu_additem(gmenu ,"\wNightVision (\rFor dark maps\w)", "7" , 0);
 
       menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
       menu_display(id , gmenu , 0);

   return PLUGIN_CONTINUE
}

public CT_menu(id)
{
   if(!is_user_alive(id))
      return PLUGIN_HANDLED
      
   client_cmd(id, "spk %s", MENU_POPUP)

       new gmenu = menu_create("\y~::*V.I.P Menu*::~" , "VipCt_Handler");
       menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
       menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
       menu_additem(gmenu ,"\wGravity", "3" , 0);
       menu_additem(gmenu ,"\wSpeed", "4" , 0);
       menu_additem(gmenu ,"\wHegrenade", "5" , 0);
       menu_additem(gmenu ,"\wNightVision (\rFor dark maps\w)", "6" , 0);
 
       menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
       menu_display(id , gmenu , 0);

   return PLUGIN_CONTINUE
}

public Vip_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
   client_cmd(id, "spk %s", MENU_OK)

   set_user_health(id, 255)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /ghealth!")
      }

      case 2:
      {
   client_cmd(id, "spk %s", MENU_OK)

   set_user_armor(id, 255)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /garmor!")
      }

      case 3:
      {
   client_cmd(id, "spk %s", MENU_OK)

   new Float: gravity
   gravity   = get_pcvar_float(cvar_gravity) / 800

   set_user_gravity(id, gravity)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /ggravity!")
      }
     
      case 4:
      {
   new Float: speed
   speed   = get_pcvar_float(cvar_speed)

   client_cmd(id, "spk %s", MENU_OK)

   set_user_maxspeed(id, speed)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /gspeed!")
      }
     
      case 5:
      {
   give_item(id, "weapon_deagle")

   new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
   if(weapon_id)
   {
      cs_set_weapon_ammo(weapon_id, 2);
   }

   client_cmd(id, "spk %s", MENU_OK)

   client_printcolor(player, "/g[V.I.P]/y: You choosed deagle with /g2 /ybullets!")
      }
     
      case 6:
      {
   give_item(id, "weapon_hegrenade")

   client_cmd(id, "spk %s", MENU_OK)

   client_printcolor(player, "/g[V.I.P]/y: You choosed /wexplosive /gHe /yGrenade!")
      }

      case 7:
      {
   cs_set_user_nvg(id)

   client_cmd(id, "spk %s", MENU_OK)

   client_printcolor(player, "/g[V.I.P]/y: You choosed nightvision!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public VipCt_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
   client_cmd(id, "spk %s", MENU_OK)

   set_user_health(id, 255)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /ghealth!")
      }

      case 2:
      {
   client_cmd(id, "spk %s", MENU_OK)

   set_user_armor(id, 255)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /w255 /garmor!")
      }

      case 3:
      {
   client_cmd(id, "spk %s", MENU_OK)

   new Float: gravity
   gravity   = get_pcvar_float(cvar_gravity) / 800

   set_user_gravity(id, gravity)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /ggravity!")
      }
     
      case 4:
      {
   new Float: speed
   speed   = get_pcvar_float(cvar_speed)

   client_cmd(id, "spk %s", MENU_OK)

   set_user_maxspeed(id, speed)
   client_printcolor(player, "/g[V.I.P]/y: You choosed /gspeed!")
      }
     
      case 5:
      {
   give_item(id, "weapon_hegrenade")

   client_cmd(id, "spk %s", MENU_OK)

   client_printcolor(player, "/g[V.I.P]/y: You choosed /wexplosive /gHe /yGrenade!")
      }

      case 6:
      {
   cs_set_user_nvg(id)

   client_cmd(id, "spk %s", MENU_OK)

   client_printcolor(player, "/g[V.I.P]/y: You choosed nightvision!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public Task_ShowHUD(task)
{
   new id = task - TASKID_SHOWHUD
   
   if(!is_user_alive(id))
      return PLUGIN_HANDLED
   
   static health, armour
   health = get_user_health(id)
   armour = get_user_armor(id)
   
   set_hudmessage(150, 150, 150, 0.40, 0.92, 0, 0.0, 0.3, 0.0, 0.0)
   ShowSyncHudMsg(id, g_hudsync , ".::*Health: %d -|V.I.P|- Armour: %d*::.", health, armour)
   
   set_task(0.1, "Task_ShowHUD", TASKID_SHOWHUD + id)      
   
   return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
    if(is_user_alive(id))
    {
        if(get_user_flags(id) & FLAG)
        {
           
            new oldbuttons = get_user_oldbutton(id);
       
           
            oldbuttons &= ~IN_JUMP;
            entity_set_int(id, EV_INT_oldbuttons, oldbuttons);
        }
    }
} 

stock Create_BeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
   message_begin( MSG_PVS, SVC_TEMPENTITY, origin );
   write_byte( TE_BEAMCYLINDER );
   write_coord( origin[ 0 ] );
   write_coord( origin[ 1 ] );
   write_coord( origin[ 2 ] );
   write_coord( origin[ 0 ] );
   write_coord( origin[ 1 ] );
   write_coord( origin[ 2 ] + addrad );
   write_short( sprite );
   write_byte( startfrate );
   write_byte( framerate );
   write_byte(life );
   write_byte( width );
   write_byte( amplitude );
   write_byte( red );
   write_byte( green );
   write_byte( blue );
   write_byte( brightness );
   write_byte( speed );
   message_end();
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
   message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
   write_byte(TE_SPRITE)
   write_coord(floatround(origin[0]))
   write_coord(floatround(origin[1]))
   write_coord(floatround(origin[2]))
   write_short(sprite)
   write_byte(scale)
   write_byte(brightness)
   message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul)
{
   new Float:fLen = xs_vec_len(fIn)
   xs_vec_copy(fIn, fOut)
   
   fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
   fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

stock client_printcolor(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 txt
   replace_all(msg,190,"/y","^1");// orange txt
   replace_all(msg,190,"/ctr","^3");// team txt
   replace_all(msg,190,"/w","^0");// team txt
   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, SayTxT, _, players[i]);
         write_byte(players[i]);
         write_string(msg);
         message_end();
      }
}    
Разбери, че никой не би се занимавал да променя толкова калпаво написан плъгин. По-лесно ще е да се напише нов, отколко да се пипа нещо по този. Предложих ти по-добър вариант в другата тема.

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от ElitePower » 02 Яну 2017, 16:27

Би ли сложил тези неща, които искам на твоя shop plugin? Трябва ми точен отговор ДА/НЕ.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от OciXCrom » 02 Яну 2017, 16:56

Повечето ги има, за останалите можеш да пуснеш заявка, след като си настроил предишните.

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от Unbr3akable » 02 Яну 2017, 19:11

cshop_items.sma:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fun>
#include <hamsandwich>

#define PLUGIN_VERSION "1.2"
#define m_pActiveItem 373

/*
    * This plugin contains all the default items Custom Shop has to offer.
    * Feel free to change anything you like below.
    * Items can be disabled in plugin_precache(), not from here.
*/

additem ITEM_HEALTH
#define HEALTH_ID "health"
#define HEALTH_NAME "+100 Health Points"
#define HEALTH_PRICE 1500
#define HEALTH_LIMIT 5
#define HEALTH_AMOUNT 100
#define HEALTH_SOUND "items/smallmedkit1.wav"

additem ITEM_ARMOR
#define ARMOR_ID "armor"
#define ARMOR_NAME "+100 Armor Points"
#define ARMOR_PRICE 1000
#define ARMOR_LIMIT 8
#define ARMOR_AMOUNT 100
#define ARMOR_SOUND "items/ammopickup2.wav"

additem ITEM_HEGRENADE
#define HEGRENADE_ID "hegrenade"
#define HEGRENADE_NAME "HE Grenade"
#define HEGRENADE_PRICE 2000
#define HEGRENADE_LIMIT 3
#define HEGRENADE_AMOUNT 1

additem ITEM_UNLCLIP
#define UNLCLIP_ID "unlclip"
#define UNLCLIP_NAME "Unlimited Clip"
#define UNLCLIP_PRICE 3000
#define UNLCLIP_LIMIT 3
#define UNLCLIP_BPAMMO 97280
new const UNLCLIP_BADWEAPONS[] = { CSW_KNIFE, CSW_C4, CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE }

additem ITEM_UNLAMMO
#define UNLAMMO_ID "unlammo"
#define UNLAMMO_NAME "Unlimited Ammo"
#define UNLAMMO_PRICE 200
#define UNLAMMO_LIMIT 5
#define UNLAMMO_BPAMMO 99999
new const UNLAMMO_BADWEAPONS[] = { CSW_KNIFE, CSW_C4, CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE }

additem ITEM_BOMBER
#define BOMBER_ID "bomber"
#define BOMBER_NAME "Bomber"
#define BOMBER_PRICE 1600
#define BOMBER_LIMIT 3
#define BOMBER_AMOUNT 20
#define BOMBER_SOUND "x/x_pain2.wav"

additem ITEM_SILENTSTEPS
#define SILENTSTEPS_ID "silentsteps"
#define SILENTSTEPS_NAME "Silent Footsteps"
#define SILENTSTEPS_PRICE 3000
#define SILENTSTEPS_LIMIT 1

additem ITEM_GODMODE
#define GODMODE_ID "godmode"
#define GODMODE_NAME "Godmode (20 Seconds)"
#define GODMODE_PRICE 16000
#define GODMODE_LIMIT 1
#define GODMODE_SOUND "misc/stinger12.wav"
#define GODMODE_TIME 20.0

additem ITEM_SPEED
#define SPEED_ID "speed"
#define SPEED_NAME "Faster Speed"
#define SPEED_PRICE 4300
#define SPEED_LIMIT 1
#define SPEED_AMOUNT 300.0
#define SPEED_SOUND "misc/bipbip.wav"
new bool:g_blSpeed[33]

additem ITEM_GRAVITY
#define GRAVITY_ID "gravity"
#define GRAVITY_NAME "Low Gravity"
#define GRAVITY_PRICE 2800
#define GRAVITY_LIMIT 1
#define GRAVITY_AMOUNT 0.5

additem ITEM_NIGHTVISION
#define NIGHTVISION_ID "nightvision"
#define NIGHTVISION_NAME "NightVision"
#define NIGHTVISION_PRICE 5000
#define NIGHTVISION_LIMIT 1

additem ITEM_DEAGLE
#define DEAGLE_ID "deagle"
#define DEAGLE_NAME "Deagle (7 bullets)"
#define DEAGLE_PRICE 7000
#define DEAGLE_LIMIT 1

additem ITEM_CHAMELEON
#define CHAMELEON_ID "chameleon"
#define CHAMELEON_NAME "Chameleon"
#define CHAMELEON_PRICE 9000
#define CHAMELEON_LIMIT 1
new const CHAMELEON_MODELS[][][] = { { "gign", "gsg9", "sas", "urban" }, { "arctic", "guerilla", "leet", "terror" } }

additem ITEM_DRUGS
#define DRUGS_ID "drugs"
#define DRUGS_NAME "Drugs (Speed + Health)"
#define DRUGS_PRICE 8000
#define DRUGS_LIMIT 2
#define DRUGS_HEALTH 200
#define DRUGS_SPEED 300.0
#define DRUGS_FOV 180
new bool:g_blDrugs[33]

additem ITEM_TRANSPARENCY
#define TRANSPARENCY_ID "transparency"
#define TRANSPARENCY_NAME "Transparency"
#define TRANSPARENCY_PRICE 2500
#define TRANSPARENCY_LIMIT 1
#define TRANSPARENCY_AMOUNT 75

additem ITEM_INVIS
#define INVIS_ID "invis"
#define INVIS_NAME "Invisibility (15 Seconds)"
#define INVIS_PRICE 16000
#define INVIS_LIMIT 1
#define INVIS_SOUND "hornet/ag_buzz1.wav"
#define INVIS_TIME 15.0
#define INVIS_AMOUNT 0

additem ITEM_DOUBLEDAMAGE
#define DOUBLEDAMAGE_ID "doubledamage"
#define DOUBLEDAMAGE_NAME "Double Damage"
#define DOUBLEDAMAGE_PRICE 10000
#define DOUBLEDAMAGE_LIMIT 1
#define DOUBLEDAMAGE_AMOUNT 2
new bool:g_blDoubleDamage[33]

additem ITEM_HEALTHREGEN
#define HEALTHREGEN_ID "healthregen"
#define HEALTHREGEN_NAME "Health Regeneration"
#define HEALTHREGEN_PRICE 1800
#define HEALTHREGEN_LIMIT 1
#define HEALTHREGEN_SOUND "items/suitchargeok1.wav"
#define HEALTHREGEN_FREQ 0.5
#define HEALTHREGEN_PERSEC 1
#define HEALTHREGEN_MAX 150
#define HEALTHREGEN_TASK 400040
new bool:g_blHealthRegen[33]

additem ITEM_ARMORREGEN
#define ARMORREGEN_ID "armorregen"
#define ARMORREGEN_NAME "Armor Regeneration"
#define ARMORREGEN_PRICE 2000
#define ARMORREGEN_LIMIT 1
#define ARMORREGEN_SOUND "items/suitchargeok1.wav"
#define ARMORREGEN_FREQ 0.5
#define ARMORREGEN_PERSEC 10
#define ARMORREGEN_MAX 150
#define ARMORREGEN_TASK 400140
new bool:g_blArmorRegen[33]

additem ITEM_AWP
#define AWP_ID "awp"
#define AWP_NAME "AWP Sniper"
#define AWP_PRICE 4750
#define AWP_LIMIT 1
#define AWP_BPAMMO 30

new g_iWeapon[33]
new g_msgSetFOV

public plugin_init()
{
    register_plugin("Custom Shop: Default Items", PLUGIN_VERSION, "OciXCrom")
    register_event("CurWeapon", "eventChangeWeapon", "be", "1=1")
    RegisterHam(Ham_TakeDamage, "player", "eventTakeDamage")
    g_msgSetFOV = get_user_msgid("SetFOV")
}

public plugin_precache()
{
    /*
        * Comment a line to disable a specific item (add // in front).
        * Add extra parameters here (example: .team = 1, .flag = "b", .points = 85).
        * You can also rearange the items from this section.
    */
    
    ITEM_HEALTH = cshopRegisterItem(HEALTH_ID, HEALTH_NAME, HEALTH_PRICE, HEALTH_LIMIT, HEALTH_SOUND)
    ITEM_ARMOR = cshopRegisterItem(ARMOR_ID, ARMOR_NAME, ARMOR_PRICE, ARMOR_LIMIT, ARMOR_SOUND)
    ITEM_HEGRENADE = cshopRegisterItem(HEGRENADE_ID, HEGRENADE_NAME, HEGRENADE_PRICE, HEGRENADE_LIMIT)
    //ITEM_BOMBER = cshopRegisterItem(BOMBER_ID, BOMBER_NAME, BOMBER_PRICE, BOMBER_LIMIT, BOMBER_SOUND)
    //ITEM_UNLCLIP = cshopRegisterItem(UNLCLIP_ID, UNLCLIP_NAME, UNLCLIP_PRICE, UNLCLIP_LIMIT)
    //ITEM_UNLAMMO = cshopRegisterItem(UNLAMMO_ID, UNLAMMO_NAME, UNLAMMO_PRICE, UNLAMMO_LIMIT)
    //ITEM_SILENTSTEPS = cshopRegisterItem(SILENTSTEPS_ID, SILENTSTEPS_NAME, SILENTSTEPS_PRICE, SILENTSTEPS_LIMIT)
    ITEM_GODMODE = cshopRegisterItem(GODMODE_ID, GODMODE_NAME, GODMODE_PRICE, GODMODE_LIMIT, GODMODE_SOUND, GODMODE_TIME)
    ITEM_SPEED = cshopRegisterItem(SPEED_ID, SPEED_NAME, SPEED_PRICE, SPEED_LIMIT, SPEED_SOUND)
    ITEM_GRAVITY = cshopRegisterItem(GRAVITY_ID, GRAVITY_NAME, GRAVITY_PRICE, GRAVITY_LIMIT)
    ITEM_NIGHTVISION = cshopRegisterItem(NIGHTVISION_ID, NIGHTVISION_NAME, NIGHTVISION_PRICE, NIGHTVISION_LIMIT)
    ITEM_DEAGLE = cshopRegisterItem(DEAGLE_ID, DEAGLE_NAME, DEAGLE_PRICE, DEAGLE_LIMIT)
    //ITEM_CHAMELEON = cshopRegisterItem(CHAMELEON_ID, CHAMELEON_NAME, CHAMELEON_PRICE, CHAMELEON_LIMIT)
    //ITEM_DRUGS = cshopRegisterItem(DRUGS_ID, DRUGS_NAME, DRUGS_PRICE, DRUGS_LIMIT)
    //ITEM_TRANSPARENCY = cshopRegisterItem(TRANSPARENCY_ID, TRANSPARENCY_NAME, TRANSPARENCY_PRICE, TRANSPARENCY_LIMIT)
    //ITEM_INVIS = cshopRegisterItem(INVIS_ID, INVIS_NAME, INVIS_PRICE, INVIS_LIMIT, INVIS_SOUND, INVIS_TIME)
    //ITEM_DOUBLEDAMAGE = cshopRegisterItem(DOUBLEDAMAGE_ID, DOUBLEDAMAGE_NAME, DOUBLEDAMAGE_PRICE, DOUBLEDAMAGE_LIMIT)
    //ITEM_HEALTHREGEN = cshopRegisterItem(HEALTHREGEN_ID, HEALTHREGEN_NAME, HEALTHREGEN_PRICE, HEALTHREGEN_LIMIT, HEALTHREGEN_SOUND)
    //ITEM_ARMORREGEN = cshopRegisterItem(ARMORREGEN_ID, ARMORREGEN_NAME, ARMORREGEN_PRICE, ARMORREGEN_LIMIT, ARMORREGEN_SOUND)
    //ITEM_AWP = cshopRegisterItem(AWP_ID, AWP_NAME, AWP_PRICE, AWP_LIMIT)
}

public cshopItemBought(id, iItem)
{
    if(iItem == ITEM_HEALTH)             { set_user_health(id, get_user_health(id) + HEALTH_AMOUNT); }
    else if(iItem == ITEM_ARMOR)         { set_user_armor(id, get_user_armor(id) + ARMOR_AMOUNT); }
    else if(iItem == ITEM_HEGRENADE)        { give_item(id, "weapon_hegrenade"); cs_set_user_bpammo(id, CSW_HEGRENADE, HEGRENADE_AMOUNT); }
    else if(iItem == ITEM_BOMBER)         { give_item(id, "weapon_hegrenade"); cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + BOMBER_AMOUNT); }
    else if(iItem == ITEM_UNLCLIP)
    {
        for(new i; i < sizeof(UNLCLIP_BADWEAPONS); i++)
        {
            if(g_iWeapon[id] == UNLCLIP_BADWEAPONS[i])
            {
                ColorChat(id, "You can't activate ^3%s ^1on this weapon!", UNLCLIP_NAME)
                cshopErrorSound(id)
                return DONT_BUY
            }
        }
        
        cs_set_weapon_ammo(get_pdata_cbase(id, m_pActiveItem), UNLCLIP_BPAMMO)
        cs_set_user_bpammo(id, g_iWeapon[id], 0)
    }
    else if(iItem == ITEM_UNLAMMO)
    {
        for(new i; i < sizeof(UNLAMMO_BADWEAPONS); i++)
        {
            if(g_iWeapon[id] == UNLAMMO_BADWEAPONS[i])
            {
                ColorChat(id, "You can't activate ^3%s ^1on this weapon!", UNLAMMO_NAME)
                cshopErrorSound(id)
                return DONT_BUY
            }
        }
        
        cs_set_user_bpammo(id, g_iWeapon[id], UNLAMMO_BPAMMO)
    }
    else if(iItem == ITEM_SILENTSTEPS)         { set_user_footsteps(id); }
    else if(iItem == ITEM_GODMODE)             { set_user_godmode(id, 1); }
    else if(iItem == ITEM_SPEED)             { g_blSpeed[id] = true; set_user_maxspeed(id, SPEED_AMOUNT); }
    else if(iItem == ITEM_GRAVITY)             { set_user_gravity(id, GRAVITY_AMOUNT); }
    else if(iItem == ITEM_NIGHTVISION)        { cs_set_user_nvg(id, 1); }
    else if(iItem == ITEM_DEAGLE)            { give_item(id, "weapon_deagle"); }
    else if(iItem == ITEM_CHAMELEON)         { cs_set_user_model(id, CHAMELEON_MODELS[(get_user_team(id) - 1)][random(4)]); }
    else if(iItem == ITEM_DRUGS)             { g_blDrugs[id] = true; set_user_health(id, get_user_health(id) + DRUGS_HEALTH); set_user_maxspeed(id, DRUGS_SPEED); set_user_drugs(id, DRUGS_FOV); }
    else if(iItem == ITEM_TRANSPARENCY)     { set_user_glow(id, .iAlpha = TRANSPARENCY_AMOUNT); }
    else if(iItem == ITEM_INVIS)             { set_user_glow(id, .iAlpha = INVIS_AMOUNT); }
    else if(iItem == ITEM_DOUBLEDAMAGE)     { g_blDoubleDamage[id] = true; }
    else if(iItem == ITEM_HEALTHREGEN)         { g_blHealthRegen[id] = true; set_task(HEALTHREGEN_FREQ, "healthRegen", id + HEALTHREGEN_TASK, .flags = "b"); }
    else if(iItem == ITEM_ARMORREGEN)         { g_blArmorRegen[id] = true; set_task(ARMORREGEN_FREQ, "armorRegen", id + ARMORREGEN_TASK, .flags = "b"); }
    else if(iItem == ITEM_AWP)                 { give_item(id, "weapon_awp"); cs_set_user_bpammo(id, CSW_AWP, AWP_BPAMMO); }
    
    return BUY_ITEM
}

public cshopItemRemoved(id, iItem)
{
    if(!is_user_alive(id))
        return
        
    if(iItem == ITEM_SILENTSTEPS)             { set_user_footsteps(id, 0); }
    else if(iItem == ITEM_GODMODE)             { set_user_godmode(id); }
    else if(iItem == ITEM_SPEED)             { g_blSpeed[id] = false; eventChangeWeapon(id); }
    else if(iItem == ITEM_GRAVITY)             { set_user_gravity(id); }
    else if(iItem == ITEM_NIGHTVISION)        { cs_set_user_nvg(id, 0); }
    else if(iItem == ITEM_CHAMELEON)         { cs_reset_user_model(id); }
    else if(iItem == ITEM_DRUGS)             { g_blDrugs[id] = false; eventChangeWeapon(id); }
    else if(iItem == ITEM_INVIS)             { remove_user_glow(id); }
    else if(iItem == ITEM_DOUBLEDAMAGE)     { g_blDoubleDamage[id] = false; }
    else if(iItem == ITEM_HEALTHREGEN)         { g_blHealthRegen[id] = false; }
    else if(iItem == ITEM_ARMORREGEN)         { g_blArmorRegen[id] = false; }
}

public eventChangeWeapon(id)
{
    g_iWeapon[id] = get_user_weapon(id)
    
    if(g_blDrugs[id])
        set_user_maxspeed(id, DRUGS_SPEED)
    else if(g_blSpeed[id])
        set_user_maxspeed(id, SPEED_AMOUNT)
}

public eventTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iDamageBits)
    if(is_user_alive(iAttacker) && iAttacker != iVictim)
        if(g_blDoubleDamage[iAttacker])
            SetHamParamFloat(4, flDamage * DOUBLEDAMAGE_AMOUNT)
            
public healthRegen(id)
{
    id -= HEALTHREGEN_TASK
    
    if(!is_user_alive(id) || !g_blHealthRegen[id])
    {
        remove_task(id + HEALTHREGEN_TASK)
        return
    }
        
    new iHealth = get_user_health(id)
    
    if(iHealth == HEALTHREGEN_MAX)
        return
        
    set_user_health(id, clamp(iHealth + HEALTHREGEN_PERSEC, .max = HEALTHREGEN_MAX))
}

public armorRegen(id)
{
    id -= ARMORREGEN_TASK
    
    if(!is_user_alive(id) || g_blArmorRegen[id])
    {
        remove_task(id + ARMORREGEN_TASK)
        return
    }
        
    new iArmor = get_user_armor(id)
    
    if(iArmor == ARMORREGEN_MAX)
        return
        
    set_user_armor(id, clamp(iArmor + ARMORREGEN_PERSEC, .max = ARMORREGEN_MAX))
}

set_user_glow(id, iRed = 0, iGreen = 0, iBlue = 0, iAlpha)
    set_user_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderTransAlpha, iAlpha)
    
remove_user_glow(id)
    set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)

set_user_drugs(id, iAmount)
{
    message_begin(MSG_ONE, g_msgSetFOV, {0, 0, 0}, id)
    write_byte(iAmount)
    message_end()
}
 
Само не успях да направя това с hook-a, иначе другите съм убеден, че работят.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от OciXCrom » 02 Яну 2017, 19:39

Нямаше ли да е по-лесно да сложиш итемите в отделен плъгин? :)
Не препоръчвам да се правят промени по файла cshop_items, тъй като при бъдещи ъпдейти всички промени ще заминат. Няма нужда и да се премахват итеми от файла, тъй като ако се изключат чрез конфигурационния файл/меню, все едно не са били добавени и в самия плъгин.

Hook:

Код за потвърждение: Избери целия код

/***********************************************************************************\
*    Hook By P34nut    *    Thanks to Joka69, Chaosphere for testing and stuff!        *
*************************************************************************************
* Commands/ bindings:           
*    +hook to throw the hook  
*    -hook to delete your hook
* 
* Cvars:
*    sv_hook - Turns hook on or off 
*    sv_hookthrowspeed - Throw speed (default: 1000)
*    sv_hookspeed - Speed to hook (default: 300)
*    sv_hookwidth - Width of the hook (default: 32)
*    sv_hooksound - Sounds of the hook on or off (default: 1)
*    sv_hookcolor - The color of the hook 0 is white and 1 is team color (default: 1)
*    sv_hookplayers - If set 1 you can hook on players (default: 0)
*    sv_hookinterrupt - Remove the hook when something comes in its line (default: 0)
*    sv_hookadminonly - Hook for admin only (default: 0)
*    sv_hooksky - If set 1 you can hook in the sky (default: 0)
*    sv_hookopendoors - If set 1 you can open doors with the hook (default: 1)
*    sv_hookbuttons - If set 1 you can use buttons with the hook (default: 0)
*    sv_hookpickweapons - If set 1 you can pickup weapons with the hook (default: 1)
*    sv_hookhostflollow - If set 1 you can make hostages follow you (default 1)
*    sv_hookinstant - Hook doesnt throw (default: 0)
*    sv_hooknoise - adds some noise to the hook line (default: 0)
*    sv_hookmax - Maximun numbers of hooks a player can use in 1 round
*           - 0 for infinitive hooks (default: 0)
*    sv_hookdelay - delay on the start of each round before a player can hook
*                 - 0.0 for no delay (default: 0.0)
*
* ChangeLog:
*    1.0: Release
*    1.5: added cvars:
*        sv_hooknoise
*        sv_hookmax
*        sv_hookdelay
*        public cvar: sv_amxxhookmod
*         added commands:
*        amx_givehook <username>
*        amx_takehook <username>
*
\***********************************************************************************/

// Players admin level
#define ADMINLEVEL ADMIN_SLAY

#include <amxmodx>
#include <amxmisc>
#include <customshop>
#include <fakemeta>
#include <cstrike>
#include <xs>

#define message_begin_f(%1,%2,%3,%4) engfunc(EngFunc_MessageBegin, %1, %2, %3, %4)
#define write_coord_f(%1) engfunc(EngFunc_WriteCoord, %1)

//Cvars
new pHook, pThrowSpeed, pSpeed, pWidth, pSound, pColor
new pInterrupt, pAdmin, pHookSky, pOpenDoors, pPlayers
new pUseButtons, pHostage, pWeapons, pInstant, pHookNoise
new pMaxHooks, pRndStartDelay
// Sprite
new sprBeam

// Players hook entity
new Hook[33]

// MaxPlayers
new gMaxPlayers

// some booleans
new bool:gHooked[33]
new bool:canThrowHook[33]
new bool:rndStarted

// Player Spawn
new bool:gRestart[33] = {false, ...}
new bool:gUpdate[33] = {false, ...}

new gHooksUsed[33] // Used with sv_hookmax
new bool:g_bHookAllowed[33] // Used with sv_hookadminonly
additem ITEM_HOOK

public plugin_init()
{
    register_plugin("Hook", "1.5", "P34nut")
    
    // Hook commands
    register_clcmd("+hook", "make_hook")
    register_clcmd("-hook", "del_hook")
    
    //register_concmd("amx_givehook", "give_hook", ADMINLEVEL, "<Username> - Give somebody access to the hook")
    //register_concmd("amx_takehook", "take_hook", ADMINLEVEL, "<UserName> - Take away somebody his access to the hook")
    
    // Events for roundstart
    register_event("HLTV", "round_bstart", "a", "1=0", "2=0")
    register_logevent("round_estart", 2, "1=Round_Start") 
    
    // Player spawn stuff
    register_event("TextMsg", "Restart", "a", "2=#Game_will_restart_in")
    register_clcmd("fullupdate", "Update") 
    register_event("ResetHUD", "ResetHUD", "b")
    
    // Register cvars
    register_cvar("sv_amxxhookmod",  "version 1.5", FCVAR_SERVER) // yay public cvar
    pHook =     register_cvar("sv_hook", "1")
    pThrowSpeed =     register_cvar("sv_hookthrowspeed", "1000")
    pSpeed =     register_cvar("sv_hookspeed", "300")
    pWidth =     register_cvar("sv_hookwidth", "32")
    pSound =     register_cvar("sv_hooksound", "1")
    pColor =    register_cvar("sv_hookcolor", "1")
    pPlayers =     register_cvar("sv_hookplayers", "0")
    pInterrupt =     register_cvar("sv_hookinterrupt", "0")
    pAdmin =     register_cvar("sv_hookadminonly",  "1")
    pHookSky =     register_cvar("sv_hooksky", "0")
    pOpenDoors =     register_cvar("sv_hookopendoors", "1")
    pUseButtons =     register_cvar("sv_hookusebuttons", "1")
    pHostage =     register_cvar("sv_hookhostflollow", "1")
    pWeapons =    register_cvar("sv_hookpickweapons", "1")
    pInstant =    register_cvar("sv_hookinstant", "0")
    pHookNoise =     register_cvar("sv_hooknoise", "0")
    pMaxHooks =     register_cvar("sv_hookmax", "0")
    pRndStartDelay = register_cvar("sv_hookrndstartdelay", "0.0")
    
    
    // Touch forward
    register_forward(FM_Touch, "fwTouch")
    
    // Get maxplayers
    gMaxPlayers = get_maxplayers()
}

public plugin_precache()
{
    ITEM_HOOK = cshop_register_item("hook", "Hook", 4800, .duration = 4.0)
    
    // Hook Model
    engfunc(EngFunc_PrecacheModel, "models/rpgrocket.mdl")
    
    // Hook Beam
    sprBeam = engfunc(EngFunc_PrecacheModel, "sprites/zbeam4.spr")
    
    // Hook Sounds
    engfunc(EngFunc_PrecacheSound, "weapons/xbow_hit1.wav") // good hit
    engfunc(EngFunc_PrecacheSound, "weapons/xbow_hit2.wav") // wrong hit
    
    engfunc(EngFunc_PrecacheSound, "weapons/xbow_hitbod1.wav") // player hit
    
    engfunc(EngFunc_PrecacheSound, "weapons/xbow_fire1.wav") // deploy
}

public cshop_item_selected(id, iItem)
{
    if(iItem == ITEM_HOOK)
        g_bHookAllowed[id] = true
}

public cshop_item_removed(id, iItem)
{
    if(iItem == ITEM_HOOK)
        g_bHookAllowed[id] = false
}

public make_hook(id)
{
    if (get_pcvar_num(pHook) && is_user_alive(id) && canThrowHook[id] && !gHooked[id]) {        
        if (get_pcvar_num(pAdmin))
        {
            // Only the admins can throw the hook
            // if(is_user_admin(id)) { <- does not work...        
            if (!(get_user_flags(id) & ADMINLEVEL) && !g_bHookAllowed[id])
            {
                // Show a message
                client_print(id, print_chat, "[Hook] %L",id,"NO_ACC_COM")
                console_print(id, "[Hook] %L",id,"NO_ACC_COM")
                
                return PLUGIN_HANDLED
            }
        }
        
        new iMaxHooks = get_pcvar_num(pMaxHooks)
        if (iMaxHooks > 0)
        {
            if (gHooksUsed[id] >= iMaxHooks)
            {
                client_print(id, print_chat, "[Hook] You already used your maximum ammount of hooks")
                statusMsg(id, "[Hook] %d of %d hooks used.", gHooksUsed[id], get_pcvar_num(pMaxHooks))
                
                return PLUGIN_HANDLED
            }
            else 
            {
                gHooksUsed[id]++
                statusMsg(id, "[Hook] %d of %d hooks used.", gHooksUsed[id], get_pcvar_num(pMaxHooks))
            }
        }
        new Float:fDelay = get_pcvar_float(pRndStartDelay)
        if (fDelay > 0 && !rndStarted)
            client_print(id, print_chat, "[Hook] You cannot use the hook in the first %0.0f seconds of the round", fDelay)
            
        throw_hook(id)
    }
    return PLUGIN_HANDLED
}

public del_hook(id)
{
    // Remove players hook
    if (!canThrowHook[id])
        remove_hook(id)
    
    return PLUGIN_HANDLED
}

public round_bstart()
{
    // Round is not started anymore
    if (rndStarted)
        rndStarted = false
    
    // Remove all hooks
    for (new i = 1; i <= gMaxPlayers; i++)
    {
        if (is_user_connected(i))
        {
            if(!canThrowHook[i])
                remove_hook(i)
        }
    }
}

public round_estart()
{
    new Float:fDelay = get_pcvar_float(pRndStartDelay)
    if (fDelay > 0.0)
        set_task(fDelay, "rndStartDelay")
    else
    {
        // Round is started...
        if (!rndStarted)
            rndStarted = true
    }
}

public rndStartDelay()
{
    if (!rndStarted)
        rndStarted = true
}

public Restart()
{
    for (new id = 0; id < gMaxPlayers; id++)
    {
        if (is_user_connected(id))
            gRestart[id] = true
    }
}

public Update(id)
{
    if (!gUpdate[id])
        gUpdate[id] = true
    
    return PLUGIN_CONTINUE
}

public ResetHUD(id)
{
    if (gRestart[id])
    {
        gRestart[id] = false
        return
    }
    if (gUpdate[id])
    {
        gUpdate[id] = false
        return
    }
    if (gHooked[id])
    {
        remove_hook(id)
    }
    if (get_pcvar_num(pMaxHooks) > 0)
    {
        gHooksUsed[id] = 0
        statusMsg(0, "[Hook] 0 of %d hooks used.", get_pcvar_num(pMaxHooks))
    }
}

public fwTouch(ptr, ptd)
{
    if (!pev_valid(ptr))
        return FMRES_IGNORED
    
    new id = pev(ptr, pev_owner)
    
    // Get classname
    static szPtrClass[32]    
    pev(ptr, pev_classname, szPtrClass, charsmax(szPtrClass))
    
    if (equali(szPtrClass, "Hook"))
    {        
        static Float:fOrigin[3]
        pev(ptr, pev_origin, fOrigin)
        
        if (pev_valid(ptd))
        {
            static szPtdClass[32]
            pev(ptd, pev_classname, szPtdClass, charsmax(szPtdClass))
                        
            if (!get_pcvar_num(pPlayers) && /*equali(szPtdClass, "player")*/ is_user_alive(ptd))
            {
                // Hit a player
                if (get_pcvar_num(pSound))
                    emit_sound(ptr, CHAN_STATIC, "weapons/xbow_hitbod1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
                remove_hook(id)
                
                return FMRES_HANDLED
            }
            else if (equali(szPtdClass, "hostage_entity"))
            {
                // Makes an hostage follow
                if (get_pcvar_num(pHostage) && get_user_team(id) == 2)
                {                    
                    //cs_set_hostage_foll(ptd, (cs_get_hostage_foll(ptd) == id) ? 0 : id)
                    // With the use function we have the sounds!
                    dllfunc(DLLFunc_Use, ptd, id)
                }
                if (!get_pcvar_num(pPlayers))
                {
                    if(get_pcvar_num(pSound))
                        emit_sound(ptr, CHAN_STATIC, "weapons/xbow_hitbod1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
                    remove_hook(id)
                }
                return FMRES_HANDLED
            }
            else if (get_pcvar_num(pOpenDoors) && equali(szPtdClass, "func_door") || equali(szPtdClass, "func_door_rotating"))
            {
                // Open doors
                // Double doors tested in de_nuke and de_wallmart
                static szTargetName[32]
                pev(ptd, pev_targetname, szTargetName, charsmax(szTargetName))
                if (strlen(szTargetName) > 0)
                {    
                    static ent
                    while ((ent = engfunc(EngFunc_FindEntityByString, ent, "target", szTargetName)) > 0)
                    {
                        static szEntClass[32]
                        pev(ent, pev_classname, szEntClass, charsmax(szEntClass))
                        
                        if (equali(szEntClass, "trigger_multiple"))
                        {
                            dllfunc(DLLFunc_Touch, ent, id)
                            goto stopdoors // No need to touch anymore
                        }
                    }
                }
                
                // No double doors.. just touch it
                dllfunc(DLLFunc_Touch, ptd, id)
stopdoors:                
            }
            else if (get_pcvar_num(pUseButtons) && equali(szPtdClass, "func_button"))
            {
                if (pev(ptd, pev_spawnflags) & SF_BUTTON_TOUCH_ONLY)
                    dllfunc(DLLFunc_Touch, ptd, id) // Touch only
                else            
                    dllfunc(DLLFunc_Use, ptd, id) // Use Buttons            
            }
        }
        
        // If cvar sv_hooksky is 0 and hook is in the sky remove it!
        new iContents = engfunc(EngFunc_PointContents, fOrigin)
        if (!get_pcvar_num(pHookSky) && iContents == CONTENTS_SKY)
        {
            if(get_pcvar_num(pSound))
                emit_sound(ptr, CHAN_STATIC, "weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
            remove_hook(id)
            return FMRES_HANDLED
        }
        
        // Pick up weapons..
        if (get_pcvar_num(pWeapons))
        {
            static ent
            while ((ent = engfunc(EngFunc_FindEntityInSphere, ent, fOrigin, 15.0)) > 0)
            {
                static szentClass[32]
                pev(ent, pev_classname, szentClass, charsmax(szentClass))
                
                if (equali(szentClass, "weaponbox") || equali(szentClass, "armoury_entity"))
                    dllfunc(DLLFunc_Touch, ent, id)
            }
        }
        
        // Player is now hooked
        gHooked[id] = true
        // Play sound
        if (get_pcvar_num(pSound))
            emit_sound(ptr, CHAN_STATIC, "weapons/xbow_hit1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
        
        // Make some sparks :D
        message_begin_f(MSG_BROADCAST, SVC_TEMPENTITY, fOrigin, 0)
        write_byte(9) // TE_SPARKS
        write_coord_f(fOrigin[0]) // Origin
        write_coord_f(fOrigin[1])
        write_coord_f(fOrigin[2])
        message_end()        
        
        // Stop the hook from moving
        set_pev(ptr, pev_velocity, Float:{0.0, 0.0, 0.0})
        set_pev(ptr, pev_movetype, MOVETYPE_NONE)
        
        //Task
        if (!task_exists(id + 856))
        { 
            static TaskData[2]
            TaskData[0] = id
            TaskData[1] = ptr
            gotohook(TaskData)
            
            set_task(0.1, "gotohook", id + 856, TaskData, 2, "b")
        }
    }
    return FMRES_HANDLED
}

public hookthink(param[])
{
    new id = param[0]
    new HookEnt = param[1]
    
    if (!is_user_alive(id) || !pev_valid(HookEnt) || !pev_valid(id))
    {
        remove_task(id + 890)
        return PLUGIN_HANDLED
    }
    
    
    static Float:entOrigin[3]
    pev(HookEnt, pev_origin, entOrigin)
    
    // If user is behind a box or something.. remove it
    // only works if sv_interrupt 1 or higher is
    if (get_pcvar_num(pInterrupt) && rndStarted)
    {
        static Float:usrOrigin[3]
        pev(id, pev_origin, usrOrigin)
        
        static tr
        engfunc(EngFunc_TraceLine, usrOrigin, entOrigin, 1, -1, tr)
        
        static Float:fFraction
        get_tr2(tr, TR_flFraction, fFraction)
        
        if (fFraction != 1.0)
            remove_hook(id)
    }
    
    // If cvar sv_hooksky is 0 and hook is in the sky remove it!
    new iContents = engfunc(EngFunc_PointContents, entOrigin)
    if (!get_pcvar_num(pHookSky) && iContents == CONTENTS_SKY)
    {
        if(get_pcvar_num(pSound))
            emit_sound(HookEnt, CHAN_STATIC, "weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
        remove_hook(id)
    }
    
    return PLUGIN_HANDLED
}

public gotohook(param[])
{
    new id = param[0]
    new HookEnt = param[1]

    if (!is_user_alive(id) || !pev_valid(HookEnt) || !pev_valid(id))
    {
        remove_task(id + 856)
        return PLUGIN_HANDLED
    }
    // If the round isnt started velocity is just 0
    static Float:fVelocity[3]
    fVelocity = Float:{0.0, 0.0, 1.0}
    
    // If the round is started and player is hooked we can set the user velocity!
    if (rndStarted && gHooked[id])
    {
        static Float:fHookOrigin[3], Float:fUsrOrigin[3], Float:fDist
        pev(HookEnt, pev_origin, fHookOrigin)
        pev(id, pev_origin, fUsrOrigin)
        
        fDist = vector_distance(fHookOrigin, fUsrOrigin)
        
        if (fDist >= 30.0)
        {
            new Float:fSpeed = get_pcvar_float(pSpeed)
            
            fSpeed *= 0.52
            
            fVelocity[0] = (fHookOrigin[0] - fUsrOrigin[0]) * (2.0 * fSpeed) / fDist
            fVelocity[1] = (fHookOrigin[1] - fUsrOrigin[1]) * (2.0 * fSpeed) / fDist
            fVelocity[2] = (fHookOrigin[2] - fUsrOrigin[2]) * (2.0 * fSpeed) / fDist
        }
    }
    // Set the velocity
    set_pev(id, pev_velocity, fVelocity)
    
    return PLUGIN_HANDLED
}
        
public throw_hook(id)
{
    // Get origin and angle for the hook
    static Float:fOrigin[3], Float:fAngle[3],Float:fvAngle[3]
    static Float:fStart[3]
    pev(id, pev_origin, fOrigin)
    
    pev(id, pev_angles, fAngle)
    pev(id, pev_v_angle, fvAngle)
    
    if (get_pcvar_num(pInstant))
    {
        get_user_hitpoint(id, fStart)
        
        if (engfunc(EngFunc_PointContents, fStart) != CONTENTS_SKY)
        {
            static Float:fSize[3]
            pev(id, pev_size, fSize)
            
            fOrigin[0] = fStart[0] + floatcos(fvAngle[1], degrees) * (-10.0 + fSize[0])
            fOrigin[1] = fStart[1] + floatsin(fvAngle[1], degrees) * (-10.0 + fSize[1])
            fOrigin[2] = fStart[2]
        }
        else
            xs_vec_copy(fStart, fOrigin)
    }

    
    // Make the hook!
    Hook[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
        
    if (Hook[id])
    {
        // Player cant throw hook now
        canThrowHook[id] = false
        
        static const Float:fMins[3] = {-2.840000, -14.180000, -2.840000}
        static const Float:fMaxs[3] = {2.840000, 0.020000, 2.840000}
        
        //Set some Data
        set_pev(Hook[id], pev_classname, "Hook")
        
        engfunc(EngFunc_SetModel, Hook[id], "models/rpgrocket.mdl")
        engfunc(EngFunc_SetOrigin, Hook[id], fOrigin)
        engfunc(EngFunc_SetSize, Hook[id], fMins, fMaxs)        
        
        //set_pev(Hook[id], pev_mins, fMins)
        //set_pev(Hook[id], pev_maxs, fMaxs)
        
        set_pev(Hook[id], pev_angles, fAngle)
        
        set_pev(Hook[id], pev_solid, 2)
        set_pev(Hook[id], pev_movetype, 5)
        set_pev(Hook[id], pev_owner, id)
        
        //Set hook velocity
        static Float:fForward[3], Float:Velocity[3]
        new Float:fSpeed = get_pcvar_float(pThrowSpeed)
        
        engfunc(EngFunc_MakeVectors, fvAngle)
        global_get(glb_v_forward, fForward)
        
        Velocity[0] = fForward[0] * fSpeed
        Velocity[1] = fForward[1] * fSpeed
        Velocity[2] = fForward[2] * fSpeed
        
        set_pev(Hook[id], pev_velocity, Velocity)

        // Make the line between Hook and Player
        message_begin_f(MSG_BROADCAST, SVC_TEMPENTITY, Float:{0.0, 0.0, 0.0}, 0)
        if (get_pcvar_num(pInstant))
        {
            write_byte(1) // TE_BEAMPOINT
            write_short(id) // Startent
            write_coord_f(fStart[0]) // End pos
            write_coord_f(fStart[1])
            write_coord_f(fStart[2])
        }
        else
        {
            write_byte(8) // TE_BEAMENTS
            write_short(id) // Start Ent
            write_short(Hook[id]) // End Ent
        }
        write_short(sprBeam) // Sprite
        write_byte(1) // StartFrame
        write_byte(1) // FrameRate
        write_byte(600) // Life
        write_byte(get_pcvar_num(pWidth)) // Width
        write_byte(get_pcvar_num(pHookNoise)) // Noise
        // Colors now
        if (get_pcvar_num(pColor))
        {
            if (get_user_team(id) == 1) // Terrorist
            {
                write_byte(255) // R
                write_byte(0)    // G
                write_byte(0)    // B
            }
            #if defined _cstrike_included
            else if(cs_get_user_vip(id)) // vip for cstrike
            {
                write_byte(0)    // R
                write_byte(255)    // G
                write_byte(0)    // B
            }
            #endif // _cstrike_included
            else if(get_user_team(id) == 2) // CT
            {
                write_byte(0)    // R
                write_byte(0)    // G
                write_byte(255)    // B
            }
            else
            {
                write_byte(255) // R
                write_byte(255) // G
                write_byte(255) // B
            }
        }
        else
        {
            write_byte(255) // R
            write_byte(255) // G
            write_byte(255) // B
        }
        write_byte(192) // Brightness
        write_byte(0) // Scroll speed
        message_end()
        
        if (get_pcvar_num(pSound) && !get_pcvar_num(pInstant))
            emit_sound(id, CHAN_BODY, "weapons/xbow_fire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_HIGH)
        
        static TaskData[2]
        TaskData[0] = id
        TaskData[1] = Hook[id]
        
        set_task(0.1, "hookthink", id + 890, TaskData, 2, "b")
    }
    else
        client_print(id, print_chat, "Can't create hook")
}

public remove_hook(id)
{
    //Player can now throw hooks
    canThrowHook[id] = true
    
    // Remove the hook if it is valid
    if (pev_valid(Hook[id]))
        engfunc(EngFunc_RemoveEntity, Hook[id])
    Hook[id] = 0
    
    // Remove the line between user and hook
    if (is_user_connected(id))
    {
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0,0,0}, id)
        write_byte(99) // TE_KILLBEAM
        write_short(id) // entity
        message_end()
    }
    
    // Player is not hooked anymore
    gHooked[id] = false
    return 1
}

public give_hook(id, level, cid)
{
    if (!cmd_access(id ,level, cid, 1))
        return PLUGIN_HANDLED
        
    if (!get_pcvar_num(pAdmin))
    {
        console_print(id, "[Hook] Admin only mode is currently disabled")
        return PLUGIN_HANDLED
    }
    
    static szTarget[32]
    read_argv(1, szTarget, charsmax(szTarget))
    
    new iUsrId = cmd_target(id, szTarget)
    
    if (!iUsrId)
        return PLUGIN_HANDLED
        
    static szName[32]
    get_user_name(iUsrId, szName, charsmax(szName))
    
    if (!g_bHookAllowed[iUsrId])
    {
        g_bHookAllowed[iUsrId] = true
        
        console_print(id, "[Hook] You gave %s access to the hook", szName)
    }
    else
        console_print(id, "[Hook] %s already have access to the hook", szName)
    
    return PLUGIN_HANDLED
}

public take_hook(id, level, cid)
{
    if (!cmd_access(id ,level, cid, 1))
        return PLUGIN_HANDLED
    
    if (!get_pcvar_num(pAdmin))
    {
        console_print(id, "[Hook] Admin only mode is currently disabled")
        return PLUGIN_HANDLED
    }
        
    static szTarget[32]
    read_argv(1, szTarget, charsmax(szTarget))
    
    new iUsrId = cmd_target(id, szTarget)
    
    if (!iUsrId)
        return PLUGIN_HANDLED
        
    static szName[32]
    get_user_name(iUsrId, szName, charsmax(szName))
    
    if (g_bHookAllowed[iUsrId])
    {
        g_bHookAllowed[iUsrId] = false
        
        console_print(id, "[Hook] You took away %s his access to the hook", szName)
    }
    else
        console_print(id, "[Hook] %s does not have access to the hook", szName)
    
    return PLUGIN_HANDLED
}

// Stock by Chaosphere
stock get_user_hitpoint(id, Float:hOrigin[3])
{
    if (!is_user_alive(id))
        return 0
    
    static Float:fOrigin[3], Float:fvAngle[3], Float:fvOffset[3], Float:fvOrigin[3], Float:feOrigin[3]
    static Float:fTemp[3]
    
    pev(id, pev_origin, fOrigin)
    pev(id, pev_v_angle, fvAngle)
    pev(id, pev_view_ofs, fvOffset)
    
    xs_vec_add(fOrigin, fvOffset, fvOrigin)
    
    engfunc(EngFunc_AngleVectors, fvAngle, feOrigin, fTemp, fTemp)
    
    xs_vec_mul_scalar(feOrigin, 8192.0, feOrigin)
    xs_vec_add(fvOrigin, feOrigin, feOrigin)
    
    static tr
    engfunc(EngFunc_TraceLine, fvOrigin, feOrigin, 0, id, tr)
    get_tr2(tr, TR_vecEndPos, hOrigin)
    //global_get(glb_trace_endpos, hOrigin)
    
    return 1
}

stock statusMsg(id, szMsg[], {Float,_}:...)
{
    static iStatusText
    if (!iStatusText)
        iStatusText = get_user_msgid("StatusText")
    
    static szBuffer[512]
    vformat(szBuffer, charsmax(szBuffer), szMsg, 3)
    
    message_begin((id == 0) ? MSG_ALL : MSG_ONE, iStatusText, _, id)
    write_byte(0) // Unknown
    write_string(szBuffer) // Message
    message_end()
    
    return 1
}
Не е тествано. Ползвах този плъгин, тъй че настройките и всички останали за него неща важат.

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от Unbr3akable » 02 Яну 2017, 20:09

OciXCrom™ написа:Нямаше ли да е по-лесно да сложиш итемите в отделен плъгин? :)
Не препоръчвам да се правят промени по файла cshop_items, тъй като при бъдещи ъпдейти всички промени ще заминат. Няма нужда и да се премахват итеми от файла, тъй като ако се изключат чрез конфигурациония файл/меню, все едно не са били добавени и в самия плъгин.
Да, прав си, наистина е така...

Ето итемите в отделни плъгини:
1. cshop_hegrenade.sma

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fun>

#define PLUGIN_VERSION "1.0"

additem ITEM_HEGRENADE
#define HEGRENADE_ID "hegrenade"
#define HEGRENADE_NAME "HE Grenade"
#define HEGRENADE_PRICE 2000
#define HEGRENADE_LIMIT 3
#define HEGRENADE_AMOUNT 1

public plugin_init()
    register_plugin("Custom Shop: HE Grenade", PLUGIN_VERSION, "OciXCrom")
    
public plugin_precache()
     ITEM_HEGRENADE = cshopRegisterItem(HEGRENADE_ID, HEGRENADE_NAME, HEGRENADE_PRICE, HEGRENADE_LIMIT)
     
public cshopItemBought(id, iItem)
     if(iItem == ITEM_HEGRENADE)        { give_item(id, "weapon_hegrenade"); cs_set_user_bpammo(id, CSW_HEGRENADE, HEGRENADE_AMOUNT); }
2. cshop_nightvision.sma

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fun>

#define PLUGIN_VERSION "1.0"

additem ITEM_NIGHTVISION
#define NIGHTVISION_ID "nightvision"
#define NIGHTVISION_NAME "NightVision"
#define NIGHTVISION_PRICE 5000
#define NIGHTVISION_LIMIT 1

public plugin_init()
     register_plugin("Custom Shop: Night Vision", PLUGIN_VERSION, "OciXCrom")
     
public plugin_precache()
     ITEM_NIGHTVISION = cshopRegisterItem(NIGHTVISION_ID, NIGHTVISION_NAME, NIGHTVISION_PRICE, NIGHTVISION_LIMIT)
     
public cshopItemBought(id, iItem)
     if(iItem == ITEM_NIGHTVISION)        { cs_set_user_nvg(id, 1); }
     
public public cshopItemRemoved(id, iItem)
     if(iItem == ITEM_NIGHTVISION)        { cs_set_user_nvg(id, 0); }
3. cshop_deagle.sma

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <customshop>
#include <fun>

#define PLUGIN_VERSION "1.0"

additem ITEM_DEAGLE
#define DEAGLE_ID "deagle"
#define DEAGLE_NAME "Deagle (7 bullets)"
#define DEAGLE_PRICE 7000
#define DEAGLE_LIMIT 1

public plugin_init()
     register_plugin("Custom Shop: Deagle", PLUGIN_VERSION, "OciXCrom")
     
public plugin_precache()
     ITEM_DEAGLE = cshopRegisterItem(DEAGLE_ID, DEAGLE_NAME, DEAGLE_PRICE, DEAGLE_LIMIT)
     
public cshopItemBought(id, iItem)
     if(iItem == ITEM_DEAGLE)            { give_item(id, "weapon_deagle"); }
След компилирането и поставянето в папката plugins, влизаш в addons/amxmodx/configs/plugin_cshop.ini и там пишеш името на плъгина и .amxx накрая.

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от ElitePower » 02 Яну 2017, 21:39

cshop_items.sma:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fun>
#include <hamsandwich>

#define PLUGIN_VERSION "1.2"
#define m_pActiveItem 373

/*
    * This plugin contains all the default items Custom Shop has to offer.
    * Feel free to change anything you like below.
    * Items can be disabled in plugin_precache(), not from here.
*/

additem ITEM_HEALTH
#define HEALTH_ID "health"
#define HEALTH_NAME "+100 Health Points"
#define HEALTH_PRICE 1500
#define HEALTH_LIMIT 5
#define HEALTH_AMOUNT 100
#define HEALTH_SOUND "items/smallmedkit1.wav"

additem ITEM_ARMOR
#define ARMOR_ID "armor"
#define ARMOR_NAME "+100 Armor Points"
#define ARMOR_PRICE 1000
#define ARMOR_LIMIT 8
#define ARMOR_AMOUNT 100
#define ARMOR_SOUND "items/ammopickup2.wav"

additem ITEM_HEGRENADE
#define HEGRENADE_ID "hegrenade"
#define HEGRENADE_NAME "HE Grenade"
#define HEGRENADE_PRICE 2000
#define HEGRENADE_LIMIT 3
#define HEGRENADE_AMOUNT 1

additem ITEM_UNLCLIP
#define UNLCLIP_ID "unlclip"
#define UNLCLIP_NAME "Unlimited Clip"
#define UNLCLIP_PRICE 3000
#define UNLCLIP_LIMIT 3
#define UNLCLIP_BPAMMO 97280
new const UNLCLIP_BADWEAPONS[] = { CSW_KNIFE, CSW_C4, CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE }

additem ITEM_UNLAMMO
#define UNLAMMO_ID "unlammo"
#define UNLAMMO_NAME "Unlimited Ammo"
#define UNLAMMO_PRICE 200
#define UNLAMMO_LIMIT 5
#define UNLAMMO_BPAMMO 99999
new const UNLAMMO_BADWEAPONS[] = { CSW_KNIFE, CSW_C4, CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE }

additem ITEM_BOMBER
#define BOMBER_ID "bomber"
#define BOMBER_NAME "Bomber"
#define BOMBER_PRICE 1600
#define BOMBER_LIMIT 3
#define BOMBER_AMOUNT 20
#define BOMBER_SOUND "x/x_pain2.wav"

additem ITEM_SILENTSTEPS
#define SILENTSTEPS_ID "silentsteps"
#define SILENTSTEPS_NAME "Silent Footsteps"
#define SILENTSTEPS_PRICE 3000
#define SILENTSTEPS_LIMIT 1

additem ITEM_GODMODE
#define GODMODE_ID "godmode"
#define GODMODE_NAME "Godmode (20 Seconds)"
#define GODMODE_PRICE 16000
#define GODMODE_LIMIT 1
#define GODMODE_SOUND "misc/stinger12.wav"
#define GODMODE_TIME 20.0

additem ITEM_SPEED
#define SPEED_ID "speed"
#define SPEED_NAME "Faster Speed"
#define SPEED_PRICE 4300
#define SPEED_LIMIT 1
#define SPEED_AMOUNT 300.0
#define SPEED_SOUND "misc/bipbip.wav"
new bool:g_blSpeed[33]

additem ITEM_GRAVITY
#define GRAVITY_ID "gravity"
#define GRAVITY_NAME "Low Gravity"
#define GRAVITY_PRICE 2800
#define GRAVITY_LIMIT 1
#define GRAVITY_AMOUNT 0.5

additem ITEM_NIGHTVISION
#define NIGHTVISION_ID "nightvision"
#define NIGHTVISION_NAME "NightVision"
#define NIGHTVISION_PRICE 5000
#define NIGHTVISION_LIMIT 1

additem ITEM_DEAGLE
#define DEAGLE_ID "deagle"
#define DEAGLE_NAME "Deagle (7 bullets)"
#define DEAGLE_PRICE 7000
#define DEAGLE_LIMIT 1

additem ITEM_CHAMELEON
#define CHAMELEON_ID "chameleon"
#define CHAMELEON_NAME "Chameleon"
#define CHAMELEON_PRICE 9000
#define CHAMELEON_LIMIT 1
new const CHAMELEON_MODELS[][][] = { { "gign", "gsg9", "sas", "urban" }, { "arctic", "guerilla", "leet", "terror" } }

additem ITEM_DRUGS
#define DRUGS_ID "drugs"
#define DRUGS_NAME "Drugs (Speed + Health)"
#define DRUGS_PRICE 8000
#define DRUGS_LIMIT 2
#define DRUGS_HEALTH 200
#define DRUGS_SPEED 300.0
#define DRUGS_FOV 180
new bool:g_blDrugs[33]

additem ITEM_TRANSPARENCY
#define TRANSPARENCY_ID "transparency"
#define TRANSPARENCY_NAME "Transparency"
#define TRANSPARENCY_PRICE 2500
#define TRANSPARENCY_LIMIT 1
#define TRANSPARENCY_AMOUNT 75

additem ITEM_INVIS
#define INVIS_ID "invis"
#define INVIS_NAME "Invisibility (15 Seconds)"
#define INVIS_PRICE 16000
#define INVIS_LIMIT 1
#define INVIS_SOUND "hornet/ag_buzz1.wav"
#define INVIS_TIME 15.0
#define INVIS_AMOUNT 0

additem ITEM_DOUBLEDAMAGE
#define DOUBLEDAMAGE_ID "doubledamage"
#define DOUBLEDAMAGE_NAME "Double Damage"
#define DOUBLEDAMAGE_PRICE 10000
#define DOUBLEDAMAGE_LIMIT 1
#define DOUBLEDAMAGE_AMOUNT 2
new bool:g_blDoubleDamage[33]

additem ITEM_HEALTHREGEN
#define HEALTHREGEN_ID "healthregen"
#define HEALTHREGEN_NAME "Health Regeneration"
#define HEALTHREGEN_PRICE 1800
#define HEALTHREGEN_LIMIT 1
#define HEALTHREGEN_SOUND "items/suitchargeok1.wav"
#define HEALTHREGEN_FREQ 0.5
#define HEALTHREGEN_PERSEC 1
#define HEALTHREGEN_MAX 150
#define HEALTHREGEN_TASK 400040
new bool:g_blHealthRegen[33]

additem ITEM_ARMORREGEN
#define ARMORREGEN_ID "armorregen"
#define ARMORREGEN_NAME "Armor Regeneration"
#define ARMORREGEN_PRICE 2000
#define ARMORREGEN_LIMIT 1
#define ARMORREGEN_SOUND "items/suitchargeok1.wav"
#define ARMORREGEN_FREQ 0.5
#define ARMORREGEN_PERSEC 10
#define ARMORREGEN_MAX 150
#define ARMORREGEN_TASK 400140
new bool:g_blArmorRegen[33]

additem ITEM_AWP
#define AWP_ID "awp"
#define AWP_NAME "AWP Sniper"
#define AWP_PRICE 4750
#define AWP_LIMIT 1
#define AWP_BPAMMO 30

new g_iWeapon[33]
new g_msgSetFOV

public plugin_init()
{
    register_plugin("Custom Shop: Default Items", PLUGIN_VERSION, "OciXCrom")
    register_event("CurWeapon", "eventChangeWeapon", "be", "1=1")
    RegisterHam(Ham_TakeDamage, "player", "eventTakeDamage")
    g_msgSetFOV = get_user_msgid("SetFOV")
}

public plugin_precache()
{
    /*
        * Comment a line to disable a specific item (add // in front).
        * Add extra parameters here (example: .team = 1, .flag = "b", .points = 85).
        * You can also rearange the items from this section.
    */
    
    ITEM_HEALTH = cshopRegisterItem(HEALTH_ID, HEALTH_NAME, HEALTH_PRICE, HEALTH_LIMIT, HEALTH_SOUND)
    ITEM_ARMOR = cshopRegisterItem(ARMOR_ID, ARMOR_NAME, ARMOR_PRICE, ARMOR_LIMIT, ARMOR_SOUND)
    ITEM_HEGRENADE = cshopRegisterItem(HEGRENADE_ID, HEGRENADE_NAME, HEGRENADE_PRICE, HEGRENADE_LIMIT)
    //ITEM_BOMBER = cshopRegisterItem(BOMBER_ID, BOMBER_NAME, BOMBER_PRICE, BOMBER_LIMIT, BOMBER_SOUND)
    //ITEM_UNLCLIP = cshopRegisterItem(UNLCLIP_ID, UNLCLIP_NAME, UNLCLIP_PRICE, UNLCLIP_LIMIT)
    //ITEM_UNLAMMO = cshopRegisterItem(UNLAMMO_ID, UNLAMMO_NAME, UNLAMMO_PRICE, UNLAMMO_LIMIT)
    //ITEM_SILENTSTEPS = cshopRegisterItem(SILENTSTEPS_ID, SILENTSTEPS_NAME, SILENTSTEPS_PRICE, SILENTSTEPS_LIMIT)
    ITEM_GODMODE = cshopRegisterItem(GODMODE_ID, GODMODE_NAME, GODMODE_PRICE, GODMODE_LIMIT, GODMODE_SOUND, GODMODE_TIME)
    ITEM_SPEED = cshopRegisterItem(SPEED_ID, SPEED_NAME, SPEED_PRICE, SPEED_LIMIT, SPEED_SOUND)
    ITEM_GRAVITY = cshopRegisterItem(GRAVITY_ID, GRAVITY_NAME, GRAVITY_PRICE, GRAVITY_LIMIT)
    ITEM_NIGHTVISION = cshopRegisterItem(NIGHTVISION_ID, NIGHTVISION_NAME, NIGHTVISION_PRICE, NIGHTVISION_LIMIT)
    ITEM_DEAGLE = cshopRegisterItem(DEAGLE_ID, DEAGLE_NAME, DEAGLE_PRICE, DEAGLE_LIMIT)
    //ITEM_CHAMELEON = cshopRegisterItem(CHAMELEON_ID, CHAMELEON_NAME, CHAMELEON_PRICE, CHAMELEON_LIMIT)
    //ITEM_DRUGS = cshopRegisterItem(DRUGS_ID, DRUGS_NAME, DRUGS_PRICE, DRUGS_LIMIT)
    //ITEM_TRANSPARENCY = cshopRegisterItem(TRANSPARENCY_ID, TRANSPARENCY_NAME, TRANSPARENCY_PRICE, TRANSPARENCY_LIMIT)
    //ITEM_INVIS = cshopRegisterItem(INVIS_ID, INVIS_NAME, INVIS_PRICE, INVIS_LIMIT, INVIS_SOUND, INVIS_TIME)
    //ITEM_DOUBLEDAMAGE = cshopRegisterItem(DOUBLEDAMAGE_ID, DOUBLEDAMAGE_NAME, DOUBLEDAMAGE_PRICE, DOUBLEDAMAGE_LIMIT)
    //ITEM_HEALTHREGEN = cshopRegisterItem(HEALTHREGEN_ID, HEALTHREGEN_NAME, HEALTHREGEN_PRICE, HEALTHREGEN_LIMIT, HEALTHREGEN_SOUND)
    //ITEM_ARMORREGEN = cshopRegisterItem(ARMORREGEN_ID, ARMORREGEN_NAME, ARMORREGEN_PRICE, ARMORREGEN_LIMIT, ARMORREGEN_SOUND)
    //ITEM_AWP = cshopRegisterItem(AWP_ID, AWP_NAME, AWP_PRICE, AWP_LIMIT)
}

public cshopItemBought(id, iItem)
{
    if(iItem == ITEM_HEALTH)             { set_user_health(id, get_user_health(id) + HEALTH_AMOUNT); }
    else if(iItem == ITEM_ARMOR)         { set_user_armor(id, get_user_armor(id) + ARMOR_AMOUNT); }
    else if(iItem == ITEM_HEGRENADE)        { give_item(id, "weapon_hegrenade"); cs_set_user_bpammo(id, CSW_HEGRENADE, HEGRENADE_AMOUNT); }
    else if(iItem == ITEM_BOMBER)         { give_item(id, "weapon_hegrenade"); cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + BOMBER_AMOUNT); }
    else if(iItem == ITEM_UNLCLIP)
    {
        for(new i; i < sizeof(UNLCLIP_BADWEAPONS); i++)
        {
            if(g_iWeapon[id] == UNLCLIP_BADWEAPONS[i])
            {
                ColorChat(id, "You can't activate ^3%s ^1on this weapon!", UNLCLIP_NAME)
                cshopErrorSound(id)
                return DONT_BUY
            }
        }
        
        cs_set_weapon_ammo(get_pdata_cbase(id, m_pActiveItem), UNLCLIP_BPAMMO)
        cs_set_user_bpammo(id, g_iWeapon[id], 0)
    }
    else if(iItem == ITEM_UNLAMMO)
    {
        for(new i; i < sizeof(UNLAMMO_BADWEAPONS); i++)
        {
            if(g_iWeapon[id] == UNLAMMO_BADWEAPONS[i])
            {
                ColorChat(id, "You can't activate ^3%s ^1on this weapon!", UNLAMMO_NAME)
                cshopErrorSound(id)
                return DONT_BUY
            }
        }
        
        cs_set_user_bpammo(id, g_iWeapon[id], UNLAMMO_BPAMMO)
    }
    else if(iItem == ITEM_SILENTSTEPS)         { set_user_footsteps(id); }
    else if(iItem == ITEM_GODMODE)             { set_user_godmode(id, 1); }
    else if(iItem == ITEM_SPEED)             { g_blSpeed[id] = true; set_user_maxspeed(id, SPEED_AMOUNT); }
    else if(iItem == ITEM_GRAVITY)             { set_user_gravity(id, GRAVITY_AMOUNT); }
    else if(iItem == ITEM_NIGHTVISION)        { cs_set_user_nvg(id, 1); }
    else if(iItem == ITEM_DEAGLE)            { give_item(id, "weapon_deagle"); }
    else if(iItem == ITEM_CHAMELEON)         { cs_set_user_model(id, CHAMELEON_MODELS[(get_user_team(id) - 1)][random(4)]); }
    else if(iItem == ITEM_DRUGS)             { g_blDrugs[id] = true; set_user_health(id, get_user_health(id) + DRUGS_HEALTH); set_user_maxspeed(id, DRUGS_SPEED); set_user_drugs(id, DRUGS_FOV); }
    else if(iItem == ITEM_TRANSPARENCY)     { set_user_glow(id, .iAlpha = TRANSPARENCY_AMOUNT); }
    else if(iItem == ITEM_INVIS)             { set_user_glow(id, .iAlpha = INVIS_AMOUNT); }
    else if(iItem == ITEM_DOUBLEDAMAGE)     { g_blDoubleDamage[id] = true; }
    else if(iItem == ITEM_HEALTHREGEN)         { g_blHealthRegen[id] = true; set_task(HEALTHREGEN_FREQ, "healthRegen", id + HEALTHREGEN_TASK, .flags = "b"); }
    else if(iItem == ITEM_ARMORREGEN)         { g_blArmorRegen[id] = true; set_task(ARMORREGEN_FREQ, "armorRegen", id + ARMORREGEN_TASK, .flags = "b"); }
    else if(iItem == ITEM_AWP)                 { give_item(id, "weapon_awp"); cs_set_user_bpammo(id, CSW_AWP, AWP_BPAMMO); }
    
    return BUY_ITEM
}

public cshopItemRemoved(id, iItem)
{
    if(!is_user_alive(id))
        return
        
    if(iItem == ITEM_SILENTSTEPS)             { set_user_footsteps(id, 0); }
    else if(iItem == ITEM_GODMODE)             { set_user_godmode(id); }
    else if(iItem == ITEM_SPEED)             { g_blSpeed[id] = false; eventChangeWeapon(id); }
    else if(iItem == ITEM_GRAVITY)             { set_user_gravity(id); }
    else if(iItem == ITEM_NIGHTVISION)        { cs_set_user_nvg(id, 0); }
    else if(iItem == ITEM_CHAMELEON)         { cs_reset_user_model(id); }
    else if(iItem == ITEM_DRUGS)             { g_blDrugs[id] = false; eventChangeWeapon(id); }
    else if(iItem == ITEM_INVIS)             { remove_user_glow(id); }
    else if(iItem == ITEM_DOUBLEDAMAGE)     { g_blDoubleDamage[id] = false; }
    else if(iItem == ITEM_HEALTHREGEN)         { g_blHealthRegen[id] = false; }
    else if(iItem == ITEM_ARMORREGEN)         { g_blArmorRegen[id] = false; }
}

public eventChangeWeapon(id)
{
    g_iWeapon[id] = get_user_weapon(id)
    
    if(g_blDrugs[id])
        set_user_maxspeed(id, DRUGS_SPEED)
    else if(g_blSpeed[id])
        set_user_maxspeed(id, SPEED_AMOUNT)
}

public eventTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iDamageBits)
    if(is_user_alive(iAttacker) && iAttacker != iVictim)
        if(g_blDoubleDamage[iAttacker])
            SetHamParamFloat(4, flDamage * DOUBLEDAMAGE_AMOUNT)
            
public healthRegen(id)
{
    id -= HEALTHREGEN_TASK
    
    if(!is_user_alive(id) || !g_blHealthRegen[id])
    {
        remove_task(id + HEALTHREGEN_TASK)
        return
    }
        
    new iHealth = get_user_health(id)
    
    if(iHealth == HEALTHREGEN_MAX)
        return
        
    set_user_health(id, clamp(iHealth + HEALTHREGEN_PERSEC, .max = HEALTHREGEN_MAX))
}

public armorRegen(id)
{
    id -= ARMORREGEN_TASK
    
    if(!is_user_alive(id) || g_blArmorRegen[id])
    {
        remove_task(id + ARMORREGEN_TASK)
        return
    }
        
    new iArmor = get_user_armor(id)
    
    if(iArmor == ARMORREGEN_MAX)
        return
        
    set_user_armor(id, clamp(iArmor + ARMORREGEN_PERSEC, .max = ARMORREGEN_MAX))
}

set_user_glow(id, iRed = 0, iGreen = 0, iBlue = 0, iAlpha)
    set_user_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderTransAlpha, iAlpha)
    
remove_user_glow(id)
    set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)

set_user_drugs(id, iAmount)
{
    message_begin(MSG_ONE, g_msgSetFOV, {0, 0, 0}, id)
    write_byte(iAmount)
    message_end()
}
 

Може ли да се направи така, че само да се компилира и да се сложи? Без да се слагат останалите неща от плъгина на OciX..

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Заявка за преработка на DeathRun VIP плъгин

Мнение от Unbr3akable » 02 Яну 2017, 21:42

Какво ти пречи да ги сложиш? Отнема 1 минута...

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 31 госта