VIP problema
Posted: 2015 Nov 25 17:48
Sveiki , neįšeina padaryt , kai kas nors iš vipų pasirenka pvz gravity , rašo kitiems.
Code: Select all
#include <amxmodx>#include <amxmisc>#include <fun>#include <hamsandwich>#include <cstrike>#include <fakemeta>#include <xs>#include <engine> #define FLAG ADMIN_LEVEL_H new const VIP[] = "DeathRunVip"new const VIP_MODEL[] = "models/player/vip/vip.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_counternew bool: g_model[33]new g_hudsyncnew cvar_gravitynew cvar_speednew 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 prisijunge prie serverio!.", 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("\yDeathrun VIPMENU" , "Vip_Handler"); menu_additem(gmenu ,"\r255 \wGyvybes", "1" , 0); menu_additem(gmenu ,"\r255 \wArmorai", "2" , 0); menu_additem(gmenu ,"\wGravitacija", "3" , 0); menu_additem(gmenu ,"\wGreitis", "4" , 0); menu_additem(gmenu ,"\wDeagle su \r2 kulkom", "5" , 0); menu_additem(gmenu ,"\wHE granata", "6" , 0); menu_additem(gmenu ,"\wNightVision (\rTamsiems mapams\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("\yDeathrun VIPMENU" , "VipCt_Handler"); menu_additem(gmenu ,"\r255 \wGyvybes", "1" , 0); menu_additem(gmenu ,"\r255 \wArmorai", "2" , 0); menu_additem(gmenu ,"\wGravitacija", "3" , 0); menu_additem(gmenu ,"\wGreitis", "4" , 0); menu_additem(gmenu ,"\wHE granata", "5" , 0); menu_additem(gmenu ,"\wNightVision (\rTamsiems mapams\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(); }}