Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <colorchat>
- #include <cstrike>
- #include <csx>
- #include <engine>
- #include <fakemeta>
- #include <fakemeta_util>
- #include <fun>
- #include <hamsandwich>
- #define DMG_HE (1<<24)
- #define FL_ONGROUND (1<<9)
- #define FL_WATERJUMP (1<<11)
- #define IsPlayer(%1) (1<=%1<=maxPlayers)
- #define g_Buffer 1536
- #define write_coord_f(%1) engfunc(EngFunc_WriteCoord, %1)
- forward amxbans_admin_connect(id);
- new Array:g_Array, CsArmorType:armortype, bool:g_FreezeTime, bool:g_Vip[33], bool:hs[33][33],
- gRound=0, g_Hudmsg, ioid, m_DeathMsg, m_ScoreAttrib,
- m_ScoreInfo, m_ScreenFade, maxPlayers, skoki[33], sprSkull,
- weapon_id;
- new const clips[]={0, 13, -0, 10, 1, 7, 0, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, 0, 50};
- new const g_Langcmd[][]={"say /vips","say_team /vips","say /vipy","say_team /vipy"};
- new const g_Prefix[] = "Vip Chat";
- new const spawnEntString[2][]={
- "info_player_start",
- "info_player_deathmatch"
- };
- public plugin_init(){
- register_plugin("VIP Ultimate", "12.3.0.2", "Kosta");
- RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
- RegisterHam(get_player_resetmaxspeed_func(), "player", "fw_Player_ResetMaxSpeed", 1);
- register_logevent("logevent_round_start", 2, "1=Round_Start");
- register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
- register_forward(FM_CmdStart, "CmdStartPre");
- register_logevent("GameCommencing", 2, "1=Game_Commencing");
- RegisterHam(Ham_TakeDamage, "player", "takeDamage", 0);
- register_event("DeathMsg", "DeathMsg", "a");
- register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
- g_Array=ArrayCreate(64,32);
- for(new i;i<sizeof g_Langcmd;i++){
- register_clcmd(g_Langcmd[i], "ShowVips");
- }
- g_Hudmsg=CreateHudSyncObj();
- register_event("Damage", "damage", "b", "2!0", "3=0", "4!0");
- register_clcmd("say_team", "VipChat");
- register_message(get_user_msgid("SayText"),"handleSayText");
- register_logevent("RoundEnd", 2, "1=Round_End");
- register_event("Damage", "Damage_Wyrzucenie", "b", "2!=0");
- RegisterHam(Ham_Killed, "player", "killedPre", 0);
- RegisterHam(Ham_TraceAttack, "player", "traceAttack", 1);
- }
- public client_authorized(id){
- if(get_user_flags(id) & 524288 == 524288){
- client_authorized_vip(id);
- }
- }
- public client_authorized_vip(id){
- g_Vip[id]=true;
- new g_Name[64];
- get_user_name(id,g_Name,charsmax(g_Name));
- new g_Size = ArraySize(g_Array);
- new szName[64];
- for(new i = 0; i < g_Size; i++){
- ArrayGetString(g_Array, i, szName, charsmax(szName));
- if(equal(g_Name, szName)){
- return 0;
- }
- }
- ArrayPushString(g_Array,g_Name);
- set_hudmessage(24, 190, 220, 0.25, 0.2, 0, 6.0, 6.0);
- ShowSyncHudMsg(0, g_Hudmsg, "Vip %s Je dosao na Server !",g_Name);
- return PLUGIN_CONTINUE;
- }
- public client_disconnect(id){
- if(g_Vip[id]){
- client_disconnect_vip(id);
- }
- }
- public client_disconnect_vip(id){
- g_Vip[id]=false;
- new Name[64];
- get_user_name(id,Name,charsmax(Name));
- new g_Size = ArraySize(g_Array);
- new g_Name[64];
- for(new i = 0; i < g_Size; i++){
- ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
- if(equal(g_Name,Name)){
- ArrayDeleteItem(g_Array,i);
- break;
- }
- }
- }
- public SpawnedEventPre(id){
- if(g_Vip[id]){
- if(is_user_alive(id)){
- SpawnedEventPreVip(id);
- }
- }
- }
- public SpawnedEventPreVip(id){
- set_user_gravity(id, 700.0/800.0);
- set_user_footsteps(id,1);
- skoki[id]=2;
- set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 25);
- set_user_health(id, get_user_health(id)+30);
- cs_set_user_armor(id, min(cs_get_user_armor(id,armortype)+100, 100), armortype);
- new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0);
- give_item(id, "weapon_hegrenade");
- ++henum;
- new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0);
- give_item(id, "weapon_flashbang");
- ++fbnum;
- cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
- new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0);
- give_item(id, "weapon_smokegrenade");
- ++sgnum;
- recharge(id);
- if(gRound>=2){
- cs_set_user_money(id, min(cs_get_user_money(id)+1200, 16000), 1);
- }
- if(get_pdata_cbase(id, 369)==-1){
- give_item(id, "weapon_deagle");
- give_item(id, "ammo_50ae");
- weapon_id=find_ent_by_owner(-1, "weapon_deagle", id);
- if(weapon_id)cs_set_weapon_ammo(weapon_id, 7);
- cs_set_user_bpammo(id, CSW_DEAGLE, 35);
- }
- if(get_pdata_cbase(id, 368)==-1){
- if(gRound<=3){
- if(get_user_team(id)==1){
- give_item(id, "weapon_ak47");
- give_item(id, "ammo_762nato");
- weapon_id=find_ent_by_owner(-1, "weapon_ak47", id);
- if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
- cs_set_user_bpammo(id, CSW_AK47, 90);
- }
- if(get_user_team(id)==2){
- give_item(id, "weapon_m4a1");
- give_item(id, "ammo_556nato");
- weapon_id=find_ent_by_owner(-1, "weapon_m4a1", id);
- if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
- cs_set_user_bpammo(id, CSW_M4A1, 90);
- }
- }
- }
- if(get_user_team(id)==2){
- give_item(id, "item_thighpack");
- }
- }
- Ham:get_player_resetmaxspeed_func(){
- #if defined Ham_CS_Player_ResetMaxSpeed
- return IsHamValid(Ham_CS_Player_ResetMaxSpeed)?Ham_CS_Player_ResetMaxSpeed:Ham_Item_PreFrame;
- #else
- return Ham_Item_PreFrame;
- #endif
- }
- public fw_Player_ResetMaxSpeed(id){
- if(g_Vip[id]){
- if(is_user_alive(id)){
- fw_Player_ResetMaxSpeedVip(id);
- }
- }
- }
- public logevent_round_start(){
- g_FreezeTime=false;
- }
- public event_new_round(){
- g_FreezeTime=true;
- ++gRound;
- }
- public fw_Player_ResetMaxSpeedVip(id){
- if(!g_FreezeTime){
- set_user_maxspeed(id,get_user_maxspeed(id) + 20);
- }
- }
- public CmdStartPre(id, uc_handle){
- if(g_Vip[id]){
- if(is_user_alive(id)){
- CmdStartPreVip(id, uc_handle);
- }
- }
- }
- public CmdStartPreVip(id, uc_handle){
- new flags = pev(id, pev_flags);
- if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]>0){
- --skoki[id];
- new Float:velocity[3];
- pev(id, pev_velocity,velocity);
- velocity[2] = random_float(265.0,285.0);
- set_pev(id,pev_velocity,velocity);
- } else if(flags & FL_ONGROUND && skoki[id]!=-1){
- skoki[id] = 2;
- }
- }
- public GameCommencing(){
- gRound=0;
- }
- public recharge(id){
- new wid=get_user_weapon(id);
- if(wid){
- new weaponname[32], weid;
- get_weaponname(wid, weaponname, 31);
- weid=find_ent_by_owner(-1, weaponname, id);
- if(weid){
- cs_set_weapon_ammo(weid, clips[wid]);
- }
- }
- }
- public plugin_cfg(){
- maxPlayers=get_maxplayers();
- m_ScreenFade=get_user_msgid("ScreenFade");
- m_DeathMsg=get_user_msgid("DeathMsg");
- m_ScoreAttrib=get_user_msgid("ScoreAttrib");
- m_ScoreInfo=get_user_msgid("ScoreInfo");
- }
- public takeDamage(this, idinflictor, idattacker, Float:damage, damagebits){
- if(((IsPlayer(idattacker) && is_user_connected(idattacker) && g_Vip[idattacker] && (ioid=idattacker)) ||
- (ioid=pev(idinflictor, pev_owner) && IsPlayer(ioid) && is_user_connected(ioid) && g_Vip[ioid]))){
- damage*=(100+50)/100;
- if(damagebits & DMG_HE){
- damage*=(100+10)/100;
- }
- if(damagebits & DMG_BULLET){
- if(get_user_weapon(ioid)==CSW_DEAGLE){
- damage*=(100+50)/100;
- }
- if(get_user_weapon(ioid)==CSW_AK47){
- if(gRound<=3){
- if(get_user_team(ioid)==1){
- damage*=(100+10)/100;
- }
- }
- }
- if(get_user_weapon(ioid)==CSW_M4A1){
- if(gRound<=3){
- if(get_user_team(ioid)==2){
- damage*=(100+10)/100;
- }
- }
- }
- }
- }
- SetHamParamFloat(4, damage);
- return HAM_HANDLED;
- }
- public DeathMsg(){
- new killer=read_data(1);
- new victim=read_data(2);
- if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){
- DeathMsgVip(killer,victim,read_data(3));
- }
- }
- public DeathMsgVip(kid,vid,hs){
- set_user_health(kid, min(get_user_health(kid)+(hs?15:10),130));
- cs_set_user_money(kid, cs_get_user_money(kid)+(hs?1000:700));
- recharge(kid);
- }
- public VipStatus(){
- new id=get_msg_arg_int(1);
- if(is_user_alive(id) && g_Vip[id]){
- set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
- }
- }
- public ShowVips(id){
- new g_Name[64],g_Message[192];
- new g_Size=ArraySize(g_Array);
- for(new i = 0; i < g_Size; i++){
- ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
- add(g_Message, charsmax(g_Message), g_Name);
- if(i == g_Size - 1){
- add(g_Message, charsmax(g_Message), ".");
- }
- else{
- add(g_Message, charsmax(g_Message), ", ");
- }
- }
- ColorChat(id,GREEN,"^x03Vipy ^x04na ^x03serwerze: ^x04%s", g_Message);
- ShowVipsMotd(id);
- return PLUGIN_CONTINUE;
- }
- public ShowVipsMotd(id){
- new Data[g_Buffer],Len,g_Name[64];
- Len = formatex(Data[Len], g_Buffer - Len, "<html><body bgcolor=Black><br>");
- Len += formatex(Data[Len], g_Buffer - Len, "<center><table frame=^"border^" width=^"600^" cellspacing=^"0^" bordercolor=#4A4344 style=^"color:#56A5EC;text-align:center;^">");
- Len += formatex(Data[Len], g_Buffer- Len, "<tr><td><b>#</b></td><td><b>Nick</b></td></td></tr>");
- new g_Size=ArraySize(g_Array);
- for(new i = 0; i < g_Size; i++){
- ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
- Len += formatex(Data[Len], g_Buffer - Len, "<tr>");
- Len += formatex(Data[Len], g_Buffer - Len, "<td><font color=Red>%d</font></td>", i + 1);
- Len += formatex(Data[Len], g_Buffer - Len, "<td>%s</td>", g_Name);
- Len += formatex(Data[Len], g_Buffer - Len, "</tr>");
- }
- Len += formatex(Data[Len],g_Buffer - Len,"</center></body></html>");
- show_motd(id, Data, "Vipy Online");
- }
- public client_infochanged(id){
- if(g_Vip[id]){
- new szName[64];
- get_user_info(id,"name",szName,charsmax(szName));
- new Name[64];
- get_user_name(id,Name,charsmax(Name));
- if(!equal(szName,Name)){
- ArrayPushString(g_Array,szName);
- new g_Size=ArraySize(g_Array);
- new g_Name[64];
- for(new i = 0; i < g_Size; i++){
- ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
- if(equal(g_Name,Name)){
- ArrayDeleteItem(g_Array,i);
- break;
- }
- }
- }
- }
- }
- public plugin_end(){
- ArrayDestroy(g_Array);
- }
- public damage(id){
- new attacker=get_user_attacker(id);
- new damage=read_data(2);
- if(g_Vip[id]){
- set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1);
- ShowSyncHudMsg(id, g_Hudmsg, "%i^n", damage);
- }
- if(is_user_connected(attacker) && g_Vip[attacker]){
- set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1);
- ShowSyncHudMsg(attacker, g_Hudmsg, "%i^n", damage);
- }
- }
- public VipChat(id){
- if(g_Vip[id]){
- new g_Msg[256],
- g_Text[256];
- read_args(g_Msg,charsmax(g_Msg));
- remove_quotes(g_Msg);
- if(g_Msg[0] == '*' && g_Msg[1]){
- new g_Name[64];
- get_user_name(id,g_Name,charsmax(g_Name));
- formatex(g_Text,charsmax(g_Text),"^x01(%s) ^x03%s : ^x04%s",g_Prefix, g_Name, g_Msg[1]);
- for(new i=1;i<33;i++){
- if(is_user_connected(i) && g_Vip[i])
- ColorChat(i, GREEN, "%s", g_Text);
- }
- return PLUGIN_HANDLED_MAIN;
- }
- }
- return PLUGIN_CONTINUE;
- }
- public handleSayText(msgId,msgDest,msgEnt){
- new id = get_msg_arg_int(1);
- if(is_user_connected(id) && g_Vip[id]){
- new szTmp[256],szTmp2[256];
- get_msg_arg_string(2,szTmp, charsmax(szTmp))
- new szPrefix[64] = "^x04[VIP]";
- if(!equal(szTmp,"#Cstrike_Chat_All")){
- add(szTmp2,charsmax(szTmp2),szPrefix);
- add(szTmp2,charsmax(szTmp2)," ");
- add(szTmp2,charsmax(szTmp2),szTmp);
- }
- else{
- add(szTmp2,charsmax(szTmp2),szPrefix);
- add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
- }
- set_msg_arg_string(2,szTmp2);
- }
- return PLUGIN_CONTINUE;
- }
- public bomb_planted(id){
- if(is_user_alive(id) && g_Vip[id]){
- cs_set_user_money(id,cs_get_user_money(id) + 900);
- }
- }
- public bomb_defused(id){
- if(is_user_alive(id) && g_Vip[id]){
- cs_set_user_money(id,cs_get_user_money(id) + 900);
- }
- }
- public RoundEnd(){
- for(new i = 1; i <= maxPlayers; i++){
- if(is_user_alive(i) && g_Vip[i]){
- cs_set_user_money(i,cs_get_user_money(i) + 900);
- }
- }
- }
- public client_PreThink(id){
- if(g_Vip[id] && is_user_alive(id)){
- client_PreThinkVip(id);
- }
- }
- public client_PreThinkVip(id){
- entity_set_float(id, EV_FL_fuser2, 0.0);
- if(entity_get_int(id, EV_INT_button) & 2){
- new flags = entity_get_int(id, EV_INT_flags);
- if(flags & FL_WATERJUMP || entity_get_int(id, EV_INT_waterlevel) >= 2 || !(flags & FL_ONGROUND)){
- return PLUGIN_CONTINUE;
- }
- new Float:velocity[3];
- entity_get_vector(id, EV_VEC_velocity, velocity);
- velocity[2] += 250.0;
- entity_set_vector(id, EV_VEC_velocity, velocity);
- entity_set_int(id, EV_INT_gaitsequence, 6);
- }
- return PLUGIN_CONTINUE;
- }
- public Damage_Wyrzucenie(vid){
- new aid=get_user_attacker(vid);
- if(is_user_connected(aid) && is_user_alive(vid) && g_Vip[aid] && get_user_team(aid)!=get_user_team(vid) && random(100)<5){
- Damage_Wyrzucenie_Vip(aid, vid);
- }
- }
- public Damage_Wyrzucenie_Vip(aid, vid){
- if(gRound<=1){
- client_cmd(vid, "drop");
- }
- }
- public traceAttack(vid, aid, Float:dmg, Float:dir[3], ptr, dmgbits){
- if(IsPlayer(aid)){
- hs[aid][vid]=bool:(get_tr2(ptr, TR_iHitgroup)==1);
- }
- }
- public plugin_precache(){
- sprSkull=precache_model("sprites/skull.spr");
- }
- public screen_flash(id, red, green, blue, alpha){
- message_begin(MSG_ONE_UNRELIABLE, m_ScreenFade, _, id);
- write_short(1<<12);
- write_short(1<<12);
- write_short(1<<12);
- write_byte(red);
- write_byte(green);
- write_byte(blue);
- write_byte(alpha);
- message_end();
- }
- public find_free_spawn(iTeamNumber, Float:spawnOrigin[3], Float:spawnAngle[3]){
- new iSpawn;
- if(iTeamNumber==2)
- iSpawn=0;
- else
- iSpawn=1;
- const maxSpawns=128;
- new spawnPoints[maxSpawns], bool:spawnChecked[maxSpawns], spawnpoint, spawnnum;
- new ent=-1, spawnsFound=0;
- while((ent=fm_find_ent_by_class(ent,spawnEntString[iSpawn])) && spawnsFound<maxSpawns)
- spawnPoints[spawnsFound++]=ent;
- new Float:vicinity = 100.0; //(32x32x96)
- new i, entList[1];
- for(i=0; i<maxSpawns; i++)
- spawnChecked[i]=false;
- // Loop through all the spawn points
- i=0;
- while(i++<spawnsFound*10){
- spawnnum=random(spawnsFound);
- spawnpoint=spawnPoints[spawnnum];
- if(spawnpoint && !spawnChecked[spawnnum]){
- //don't check this spawn point again
- spawnChecked[spawnnum]=true;
- // Get the origin of the spawn point
- pev(spawnpoint, pev_origin, spawnOrigin);
- // Determine if something is in this near the spawn point
- if(!fm_find_sphere_class(0, "player", vicinity, entList, 1, spawnOrigin)){
- // If there is nothing, return the angles and spawnpoint
- pev(spawnpoint, pev_angles, spawnAngle);
- return spawnpoint;
- }
- }
- }
- return 0;
- }
- stock fm_find_sphere_class(ent, const _classname[], Float:radius, entlist[], maxents, Float:origin[3]={0.0,0.0,0.0}){
- if( pev_valid(ent) )
- pev( ent, pev_origin, origin );
- new tempent, tempclass[32], entsfound;
- while( (tempent = fm_find_ent_in_sphere(tempent, origin, radius) ) && entsfound < maxents ){
- if( pev_valid(tempent) ){
- pev(tempent, pev_classname, tempclass, 31);
- if( equal( _classname, tempclass ) )
- entlist[entsfound++] = tempent;
- }
- }
- return entsfound;
- }
- public teleport_to_own_spawn(data[]){
- new id=data[0];
- new origin[3], Float:fl_origin[3];
- new Float:angle[3], Float:fOrigin[3];
- pev(id, pev_origin, fOrigin);
- fOrigin[2]+=35.0;
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_SPRITE);
- write_coord_f(fOrigin[0]);
- write_coord_f(fOrigin[1]);
- write_coord_f(fOrigin[2]);
- write_short(sprSkull);
- write_byte(20);
- write_byte(255);
- message_end();
- find_free_spawn(get_user_team(id), fl_origin, angle);
- FVecIVec(fl_origin, origin);
- set_user_origin(id, origin);
- set_pev(id, pev_angles, angle);
- }
- public remove_godmode(data[]){
- set_user_godmode(data[0]);
- }
- public recharge0(data[]){
- recharge(data[0]);
- }
- public do_deathmsg(iKiller, iVictim, iHS, const szWeapon[]){
- message_begin(MSG_BROADCAST, m_DeathMsg);
- write_byte(iKiller);
- write_byte(iVictim);
- write_byte(iHS);
- write_string(szWeapon);
- message_end();
- }
- public killedPre(id, kid){
- if(g_Vip[id] && random(100)<5){
- if(gRound<=1){
- ExecuteHam(Ham_AddPoints, kid, 1, true);
- screen_flash(id, 255, 0, 0, 100);
- set_user_health(id, 100);
- set_user_godmode(id, 1);
- new data[1];
- data[0]=id;
- set_task(0.1, "teleport_to_own_spawn", _, data, 1);
- set_task(0.55, "recharge0", _, data, 1);
- set_task(1.0, "remove_godmode", _, data, 1);
- new bool:suicide;
- if(IsPlayer(kid)){
- if(id==kid){
- suicide=true;
- do_deathmsg(id, id, 0, "suicide");
- } else {
- if(get_user_team(kid)!=get_user_team(id)){
- ExecuteHam(Ham_AddPoints, kid, 1, true);
- }
- new szWeapon[24];
- get_weaponname(get_user_weapon(kid), szWeapon, 23);
- replace(szWeapon, 23, "weapon_", "");
- do_deathmsg(kid, id, hs[kid][id], szWeapon);
- }
- } else {
- suicide=true;
- do_deathmsg(id, id, 0, "suicide");
- }
- message_begin(MSG_BROADCAST, m_ScoreAttrib, {0,0,0}, 0);
- write_byte(id);
- write_byte((user_has_weapon(id, CSW_C4)?2:0)|cs_get_user_vip(id));
- message_end();
- message_begin(MSG_BROADCAST, m_ScoreInfo);
- write_byte(id);
- write_short(get_user_frags(id)-_:suicide);
- write_short(cs_get_user_deaths(id)+1);
- write_short(0);
- write_short(get_user_team(id));
- message_end();
- set_pdata_int(id, 362, 0);
- return HAM_SUPERCEDE;
- }
- }
- return HAM_IGNORED;
- }
- public amxbans_admin_connect(id){
- client_authorized(id);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement