Modificare plugin
Posted: 10 Jul 2012, 22:13
Salut.De curand am bagat pe sv pluginul DeathRunVIP,dar are o problema.
In user.ini trebuia adaugat modelul "nume" "parola" "abegi" "a".Am adaugat si asta si am incercat sa ii dau cuiva VipMode pe sv,dar nu a mers.
Am observat ca doar adminii cu acces a(imunity)au acces la meniul Vip.
Puteti va rog frumos sa modificati .sma-ul si sa il faceti in asa fel incat doar cei care ii pun eu in user.ini sa aiba VipMode.
Este in limbar romana meniul deoarece l-am compilat eu(doar meniul)
Acest plugin da celor care ii pun eu un skin fain si la inceput de runda le arata un meniu din care isi aleg ei ce vor.
In user.ini trebuia adaugat modelul "nume" "parola" "abegi" "a".Am adaugat si asta si am incercat sa ii dau cuiva VipMode pe sv,dar nu a mers.
Am observat ca doar adminii cu acces a(imunity)au acces la meniul Vip.
Puteti va rog frumos sa modificati .sma-ul si sa il faceti in asa fel incat doar cei care ii pun eu in user.ini sa aiba VipMode.
Code: Select all
#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 se conecteaza pe 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("\~::*V.I.P Menu*::~" , "Vip_Handler");
menu_additem(gmenu ,"\255 \Viata", "1" , 0);
menu_additem(gmenu ,"\255 \Armura", "2" , 0);
menu_additem(gmenu ,"\Gravitatie", "3" , 0);
menu_additem(gmenu ,"\Viteza", "4" , 0);
menu_additem(gmenu ,"\Deagle cu \7 gloante", "5" , 0);
menu_additem(gmenu ,"\Grenada HE", "6" , 0);
menu_additem(gmenu ,"\ViziuneNocturna (\Pentru mape intunecate\)", "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("\~::*V.I.P Menu*::~" , "VipCt_Handler");
menu_additem(gmenu ,"\255 \Viata", "1" , 0);
menu_additem(gmenu ,"\255 \Armura", "2" , 0);
menu_additem(gmenu ,"\Gravitatie", "3" , 0);
menu_additem(gmenu ,"\Viteza", "4" , 0);
menu_additem(gmenu ,"\Grenada HE", "5" , 0);
menu_additem(gmenu ,"\ViziuneNocturna (\Pentru mape intunecate\)", "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: Ai ales /w255 /gviata!")
}
case 2:
{
client_cmd(id, "spk %s", MENU_OK)
set_user_armor(id, 255)
client_printcolor(player, "/g[V.I.P]/y: Ai ales /w255 /garmura!")
}
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: Ai ales /ggravitatie!")
}
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: Ai ales /gViteza!")
}
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, 7);
}
client_cmd(id, "spk %s", MENU_OK)
client_printcolor(player, "/g[V.I.P]/y: Ai ales deagle cu /g7 /ygloante!")
}
case 6:
{
give_item(id, "weapon_hegrenade")
client_cmd(id, "spk %s", MENU_OK)
client_printcolor(player, "/g[V.I.P]/y: Ai ales /wGrenada /gHE /yExplozibila!")
}
case 7:
{
cs_set_user_nvg(id)
client_cmd(id, "spk %s", MENU_OK)
client_printcolor(player, "/g[V.I.P]/y: Ai ales ViziuneNocturna!")
}
}
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: Ai ales /w255 /gviata!")
}
case 2:
{
client_cmd(id, "spk %s", MENU_OK)
set_user_armor(id, 255)
client_printcolor(player, "/g[V.I.P]/y: Ai ales /w255 /garmura!")
}
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: Ai ales /gGravitatie!")
}
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: Ai ales /gViteza!")
}
case 5:
{
give_item(id, "weapon_hegrenade")
client_cmd(id, "spk %s", MENU_OK)
client_printcolor(player, "/g[V.I.P]/y: Ai ales /wGrenada /gHE /yExplozibila!")
}
case 6:
{
cs_set_user_nvg(id)
client_cmd(id, "spk %s", MENU_OK)
client_printcolor(player, "/g[V.I.P]/y: Ai ales ViziuneNocturna!")
}
}
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 , ".::*Viata: %d -|V.I.P|- Armmura: %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();
}
}
Acest plugin da celor care ii pun eu un skin fain si la inceput de runda le arata un meniu din care isi aleg ei ce vor.