Заявка за преработка на DeathRun VIP плъгин
-
ElitePower
Извън линия - Потребител
- Мнения: 547
- Регистриран на: 13 Окт 2016, 14:20
- Се отблагодари: 7 пъти
- Получена благодарност: 13 пъти
Заявка за преработка на DeathRun VIP плъгин
Става дума за този плъгин. Искам да се премахнат моделите и звуците, да остане само менюто. Менюто да се отваря автоматично при влизане в сървъра на хора с флаг а.
Нещата, които да ги има в менюто:
Health 100
Armor 100
He Grenade
Godmode 20 секунди (да има възможност да се увеличава)
Hook 4 секунди (да има възможност да се увеличава)
Speed
Gravity
NightVision
Deagle (да има 7 патрона без да се презарежда)
Нещата, които да ги има в менюто:
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 плъгин
Поне, който има желание да премахне моделите, да си остане само менюто.
Код за потвърждение: Избери целия код
#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 плъгин
Код за потвърждение: Избери целия код
#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 плъгин
Би ли сложил тези неща, които искам на твоя shop plugin? Трябва ми точен отговор ДА/НЕ.
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Re: Заявка за преработка на DeathRun VIP плъгин
Повечето ги има, за останалите можеш да пуснеш заявка, след като си настроил предишните.
-
Unbr3akable
Извън линия - Потребител
- Мнения: 178
- Регистриран на: 21 Дек 2016, 20:50
- Получена благодарност: 6 пъти
Re: Заявка за преработка на DeathRun VIP плъгин
cshop_items.sma:
Само не успях да направя това с hook-a, иначе другите съм убеден, че работят.
Код за потвърждение: Избери целия код
#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()
}
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Re: Заявка за преработка на DeathRun VIP плъгин
Нямаше ли да е по-лесно да сложиш итемите в отделен плъгин?
Не препоръчвам да се правят промени по файла cshop_items, тъй като при бъдещи ъпдейти всички промени ще заминат. Няма нужда и да се премахват итеми от файла, тъй като ако се изключат чрез конфигурационния файл/меню, все едно не са били добавени и в самия плъгин.
Hook:
Не е тествано. Ползвах този плъгин, тъй че настройките и всички останали за него неща важат.
Не препоръчвам да се правят промени по файла 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 плъгин
Да, прав си, наистина е така...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); }
Код за потвърждение: Избери целия код
#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); }
Код за потвърждение: Избери целия код
#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"); }
-
ElitePower
Извън линия - Потребител
- Мнения: 547
- Регистриран на: 13 Окт 2016, 14:20
- Се отблагодари: 7 пъти
- Получена благодарност: 13 пъти
Re: Заявка за преработка на DeathRun VIP плъгин
cshop_items.sma:
Може ли да се направи така, че само да се компилира и да се сложи? Без да се слагат останалите неща от плъгина на OciX..
Код за потвърждение: Избери целия код
#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 пъти
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 0 Отговори
- 643 Преглеждания
-
Последно мнение от нЗеро
-
- 3 Отговори
- 1779 Преглеждания
-
Последно мнение от mi0
-
- 13 Отговори
- 3915 Преглеждания
-
Последно мнение от devilchy
-
- 1 Отговори
- 655 Преглеждания
-
Последно мнение от OciXCrom
-
- 0 Отговори
- 709 Преглеждания
-
Последно мнение от To.To
-
- 10 Отговори
- 1440 Преглеждания
-
Последно мнение от The Pain
-
- 0 Отговори
- 608 Преглеждания
-
Последно мнение от The Pain
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 31 госта