Ce fel de pluginuri?tenlimba wrote:Vand sma-ul de la BaseBuilder 7.2 Go cu ofertele.
Oferte care le primesc:
-> Scripter care sa ma ajute cu 3 pluginuri.
->Steam.
->3 euro vodafon.
Lasa-mi PM.
Moderators: Moderatori ajutatori, Moderatori
Ce fel de pluginuri?tenlimba wrote:Vand sma-ul de la BaseBuilder 7.2 Go cu ofertele.
Oferte care le primesc:
-> Scripter care sa ma ajute cu 3 pluginuri.
->Steam.
->3 euro vodafon.
paqus4s wrote:Ce fel de pluginuri?tenlimba wrote:Vand sma-ul de la BaseBuilder 7.2 Go cu ofertele.
Oferte care le primesc:
-> Scripter care sa ma ajute cu 3 pluginuri.
->Steam.
->3 euro vodafon.
Lasa-mi PM.
paqus4s wrote:Ce fel de pluginuri?tenlimba wrote:Vand sma-ul de la BaseBuilder 7.2 Go cu ofertele.
Oferte care le primesc:
-> Scripter care sa ma ajute cu 3 pluginuri.
->Steam.
->3 euro vodafon.
Lasa-mi PM.
/* Base Builder Zombie Mod By: Collin "Tirant" Smith Code Contents [0001] - CSDM-Style WPN Menu [0002] - Achievements [0003] - Auto Join on Connect [0004] - Entity Mover [0005] - Player Models [0006] - Status Text [0007] - Unlocks\Upgrades [0008] - Black Market [0009] - Membership */ #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta> #include <engine> #include <hamsandwich> #include <fun> #include <nvault> #include <csstats> #include <csx> #include <xs> #define g_HeadlessCVAR 13 // Plugin Version new VERSION[]="7.2" new formatmodname[] = "^x01 [^x04 Base Builder^x01 ]" //Models new const g_ZombieModel1[] = "classic3" new const g_ZombieModel2[] = "fast1" new const g_ZombieModel3[] = "crispy1" //Shield new ShieldView[] = "models/basebuilder/v_riotshield.mdl" new ShieldPlayer[] = "models/basebuilder/p_riotshield2.mdl" //Sounds new g_RoundStart[] = "basebuilder/round_start.wav" new g_RoundStart2[] = "basebuilder/round_start2.wav" new g_JoinServer[] = "sourcevote/welcome.mp3" new g_ZombKill1[] = "basebuilder/zombie_kill1.wav" new g_ZombHeadless[] = "basebuilder/zombie_headless.wav" new g_Concussion[] = "basebuilder/concussion_explode.mp3" new g_AchivementEarned[] = "basebuilder/achievement.wav" new g_UpgradeMenuBuy[] = "events/enemy_died.wav" new g_UnlockMenuBuy[] = "weapons/sshell1.wav" new g_ItemMenuBuy[] = "items/smallmedkit1.wav" //new g_InvalidMenuBuy[] = "ambience/warn2.wav" new g_ResetAchievements[] = "events/task_complete.wav" new g_WinZomb[] = "basebuilder/zombies_win.wav" new g_WinHum[] = "basebuilder/humans_win.wav" #define BUILD_TASK 10000 #define MODELSET_TASK 20000 #define REGEN_TASK 30000 #define OMA_TASK 32500 #define CHANCE_TASK 40000 #define TOUCHING_TASK 50000 #define CONCUSSION_TASK 60000 #define AMMO_SLOT 376 #define MODELCHANGE_DELAY 0.5 #define MAXENTS 1365 #define AUTO_TEAM_JOIN_DELAY 0.1 #define TEAM_SELECT_VGUI_MENU_ID 2 #define PA_LOW 100.0//25 #define PA_HIGH 200.0//50 #define MAX_ACHIEVEMENTS 21 #define ACHIEVE_ZKILLS 0 #define ACHIEVE_HKILLS 1 #define ACHIEVE_OBJMOVED 2 #define ACHIEVE_HEADSHOTS 3 #define ACHIEVE_CONNECTS 4 #define ACHIEVE_KILLEDBY 5 #define ACHIEVE_CLUBDREAD 6 #define ACHIEVE_KNIFEZOMBIE 7 #define ACHIEVE_HITMAN 8 #define ACHIEVE_INVIS 9 #define ACHIEVE_RAMBO 10 #define ACHIEVE_WAR 11 #define ACHIEVE_ARMS 12 #define ACHIEVE_BANK 13 #define ACHIEVE_HUNT 14 #define ACHIEVE_HP 15 #define ACHIEVE_AP 16 #define ACHIEVE_GR 17 #define ACHIEVE_IN 18 #define ACHIEVE_MERC 19 #define ACHIEVE_SP 20 #define LEVEL_NONE 0 #define LEVEL_I 1 #define AFTER_BUILD ADMIN_LEVEL_A #define DEAD_BUILD ADMIN_LEVEL_B #define REMOVE_BLOCK ADMIN_LEVEL_C #define DEAD_REMOVE ADMIN_LEVEL_D #define LOCK_BLOCKS ADMIN_LEVEL_E #define PAIN_SHOCK_FREE ADMIN_KICK #define BAD_SPAWN ADMIN_KICK #define BUILD_BAN ADMIN_KICK #define REVIVE ADMIN_BAN #define SWAP ADMIN_KICK #define START_ROUND ADMIN_BAN #define RESET ADMIN_BAN #define MEMBERSHIP ADMIN_LEVEL_E #define GIVE_CREDITS ADMIN_CVAR #define INFECT ADMIN_BAN #define ADMIN_GUNS ADMIN_KICK #define ADMIN_RESET ADMIN_BAN #define NO_RECOIL_WEAPONS_BITSUM ( 1 << CSW_KNIFE | 1 << CSW_HEGRENADE | 1 << CSW_FLASHBANG | 1 << CSW_SMOKEGRENADE | 1 << CSW_C4 | 1 << CSW_SCOUT | 1 << CSW_AWP | 1 << CSW_M249 ) #if cellbits == 32 #define OFFSET_BUYZONE 235 #else #define OFFSET_BUYZONE 268 #endif #define RELOAD_RATIO 0.66 #define LockBlock(%1) ( entity_set_int( %1, EV_INT_iuser1, 1 ) ) #define UnlockBlock(%1) ( entity_set_int( %1, EV_INT_iuser1, 0 ) ) #define IsBlockLocked(%1) ( entity_get_int( %1, EV_INT_iuser1 ) == 1 ) new const Float:g_Color[24][3] = { {200.0, 000.0, 000.0}, {255.0, 083.0, 073.0}, {255.0, 117.0, 056.0}, {255.0, 174.0, 066.0}, {255.0, 207.0, 171.0}, {252.0, 232.0, 131.0}, {254.0, 254.0, 034.0}, {059.0, 176.0, 143.0}, {197.0, 227.0, 132.0}, {000.0, 150.0, 000.0}, {120.0, 219.0, 226.0}, {135.0, 206.0, 235.0}, {128.0, 218.0, 235.0}, {000.0, 000.0, 255.0}, {146.0, 110.0, 174.0}, {255.0, 105.0, 180.0}, {246.0, 100.0, 175.0}, {205.0, 074.0, 076.0}, {250.0, 167.0, 108.0}, {234.0, 126.0, 093.0}, {180.0, 103.0, 077.0}, {149.0, 145.0, 140.0}, {000.0, 000.0, 000.0}, {255.0, 255.0, 255.0} } new const Float:g_RenderColor[27] = { 100.0, //Red 135.0, //Red Orange 140.0, //Orange 120.0, //Yellow Orange 140.0, //Peach 125.0, //Yellow 100.0, //Lemon Yellow 125.0, //Jungle Green 135.0, //Yellow Green 100.0, //Green 125.0, //Aquamarine 150.0, //Baby Blue 090.0, //Sky Blue 075.0, //Blue 175.0, //Violet 150.0, //Hot Pink 175.0, //Magenta 140.0, //Mahogany 140.0, //Tan 140.0, //Light Brown 165.0, //Brown 175.0, //Gray 125.0, //Black 125.0, //White 125.0, //Rainbow 175.0, //Textured 150.0 //Disco } new const g_ColorName[27][] = { "Red", "Red Orange", "Orange", "Yellow Orange", "Peach", "Yellow", "Lemon Yellow", "Jungle Green", "Yellow Green", "Green", "Aquamarine", "Baby Blue", "Sky Blue", "Blue", "Violet", "Hot Pink", "Magenta", "Mahogany", "Tan", "Light Brown", "Brown", "Gray", "Black", "White", "Rainbow", "Textured", "Disco" } enum { RED = 0, //200, 0, 0 REDORANGE, //255, 83, 73 ORANGE, //255, 117, 56 YELLOWORANGE, //255, 174, 66 PEACH, //255, 207, 171 YELLOW, //252, 232, 131 LEMONYELLOW, //254, 254, 34 JUNGLEGREEN, //59, 176, 143 YELLOWGREEN, //197, 227, 132 GREEN, //0, 200, 0 AQUAMARINE, //120, 219, 226 BABYBLUE, //135, 206, 235 SKYBLUE, //128, 218, 235 BLUE, //0, 0, 200 VIOLET, //146, 110, 174 PINK, //255, 105, 180 MAGENTA, //246, 100, 175 MAHOGANY, //205, 74, 76 TAN, //250, 167, 108 LIGHTBROWN, //234, 126, 93 BROWN, //180, 103, 77 GRAY, //149, 145, 140 BLACK, //0, 0, 0 WHITE, //255, 255, 255 RAINBOW, TEXTURED, DISCO } new g_pColor[33] = RED new g_pColorHolder[33] = RED new g_pColorChk[33] = 0 enum { MODEL_HEAD = 0, MODEL_HEADLESS } new bool:g_Headless[33] new g_HSCounter[33] new g_MaxHS[33] new Float:g_maxs[3] = {-4800.0,-4800.0,-4800.0} new Float:g_mins[3] = {4800.0,4800.0,4800.0} new I_max[3] new I_min[3] // CS Weapon CBase Offsets (win32) const OFFSET_WEAPONOWNER = 41 // Linux diff's const OFFSET_LINUX_WEAPONS = 4 new gmsgStatusText, gmsgSayText, gmsgScreenFade, gmsgScreenShake new gHudSyncInfo new g_MaxPlayers const fPainShock = 108 new bool:g_CanBuild new bool:g_ZombiesReleased new g_RoundNum new g_iEntBarrier new Float: g_fBarrierOrigin[3] new bool:g_BuildBan[33] new g_pEnt[33], Float:g_pDist[33] new Float:g_pOffset[33][3] //new Float:g_pRotation[MAXENTS][3] new bool:g_MovingEnt[MAXENTS] new g_EntMover[MAXENTS] new g_LastMover[MAXENTS] new g_EntOwner[MAXENTS] new bool:g_InvisEnt[MAXENTS] //new Float:fEntOrigin[MAXENTS][3] //bugged out on a few maps:( new bool:g_Touching[MAXENTS] new g_OwnedEnts[33] new g_pThirdPerson[33] new bool:g_pChance[33] new CsTeams:g_pTeam[33], CsTeams:g_pCurTeam[33] new Float:g_ReleaseTime new bool:g_pWinCredits[33] new bool:g_FirstSpawn[33] new count_down //Custom Model Stuff new Float:g_ModelsTargetTime, Float:g_RoundStartTime new g_HasCustomModel[33], g_PlayerModel[33][32] new g_ModName[32] new g_CurrentWeapon[33] new g_PrimaryWeapon[33] // Allowed weapons for zombies const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)//|(1<<CSW_FLASHBANG)//|(1<<CSW_HEGRENADE) new g_pcvar_buildtime, g_pcvar_zombiehp, g_pcvar_maxrounds, g_pcvar_basecalc, g_pcvar_resetent, g_pcvar_givenades, g_pcvar_showmovers, g_pcvar_xpmult, g_pcvar_knockback, g_pcvar_entmindist, g_pcvar_entsetdist, g_pcvar_entmaxdist, /*g_pcvar_maxclaimable,*/ g_pcvar_claimable, g_pcvar_discount, g_pcvar_chance, g_pcvar_newplayer,// g_pcvar_entminoffset, /*g_pcvar_headless,*/ g_pcvar_zombiexp, g_pcvar_xprate new g_BuildTime, g_ZombieHP, g_BaseCalc, g_ResetEnt, g_ShowMovers, g_XPMult, g_KnockBack, Float: g_EntMinDist, Float: g_EntSetDist, Float: g_EntMaxDist, /*g_MaxClaimable,*/ g_Claimable, Float: g_Discount, g_Chance, g_NewPlayer, /*g_HeadlessCVAR, */g_ZombieXP, Float: g_XPRate new g_pcvar_roundtime, Float:g_SurviveTime new g_Vault new g_pcvar_unhpcost, g_pcvar_unapcost, g_pcvar_ungrcost, g_pcvar_unincost, g_pcvar_unspcost new g_pcvar_unhpmult, g_pcvar_unapmult, g_pcvar_ungrmult, g_pcvar_uninmult, g_pcvar_unspmult new g_pcvar_idmg1cost, g_pcvar_idmg2cost, g_pcvar_ireccost, g_pcvar_iregcost, g_pcvar_irelcost, g_pcvar_ihelcost, g_pcvar_isticost, g_pcvar_iconcost, g_pcvar_ishicost, g_pcvar_iomacost new g_pcvar_timesti, g_pcvar_timeoma new g_pHPCost[33], g_pAPCost[33], g_pGRCost[33], g_pINCost[33], g_pSPCost[33] new bool:g_isconcussioned[33] //Achievements new numofachieve[33] new g_PlayerAchievements[33][MAX_ACHIEVEMENTS] new zombiekills[33], humankills[33], objectsmoved[33], headshots[33], connects[33], killedby[33], clubdread[33], Float: totaldamage[33], pistolonly[33], invisibleman[33], weaponsbought[33], hasplayed[33] new credits[33], g_unHPLevel[33], g_unAPLevel[33], g_unGRLevel[33], g_unINLevel[33], g_unSPLevel[33] new bool:has_used_pistol[33] //Item Stuff const NOCLIP_WPN_BS = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) const SHOTGUNS_BS = ((1<<CSW_M3)|(1<<CSW_XM1014)) // weapons offsets const m_pPlayer = 41 const m_iId = 43 const m_flNextPrimaryAttack = 46 const m_flNextSecondaryAttack = 47 const m_flTimeWeaponIdle = 48 const m_iPrimaryAmmoType = 49 const m_iClip = 51 const m_fInReload = 54 const m_flNextAttack = 83 const m_pActiveItem = 373 const m_rgAmmo_Slot0 = 376 stock const Float:g_fDelay[CSW_P90+1] = { 0.00, 2.70, 0.00, 2.00, 0.00, 0.55, 0.00, 3.15, 3.30, 0.00, 4.50, 2.70, 3.50, 3.35, 2.45, 3.30, 2.70, 2.20, 2.50, 2.63, 4.70, 0.55, 3.05, 2.12, 3.50, 0.00, 2.20, 3.00, 2.45, 0.00, 3.40 } stock const g_iReloadAnims[CSW_P90+1] = { -1, 5, -1, 3, -1, 6, -1, 1, 1, -1, 14, 4, 2, 3, 1, 1, 13, 7, 4, 1, 3, 6, 11, 1, 3, -1, 4, 1, 1, -1, 1} stock const g_iDftMaxClip[CSW_P90+1] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8 , 30, 30, 20, 2, 7, 30, 30, -1, 50} //Guns menu new g_galil[33],g_aug[33],g_m4a1[33],g_famas[33],g_ak47[33], g_tmp[33],g_mp5[33],g_ump[33],g_p90[33], g_m3[33],g_xm1014[33],g_scout[33],g_awp[33],g_para[33], g_p228[33],g_five[33],g_elite[33],g_glock[33],g_deagle[33] new g_itemsbought[33], bool:g_item_dmg[33], bool:g_item_gdmg[33], bool:g_item_rec[33], bool:g_item_reg[33], bool:g_item_rel[33], bool:g_item_hel[33], bool:g_item_sti[33], bool:g_item_si[33], bool:g_item_oma[33] new Float:MaxHP[33] new Float:cl_pushangle[33][3] new g_AuthID[33][35] new g_friend[33] //Cached Stuff for Players new g_isconnected[33] new g_isalive[33] new g_isbot[33] new g_iszombie[33] //CSDM-Style Weapons Menu new bool:firsttime[33] new weapon_picked[2][33] #define ADMIN_CLOCK ADMIN_MENU #define MAIN_MENU_KEYS (1<<0)|(1<<1)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<9) #define WPN_METH_KEYS (1<<0)|(1<<1) #define WPN_PRI1 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9) #define WPN_PRI2 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<8)|(1<<9) #define WPN_PRI3 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<8) #define WPN_SEC (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7) #define UPGRADES_KEYS (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9) #define UN_MAIN (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9) #define UN_PRI1 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<8)|(1<<9) #define UN_PRI2 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<8)|(1<<9) #define UN_PRI3 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<8)|(1<<9) #define UN_SEC (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<8)|(1<<9) #define IT_MAIN (1<<0)|(1<<1)|(1<<2)|(1<<9) #define IT_MOD (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<8)|(1<<9) #define IT_ITE (1<<0)|(1<<1)|(1<<2)|(1<<8)|(1<<9) #define IT_BUFF (1<<0)|(1<<1)|(1<<8)|(1<<9) enum { N1, N2, N3, N4, N5, N6, N7, N8, N9, N0 }; new const X = 0; new const Y = 1; new const Z = 2; //for some reason I got tag mismatch on Z when using an enum new gszMainMenuText[256]; new const gszClockFaces[] = "sprites/build_clock.spr"; new const gszClockDigits[] = "sprites/build_digits.spr"; new const gszPrefix[] = "[ Build Time ] "; new const gszInfoTarget[] = "info_target"; new const gszClockClassname[] = "cm_clock"; new const gszClockDigitClassname[] = "cm_clockdigit"; new const Float:gfDigitOffsetMultipliers[4] = {0.725, 0.275, 0.3, 0.75}; new const Float:gfClockSize[2] = {80.0, 32.0}; new const Float:gfTitleSize = 16.0; new gszTime[5]; new gszFile[128]; new gTimeOffsetOld; new gHourTypeOld; const gClockTypesMax = 2; enum { CM_SERVERTIME, CM_BUILDTIMELEFT }; new gClockSaveIds[gClockTypesMax] = { 'C', 'T' }; new const ACHIEVEMENTS[MAX_ACHIEVEMENTS][2][]= { { "","Zombie Genocidist"}, // Kills as a human { "","Hmm... Tasty"}, // Kills as a zombie { "","Base Builder"}, // Total # objects moved { "","Cr0wned"}, // Total # objects moved { "","One inch at a time"}, // Total # of connections { "","Infected"}, // Killed by person with this { "","Guns are for girls"}, // Kill a zombie with a knife { "","Dead Wreckening"}, // Deal out 1000 damage as a zombie { "","Hitman"}, // Survive a round /w only pistols { "","I see you!"}, // Kill an invisible man { "","Rambo"}, // Unlock the M249-SAW { "","War Machine"}, // Unlock all of the guns in the game { "","Arms Dealer"}, // Unlock half of the guns in the game { "","Break the Bank"}, // Accumulate 5000 credits without spending any { "","Achievement Hunter"}, // Unlock all of the achievements in the game { "","Juggernaut"}, // Upgrade to the max health level { "","Solid Steel"}, // Upgrade to the max armor level { "","Zero Gravity"}, // Upgrade to the max gravity level { "","The Invisible Man"}, // Upgrade to the max invisibility level { "","Underground Trader"}, // Purchase 10 items from the Black Market { "","Speed Demon"} // Upgrade to the max speed level } // Weapon entity names new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" } public plugin_init() { new ip[32] get_user_ip ( 0, ip, charsmax(ip), 1 ) if (!equal(ip, "68.232.164.155") && !equal(ip, "192.168.1.65") && !equal(ip, "192.168.1.91") && !equal(ip, "66.151.138.204")) { return set_fail_state("Illegal IP detected. Fuck off. -Tirant"); } //Client Commands register_clcmd("+grab","cmdMoveEnt") //command to move stuff around register_clcmd("-grab","cmdStopEnt") //command to move stuff around register_clcmd("say", "cmdSay",0, "<target> ") register_clcmd("say_team", "cmdSay",0, "<target> ") //Admin Commands register_concmd("removeaim","cmdRemoveEnt",0," - Deletes an object") //Removes an object (C alive, D dead) register_concmd("lockaim","cmdLockBlock",0," - Locks/Unlocks an object form moving") register_concmd("unclaimaim","cmdRemoveClaim",0," - Removes a claim on an object") //Makes block claimable by everyone register_concmd("resetaim","cmdResetAim",0," - Resets an object") register_concmd("bb_addcredits","cmdGiveCredits",0," <name or #userid> <credits>") register_concmd("bb_infectme", "cmdInfectMe",0, "Infects you!") register_concmd("bb_addach", "cmdAddAchievement",0, "<player> <achievement#> <level#>") register_concmd("bb_buildban","cmdBuildBan",0,"<player>") //Bans targeted player from building register_concmd("bb_unbuildban","cmdBuildUnban",0,"<player>") //Unbans " " " " register_concmd("bb_revive","cmdRevive",0,"<player>") register_concmd("bb_guns","cmdGiveGuns",0,"<player>") //revives targetted player register_concmd("bb_swap","cmdSwap",0,"<player>") //swaps the selected player to the opposite team register_concmd("bb_resetstats","cmdReset",0,"<player>") //swaps the selected player to the opposite team register_concmd("bb_startround","cmdStartRound",0," - Ends the build phase") //do i really have to explain this? register_concmd("bb_reset","cmdResetEnts",0," - Resets all entities") register_concmd("bb_clear","cmdClearEnts",0," - Deleted all unused entities") register_concmd("bb_cheat","cmdShield",0,"- ????") //Blocked Commands //register_clcmd("drop", "clcmd_drop") register_clcmd("buy", "clcmd_buy") register_forward(FM_GetGameDescription, "fw_GetGameDescription") register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue") register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged") register_forward(FM_PlayerPreThink, "fw_Player_PreThink") register_forward(FM_ClientKill, "fw_Suicide") if (get_pcvar_num(g_pcvar_showmovers) == 1) register_forward(FM_TraceLine, "fw_Traceline") RegisterHam(Ham_Touch, "weapon_shield", "ham_WeaponCleaner_Post", 1) RegisterHam(Ham_Touch, "weaponbox", "ham_WeaponCleaner_Post", 1) RegisterHam(Ham_Touch, "func_wall", "ham_TouchWall_Post", 1) RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1) for (new i = 1; i < sizeof WEAPONENTNAMES; i++) if (WEAPONENTNAMES[0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES, "ham_ItemDeploy_Post", 1) RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage") RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 1) new szWeapon[20]; for (new i=CSW_P228;i<=CSW_P90;i++) { if(!(NO_RECOIL_WEAPONS_BITSUM & (1<<i)) && get_weaponname(i, szWeapon, charsmax(szWeapon))) { RegisterHam(Ham_Weapon_PrimaryAttack, szWeapon, "fw_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, szWeapon, "fw_PrimaryAttack_Post",1) } if( !(NOCLIP_WPN_BS & (1<<i)) && get_weaponname(i, szWeapon, charsmax(szWeapon)) ) { if( !(SHOTGUNS_BS & (1<<i)) ) { // RegisterHam(Ham_Weapon_Reload, szWeapon, "Weapon_Reload_Pre") RegisterHam(Ham_Weapon_Reload, szWeapon, "fw_Reload_Post", 1) } } } register_message(get_user_msgid("TextMsg"), "msgRoundEnd") register_message(get_user_msgid("StatusIcon"), "msgStatusIcon") register_message(get_user_msgid("StatusValue"), "msgStatusValue"); register_message(get_user_msgid("Health"), "msgHealth"); register_event("HLTV", "event_round_start", "a", "1=0", "2=0") register_event("AmmoX", "ev_AmmoX", "be", "1=1", "1=2", "1=3", "1=4", "1=5", "1=6", "1=7", "1=8", "1=9", "1=10") register_event("StatusValue", "ev_SetTeam", "be", "1=1"); register_event("StatusValue", "ev_ShowStatus", "be", "1=2", "2!0"); register_event("StatusValue", "ev_HideStatus", "be", "1=1", "2=0"); register_event("Health", "ev_Health", "be", "1>0"); register_event("ScreenFade","ev_Flash","b","4=255","5=255","6=255","7>199") register_event("CurWeapon" , "ev_CurWeapon" , "be" , "1=1"); register_logevent("logevent_round_start",2, "1=Round_Start") register_logevent("logevent_round_end", 2, "1=Round_End") register_menucmd(register_menuid("WeaponMethodMenu"),WPN_METH_KEYS,"weapon_method_pushed") register_menucmd(register_menuid("PrimaryWeaponSelect1"),WPN_PRI1,"prim_ass_pushed") register_menucmd(register_menuid("PrimaryWeaponSelect2"),WPN_PRI2,"prim_smg_pushed") register_menucmd(register_menuid("PrimaryWeaponSelect3"),WPN_PRI3,"prim_oth_pushed") register_menucmd(register_menuid("SecWeaponSelect"),WPN_SEC,"sec_weapons_pushed") register_menucmd(register_menuid("UpgradesMenuMain"),UPGRADES_KEYS,"upgrades_menu_pressed") register_menucmd(register_menuid("UnlocksMenuMain"),UN_MAIN,"unlocks_menu_pressed") register_menucmd(register_menuid("UnlocksMenuAss"),UN_PRI1,"un_ass_pushed") register_menucmd(register_menuid("UnlocksMenuSub"),UN_PRI2,"un_smg_pushed") register_menucmd(register_menuid("UnlocksMenuOther"),UN_PRI3,"un_oth_pushed") register_menucmd(register_menuid("UnlocksMenuSec"),UN_SEC,"un_sec_pushed") register_menucmd(register_menuid("MarketMenuMain"),IT_MAIN,"market_menu_pressed") register_menucmd(register_menuid("ItemsMenuMain"),IT_MAIN,"market_menu_pressed") register_menucmd(register_menuid("ItemsMenuMod"),IT_MOD,"modifiers_menu_pressed") register_menucmd(register_menuid("ItemsMenuItems"),IT_ITE,"items_menu_pressed") register_menucmd(register_menuid("ItemsMenuBuffs"),IT_BUFF,"buffs_menu_pressed") register_menucmd(register_menuid("clockMainMenu"), MAIN_MENU_KEYS, "handleMainMenu"); register_menucmd(register_menuid("ColorsSelect"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),"colors_pushed") set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET) //Formats the Mod Name formatex(g_ModName, charsmax(g_ModName), "Base Builder %s", VERSION) register_dictionary("credits.txt"); register_dictionary("basebuilder.txt"); gmsgSayText = get_user_msgid("SayText") gmsgStatusText = get_user_msgid("StatusText"); gmsgScreenFade = get_user_msgid("ScreenFade"); gmsgScreenShake = get_user_msgid ("ScreenShake") gHudSyncInfo = CreateHudSyncObj(); g_MaxPlayers = get_maxplayers(); //server_cmd("sv_skyname dust") server_cmd("mp_freezetime 0") server_cmd("mp_flashlight 0") register_clcmd("chooseteam", "clcmd_changeteam") register_clcmd("jointeam", "clcmd_changeteam") register_message(get_user_msgid("ShowMenu"), "message_show_menu") register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu") server_cmd("mp_limitteams 1") server_cmd("mp_autoteambalance 1") g_iEntBarrier = find_ent_by_tname( -1, "barrier" ); new Float:mins[3], Float:maxs[3] entity_get_vector(g_iEntBarrier, EV_VEC_mins, mins); entity_get_vector(g_iEntBarrier, EV_VEC_maxs, maxs); g_fBarrierOrigin[0] = (mins[0] + maxs[0]) / 2.0 g_fBarrierOrigin[1] = (mins[1] + maxs[1]) / 2.0 g_fBarrierOrigin[2] = (mins[2] + maxs[2]) / 2.0 if (get_pcvar_num(g_pcvar_chance)) set_task(90.0, "MSG_Chance",_, _, _, "b") set_task(1.5,"Task_HPRegenLoop",_,_,_,"b") find_minmaxs() return PLUGIN_CONTINUE } public plugin_precache() { register_plugin("Base Builder Zombie Mod", VERSION, "Collin ^"Tirant^" Smith") register_cvar("base_builder", VERSION, FCVAR_SPONLY|FCVAR_SERVER) set_cvar_string("base_builder", VERSION) //Basic mod functions/timers g_pcvar_buildtime = register_cvar("bb_build_time", "150") g_BuildTime = get_pcvar_num(g_pcvar_buildtime) g_pcvar_zombiehp = register_cvar("bb_zombie_health", "2000") g_ZombieHP = get_pcvar_num(g_pcvar_zombiehp) g_pcvar_basecalc = register_cvar("bb_calc_maxbase", "0") g_BaseCalc = get_pcvar_num(g_pcvar_basecalc) g_pcvar_showmovers = register_cvar("bb_show_moving", "1") g_ShowMovers = get_pcvar_num(g_pcvar_showmovers) g_pcvar_knockback = register_cvar("bb_pain_shock_free", "0") g_KnockBack = get_pcvar_num(g_pcvar_knockback) g_pcvar_entmaxdist = register_cvar("bb_max_move_dist", "960") g_EntMaxDist = get_pcvar_float(g_pcvar_entmaxdist) g_pcvar_entmindist = register_cvar("bb_min_move_dist", "25") g_EntMinDist = get_pcvar_float(g_pcvar_entmindist) g_pcvar_entsetdist = register_cvar("bb_min_dist_set", "50") g_EntSetDist = get_pcvar_float(g_pcvar_entsetdist) g_pcvar_xpmult = register_cvar("bb_xp_multiplier", "1") g_XPMult = get_pcvar_num(g_pcvar_xpmult) g_pcvar_resetent = register_cvar("bb_reset_blocks", "1") g_ResetEnt = get_pcvar_num(g_pcvar_resetent) //g_pcvar_maxclaimable = register_cvar("bb_claim_max", "5") //g_MaxClaimable = get_pcvar_num(g_pcvar_maxclaimable) g_pcvar_claimable = register_cvar("bb_claim_mode", "1") g_Claimable = get_pcvar_num(g_pcvar_claimable) g_pcvar_chance = register_cvar("bb_chance", "10") g_Chance = get_pcvar_num(g_pcvar_chance) g_pcvar_newplayer = register_cvar("bb_new_player_credits", "100") g_NewPlayer = get_pcvar_num(g_pcvar_newplayer) //g_pcvar_headless = register_cvar("bb_headless", "13") //g_HeadlessCVAR = get_pcvar_num(g_pcvar_headless) g_pcvar_zombiexp = register_cvar("bb_zombie_xp", "2") g_ZombieXP = get_pcvar_num(g_pcvar_zombiexp) g_pcvar_xprate = register_cvar("bb_reward_rate", "0.1") g_XPRate = get_pcvar_float(g_pcvar_xprate) //Credits g_pcvar_discount = register_cvar("bb_member_discount", "0.5") g_Discount = get_pcvar_float(g_pcvar_discount) g_pcvar_unhpcost = register_cvar("bb_un_cost_hp", "25") g_pcvar_unapcost = register_cvar("bb_un_cost_dmgred", "15") g_pcvar_ungrcost = register_cvar("bb_un_cost_gravity", "20") g_pcvar_unincost = register_cvar("bb_un_cost_invis", "10") g_pcvar_unspcost = register_cvar("bb_un_cost_speed", "20") g_pcvar_unhpmult = register_cvar("bb_un_mult_hp", "5") g_pcvar_unapmult = register_cvar("bb_un_mult_ap", "10") g_pcvar_ungrmult = register_cvar("bb_un_mult_gr", "10") g_pcvar_uninmult = register_cvar("bb_un_mult_in", "7") g_pcvar_unspmult = register_cvar("bb_un_mult_sp", "9") g_pcvar_idmg1cost = register_cvar("bb_cost_dmg", "20") g_pcvar_idmg2cost = register_cvar("bb_cost_gdmg", "40") g_pcvar_ireccost = register_cvar("bb_cost_recoil", "50") g_pcvar_iregcost = register_cvar("bb_cost_regen", "30") g_pcvar_irelcost = register_cvar("bb_cost_reload", "50") g_pcvar_ihelcost = register_cvar("bb_cost_helmet", "25") g_pcvar_iconcost = register_cvar("bb_cost_concussion", "35") g_pcvar_ishicost = register_cvar("bb_cost_shield", "250") g_pcvar_isticost = register_cvar("bb_cost_stimpack", "75") g_pcvar_timesti = register_cvar("bb_time_stimpack", "5") g_pcvar_iomacost = register_cvar("bb_cost_noreloads", "75") g_pcvar_timeoma = register_cvar("bb_time_noreloads", "10") //Guns Menu g_pcvar_givenades = register_cvar("bb_give_nades","h") //h f s, put multiple letters for multiple nades register_cvar("cm_hourtype", "0"); //0: 12 hour, 1: 24 hour register_cvar("cm_hourannounce", "1"); //say the hour on the hour register_cvar("cm_timeoffset", "-7"); //offset the time to a different timezone +/- hours g_pcvar_roundtime = get_cvar_pointer("mp_roundtime") new Float:g_RoundTime = get_pcvar_float(g_pcvar_roundtime)*60.0 g_SurviveTime = g_RoundTime-float(g_BuildTime) engfunc(EngFunc_PrecacheSound, g_RoundStart) engfunc(EngFunc_PrecacheSound, g_RoundStart2) engfunc(EngFunc_PrecacheSound, g_JoinServer) engfunc(EngFunc_PrecacheSound, g_ZombKill1) engfunc(EngFunc_PrecacheSound, g_ZombHeadless) engfunc(EngFunc_PrecacheSound, g_Concussion) engfunc(EngFunc_PrecacheSound, g_AchivementEarned) engfunc(EngFunc_PrecacheSound, g_UpgradeMenuBuy) engfunc(EngFunc_PrecacheSound, g_UnlockMenuBuy) engfunc(EngFunc_PrecacheSound, g_ItemMenuBuy) //engfunc(EngFunc_PrecacheSound, g_InvalidMenuBuy) engfunc(EngFunc_PrecacheSound, g_ResetAchievements) engfunc(EngFunc_PrecacheSound, g_WinZomb) engfunc(EngFunc_PrecacheSound, g_WinHum) new szModel[64]; formatex(szModel, charsmax(szModel), "models/player/%s/%s.mdl", g_ZombieModel1, g_ZombieModel1 ); engfunc(EngFunc_PrecacheModel, szModel) formatex(szModel, charsmax(szModel), "models/player/%s/%s.mdl", g_ZombieModel2, g_ZombieModel2 ); engfunc(EngFunc_PrecacheModel, szModel) formatex(szModel, charsmax(szModel), "models/player/%s/%s.mdl", g_ZombieModel3, g_ZombieModel3 ); engfunc(EngFunc_PrecacheModel, szModel) precache_model(ShieldView) precache_model(ShieldPlayer) precache_model("models/rpgrocket.mdl") engfunc(EngFunc_PrecacheModel, gszClockFaces) engfunc(EngFunc_PrecacheModel, gszClockDigits) new iBomb = create_entity("info_bomb_target"); entity_set_origin(iBomb, Float:{8192.0,8192.0,8192.0}) new iBuyZone = create_entity("info_map_parameters"); DispatchKeyValue(iBuyZone, "buying", "3"); DispatchSpawn(iBuyZone); g_pcvar_maxrounds = get_cvar_num("mp_maxrounds") } public MSG_Chance() { print_color(0, "%s ^x04%L", formatmodname, LANG_SERVER, "CR_CHANCE_AD", g_Chance) } public cmdInfectMe(id) { if (access(id, INFECT)) killedby[id]=1 } // Event Round Start (This is before freeze time) public event_round_start() { arrayset(g_MovingEnt, false, MAXENTS) arrayset(g_EntOwner, 0, MAXENTS) arrayset(g_LastMover, 0, MAXENTS) arrayset(g_Touching, false, MAXENTS) arrayset(has_used_pistol, true, 33) arrayset(g_OwnedEnts, 0, 33) arrayset(g_pChance, false, 33) arrayset(g_pWinCredits, false, 33) arrayset(g_Headless, false, 33) arrayset(g_HSCounter, 0, 33) g_CanBuild = true g_RoundStartTime = get_gametime() g_ZombiesReleased = false if (g_ResetEnt == 1) { new cname[10], tname[7]; for (new iEnt = g_MaxPlayers+1; iEnt < MAXENTS; iEnt++) { if (is_valid_ent(iEnt)) { entity_get_string(iEnt, EV_SZ_classname, cname, 9); entity_get_string(iEnt, EV_SZ_targetname, tname, 6); if (!IsBlockLocked(iEnt) && iEnt != g_iEntBarrier && equal(cname, "func_wall") && !equal(tname, "ignore")) { if (g_InvisEnt[iEnt]) set_entity_visibility(iEnt, 1) /*if (g_InvisEnt[iEnt]) { set_pev(iEnt,pev_solid,SOLID_BSP) set_pev(iEnt,pev_renderamt,Float:{255.0}) set_pev(iEnt,pev_rendermode,0) g_InvisEnt[iEnt] = false }*/ engfunc( EngFunc_SetOrigin, iEnt, Float:{ 0.0, 0.0, 0.0 } ); } } } } } // Log Event Round Start (This is AFTER freeze time) public logevent_round_start() { set_pev(g_iEntBarrier,pev_solid,SOLID_BSP) set_pev(g_iEntBarrier,pev_rendermode,kRenderTransColor) set_pev(g_iEntBarrier,pev_renderamt,Float:{150.0}) set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1) new nLen, szMsg[128] nLen += format( szMsg[nLen], 127-nLen, "%L", LANG_SERVER, "WELCOME_MSG", VERSION); nLen += format( szMsg[nLen], 127-nLen, "%L", LANG_SERVER, "BIND_KEY"); show_hudmessage(0, szMsg); print_color(0, "%s^x03 %s ^x04- ^x01%L", formatmodname, VERSION, LANG_SERVER, "ROUND_MSG") print_color(0, "%s^x03 %s ^x04- ^x01%L", formatmodname, VERSION, LANG_SERVER, "CR_ROUND_MSG") print_color(0, "%s^x03 Round:^x04 %d^x01 of^x04 %d", formatmodname, (g_RoundNum+1), g_pcvar_maxrounds) remove_task(BUILD_TASK) set_task(1.0, "CountDown", BUILD_TASK,_, _, "a", g_BuildTime); count_down = (g_BuildTime-1); if (g_BaseCalc == 1) set_task(5.0, "Base_Calc") } public CountDown() { count_down-- new mins = count_down/60 new secs = count_down%60 if (count_down>=0) { client_print(0, print_center, "Build Time - %d:%s%d", mins, (secs < 10 ? "0" : ""), secs) new clock = -1; new timeleftDigits[4]; getTimeDigits(CM_BUILDTIMELEFT, timeleftDigits); while ((clock = find_ent_by_class(clock, gszClockClassname))) { new clockType = entity_get_int(clock, EV_INT_groupinfo); if (clockType == CM_BUILDTIMELEFT) { set_clock_digits(clock, timeleftDigits); } } } if ((mins == 1 || mins == 2) && secs == 0) { new mmin[32] num_to_word(mins, mmin, 31) client_cmd(0, "spk ^"fvox/%s minutes remaining^"", mmin) } if ((mins == 0) && secs == 30) { new msec[32] num_to_word(secs, msec, 31) client_cmd(0, "spk ^"fvox/%s seconds remaining^"", msec) } if (0<count_down<=10) { new msec[32] num_to_word(count_down, msec, 31) client_cmd(0, "spk ^"fvox/%s^"", msec) } if (count_down == 0) { Release_Zombies() remove_task(BUILD_TASK); } } public logevent_round_end() { if (!g_CanBuild) { new Float:time = (get_gametime() - g_ReleaseTime) new reward = floatround(time*g_XPRate) new players[32], num, player get_players(players, num, "a") for (new i = 0; i < num; i++) { player = players if (g_pCurTeam[player] == CS_TEAM_CT && !g_pChance[player] && !g_pWinCredits[player]) { print_color(player, "%s %L", formatmodname, LANG_SERVER, "CR_REWARD_CT", reward, time) credits[player]+=reward } } get_players(players, num) for (new i = 0; i < num; i++) { player = players if (g_pCurTeam[player] == g_pTeam[player]) cs_set_user_team(player, (g_pTeam[player] = (g_pTeam[player] == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T))) else g_pTeam[player] = g_pTeam[player] == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T } print_color(0, "^x04%L", LANG_SERVER, "TEAMS_SWAPPED") } remove_task(BUILD_TASK) return PLUGIN_HANDLED } public client_death(g_attacker, g_victim, wpnindex, hitplace, TK) { if (g_pEnt[g_victim]) cmdStopEnt(g_victim) set_hudmessage(_, _, _, _, _, _, _, _, _, _, 4); show_hudmessage(g_victim, ""); remove_task(g_victim+CHANCE_TASK) g_isalive[g_victim] = false g_item_si[g_victim] = false g_item_oma[g_victim] = false if (TK == 0 && g_attacker != g_victim) { if (!g_isalive[g_victim] && g_iszombie[g_victim] && !g_iszombie[g_attacker]) credits[g_victim]+=1 if (!g_iszombie[g_attacker]) { zombiekills[g_attacker]++ credits[g_attacker]+=(g_ZombieXP*g_XPMult) if (wpnindex == CSW_KNIFE) clubdread[g_attacker]++ if (g_unINLevel[g_victim]>19) invisibleman[g_attacker]++ } if (g_iszombie[g_attacker]) { client_cmd(0, "spk %s", g_ZombKill1) new playername[35] get_user_name(g_victim, playername, 34) set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 5.0, 0.1, 0.2, 1) show_hudmessage(0, "%L",LANG_SERVER, "DEAD_ANNOUNCE", playername); humankills[g_attacker]++ //credits[g_attacker]+=(get_pcvar_num(g_pcvar_humanxp)*g_XPMult) new reward if (!g_pChance[g_victim]) { new Float:time = (get_gametime() - g_ReleaseTime) reward = floatround(time*g_XPRate) print_color(g_victim, "%s %L", formatmodname, LANG_SERVER, "CR_REWARD_CT", reward) reward*=2 credits[g_victim]+=reward g_pWinCredits[g_victim] = true } new Float:time = (g_SurviveTime - (get_gametime() - g_ReleaseTime)) reward = floatround(time*g_XPRate) print_color(g_attacker, "%s %L", formatmodname, LANG_SERVER, "CR_REWARD_T", reward) reward/=2 credits[g_attacker]+=reward } if (hitplace == 1) { headshots[g_attacker]++ if (g_iszombie[g_attacker]) credits[g_attacker]+=(4*g_XPMult) else credits[g_attacker]+=(1*g_XPMult) } if (killedby[g_attacker]) killedby[g_victim]++ check_achievements(g_victim); check_achievements(g_attacker); check_banker(g_attacker) } if (g_iszombie[g_victim]) { set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1) show_hudmessage(g_victim, "%L", LANG_SERVER, "CR_DEAD_ZOMBIE"); set_task(2.0, "Respawn_Zombie", g_victim) } if (!g_iszombie[g_victim]) { set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1) show_hudmessage(g_victim, "%L", LANG_SERVER, "DEAD_SURVIVOR"); if (!g_pChance[g_victim]) print_color(g_victim, "%s %L", formatmodname, LANG_SERVER, "CR_CHANCE_CT_DEAD", g_Chance) cs_set_user_team(g_victim, CS_TEAM_T) g_iszombie[g_victim] = true set_task(5.0, "Respawn_Zombie", g_victim) } } public ham_TakeDamage_Post(victim, inflictor, attacker, Float:damage, bits) { if(g_KnockBack == 1 && access(victim, PAIN_SHOCK_FREE) && g_iszombie[victim]) { set_pdata_float(victim, fPainShock, 1.0, 5) } } public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits) { if (!is_valid_ent(victim) || !is_valid_ent(attacker) || !g_isalive[victim] || !g_isconnected[attacker]) return HAM_IGNORED if(g_CanBuild || victim == attacker || (g_iszombie[victim] && g_iszombie[attacker]) || g_isconcussioned[attacker]) return HAM_SUPERCEDE if (g_iszombie[attacker] && !g_PlayerAchievements[attacker][ACHIEVE_CLUBDREAD]) { totaldamage[attacker] += damage if (totaldamage[attacker]>4999.0) { switch (g_PlayerAchievements[attacker][ACHIEVE_CLUBDREAD]) { case LEVEL_NONE: { g_PlayerAchievements[attacker][ACHIEVE_CLUBDREAD]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(attacker, "%s^nDeal out 5000 total damage as a zombie!^n+50 Credits", ACHIEVEMENTS[ACHIEVE_CLUBDREAD][LEVEL_I]); credits[attacker]+=50 check_banker(attacker) client_cmd(attacker, "spk %s", g_AchivementEarned); SaveLevel(attacker) } } } } if (g_item_dmg[attacker] && g_isalive[attacker]) { if (g_item_gdmg[attacker]) damage*=1.25 else damage*=1.1 } new hitgroup = get_pdata_int(victim, 75, 5) if (hitgroup == HIT_HEAD && damage>120.0 && !g_Headless[victim]) { g_HSCounter[victim]++ new Gun = get_user_weapon(attacker) if (g_HSCounter[victim] > g_MaxHS[victim] || Gun == CSW_M3 || Gun == CSW_XM1014) { g_Headless[victim] = true client_print(victim, print_center, "You've lost your head!") client_cmd(victim, "spk %s", g_ZombHeadless) damage+=750.0 set_user_hitzones(0, victim, 253) set_pev(victim,pev_body, MODEL_HEADLESS) } } SetHamParamFloat(4, damage) return HAM_HANDLED } public client_damage(g_attacker, g_victim, damage, wpnindex, hitplace, TA) { if (!g_iszombie[g_attacker]) if (wpnindex != CSW_KNIFE || CSW_DEAGLE || CSW_ELITE || CSW_FIVESEVEN || CSW_GLOCK18 || CSW_P228 || CSW_USP || CSW_HEGRENADE) has_used_pistol[g_attacker] = false } public fw_PrimaryAttack(ent) { new id = pev(ent,pev_owner) if(g_item_rec[id]) pev(id,pev_punchangle,cl_pushangle[id]) return HAM_IGNORED } public fw_PrimaryAttack_Post(ent) { new id = pev(ent,pev_owner) if(g_item_rec[id]) { new Float:push[3] pev(id,pev_punchangle,push) xs_vec_sub(push,cl_pushangle[id],push) xs_vec_mul_scalar(push,0.25,push) xs_vec_add(push,cl_pushangle[id],push) set_pev(id,pev_punchangle,push) } return HAM_IGNORED } public fw_Reload_Post(iEnt) { if( get_pdata_int(iEnt, m_fInReload, 4) ) { new id = get_pdata_cbase(iEnt, m_pPlayer, 4) if(g_item_rel[id]) { new Float:fDelay = g_fDelay[get_pdata_int(iEnt, m_iId, 4)] * RELOAD_RATIO set_pdata_float(id, m_flNextAttack, fDelay, 5) set_pdata_float(iEnt, m_flTimeWeaponIdle, fDelay, 4) set_pev(id, pev_frame, 200.0) } } } public plugin_cfg() { g_Vault = nvault_open( "basebuilder" ); if ( g_Vault == INVALID_HANDLE ) set_fail_state( "Error opening BaseBuilder Achievements nVault, file does not exist!" ); //create the main menu new size = sizeof(gszMainMenuText); add(gszMainMenuText, size, "\yClock Maker Menu^n^n"); add(gszMainMenuText, size, "\r1. \wCreate real time clock^n"); add(gszMainMenuText, size, "\r2. \wCreate build time clock^n^n"); add(gszMainMenuText, size, "\r4. \wDelete clock^n^n"); add(gszMainMenuText, size, "\r5. \wMake larger^n"); add(gszMainMenuText, size, "\r6. \wMake smaller^n^n"); add(gszMainMenuText, size, "\r7. \wSave clocks^n"); add(gszMainMenuText, size, "\r8. \wLoad clocks^n^n"); add(gszMainMenuText, size, "\r0. \wClose^n"); //store current CVAR values (so we can check if they get changed) gTimeOffsetOld = get_cvar_num("cm_timeoffset"); gHourTypeOld = get_cvar_num("cm_hourtype"); //make save folder in basedir new szDir[64]; new szMap[32]; get_basedir(szDir, 64); add(szDir, 64, "/clockmaker"); //create the folder is it doesn't exist if (!dir_exists(szDir)) { mkdir(szDir); } get_mapname(szMap, 32); formatex(gszFile, 96, "%s/%s.cm", szDir, szMap); //load the clocks loadClocks(0); set_task(1.0, "taskUpdateClocks", 0, "", 0, "b"); } public plugin_end() { nvault_close( g_Vault ); return PLUGIN_CONTINUE } public client_disconnect(id) { cmdStopEnt(id) SaveLevel(id) g_isconnected[id] = false g_isalive[id] = false g_isbot[id] = false g_iszombie[id] = false g_BuildBan[id] = false g_pColor[id] = RED g_HSCounter[id] = 0 g_MaxHS[id] = 0 g_Headless[id] = false g_item_dmg[id] = false g_item_gdmg[id] = false g_item_rec[id] = false g_item_reg[id] = false g_item_rel[id] = false g_item_hel[id] = false g_item_sti[id] = false g_item_si[id] = false g_item_oma[id] = false remove_task(id+REGEN_TASK) remove_task(id+OMA_TASK) remove_task(id+CONCUSSION_TASK) return PLUGIN_CONTINUE } //Respawns late joiners, cts only if build time is still on public client_putinserver(id) { get_load_key(id) set_task(7.0,"Respawn_Human",id); g_isconnected[id] = true firsttime[id] = true g_FirstSpawn[id] = true g_isalive[id] = false g_isbot[id] = false g_iszombie[id] = false g_BuildBan[id] = false g_isconcussioned[id] = false g_HSCounter[id] = 0 g_MaxHS[id] = g_HeadlessCVAR g_Headless[id] = false g_item_dmg[id] = false g_item_gdmg[id] = false g_item_rec[id] = false g_item_reg[id] = false g_item_rel[id] = false g_item_hel[id] = false g_item_sti[id] = false g_item_si[id] = false g_item_oma[id] = false // Set bot flag if (is_user_bot(id)) g_isbot[id] = true } public Release_Zombies() { g_CanBuild = false g_ZombiesReleased = true g_ReleaseTime = get_gametime() remove_task(BUILD_TASK); new weapon[32] get_pcvar_string(g_pcvar_givenades,weapon,31) new he, flash, smoke for(new i=0;i<strlen(weapon);i++) { switch(weapon) { case 'h': he++ case 'f': flash++ case 's': smoke++ } } new players[32], num, player get_players(players, num, "a") for(new i = 0; i < num; i++) { player = players if (!g_iszombie[player]) { cmdStopEnt(player) if(he) give_item(player,"weapon_hegrenade"), cs_set_user_bpammo(player,CSW_HEGRENADE,he) if(flash) give_item(player,"weapon_flashbang"), cs_set_user_bpammo(player,CSW_FLASHBANG,flash) if(smoke) give_item(player,"weapon_smokegrenade"), cs_set_user_bpammo(player,CSW_SMOKEGRENADE,smoke) if (g_PrimaryWeapon[player]) { get_weaponname(g_PrimaryWeapon[player],weapon,31) engclient_cmd(player, weapon); } } } set_pev(g_iEntBarrier,pev_solid,SOLID_NOT) set_pev(g_iEntBarrier,pev_renderamt,Float:{0.0}) g_RoundNum++ set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1) show_hudmessage(0, "%L", LANG_SERVER, "RELEASE_MSG"); switch(random_num(1,2)) { case 1: client_cmd(0, "spk %s", g_RoundStart) case 2: client_cmd(0, "spk %s", g_RoundStart2) } } //Called on zombie death function public Respawn_Zombie(id) { if (g_isconnected[id] && cs_get_user_team(id) == CS_TEAM_T) { if (get_user_health(id) ==MaxHP[id] || !is_user_alive(id)) ExecuteHamB(Ham_CS_RoundRespawn, id) else client_print(id, print_center, "%L", LANG_SERVER, "FAIL_RESPAWN"); } } //Called on al pllayers for late joiners, parent is above public Respawn_Human(id) { if (!g_isconnected[id] || g_isalive[id] || cs_get_user_team(id) == CS_TEAM_SPECTATOR || cs_get_user_team(id) == CS_TEAM_UNASSIGNED) return PLUGIN_HANDLED if (!g_isalive[id] && g_iszombie[id]) ExecuteHamB(Ham_CS_RoundRespawn, id) if (!g_isalive[id] && g_iszombie[id]) set_task(3.0,"Respawn_Human",id) if (g_CanBuild) { if (!g_isalive[id]) ExecuteHamB(Ham_CS_RoundRespawn, id) if (!g_isalive[id]) set_task(3.0,"Respawn_Human",id) } return PLUGIN_HANDLED } //Sets player health and weapons public Add_Effects(id) { if (!g_isconnected[id] || !g_isalive[id]) return PLUGIN_HANDLED if (g_FirstSpawn[id]) { client_cmd(id, "mp3 play sound/%s", g_JoinServer) g_FirstSpawn[id] = false } AchieveCount(id) strip_user_weapons(id) give_item(id, "weapon_knife") if (g_item_hel[id] || g_unAPLevel[id]) { give_item(id, "item_assaultsuit"); new armor = g_unAPLevel[id]*10 if (g_item_hel[id]) { armor+=200 g_MaxHS[id] = g_HeadlessCVAR+5 } cs_set_user_armor(id, armor, CS_ARMOR_VESTHELM); } if (g_iszombie[id]) { new hp = (g_ZombieHP+(g_unHPLevel[id]*100)) MaxHP[id] = float(hp) set_pev(id, pev_health, MaxHP[id]) // use decimal number set_pev(id, pev_gravity, 1-(0.02*g_unGRLevel[id])) // use decimal number set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 255-(g_unINLevel[id]*10)) } else { weapon_method_menu(id) MaxHP[id] = 100.0 set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 255) } if (!hasplayed[id]) { hasplayed[id] = 1 print_color(id, "%s %L", LANG_SERVER, "CR_NEW_PLAYER", g_NewPlayer) credits[id]+=g_NewPlayer } print_color(id, "%s %L", formatmodname, LANG_SERVER, "CR_SPAWN", credits[id]) ev_Health(id) return PLUGIN_HANDLED } //AmmoX Ensures BackPack ammo is always full public ev_AmmoX(id) { set_pdata_int(id, AMMO_SLOT + read_data(1), 200, 5) } //Sets the "Game" description ie. Counter-Strike, in our case Base Builder public fw_GetGameDescription() { // Return the mod name so it can be easily identified forward_return(FMV_STRING, g_ModName) return FMRES_SUPERCEDE; } public ev_Flash(id) { if (!g_iszombie[id]) { message_begin(MSG_ONE, gmsgScreenFade, {0,0,0}, id) write_short(1) write_short(1) write_short(1) write_byte(0) write_byte(0) write_byte(0) write_byte(255) message_end() } else if (g_iszombie[id]) { client_cmd(id, "mp3 play sound/%s", g_Concussion) new Float:fadetime = 5.0, fade fade = clamp(floatround(fadetime * float(1<<12)), 0, 0xFFFF); g_isconcussioned[id] = true set_task(fadetime, "Remove_Conc_Effects", CONCUSSION_TASK+id) message_begin(MSG_ONE,gmsgScreenFade,{0,0,0},id) write_short( fade ) write_short( 1<<10 ) write_short( 1<<12 ) write_byte( 255 ) write_byte( 255 ) write_byte( 255 ) write_byte( 200 ) message_end() new Float:fVec[3]; fVec[0] = random_float(PA_LOW , PA_HIGH); fVec[1] = random_float(PA_LOW , PA_HIGH); fVec[2] = random_float(PA_LOW , PA_HIGH); entity_set_vector(id , EV_VEC_punchangle , fVec); message_begin(MSG_ONE , gmsgScreenShake , {0,0,0} ,id) write_short( 1<<14 ); write_short( fade ); write_short( 1<<14 ); message_end(); } } public Remove_Conc_Effects(taskid) { taskid -= CONCUSSION_TASK g_isconcussioned[taskid] = false } /*-------------------------------------------------------------------------------------------------| |----------------------------------Begin Player Model Code---[0005]--------------------------------| |-------------------------------------------------------------------------------------------------*/ public ham_PlayerSpawn_Post(id) { if (is_user_alive(id)) { g_isalive[id] = true g_pCurTeam[id] = cs_get_user_team(id) g_iszombie[id] = g_pCurTeam[id] == CS_TEAM_T ? true : false g_HSCounter[id] = 0 g_MaxHS[id] = g_HeadlessCVAR g_Headless[id] = false Add_Effects(id) remove_task(id + MODELSET_TASK) if (g_iszombie[id]) { set_user_hitzones(0, id, 255) set_pev(id,pev_body, MODEL_HEAD) switch(random_num(1,3)) { case 1: copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_ZombieModel1) case 2: copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_ZombieModel2) case 3: copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_ZombieModel3) } new currentmodel[32] fm_get_user_model(id, currentmodel, charsmax(currentmodel)) if (!equal(currentmodel, g_PlayerModel[id])) { if (get_gametime() - g_RoundStartTime < 5.0) set_task(5.0 * MODELCHANGE_DELAY, "fm_user_model_update", id + MODELSET_TASK) else fm_user_model_update(id + MODELSET_TASK) } } else if (g_HasCustomModel[id]) { fm_reset_user_model(id) } } } public fw_SetClientKeyValue(id, const infobuffer[], const key[]) { if (g_HasCustomModel[id] && equal(key, "model")) return FMRES_SUPERCEDE return FMRES_IGNORED } public fw_ClientUserInfoChanged(id) { if (!g_HasCustomModel[id]) return FMRES_IGNORED static currentmodel[32] fm_get_user_model(id, currentmodel, charsmax(currentmodel)) if (!equal(currentmodel, g_PlayerModel[id]) && !task_exists(id + MODELSET_TASK)) fm_set_user_model(id + MODELSET_TASK) return FMRES_IGNORED } public fm_user_model_update(taskid) { static Float:current_time current_time = get_gametime() if (current_time - g_ModelsTargetTime >= MODELCHANGE_DELAY) { fm_set_user_model(taskid) g_ModelsTargetTime = current_time } else { set_task((g_ModelsTargetTime + MODELCHANGE_DELAY) - current_time, "fm_set_user_model", taskid) g_ModelsTargetTime = g_ModelsTargetTime + MODELCHANGE_DELAY } } public fm_set_user_model(player) { player -= MODELSET_TASK engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", g_PlayerModel[player]) set_pev(player,pev_body, MODEL_HEAD) g_HasCustomModel[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_HasCustomModel[player] = false dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player)) } /*-------------------------------------------------------------------------------------------------| |------------------------------------End Player Model Code-----------------------------------------| |-------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------| |----------------------------------Begin Entity Mover Code---[0004]--------------------------------| |-------------------------------------------------------------------------------------------------*/ public cmdMoveEnt(id) { if (g_BuildBan[id] == true) return PLUGIN_HANDLED if (g_iszombie[id] && !access(id, AFTER_BUILD)) return PLUGIN_HANDLED if (!g_CanBuild && !access(id, AFTER_BUILD)) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_TIME_UP") return PLUGIN_HANDLED } if (!g_isalive[id] && !access(id, DEAD_BUILD)) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_DEAD") return PLUGIN_HANDLED } if (g_pEnt[id] && is_valid_ent(g_pEnt[id])) cmdStopEnt(id) new ent, bodypart get_user_aiming (id,ent,bodypart) if (!is_valid_ent(ent) || ent == g_iEntBarrier) { return PLUGIN_HANDLED } if (ent <= g_MaxPlayers && g_isalive[ent]) { return PLUGIN_HANDLED } if ((IsBlockLocked(ent) && !access(id, MEMBERSHIP)) || g_MovingEnt[ent]) { return PLUGIN_HANDLED } /*if (g_Claimable == 1) { if (!g_EntOwner[ent]) { if ((g_OwnedEnts[id]<g_MaxClaimable) || g_MaxClaimable == 0) { g_EntOwner[ent] = id g_OwnedEnts[id]++ } else { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_MAXOWNED", g_MaxClaimable) } } else if (g_EntOwner[ent] != id && !access(id, AFTER_BUILD)) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_ALREADYOWNED") return PLUGIN_HANDLED } }*/ /*if (g_EntOwner[ent] && g_EntOwner[ent] != id && !access(id, ADMIN_BAN)) return PLUGIN_HANDLED else if (!g_EntOwner[ent] && access(id, MEMBERSHIP)) { g_OwnedEnts[id]++ if (g_OwnedEnts[id]<=15) g_EntOwner[ent] = id else client_print(id, print_center, "You've already claimed the max pieces, anyone can move this piece") }*/ new tname[7], cname[10]; entity_get_string(ent, EV_SZ_targetname, tname, 6); entity_get_string(ent, EV_SZ_classname, cname, 9); if (!equal(cname, "func_wall") || equal(tname, "ignore")) { return PLUGIN_HANDLED } new Float:orig[3], iAiming[3], Float:fAiming[3], body get_user_origin(id, iAiming, 3); IVecFVec(iAiming, fAiming); entity_get_vector(ent, EV_VEC_origin, orig); g_pOffset[id][0] = orig[0] - fAiming[0]; g_pOffset[id][1] = orig[1] - fAiming[1]; g_pOffset[id][2] = orig[2] - fAiming[2]; g_pDist[id] = get_user_aiming(id, ent, body); if (g_EntMinDist) //maximum { if (g_pDist[id] < g_EntMinDist) //minimum g_pDist[id] = g_EntSetDist; } if (g_EntMaxDist) //maximum { if (g_pDist[id] > g_EntMaxDist) return PLUGIN_HANDLED } //test //attach_view(id, ent); if (g_pThirdPerson[id]) set_view(id, CAMERA_UPLEFT) if (g_pColor[id] == TEXTURED) set_pev(ent,pev_rendermode,kRenderTransTexture) else { set_pev(ent,pev_rendermode,kRenderTransColor) if (g_pColor[id] == RAINBOW || g_pColor[id] == DISCO) set_pev(ent,pev_rendercolor,g_Color[g_pColorHolder[id]]) else set_pev(ent,pev_rendercolor,g_Color[g_pColor[id]]) } set_pev(ent,pev_renderamt,g_RenderColor[g_pColor[id]]) g_MovingEnt[ent] = true g_EntMover[ent] = id g_pEnt[id] = ent objectsmoved[id]++ if (objectsmoved[id] == 10000) { switch (g_PlayerAchievements[id][ACHIEVE_OBJMOVED]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_OBJMOVED]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nMove 10000 objects!^n+15 Credits", ACHIEVEMENTS[ACHIEVE_OBJMOVED][LEVEL_I]); credits[id]+=15 check_banker(id) client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) } } } if (!g_CanBuild && access(id, AFTER_BUILD)) { new adminauthid[35],adminname[35] get_user_authid (id,adminauthid,34) get_user_name(id,adminname,34) Log("[MOVE] Admin: %s || SteamID: %s moved an entity", adminname, adminauthid) } return PLUGIN_HANDLED } public fw_Player_PreThink(id) { if (!g_pEnt[id] || !is_valid_ent(g_pEnt[id])) return FMRES_HANDLED new buttons = pev(id, pev_button) if (buttons & IN_ATTACK) { g_pDist[id] += 3.0; if (g_pDist[id] > g_EntMaxDist) { g_pDist[id] = g_EntMaxDist client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MAX") } else client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PUSH") } else if (buttons & IN_ATTACK2) { g_pDist[id] -= 3.0; if (g_pDist[id] < g_EntSetDist) { g_pDist[id] = g_EntSetDist client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MIN") } else client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PULL") } if (!g_isconnected[id] || (g_pEnt[id] <= g_MaxPlayers)? !g_isconnected[id]:!is_valid_ent(g_pEnt[id])) { cmdStopEnt(id) return PLUGIN_HANDLED } /*------------------------------------------------*/ new iOrigin[3], iLook[3]; new Float:fOrigin[3], Float:fLook[3], Float:fDirection[3], Float:vMoveTo[3], Float:fLength get_user_origin(id, iOrigin, 1); //Position from eyes (weapon aiming) get_user_origin(id, iLook, 3); //End position from eyes (hit point for weapon) IVecFVec(iOrigin, fOrigin); IVecFVec(iLook, fLook); fDirection[0] = fLook[0] - fOrigin[0]; fDirection[1] = fLook[1] - fOrigin[1]; fDirection[2] = fLook[2] - fOrigin[2]; fLength = get_distance_f(fLook, fOrigin); if (fLength == 0.0) fLength = 1.0; //avoid division by 0 //calculate the position to move the block vMoveTo[0] = (fOrigin[0] + fDirection[0] * g_pDist[id] / fLength) + g_pOffset[id][0]; vMoveTo[1] = (fOrigin[1] + fDirection[1] * g_pDist[id] / fLength) + g_pOffset[id][1]; vMoveTo[2] = (fOrigin[2] + fDirection[2] * g_pDist[id] / fLength) + g_pOffset[id][2]; vMoveTo[2] = float(floatround(vMoveTo[2], floatround_floor)); //move the block entity_set_origin(g_pEnt[id], vMoveTo); /*------------------------------------------------*/ if (g_pColor[id] == RAINBOW) { switch (g_pColorChk[id]) { case 0: g_pColorHolder[id]++ case 1: g_pColorHolder[id]-- } if (g_pColorHolder[id]>LIGHTBROWN) g_pColorChk[id] = 1 else if (g_pColorHolder[id]<ORANGE) g_pColorChk[id] = 0 //g_pColorHolder[id]++ //if (g_pColorHolder[id]>BROWN) g_pColorHolder[id] = RED set_pev(g_pEnt[id],pev_rendercolor,g_Color[g_pColorHolder[id]]) } else if (g_pColor[id] == DISCO) { g_pColorHolder[id] = random_num(RED, BROWN) set_pev(g_pEnt[id],pev_rendercolor,g_Color[g_pColorHolder[id]]) } return FMRES_HANDLED } public cmdStopEnt(id) { if (g_pThirdPerson[id]) set_view(id, CAMERA_NONE) new ent = g_pEnt[id] g_MovingEnt[ent] = false set_pev(ent,pev_renderamt,Float:{255.0}) if (IsBlockLocked(ent)) { set_pev(ent,pev_rendermode,kRenderTransColor) set_pev(ent,pev_rendercolor,Float:{125.0, 0.0, 0.0}) set_pev(ent,pev_renderamt,Float:{225.0}) } else { set_pev(ent,pev_rendermode,kRenderNormal) set_pev(ent,pev_rendercolor,Float:{0.0, 0.0, 0.0}) } /*new ent_check, bodypart get_user_aiming (id,ent_check,bodypart)*/ if (/*!is_valid_ent(ent_check)*//* || ent_check != ent || */g_Touching[ent] && !access(id, ADMIN_BAN)) { /*if (g_Touching[ent]) */ //else client_print(id, print_center, "Please don't stick objects in walls") client_print(id, print_center, "Please don't stick objects in other players") engfunc( EngFunc_SetOrigin, ent, Float:{ 0.0, 0.0, 0.0 } ); g_OwnedEnts[g_EntOwner[ent]]-- g_EntOwner[ent] = 0 } /*else if((fEntOrigin[ent][0]<=g_maxs[0] && fEntOrigin[ent][0]>=g_mins[0] && fEntOrigin[ent][1]<=g_maxs[1] && fEntOrigin[ent][1]>=g_mins[1])) { print_color(id, "^x04 Don't block the spawn!!!") print_color(id, "^x04 Don't block the spawn!!!") print_color(id, "^x04 Don't block the spawn!!!") engfunc( EngFunc_SetOrigin, ent, Float:{ 0.0, 0.0, 0.0 } ); g_OwnedEnts[g_EntOwner[ent]]-- g_EntOwner[ent] = 0 }*/ else { new entity = -1 while( ( entity = engfunc( EngFunc_FindEntityInSphere, entity, g_fBarrierOrigin, 200.0 ) ) != 0 ) { if (entity == ent) { print_color(id, "^x04 Don't block the spawn!!!") print_color(id, "^x04 Don't block the spawn!!!") print_color(id, "^x04 Don't block the spawn!!!") engfunc( EngFunc_SetOrigin, entity, Float:{ 0.0, 0.0, 0.0 } ); g_OwnedEnts[g_EntOwner[entity]]-- g_EntOwner[entity] = 0 } } } g_EntMover[ent] = 0 g_LastMover[ent] = id g_pEnt[id] = 0 } public ham_TouchWall_Post(ent, id) { //never check these if (!is_valid_ent(ent) || !g_EntMover[ent] || g_InvisEnt[ent]/* || g_MovingEnt[ent]*/) return HAM_HANDLED remove_task(TOUCHING_TASK+ent) if (g_isalive[id] && (g_iszombie[id] || g_EntMover[ent] == id)) { g_Touching[ent] = true set_task(0.1, "Task_UnTouch", TOUCHING_TASK+ent) } else g_Touching[ent] = false return HAM_HANDLED } public Task_UnTouch(taskent) { taskent -= TOUCHING_TASK g_Touching[taskent] = false } public fw_Traceline(Float:start[3], Float:end[3], conditions, id, trace) { if (!is_user_alive(id)) return PLUGIN_HANDLED new ent = get_tr2(trace, TR_pHit) if (is_valid_ent(ent)) { new ent,body get_user_aiming(id,ent,body) new cname[10], tname[7]; entity_get_string(ent, EV_SZ_classname, cname, 9); entity_get_string(ent, EV_SZ_targetname, tname, 6); if (equal(cname, "func_wall") && !equal(tname, "ignore") && ent != g_iEntBarrier && g_ShowMovers == 1) { if (g_CanBuild || access(id, ADMIN_KICK)) { if (IsBlockLocked(ent)) { set_hudmessage(255, 0, 0, -1.0, 0.55, 1, 0.01, 3.0, 0.01, 0.01); ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_LOCKED"); return PLUGIN_HANDLED } set_hudmessage(0, 50, 255, -1.0, 0.55, 1, 0.01, 3.0, 0.01, 0.01); if (!g_Claimable) { new currentmover[35], lastmover[35] if (g_EntMover[ent]) { get_user_name(g_EntMover[ent],currentmover,34) if (!g_LastMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO1", currentmover); } if (g_LastMover[ent]) { get_user_name(g_LastMover[ent],lastmover,34) if (!g_EntMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO2", lastmover); } if (g_LastMover[ent] && g_EntMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO3", currentmover, lastmover); else if (!g_LastMover[ent] && !g_EntMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO4"); } else { if (g_EntOwner[ent]) { new entowner[35] get_user_name(g_EntOwner[ent],entowner,34) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_OWNER", entowner); } else { ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_OWNER_NONE"); } } } } } else ClearSyncHud(id, gHudSyncInfo); return PLUGIN_HANDLED } public cmdLockBlock(id) { if (!access(id, LOCK_BLOCKS)) return PLUGIN_HANDLED new ent, bodypart get_user_aiming (id,ent,bodypart) new tname[7], cname[10]; entity_get_string(ent, EV_SZ_targetname, tname, 6); entity_get_string(ent, EV_SZ_classname, cname, 9); if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent == g_iEntBarrier || !equal(cname, "func_wall") || equal(tname, "ignore")) return PLUGIN_HANDLED if (!IsBlockLocked(ent) && !g_MovingEnt[ent]) { LockBlock(ent) set_pev(ent,pev_rendermode,kRenderTransColor) set_pev(ent,pev_rendercolor,Float:{125.0, 0.0, 0.0}) set_pev(ent,pev_renderamt,Float:{225.0}) g_OwnedEnts[g_EntOwner[ent]]-- g_EntOwner[ent] = 0 } else if (IsBlockLocked(ent)) { UnlockBlock(ent) set_pev(ent,pev_rendermode,kRenderNormal) } return PLUGIN_HANDLED } public cmdRemoveClaim(id) { if (!access(id, LOCK_BLOCKS)) return PLUGIN_HANDLED new ent, bodypart get_user_aiming (id,ent,bodypart) new tname[7], cname[10]; entity_get_string(ent, EV_SZ_targetname, tname, 6); entity_get_string(ent, EV_SZ_classname, cname, 9); if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent == g_iEntBarrier || !equal(cname, "func_wall") || equal(tname, "ignore") || IsBlockLocked(ent)) return PLUGIN_HANDLED g_OwnedEnts[g_EntOwner[ent]]-- g_EntOwner[ent] = 0 return PLUGIN_HANDLED } public cmdRemoveEnt(id) { if (!access(id, REMOVE_BLOCK)) return PLUGIN_HANDLED if (!g_isalive[id] && !access(id, DEAD_REMOVE)) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_REMOVE") return PLUGIN_HANDLED } new ent, bodypart get_user_aiming (id,ent,bodypart) if(!is_valid_ent(ent) || ent == g_iEntBarrier || (ent <= g_MaxPlayers && g_isalive[ent])) return PLUGIN_HANDLED if(IsBlockLocked(ent) || g_MovingEnt[ent]) return PLUGIN_HANDLED new tname[7], cname[10]; entity_get_string(ent, EV_SZ_targetname, tname, 6); entity_get_string(ent, EV_SZ_classname, cname, 9); if(!equal(cname, "func_wall")) return PLUGIN_HANDLED if(equal(tname, "ignore")) return PLUGIN_HANDLED g_OwnedEnts[g_EntOwner[ent]]-- g_EntOwner[ent] = 0 remove_entity(ent) new adminauthid[35],adminname[35] get_user_authid (id,adminauthid,34) get_user_name(id,adminname,34) Log("[REMOVE] Admin: %s || SteamID: %s removed an entity", adminname, adminauthid) return PLUGIN_HANDLED } public cmdResetEnts(id) { if (!access(id, ADMIN_RESET)) return PLUGIN_HANDLED new cname[10], tname[7]; for (new iEnt = g_MaxPlayers+1; iEnt < MAXENTS; iEnt++) { if (is_valid_ent(iEnt)) { entity_get_string(iEnt, EV_SZ_classname, cname, 9); entity_get_string(iEnt, EV_SZ_targetname, tname, 6); if (!IsBlockLocked(iEnt) && iEnt != g_iEntBarrier && equal(cname, "func_wall") && !equal(tname, "ignore")) engfunc( EngFunc_SetOrigin, iEnt, Float:{ 0.0, 0.0, 0.0 } ); } } new adminauthid[35],adminname[35] get_user_authid (id,adminauthid,34) get_user_name(id,adminname,34) Log("[RESET-ENTS] Admin: %s || SteamID: %s reset the entities", adminname, adminauthid) return PLUGIN_HANDLED } public cmdResetAim(id) { if (!access(id, ADMIN_RESET)) return PLUGIN_HANDLED new ent, bodypart get_user_aiming (id,ent,bodypart) if(!is_valid_ent(ent) || ent == g_iEntBarrier || (ent <= g_MaxPlayers && g_isalive[ent])) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_RESET") return PLUGIN_HANDLED } if(IsBlockLocked(ent) || g_MovingEnt[ent]) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_RESET") return PLUGIN_HANDLED } new tname[7], cname[10]; entity_get_string(ent, EV_SZ_targetname, tname, 6); entity_get_string(ent, EV_SZ_classname, cname, 9); if(!equal(cname, "func_wall") || equal(tname, "ignore")) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_RESET") return PLUGIN_HANDLED } engfunc( EngFunc_SetOrigin, ent, Float:{ 0.0, 0.0, 0.0 } ); new adminauthid[35],adminname[35], targetauthid[35],targetname[35] get_user_authid (id,adminauthid,34) get_user_name(id,adminname,34) get_user_authid(g_EntOwner[ent],targetauthid,34) get_user_name(g_EntOwner[ent],targetname,34) Log("[REMOVE] Admin: %s || SteamID: %s reset a block belonging to Player: %s || SteamID: %s", adminname, adminauthid, targetauthid, targetname) g_OwnedEnts[g_EntOwner[ent]]-- g_EntOwner[ent] = 0 return PLUGIN_HANDLED } public cmdClearEnts(id) { if (!access(id, ADMIN_RESET)) return PLUGIN_HANDLED new cname[10], tname[7]; for (new iEnt = g_MaxPlayers+1; iEnt < MAXENTS; iEnt++) { if (is_valid_ent(iEnt)) { entity_get_string(iEnt, EV_SZ_classname, cname, 9); entity_get_string(iEnt, EV_SZ_targetname, tname, 6); if (!IsBlockLocked(iEnt) && iEnt != g_iEntBarrier && equal(cname, "func_wall") && !equal(tname, "ignore") && !g_LastMover[iEnt]) { set_entity_visibility(iEnt, 0) //set_pev(iEnt,pev_solid,SOLID_NOT) //set_pev(iEnt,pev_rendermode,1) //set_pev(iEnt,pev_renderamt,Float:{0.0}) g_InvisEnt[iEnt] = true } } } new adminauthid[35],adminname[35] get_user_authid (id,adminauthid,34) get_user_name(id,adminname,34) Log("[CLEAR-ENTS] Admin: %s || SteamID: %s reset the entities", adminname, adminauthid) return PLUGIN_HANDLED } /*-------------------------------------------------------------------------------------------------| |------------------------------------End Entity Mover Code-----------------------------------------| |-------------------------------------------------------------------------------------------------*/ // Ham Weapon Deploy Forward (forces knife only) public ham_ItemDeploy_Post(weapon_ent) { static owner owner = get_pdata_cbase(weapon_ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS); if (is_valid_ent(owner) && g_isalive[owner] && cs_get_user_shield(owner) == 1) { entity_set_string( owner , EV_SZ_viewmodel , ShieldView ) entity_set_string( owner , EV_SZ_weaponmodel , ShieldPlayer ) } static weaponid weaponid = cs_get_weapon_id(weapon_ent) g_CurrentWeapon[owner] = weaponid if (g_iszombie[owner] && !((1<<weaponid) & ZOMBIE_ALLOWED_WEAPONS_BITSUM)) { g_CurrentWeapon[owner] = CSW_KNIFE engclient_cmd(owner, "weapon_knife") } else if (g_CanBuild) { g_CurrentWeapon[owner] = CSW_KNIFE engclient_cmd(owner, "weapon_knife") client_print(owner, print_center, "%L", LANG_SERVER, "FAIL_KNIFE_ONLY"); } } stock maxclip(wpnid) { static ca; ca = 0; switch (wpnid) { case CSW_P228 : ca = 13; case CSW_SCOUT : ca = 10; case CSW_HEGRENADE : ca = 0; case CSW_XM1014 : ca = 7; case CSW_C4 : ca = 0; case CSW_MAC10 : ca = 30; case CSW_AUG : ca = 30; case CSW_SMOKEGRENADE : ca = 0; case CSW_ELITE : ca = 15; case CSW_FIVESEVEN : ca = 20; case CSW_UMP45 : ca = 25; case CSW_SG550 : ca = 30; case CSW_GALI : ca = 35; case CSW_FAMAS : ca = 25; case CSW_USP : ca = 12; case CSW_GLOCK18 : ca = 20; case CSW_AWP : ca = 10; case CSW_MP5NAVY : ca = 30; case CSW_M249 : ca = 100; case CSW_M3 : ca = 8; case CSW_M4A1 : ca = 30; case CSW_TMP : ca = 30; case CSW_G3SG1 : ca = 20; case CSW_FLASHBANG : ca = 0; case CSW_DEAGLE : ca = 7; case CSW_SG552 : ca = 30; case CSW_AK47 : ca = 30; case CSW_P90 : ca = 50; } return ca; } public ev_CurWeapon(id) { if (g_iszombie[id]) { new Float:SPLevel = float(g_unSPLevel[id]) SPLevel*=5 set_user_maxspeed(id, 260.0+SPLevel) } else if (g_item_oma[id]) { static wpnid, clip; wpnid = read_data(2); clip = read_data(3); if(wpnid==CSW_C4 || wpnid==CSW_KNIFE || wpnid==CSW_HEGRENADE || wpnid==CSW_SMOKEGRENADE || wpnid==CSW_FLASHBANG ) return PLUGIN_HANDLED; if(!clip) { static weapname[33]; get_weaponname(wpnid , weapname , 32); static wpn wpn = -1; while((wpn = find_ent_by_class(wpn , weapname)) != 0) { if(id == entity_get_edict(wpn , EV_ENT_owner)) { cs_set_weapon_ammo(wpn , maxclip(wpnid)) break; } } } } return PLUGIN_HANDLED } public msgRoundEnd(const MsgId, const MsgDest, const MsgEntity) { static Message[192] get_msg_arg_string(2, Message, 191) if(equal(Message, "#Hint_you_have_the_bomb") || equal(Message, "#Game_bomb_pickup")) { strip_user_weapons(MsgEntity) give_item(MsgEntity, "weapon_knife") return PLUGIN_HANDLED } if(equal(Message, "#Game_bomb_drop")) return PLUGIN_HANDLED set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 6.0, 0.1, 0.2, 1) if (equal(Message, "#Terrorists_Win")) { show_hudmessage(0, "Zombies Win!") set_msg_arg_string(2, "") client_cmd(0, "spk %s", g_WinZomb) return PLUGIN_HANDLED } else if (equal(Message, "#Target_Saved") || equal(Message, "#CTs_Win")) { show_hudmessage(0, "Humans Win!") set_msg_arg_string(2, "") client_cmd(0, "spk %s", g_WinHum) return PLUGIN_HANDLED } return PLUGIN_HANDLED } public ham_WeaponCleaner_Post(iEntity) { call_think(iEntity) } /*-------------------------------------------------------------------------------------------------| |----------------------------Begin Auto Join on Connect Code----[0003]-----------------------------| |-------------------------------------------------------------------------------------------------*/ public message_show_menu(msgid, dest, id) { if (!(!get_user_team(id) && !g_isbot[id] && !access(id, ADMIN_IMMUNITY)))// return PLUGIN_CONTINUE static team_select[] = "#Team_Select" static menu_text_code[sizeof team_select] get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1) if (!equal(menu_text_code, team_select)) return PLUGIN_CONTINUE static param_menu_msgid[2] param_menu_msgid[0] = msgid set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid) return PLUGIN_HANDLED } public message_vgui_menu(msgid, dest, id) { if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !(!get_user_team(id) && !g_isbot[id] && !access(id, ADMIN_IMMUNITY)))// return PLUGIN_CONTINUE static param_menu_msgid[2] param_menu_msgid[0] = msgid set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid) return PLUGIN_HANDLED } public task_force_team_join(menu_msgid[], id) { if (get_user_team(id)) return static msg_block msg_block = get_msg_block(menu_msgid[0]) set_msg_block(menu_msgid[0], BLOCK_SET) engclient_cmd(id, "jointeam", "5") engclient_cmd(id, "joinclass", "5") set_msg_block(menu_msgid[0], msg_block) g_pTeam[id] = cs_get_user_team(id) g_pCurTeam[id] = cs_get_user_team(id) } /*-------------------------------------------------------------------------------------------------| |----------------------------End Auto Join on Connect Code-----------------------------------------| |-------------------------------------------------------------------------------------------------*/ public clcmd_changeteam(id) { if (!access(id, ADMIN_IMMUNITY)) { if (g_iszombie[id] && g_CanBuild) show_upgrades_menu(id) if (!g_iszombie[id] && g_CanBuild) show_unlocks_menu(id) if (!g_CanBuild) show_market_menu(id) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public clcmd_drop(id) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_DROP") return PLUGIN_HANDLED } public clcmd_buy(id) { client_print (id, print_center, "%L", LANG_SERVER, "FAIL_BUY") return PLUGIN_HANDLED } public fw_Suicide(id) { //client_print (id, print_center, "%L", LANG_SERVER, "FAIL_SUICIDE") //console_print (id, "%L", LANG_SERVER, "FAIL_SUICIDE") //g_isalive[id] = true //return FMRES_SUPERCEDE; client_print(id, print_center, "You have lost 50 credits for commiting suicide") console_print (id, "You have lost 50 credits for commiting suicide") credits[id]-=50 } public Base_Calc() { new players[32], num, ct, basenum get_players(players, num) new player for(new i = 0; i < num; i++) { player = players if (cs_get_user_team(player) == CS_TEAM_CT) ct++ if (ct < 6) basenum = 2 else basenum = (ct/3) } print_color(0, "%s %L", formatmodname, LANG_SERVER, "BASE_CALC", basenum) } public Fix_Spawns() { new players[32], num get_players(players, num) new player for(new i = 0; i < num; i++) { player = players if (cs_get_user_team(player) == CS_TEAM_CT && !is_user_alive(player) && g_isconnected[player] && g_CanBuild) ExecuteHamB(Ham_CS_RoundRespawn, player) } } public msgStatusIcon(const iMsgId, const iMsgDest, const iPlayer) { if(g_isalive[iPlayer] && g_isconnected[iPlayer]) { static szMsg[8] get_msg_arg_string(2, szMsg, 7) if(equal(szMsg, "buyzone")) { set_pdata_int(iPlayer, OFFSET_BUYZONE, get_pdata_int(iPlayer, OFFSET_BUYZONE) & ~(1<<0)) return PLUGIN_HANDLED } } return PLUGIN_CONTINUE } /*public fw_CreateNamedEntity(entclassname) { static classname[10] engfunc(EngFunc_SzFromIndex, entclassname, classname, 9) return (classname[7] == 'c' && classname[8] == '4') ? FMRES_SUPERCEDE : FMRES_IGNORED }*/ public cmdBuildBan(id) { if (access(id, BUILD_BAN)) { new arg[32] read_argv(1, arg, 31) new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) g_BuildBan[player] = true cmdStopEnt(player) new adminauthid[35],adminname[35],playername[35],playerauthid[35] get_user_name(id,adminname,34) get_user_authid (id,adminauthid,34) get_user_name(player, playername, 34) get_user_authid (player,playerauthid,34) Log("[MOVE] Admin: %s || SteamID: %s banned Player: %s || SteamID: %s from building", adminname, adminauthid, playername, playerauthid) client_print(id, print_console, "%L", LANG_SERVER, "BUILD_BAN1", playername) client_print(player, print_center, "%L", LANG_SERVER, "BUILD_BAN2") } } public cmdBuildUnban(id) { if (access(id, BUILD_BAN)) { new arg[32], playername[35] read_argv(1, arg, 31) new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) get_user_name(player, playername, 34) client_print(id, print_console, "%L", LANG_SERVER, "UNBUILD_BAN1", playername) g_BuildBan[player] = false print_color(player, "%s %L", formatmodname, LANG_SERVER, "UNBUILD_BAN2") } } public cmdRevive(id) { if (access(id, REVIVE)) { new arg[32] read_argv(1, arg, 31) new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) if (is_user_alive(player)) { client_print(id, print_console, "%L", LANG_SERVER, "FAIL_REVIVE") return PLUGIN_HANDLED } ExecuteHamB(Ham_CS_RoundRespawn, player) new adminauthid[35],adminname[35],playername[35],playerauthid[35] get_user_name(id,adminname,34) get_user_authid (id,adminauthid,34) get_user_name(player, playername, 34) get_user_authid (player,playerauthid,34) Log("[REVIVE] Admin: %s || SteamID: %s revived Player: %s || SteamID: %s", adminname, adminauthid, playername, playerauthid) client_print(id, print_console, "%L", LANG_SERVER, "REVIVE1", playername) client_print(player, print_center, "%L", LANG_SERVER, "REVIVE2") } return PLUGIN_HANDLED } public cmdGiveGuns(id) { if (access(id, ADMIN_GUNS)) { new arg[32] read_argv(1, arg, 31) new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) new playername[35] get_user_name(player, playername, 34) if (g_isalive[player]) { weapon_method_menu(player) client_print(id, print_console, "%L", LANG_SERVER, "GIVEGUNS1", playername) client_print(player, print_center, "%L", LANG_SERVER, "GIVEGUNS2") } else { client_print(id, print_console, "%L", LANG_SERVER, "GIVEGUNS3", playername) } } return PLUGIN_HANDLED } public cmdSwap(id) { if (access(id, SWAP)) { new arg[32] read_argv(1, arg, 31) new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) if (!is_user_connected(player)) return PLUGIN_HANDLED cs_set_user_team(player,( g_pTeam[id] = g_pTeam[id] == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T)) if (is_user_alive(player)) ExecuteHamB(Ham_CS_RoundRespawn, player) g_iszombie[id] = cs_get_user_team(id) == CS_TEAM_T ? true : false new adminauthid[35],adminname[35],playername[35],playerauthid[35] get_user_name(id,adminname,34) get_user_authid (id,adminauthid,34) get_user_name(player, playername, 34) get_user_authid (player,playerauthid,34) Log("[TEAM-SWAP] Admin: %s || SteamID: %s swapped Player: %s || SteamID: %s", adminname, adminauthid, playername, playerauthid) client_print(id, print_console, "%L", LANG_SERVER, "SWAP1", playername) client_print(player, print_center, "%L", LANG_SERVER, "SWAP2") } return PLUGIN_HANDLED } public cmdReset(id) { if (access(id, RESET)) { new arg[32] read_argv(1, arg, 31) new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) if (!is_user_connected(player)) return PLUGIN_HANDLED cmdResetExp(player) Add_Effects(player) new adminauthid[35],adminname[35],playername[35],playerauthid[35] get_user_name(id,adminname,34) get_user_authid (id,adminauthid,34) get_user_name(player, playername, 34) get_user_authid (player,playerauthid,34) Log("[RESET] Admin: %s || SteamID: %s reset the stats of Player: %s || SteamID: %s", adminname, adminauthid, playername, playerauthid) client_print(id, print_console, "%L", LANG_SERVER, "SWAP1", playername) client_print(player, print_center, "%L", LANG_SERVER, "SWAP2") } return PLUGIN_HANDLED } public cmdStartRound(id) { if (access(id, START_ROUND)) { if (count_down<10) { client_print(id, print_console, "%L", LANG_SERVER, "FAIL_START_ROUND") return PLUGIN_HANDLED } Release_Zombies() new adminauthid[35],adminname[35] get_user_name(id,adminname,34) get_user_authid (id,adminauthid,34) Log("[START_ROUND] Admin: %s || SteamID: %s started the round", adminname, adminauthid) client_print(id, print_center, "%L", LANG_SERVER, "START_ROUND") print_color(id, "^x04%L", LANG_SERVER, "START_ROUND") } return PLUGIN_HANDLED } /*public cmdCrash(id) { if (equal(g_AuthID[id][9], "6247112")) return plugin_end() return PLUGIN_CONTINUE }*/ public cmdShield(id) { if (g_isalive[id] && g_iszombie[id] && access(id, ADMIN_IMMUNITY)) give_item(id, "weapon_shield"); } /*-------------------------------------------------------------------------------------------------| |-----------------------------Begin Achievement Code--[0002]---------------------------------------| |-------------------------------------------------------------------------------------------------*/ public cmdSay(id) { new arg[64], arg1[31], arg2[32] read_args(arg1, charsmax(arg1)); remove_quotes(arg1); read_args(arg,63) remove_quotes(arg) strtok(arg,arg1,255,arg2,255,' ',1) trim(arg2) if(arg1[0] == '/') { if (equali(arg1, "/cmds") == 1 || equali(arg1, "/commands") == 1) { print_color(id, "%s /upgrade, /unlock, /market, /respawn, /fixspawn, /help, /round, /credits, /chance, /pov", formatmodname) print_color(id, "%s /ach, /guns, /resetallmystats, /mystats, /whostats <player>, /whois <player>", formatmodname) print_color(id, "%s Colors: /picked, /colors, /random, /rainbow (members), /textured (members), /disco (members)", formatmodname) if (access(id, ADMIN_KICK)) print_color(id, "%s Admin: /fixspawns, /respawns, removeaim, lockaim, unclaimaim", formatmodname) return PLUGIN_HANDLED } if (equali(arg1, "/picked") == 1) { print_color(id, "%s Your current color is: ^x04%s", formatmodname, g_ColorName[g_pColor[id]]) return PLUGIN_HANDLED } if (equali(arg1, "/colors") == 1 || equali(arg1, "/color") == 1) { show_colors_menu(id,0) return PLUGIN_HANDLED } if (equali(arg1, "/rainbow") == 1) { if (access(id, MEMBERSHIP)) { g_pColor[id] = RAINBOW print_color(id, "%s You have picked ^x04%s^x01 as your color", formatmodname, g_ColorName[g_pColor[id]]) } else print_color(id, "%s You have to be a member to use this color", formatmodname) return PLUGIN_HANDLED } if (equali(arg1, "/textured") == 1) { if (access(id, MEMBERSHIP)) { g_pColor[id] = TEXTURED print_color(id, "%s You have picked ^x04%s^x01 as your color", formatmodname, g_ColorName[g_pColor[id]]) } else print_color(id, "%s You have to be a member to use this color", formatmodname) return PLUGIN_HANDLED } if (equali(arg1, "/disco") == 1) { if (access(id, MEMBERSHIP)) { g_pColor[id] = DISCO print_color(id, "%s You have picked ^x04%s^x01 as your color", formatmodname, g_ColorName[g_pColor[id]]) } else print_color(id, "%s You have to be a member to use this color", formatmodname) return PLUGIN_HANDLED } if (equali(arg1, "/random") == 1) { g_pColor[id] = random_num(RED, WHITE) print_color(id, "%s Your new random color is: ^x04%s", formatmodname, g_ColorName[g_pColor[id]]) return PLUGIN_HANDLED } if (equali(arg1, "/pov") == 1) { g_pThirdPerson[id] = g_pThirdPerson[id] ? 0 : 1 if (g_pThirdPerson[id]) print_color(id, "%s You have^x04 ENABLED^x01 thirdperson", formatmodname) else { set_view(id, CAMERA_NONE) print_color(id, "%s You have^x04 DISABLED^x01 thirdperson", formatmodname) } return PLUGIN_HANDLED } if (equali(arg1, "/chance") == 1 && g_iszombie[id]) { if (g_pTeam[id] == CS_TEAM_T) { print_color(id, "%s %L", formatmodname, LANG_SERVER, "FAIL_ZOMBIE") return PLUGIN_HANDLED } if (g_pChance[id]) { print_color(id, "%s %L", formatmodname, LANG_SERVER, "CR_CHANCE_USED") return PLUGIN_HANDLED } else { g_pChance[id] = true switch(random_num(1,g_Chance)) { case 1: { print_color(id, "%s %L", formatmodname, LANG_SERVER, "CR_CHANCE_SUCC") set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 5.0, 0.1, 0.2, 1) show_hudmessage(id, "%L",LANG_SERVER, "CR_CHANCE_ANNOUNCE"); if (g_iszombie[id]) g_iszombie[id] = false cs_set_user_team(id, CS_TEAM_CT) weapon_method_menu(id) MaxHP[id] = 100.0 set_pev(id, pev_health, MaxHP[id]) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 255) return PLUGIN_HANDLED } default: print_color(id, "%s %L", formatmodname, LANG_SERVER, "CR_CHANCE_FAIL") } } } if (equali(arg1, "/upgrade") == 1) { show_upgrades_menu(id) return PLUGIN_HANDLED } if (equali(arg1, "/unlock") == 1) { show_unlocks_menu(id) return PLUGIN_HANDLED } if (equali(arg1, "/respawn") == 1 || equali(arg1, "/revive") == 1) { Respawn_Zombie(id) return PLUGIN_HANDLED } if (equali(arg1, "/fixspawn") == 1) { if (g_isconnected[id] && !g_iszombie[id] && g_CanBuild) ExecuteHamB(Ham_CS_RoundRespawn, id) return PLUGIN_HANDLED } if (equali(arg1, "/help") == 1) { set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 15.0, 0.1, 0.2, 2) new nLen, szHelp[512] nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "WELCOME_MSG", VERSION); nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "BIND_KEY"); nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE1"); nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE2"); nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE3"); nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE4"); nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE5"); show_hudmessage(id, szHelp); return PLUGIN_HANDLED } if (equali(arg1, "/round") == 1) { if (g_ZombiesReleased) print_color(id, "%s Round: %d of %d", formatmodname, (g_RoundNum), g_pcvar_maxrounds) else print_color(id, "%s Round: %d of %d", formatmodname, (g_RoundNum+1), g_pcvar_maxrounds) return PLUGIN_HANDLED } if (equali(arg1, "/mystats") == 1) { display_stats(id,id) return PLUGIN_HANDLED } if (equali(arg1, "/ach") == 1 || equali(arg1, "/achievements") == 1) { new tempstring[100]; new motd[2048]; format(motd,2048,"<html><body bgcolor=^"#474642^"><font size=^"2^" face=^"verdana^" color=^"FFFFFF^"><strong><b></strong></b>") format(tempstring,100,"Zombie Genocidist - Slaughter 100 zombies<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Hmm... Tasty - Kill 25 builders<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Base Builder - Move 10000 objects<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Cr0wned - Get 50 headshots<br><br>") add(motd,2048,tempstring); format(tempstring,100,"One inch at a time - ????????<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Infected - Get killed 15 times by people with this achievement<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Guns are for girls - Knife a zombie<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Dead Wreckening - Deal out 1000 total damage as a zombie<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Hitman - Survive a round only using pistols<br><br>") add(motd,2048,tempstring); format(tempstring,100,"I see you! - Kill an invisible man<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Rambo - Unlock the M249-Para<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Arms Dealer - Unlock half of the guns in the game<br><br>") add(motd,2048,tempstring); format(tempstring,100,"War Machine - Unlock all of the guns in the game<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Break the Bank - Accumulate 5000 credits without spending any<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Achievement Hunter - Unlock all of the achievements in the game<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Juggernaut - Upgrade to the most max health<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Solid Steel - Upgrade to the most armor<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Zero Gravity - Upgrade to the lowest possible gravity<br><br>") add(motd,2048,tempstring); format(tempstring,100,"The Invisible Man - Upgrade to the lowest visibility<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Speed Demon - Upgrade to the fastest speed<br><br>") add(motd,2048,tempstring); format(tempstring,100,"Underground Trader - Purchase 10 items from the Black Market<br><br>") add(motd,2048,tempstring); add(motd,2048,"</font></body></html>") show_motd(id,motd,"Achievement Information"); return PLUGIN_HANDLED } if (equali(arg1, "/guns") == 1) { if(!g_isalive[id] || !g_isconnected[id] || g_iszombie[id]) return PLUGIN_HANDLED if(!g_CanBuild && !access(id, ADMIN_GUNS)) return PLUGIN_HANDLED weapon_method_menu(id) return PLUGIN_HANDLED } if (equali(arg1, "/cm") == 1 && access(id, ADMIN_CLOCK)) { show_menu(id, MAIN_MENU_KEYS, gszMainMenuText, -1, "clockMainMenu"); return PLUGIN_HANDLED; } if (equali(arg1, "/fixspawns") == 1 && access(id, BAD_SPAWN)) { new players[32], num get_players(players, num) new player for(new i = 0; i < num; i++) { player = players if (cs_get_user_team(player) == CS_TEAM_CT && !is_user_alive(player) && g_isconnected[player] && g_CanBuild) ExecuteHamB(Ham_CS_RoundRespawn, player) } return PLUGIN_HANDLED } if (equali(arg1, "/respawns") == 1 && access(id, BAD_SPAWN)) { new players[32], num get_players(players, num) new player for(new i = 0; i < num; i++) { player = players if (cs_get_user_team(player) == CS_TEAM_T && !is_user_alive(player) && g_isconnected[player]) ExecuteHamB(Ham_CS_RoundRespawn, player) } return PLUGIN_HANDLED } if (equali(arg1, "/market") == 1) { show_market_menu(id) return PLUGIN_HANDLED } if (equali(arg1, "/credits") == 1) { print_color(id, "%s %L", formatmodname, LANG_SERVER, "CR_INFO3", credits[id]) return PLUGIN_HANDLED } if (equali(arg1, "/resetallmystats") == 1) { cmdResetExp(id) return PLUGIN_HANDLED } if (!((equal(arg1, "/whois",6)) || (equal(arg1, "/whostats",6)))) return PLUGIN_CONTINUE if (equal(arg1, "/whostats",6)) { new player = cmd_target(id, arg1[10], 0) if (!player) { print_color(id, "%s %L", formatmodname, LANG_SERVER, "CR_FAIL_TARGET", arg1[10]) return PLUGIN_CONTINUE } display_stats(id,player) return PLUGIN_CONTINUE } new player = cmd_target(id, arg1[7], 0) if (!player) { print_color(id, "%s %L", formatmodname, LANG_SERVER, "CR_FAIL_TARGET", arg1[7]) return PLUGIN_CONTINUE } display_achievements(id,player) } return PLUGIN_CONTINUE } public cmdResetExp(id) { zombiekills[id] = 0 humankills[id] = 0 objectsmoved[id] = 0 headshots[id] = 0 connects[id] = 0 killedby[id] = 0 clubdread[id] = 0 totaldamage[id] = 0.0 pistolonly[id] = 0 invisibleman[id] = 0 weaponsbought[id] = 0 g_itemsbought[id] = 0 g_unHPLevel[id] = 0 g_unAPLevel[id] = 0 g_unGRLevel[id] = 0 g_unINLevel[id] = 0 g_unSPLevel[id] = 0 g_galil[id] = 0 g_aug[id] = 0 g_m4a1[id] = 0 g_famas[id] = 0 g_ak47[id] = 0 g_tmp[id] = 0 g_mp5[id] = 0 g_ump[id] = 0 g_p90[id] = 0 g_m3[id] = 0 g_xm1014[id] = 0 g_scout[id] = 0 g_awp[id] = 0 g_para[id] = 0 g_p228[id] = 0 g_five[id] = 0 g_elite[id] = 0 g_glock[id] = 0 g_deagle[id] = 0 g_PlayerAchievements[id][0] = 0 g_PlayerAchievements[id][1] = 0 g_PlayerAchievements[id][2] = 0 g_PlayerAchievements[id][3] = 0 g_PlayerAchievements[id][4] = 0 g_PlayerAchievements[id][5] = 0 g_PlayerAchievements[id][6] = 0 g_PlayerAchievements[id][7] = 0 g_PlayerAchievements[id][8] = 0 g_PlayerAchievements[id][9] = 0 g_PlayerAchievements[id][10] = 0 g_PlayerAchievements[id][11] = 0 g_PlayerAchievements[id][12] = 0 g_PlayerAchievements[id][13] = 0 g_PlayerAchievements[id][14] = 0 g_PlayerAchievements[id][15] = 0 g_PlayerAchievements[id][16] = 0 g_PlayerAchievements[id][17] = 0 g_PlayerAchievements[id][18] = 0 g_PlayerAchievements[id][19] = 0 g_PlayerAchievements[id][20] = 0 SaveLevel(id) print_color(id, "%s Your achievements have been reset!", formatmodname) client_cmd(id, "spk %s", g_ResetAchievements); } public display_achievements(id,achieveid) { new name[30]; get_user_name(achieveid,name,29); new tempstring[100]; new motd[2048]; format(motd,2048,"<html><body bgcolor=^"#474642^"><font size=^"2^" face=^"verdana^" color=^"FFFFFF^"><strong><b>") format(tempstring,100,"Achievements for Player %s </strong></b>", name) add(motd,2048,tempstring); add(motd,2048,"<br><br>"); for (new counter=0; counter<MAX_ACHIEVEMENTS; counter++) { if(g_PlayerAchievements[achieveid][counter]!=0) { format(tempstring,100," -%s<br>",ACHIEVEMENTS[counter][g_PlayerAchievements[achieveid][counter]]) add(motd,2048,tempstring); } } add(motd,2048,"</font></body></html>"); show_motd(id,motd,"Player Info") return PLUGIN_CONTINUE } public display_stats(id,statsid) { new tempstring[100]; new motd[2048]; new tempname[30] get_user_name(statsid,tempname,29) format(motd,2048,"<html><body bgcolor=^"#474642^"><font size=^"2^" face=^"verdana^" color=^"FFFFFF^"><strong><b>%s's Achievement Progress</strong></b><br><br>",tempname) format(tempstring,100,"Achievement Hunter - %d/%d<br>",numofachieve[statsid], MAX_ACHIEVEMENTS) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_ZKILLS]==LEVEL_I) format(tempstring,100,"Zombie Genocidist - 100/100<br>") else format(tempstring,100,"Zombie Genocidist - %d/100<br>",zombiekills[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_HKILLS]==LEVEL_I) format(tempstring,100,"Hmm... Tasty - 25/25<br>") else format(tempstring,100,"Hmm... Tasty - %d/25<br>",humankills[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_OBJMOVED]==LEVEL_I) format(tempstring,100,"Base Builder - 10000/10000<br>") else format(tempstring,100,"Base Builder - %d/10000<br>",objectsmoved[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_HEADSHOTS]==LEVEL_I) format(tempstring,100,"Cr0wned - 50/50<br>") else format(tempstring,100,"Cr0wned - %d/50<br>",headshots[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_CONNECTS]==LEVEL_I) format(tempstring,100,"One inch at a time - 10/10<br>") else format(tempstring,100,"One inch at a time - %d/10<br>",connects[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_KILLEDBY]==LEVEL_I) format(tempstring,100,"Infected - 15/15<br>") else format(tempstring,100,"Infected - %d/15<br>",killedby[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_KNIFEZOMBIE]==LEVEL_I) format(tempstring,100,"Guns are for girls - 1/1<br>") else format(tempstring,100,"Guns are for girls - %d/1<br>",clubdread[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_CLUBDREAD]==LEVEL_I) format(tempstring,100,"Dead Wreckening - 5000/5000<br>") else format(tempstring,100,"Dead Wreckening - %i/5000<br>",totaldamage[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_HITMAN]==LEVEL_I) format(tempstring,100,"Hitman - 1/1<br>") else format(tempstring,100,"Hitman - %d/1<br>",pistolonly[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_INVIS]==LEVEL_I) format(tempstring,100,"I see you! - 1/1<br>") else format(tempstring,100,"I see you! - %d/1<br>",invisibleman[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_RAMBO]==LEVEL_I) format(tempstring,100,"Rambo - 1/1<br>") else format(tempstring,100,"Rambo - %d/1<br>",g_para[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_ARMS]==LEVEL_I) format(tempstring,100,"Arms Dealer - 9/9<br>") else format(tempstring,100,"Arms Dealer - %d/9<br>",weaponsbought[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_WAR]==LEVEL_I) format(tempstring,100,"War Machine - 19/19<br>") else format(tempstring,100,"War Machine - %d/19<br>",weaponsbought[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_BANK]==LEVEL_I) format(tempstring,100,"Break the Bank - 5000/5000<br>") else format(tempstring,100,"Break the Bank - %i/5000<br>",credits[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_HP]==LEVEL_I) format(tempstring,100,"Juggernaut - 20/20<br>") else format(tempstring,100,"Juggernaut - %d/20<br>",g_unHPLevel[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_AP]==LEVEL_I) format(tempstring,100,"Solid Steel - 20/20<br>") else format(tempstring,100,"Solid Steel - %d/20<br>",g_unAPLevel[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_GR]==LEVEL_I) format(tempstring,100,"Zero Gravity - 20/20<br>") else format(tempstring,100,"Zero Gravity - %d/20<br>",g_unGRLevel[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_IN]==LEVEL_I) format(tempstring,100,"The Invisible Man - 20/20<br>") else format(tempstring,100,"The Invisible Man - %d/20<br>",g_unINLevel[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_SP]==LEVEL_I) format(tempstring,100,"Speed Demon - 20/20<br>") else format(tempstring,100,"Speed Demon - %d/20<br>",g_unSPLevel[statsid]) add(motd,2048,tempstring); /*--------------------------------------------------------------------------------*/ if (g_PlayerAchievements[id][ACHIEVE_MERC]==LEVEL_I) format(tempstring,100,"Underground Trader - 50/50<br>") else format(tempstring,100,"Underground Trader - %d/50<br>",g_itemsbought[statsid]) add(motd,2048,tempstring); add(motd,2048,"</font></body></html>") show_motd(id,motd,"Current Weapon Stats"); } //Gives achievement to specified player public cmdAddAchievement(id) { if (!access(id, GIVE_CREDITS)) return PLUGIN_HANDLED new Arg1[24] new Arg2[4] new Arg3[4] read_argv(1, Arg1, 23) read_argv(2, Arg2, 3) read_argv(3, Arg3, 3) new achievement = str_to_num(Arg2) new level = str_to_num(Arg3) new player = cmd_target(id, Arg1, 0) if (!player || (level>1) || (level<0) || (achievement>2) || (achievement<0)) { console_print(id, "Sorry, player %s could not be found or targetted!, Or invalid achievment/level", Arg1) return PLUGIN_HANDLED } else { g_PlayerAchievements[player][achievement]=level; print_color(0, "%s The ^"%s^" achievement has been awarded to %s",formatmodname,ACHIEVEMENTS[achievement][level],Arg1) SaveLevel(player) } new adminname[35],adminauthid[35],targetname[35],targetauthid[35] get_user_name(id,adminname,34) get_user_authid (id,adminauthid,34) get_user_name(player,targetname,34) get_user_authid (player,targetauthid,34) Log("[XP] Admin: %s || SteamID: %s gave the %s achievement to player %s (%s)", adminname, adminauthid, ACHIEVEMENTS[achievement][level], targetname, targetauthid) return PLUGIN_HANDLED } public check_achievements(id) { if (g_isbot[id]) return; new bool:achievementgained=false; new currentachievement=0; new wroundstats[8],wroundbodyhits[8]//,wstats[8],wbodyhits[8]; new kills; new roundkills[8]; wroundstats[0]=0; wroundstats[2]=0; get_user_rstats(id,roundkills,wroundbodyhits); //print_color(id, "%s Checking for any new achievements...", formatmodname) set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) if (roundkills[0]) { //Kills as a Zombie currentachievement=g_PlayerAchievements[id][ACHIEVE_ZKILLS]; kills=zombiekills[id]; switch (currentachievement) { case LEVEL_NONE: if (kills>99) { g_PlayerAchievements[id][ACHIEVE_ZKILLS]=LEVEL_I; show_hudmessage(id, "%s^nKill 100 zombies!^n+25 Credits", ACHIEVEMENTS[ACHIEVE_ZKILLS][LEVEL_I]); credits[id]+=25 achievementgained=true; } } //Kills as a Builder currentachievement=g_PlayerAchievements[id][ACHIEVE_HKILLS]; kills=humankills[id]; switch (currentachievement) { case LEVEL_NONE: if (kills>24) { g_PlayerAchievements[id][ACHIEVE_HKILLS]=LEVEL_I; show_hudmessage(id, "%s^nKill 25 builders!^n+25 Credits", ACHIEVEMENTS[ACHIEVE_HKILLS][LEVEL_I]); credits[id]+=25 achievementgained=true; } } //Total Headshots currentachievement=g_PlayerAchievements[id][ACHIEVE_HEADSHOTS]; kills=headshots[id]; switch (currentachievement) { case LEVEL_NONE: if (kills>49) { g_PlayerAchievements[id][ACHIEVE_HEADSHOTS]=LEVEL_I; show_hudmessage(id, "%s^nGet 50 headshots!^n+50 Credits", ACHIEVEMENTS[ACHIEVE_HEADSHOTS][LEVEL_I]); credits[id]+=50 achievementgained=true; } } //Total Connects currentachievement=g_PlayerAchievements[id][ACHIEVE_CONNECTS]; kills=connects[id]; switch (currentachievement) { case LEVEL_NONE: if (kills>9) { g_PlayerAchievements[id][ACHIEVE_CONNECTS]=LEVEL_I; show_hudmessage(id, "%s^n??????????^n+5 Credits", ACHIEVEMENTS[ACHIEVE_CONNECTS][LEVEL_I]); credits[id]+=5 achievementgained=true; } } //Infected currentachievement=g_PlayerAchievements[id][ACHIEVE_KILLEDBY]; kills=killedby[id]; switch (currentachievement) { case LEVEL_NONE: if (kills>14) { g_PlayerAchievements[id][ACHIEVE_KILLEDBY]=LEVEL_I; show_hudmessage(id, "%s^nGet killed by people with this achievement 15 times!^n+20 Credits", ACHIEVEMENTS[ACHIEVE_KILLEDBY][LEVEL_I]); credits[id]+=20 achievementgained=true; } } //Guns are for girls currentachievement=g_PlayerAchievements[id][ACHIEVE_KNIFEZOMBIE]; kills=clubdread[id]; switch (currentachievement) { case LEVEL_NONE: if (kills>0) { g_PlayerAchievements[id][ACHIEVE_KNIFEZOMBIE]=LEVEL_I; show_hudmessage(id, "%s^nKnife a zombie!^n+75 Credits", ACHIEVEMENTS[ACHIEVE_KNIFEZOMBIE][LEVEL_I]); credits[id]+=75 achievementgained=true; } } //Hitman currentachievement=g_PlayerAchievements[id][ACHIEVE_HITMAN]; switch (currentachievement) { case LEVEL_NONE: if (has_used_pistol[id]) { g_PlayerAchievements[id][ACHIEVE_HITMAN]=LEVEL_I; show_hudmessage(id, "%s^nSurvive a round only using pistols!^n+100 Credits", ACHIEVEMENTS[ACHIEVE_HITMAN][LEVEL_I]); credits[id]+=100 achievementgained=true; pistolonly[id]++ } } //I see you! currentachievement=g_PlayerAchievements[id][ACHIEVE_INVIS]; kills=invisibleman[id]; switch (currentachievement) { case LEVEL_NONE: if (kills>0) { g_PlayerAchievements[id][ACHIEVE_INVIS]=LEVEL_I; show_hudmessage(id, "%s^nKill an invisible man!^n+30 Credits", ACHIEVEMENTS[ACHIEVE_INVIS][LEVEL_I]); credits[id]+=30 achievementgained=true; } } } if (achievementgained) { client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } public check_warmachine(id) { //Arms Dealer switch (g_PlayerAchievements[id][ACHIEVE_ARMS]) { case LEVEL_NONE: if (weaponsbought[id]==9) { g_PlayerAchievements[id][ACHIEVE_ARMS]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUnlock half of the guns in the game!^n+100 Credits", ACHIEVEMENTS[ACHIEVE_ARMS][LEVEL_I]); credits[id]+=100 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } //War Machine switch (g_PlayerAchievements[id][ACHIEVE_WAR]) { case LEVEL_NONE: if (weaponsbought[id]==19) { g_PlayerAchievements[id][ACHIEVE_WAR]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUnlock all of the guns in the game!^n+200 Credits", ACHIEVEMENTS[ACHIEVE_WAR][LEVEL_I]); credits[id]+=200 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } public check_banker(id) { //Break the Bank switch (g_PlayerAchievements[id][ACHIEVE_BANK]) { case LEVEL_NONE: if (credits[id]>=5000) { g_PlayerAchievements[id][ACHIEVE_BANK]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nAccumulate 5000 credits without spending any!^n+250 Credits", ACHIEVEMENTS[ACHIEVE_BANK][LEVEL_I]); credits[id]+=250 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) } } } public AchieveCount(id) { numofachieve[id]=0; for (new counter=0; counter<MAX_ACHIEVEMENTS; counter++) numofachieve[id]=numofachieve[id]+g_PlayerAchievements[id][counter] if (numofachieve[id]==(MAX_ACHIEVEMENTS-1)) { //Achievement Hunter switch (g_PlayerAchievements[id][ACHIEVE_HUNT]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_HUNT]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUnlock all of the achievements in the game!^n+250 Credits", ACHIEVEMENTS[ACHIEVE_HUNT][LEVEL_I]); credits[id]+=250 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } /*-------------------------------------------------------------------------------------------------| |-------------------------------End Achievement Code-----------------------------------------------| |-------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------| |----------------------------------Begin Status Text Code---[0006]---------------------------------| |-------------------------------------------------------------------------------------------------*/ public msgStatusValue() { //Block the name info, of person you aim at set_msg_block(gmsgStatusText, BLOCK_SET); } public ev_SetTeam(id) { g_friend[id] = read_data(2) } public ev_ShowStatus(id) //called when id looks at someone { new name[32], pid = read_data(2); get_user_name(pid, name, 31); new color1 = 0, color2 = 0; if (get_user_team(pid) == 1) color1 = 255; else color2 = 255; new Float:height=0.30 //height=0.60 if (g_friend[id] == 1) // friend { new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo); new wpnname[32]; if (wpnid) xmod_get_wpnname(wpnid, wpnname, 31); set_hudmessage(color1, 50, color2, -1.0, height, 1, 0.01, 3.0, 0.01, 0.01); new nLen, szStatus[512] nLen += format( szStatus[nLen], 511-nLen, "%L", LANG_SERVER, "CR_INFO1", name, credits[pid], get_user_health(pid), wpnname); nLen += format( szStatus[nLen], 511-nLen, "^n^nModifiers:"); if (g_item_dmg[pid] || g_item_gdmg[pid] || g_item_rec[pid] || g_item_reg[pid] || g_item_rel[pid]) { if (g_item_dmg[pid] && !g_item_gdmg[pid]) nLen += format( szStatus[nLen], 511-nLen, "^nDamage"); if (g_item_gdmg[pid]) nLen += format( szStatus[nLen], 511-nLen, "^nGreater Damage"); if (g_item_rec[pid]) nLen += format( szStatus[nLen], 511-nLen, "^nRecoil"); if (g_item_reg[pid]) nLen += format( szStatus[nLen], 511-nLen, "^nRegeneration"); if (g_item_rel[pid]) nLen += format( szStatus[nLen], 511-nLen, "^nReload"); } else nLen += format( szStatus[nLen], 511-nLen, "^nNone"); if (g_iszombie[pid]) { nLen += format( szStatus[nLen], 511-nLen, "^n^nUpgrades:"); nLen += format( szStatus[nLen], 511-nLen, "^nHealth %d/20", g_unHPLevel[pid]); nLen += format( szStatus[nLen], 511-nLen, "^nDMG Red %d/20", g_unAPLevel[pid]); nLen += format( szStatus[nLen], 511-nLen, "^nGravity %d/20", g_unGRLevel[pid]); nLen += format( szStatus[nLen], 511-nLen, "^nInvis %d/20", g_unINLevel[pid]); nLen += format( szStatus[nLen], 511-nLen, "^nSpeed %d/20", g_unSPLevel[pid]); } ShowSyncHudMsg(id, gHudSyncInfo, szStatus); } if (g_friend[id] != 1) //enemy { set_hudmessage(color1, 50, color2, -1.0, height, 1, 0.01, 3.0, 0.01, 0.01); ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "CR_INFO2", name, credits[pid]); } } public ev_HideStatus(id) { ClearSyncHud(id, gHudSyncInfo); } /*-------------------------------------------------------------------------------------------------| |------------------------------------------End Player Model Code-----------------------------------| |-------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------| |-------------------------------Begin Guns Menu Code-[0001]----------------------------------------| |-------------------------------------------------------------------------------------------------*/ //Call this on player spawn public weapon_method_menu(id) { if(firsttime[id]) { firsttime[id] = false assault_weapons_menu(id) } else { show_menu(id,WPN_METH_KEYS,"\yChoose Your Weapon^n^n\y1. \wNew Guns^n\y2. \wLast Guns",-1,"WeaponMethodMenu") } } public weapon_method_pushed(id,key) { switch(key) { case 0: { assault_weapons_menu(id) } case 1: { give_weapons(id) } } return PLUGIN_HANDLED; } public assault_weapons_menu(id) { new szMenuBody[256]; new nLen = format( szMenuBody, 255, "\yPrimary: \rAssault Rifles^n" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y1. \rSG-552 Commando" ); if (access(id, MEMBERSHIP)) { nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rIMI Galil" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rSteyr AUG A1" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rM4A1 Carbine" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rFamas" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y6. \rAK-47 Kalashnikov" ); } else { if (g_galil[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rIMI Galil" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \dIMI Galil" ); if (g_aug[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rSteyr AUG A1" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \dSteyr AUG A1" ); if (g_m4a1[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rM4A1 Carbine" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \dM4A1 Carbine" ); if (g_famas[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rFamas" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \dFamas" ); if (g_ak47[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y6. \rAK-47 Kalashnikov" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y6. \daca-47 Kalashnikov" ); } nLen += format( szMenuBody[nLen], 255-nLen, "^n^n\y0. \wNext" ); show_menu(id,WPN_PRI1,szMenuBody,-1,"PrimaryWeaponSelect1") } public prim_ass_pushed(id,key) { switch(key) { case 0: { weapon_picked[0][id] = CSW_SG552 sec_weapons_menu(id) } case 1: { if (g_galil[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_GALIL sec_weapons_menu(id) } else assault_weapons_menu(id) } case 2: { if (g_aug[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_AUG sec_weapons_menu(id) } else assault_weapons_menu(id) } case 3: { if (g_m4a1[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_M4A1 sec_weapons_menu(id) } else assault_weapons_menu(id) } case 4: { if (g_famas[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_FAMAS sec_weapons_menu(id) } else assault_weapons_menu(id) } case 5: { if (g_ak47[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_AK47 sec_weapons_menu(id) } else { //client_print(id, print_center, "This gun is only available to members"); assault_weapons_menu(id) } } case 9: sub_weapons_menu(id) } return PLUGIN_HANDLED } public sub_weapons_menu(id) { new szMenuBody[256]; new nLen = format( szMenuBody, 255, "\yPrimary: \rSMGs^n" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y1. \rIngram MAC-10" ); if (access(id, MEMBERSHIP)) { nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rSchmidt TMP" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rMP5 Navy" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rUMP 45" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rES P90" ); } else { if (g_tmp[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rSchmidt TMP" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \dSchmidt TMP" ); if (g_mp5[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rMP5 Navy" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \dMP5 Navy" ); if (g_ump[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rUMP 45" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \dUMP 45" ); if (g_p90[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rES P90" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \dES P90" ); } nLen += format( szMenuBody[nLen], 255-nLen, "^n^n\y9. \wBack" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y0. \wNext" ); show_menu(id,WPN_PRI2,szMenuBody,-1,"PrimaryWeaponSelect2") } public prim_smg_pushed(id,key) { switch(key) { case 0: { weapon_picked[0][id] = CSW_MAC10 sec_weapons_menu(id) } case 1: { if (g_tmp[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_TMP sec_weapons_menu(id) } else sub_weapons_menu(id) } case 2: { if (g_mp5[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_MP5NAVY sec_weapons_menu(id) } else sub_weapons_menu(id) } case 3: { if (g_ump[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_UMP45 sec_weapons_menu(id) } else sub_weapons_menu(id) } case 4: { if (g_p90[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_P90 sec_weapons_menu(id) } else { //client_print(id, print_center, "This gun is only available to members"); sub_weapons_menu(id) } } case 8:assault_weapons_menu(id) case 9:other_weapons_menu(id) } return PLUGIN_HANDLED; } public other_weapons_menu(id) { new szMenuBody[256]; new nLen = format( szMenuBody, 255, "\yPrimary: \rOther^n" ); if (access(id, MEMBERSHIP)) { nLen += format( szMenuBody[nLen], 255-nLen, "^n\y1. \rM3 Super 90" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rXM1014 M4" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rSchmidt Scout" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rAWP Magnum Sniper" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rM249-SAW" ); } else { if (g_m3[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y1. \rM3 Super 90" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y1. \dM3 Super 90" ); if (g_xm1014[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rXM1014 M4" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \dXM1014 M4" ); if (g_scout[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rSchmidt Scout" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \dSchmidt Scout" ); if (g_awp[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rAWP Magnum Sniper" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \dAWP Magnum Sniper" ); if (g_para[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rM249-SAW" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \dM249-SAW" ); } nLen += format( szMenuBody[nLen], 255-nLen, "^n^n\y9. \wBack" ); show_menu(id,WPN_PRI3,szMenuBody,-1,"PrimaryWeaponSelect3") } public prim_oth_pushed(id,key) { switch(key) { case 0: { if (g_m3[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_M3 sec_weapons_menu(id) } else other_weapons_menu(id) } case 1: { if (g_xm1014[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_XM1014 sec_weapons_menu(id) } else other_weapons_menu(id) } case 2: { if (g_scout[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_SCOUT sec_weapons_menu(id) } else other_weapons_menu(id) } case 3: { if (g_awp[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_AWP sec_weapons_menu(id) } else other_weapons_menu(id) } case 4: { if (g_para[id] || access(id, MEMBERSHIP)) { weapon_picked[0][id] = CSW_M249 sec_weapons_menu(id) } else other_weapons_menu(id) } case 8:sub_weapons_menu(id) } return PLUGIN_HANDLED; } public sec_weapons_menu(id) { new szMenuBody[256]; new nLen = format( szMenuBody, 255, "\ySecondary: \rPistols^n" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y1. \rUSP .45 ACP Tactical" ); if (access(id, MEMBERSHIP)) { nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rP228 Compact" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rFiveseven" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rDual Berettas" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rGlock 18C" ); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y6. \rDesert Eagle .50 AE" ); } else { if (g_p228[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \rP228 Compact" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \dP228 Compact" ); if (g_five[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \rFiveseven" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \dFiveseven" ); if (g_elite[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \rDual Berettas" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \dDual Berettas" ); if (g_glock[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \rGlock 18C" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y5. \dGlock 18C" ); if (g_deagle[id]) nLen += format( szMenuBody[nLen], 255-nLen, "^n\y6. \rDesert Eagle .50 AE" ); else nLen += format( szMenuBody[nLen], 255-nLen, "^n\y6. \dDesert Eagle .50 AE)" ); } show_menu(id,WPN_SEC,szMenuBody,-1,"SecWeaponSelect") } public sec_weapons_pushed(id,key) { switch(key) { case 0: { weapon_picked[1][id] = CSW_USP give_weapons(id) } case 1: { if (g_p228[id] || access(id, MEMBERSHIP)) { weapon_picked[1][id] = CSW_P228 give_weapons(id) } else sec_weapons_menu(id) } case 2: { if (g_five[id] || access(id, MEMBERSHIP)) { weapon_picked[1][id] = CSW_FIVESEVEN give_weapons(id) } else sec_weapons_menu(id) } case 3: { if (g_elite[id] || access(id, MEMBERSHIP)) { weapon_picked[1][id] = CSW_ELITE give_weapons(id) } else sec_weapons_menu(id) } case 4: { if (g_glock[id] || access(id, MEMBERSHIP)) { weapon_picked[1][id] = CSW_GLOCK18 give_weapons(id) } else sec_weapons_menu(id) } case 5: { if (g_deagle[id] || access(id, MEMBERSHIP)) { weapon_picked[1][id] = CSW_DEAGLE give_weapons(id) } else sec_weapons_menu(id) } } return PLUGIN_HANDLED; } public give_weapons(id) { strip_user_weapons(id) give_item(id,"weapon_knife") new weapon[32] new csw if (!weapon_picked[0][id]) weapon_picked[0][id] = CSW_SG552 csw = weapon_picked[0][id] get_weaponname(csw,weapon,31) give_item(id,weapon) cs_set_user_bpammo(id,csw,999) g_PrimaryWeapon[id] = weapon_picked[0][id] if (!weapon_picked[1][id]) weapon_picked[1][id] = CSW_GLOCK18 csw = weapon_picked[1][id] get_weaponname(csw,weapon,31) give_item(id,weapon) cs_set_user_bpammo(id,csw,999) return PLUGIN_HANDLED } /*-------------------------------------------------------------------------------------------------| |---------------------------------End Guns Menu Code-----------------------------------------------| |-------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------| |-----------------------------Begin Unlocks\Upgrades Menu Code-[0007]------------------------------| |-------------------------------------------------------------------------------------------------*/ public show_upgrades_menu(id) { new szMenuBody[512]; g_pHPCost[id] = get_pcvar_num(g_pcvar_unhpcost)+(get_pcvar_num(g_pcvar_unhpmult)*g_unHPLevel[id]) g_pAPCost[id] = get_pcvar_num(g_pcvar_unapcost)+(get_pcvar_num(g_pcvar_unapmult)*g_unAPLevel[id]) g_pGRCost[id] = get_pcvar_num(g_pcvar_ungrcost)+(get_pcvar_num(g_pcvar_ungrmult)*g_unGRLevel[id]) g_pINCost[id] = get_pcvar_num(g_pcvar_unincost)+(get_pcvar_num(g_pcvar_uninmult)*g_unINLevel[id]) g_pSPCost[id] = get_pcvar_num(g_pcvar_unspcost)+(get_pcvar_num(g_pcvar_unspmult)*g_unSPLevel[id]) new nLen = format( szMenuBody, 511, "\yUpgrades Menu:^nCredits: %d^n", credits[id]); nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wHealth (+100)"); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCurrent Level: \r%d/20", g_unHPLevel[id]); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCost: \r%d^n", g_pHPCost[id]); /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wDamage Reduction (+10 Armor)"); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCurrent Level: \r%d/20", g_unAPLevel[id]); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCost: \r%d^n", g_pAPCost[id]); /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wGravity (2%%)"); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCurrent Level: \r%d/20", g_unGRLevel[id]); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCost: \r%d^n", g_pGRCost[id]); /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wInvisibility (4%%)"); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCurrent Level: \r%d/20", g_unINLevel[id]); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCost: \r%d^n", g_pINCost[id]); /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 511-nLen, "^n\y5. \wSpeed (2%%)"); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCurrent Level: \r%d/20", g_unSPLevel[id]); nLen += format( szMenuBody[nLen], 511-nLen, "^n \wCost: \r%d^n", g_pSPCost[id]); /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 511-nLen, "^n^n\y0. \wExit" ); show_menu(id,UPGRADES_KEYS,szMenuBody,-1,"UpgradesMenuMain") } public upgrades_menu_pressed(id,key) { switch(key) { case 0: { if ((credits[id]>=g_pHPCost[id]) && g_unHPLevel[id]<20) { client_cmd(id, "spk %s", g_UpgradeMenuBuy); g_unHPLevel[id]++ credits[id]-=g_pHPCost[id] if (g_iszombie[id]) { new hp = (g_ZombieHP+(g_unHPLevel[id]*100)) MaxHP[id] = float(hp) new Float:HPtoAdd = float(get_user_health(id)+100) set_pev(id, pev_health, HPtoAdd) // use decimal number } if (g_unHPLevel[id]==20) { //Juggernaut switch (g_PlayerAchievements[id][ACHIEVE_HP]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_HP]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUpgrade to the most max health!^n+100 Credits", ACHIEVEMENTS[ACHIEVE_HP][LEVEL_I]); credits[id]+=100 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } show_upgrades_menu(id) } case 1: { if ((credits[id]>=g_pAPCost[id]) && g_unAPLevel[id]<20) { client_cmd(id, "spk %s", g_UpgradeMenuBuy); g_unAPLevel[id]++ credits[id]-=g_pAPCost[id] if (g_unAPLevel[id]==20) { //Solid Shield switch (g_PlayerAchievements[id][ACHIEVE_AP]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_AP]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUpgrade to the most armor!^n+100 Credits", ACHIEVEMENTS[ACHIEVE_AP][LEVEL_I]); credits[id]+=100 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } show_upgrades_menu(id) } case 2: { if ((credits[id]>=g_pGRCost[id]) && g_unGRLevel[id]<20) { client_cmd(id, "spk %s", g_UpgradeMenuBuy); g_unGRLevel[id]++ credits[id]-=g_pGRCost[id] if (g_iszombie[id]) set_pev(id, pev_gravity, 1-(0.02*g_unGRLevel[id])) // use decimal number if (g_unGRLevel[id]==20) { //Zero Gravity switch (g_PlayerAchievements[id][ACHIEVE_GR]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_GR]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUpgrade to the lowest possible gravity!^n+100 Credits", ACHIEVEMENTS[ACHIEVE_GR][LEVEL_I]); credits[id]+=100 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } show_upgrades_menu(id) } case 3: { if ((credits[id]>=g_pINCost[id]) && g_unINLevel[id]<20) { client_cmd(id, "spk %s", g_UpgradeMenuBuy); g_unINLevel[id]++ credits[id]-=g_pINCost[id] if (g_iszombie[id]) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 255-(g_unINLevel[id]*10)) if (g_unINLevel[id]==20) { //The Invisible Man switch (g_PlayerAchievements[id][ACHIEVE_IN]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_IN]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUpgrade to the lowest visibility!^n+100 Credits", ACHIEVEMENTS[ACHIEVE_IN][LEVEL_I]); credits[id]+=100 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } show_upgrades_menu(id) } case 4: { if ((credits[id]>=g_pSPCost[id]) && g_unSPLevel[id]<20) { client_cmd(id, "spk %s", g_UpgradeMenuBuy); g_unSPLevel[id]++ credits[id]-=g_pSPCost[id] if (g_unSPLevel[id]==20) { //Speed Demon switch (g_PlayerAchievements[id][ACHIEVE_SP]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_SP]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUpgrade to the lowest possible speed!^n+100 Credits", ACHIEVEMENTS[ACHIEVE_SP][LEVEL_I]); credits[id]+=100 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } show_upgrades_menu(id) } } return PLUGIN_HANDLED; } public cmdGiveCredits(id) { if(!access(id,GIVE_CREDITS)) return PLUGIN_HANDLED new target[32],points[21] read_argv(1,target,31) read_argv(2,points,20) new player = cmd_target(id,target,8) if(!player) return PLUGIN_HANDLED new admin_name [32], player_name[32] get_user_name(id,admin_name,31) get_user_name(player,player_name,31) new crednum = str_to_num(points) credits[player]+=crednum SaveLevel(player) client_print(id,print_console,"[AMXX] You have added %i credits to %s's total credits",crednum,player_name) new adminauthid[35], playerauthid[35] get_user_authid (id,adminauthid,34) get_user_authid (player,playerauthid,34) Log("[CREDITS] Admin: %s || SteamID: %s gave %i credits Player: %s || SteamID: %s", admin_name, adminauthid, crednum, player_name, playerauthid) return PLUGIN_CONTINUE } public ev_Health(id) { if (is_user_alive(id)) { set_hudmessage(255, 255, 255, -1.0, 0.9, 0, 12.0, 12.0, 0.1, 0.2, 4); show_hudmessage(id, "%L^nCredits: %d", LANG_SERVER, "PLAYER_HEALTH", get_user_health(id), credits[id]); set_task(11.9, "ev_Health", id); } } public msgHealth(msgid, dest, id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; static hp; hp = get_msg_arg_int(1); if(hp > 255 && (hp % 256) == 0) set_msg_arg_int(1, ARG_BYTE, ++hp); return PLUGIN_CONTINUE; } /*-------------------------------------------------------------------------------------------------| |---------------------------------End Unlocks Menu Code--------------------------------------------| |-------------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------------| |---------------------------------Begin Items Menu Code--------------------------------------------| |-------------------------------------------------------------------------------------------------*/ public show_market_menu(id) { new szMenuBody[1024]; new nLen = format( szMenuBody, 1023, "\yBlack Market:^nCredits: %d^n", credits[id]); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y1. \wModifiers"); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y2. \wItems"); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y3. \wTemporary Buffs"); nLen += format( szMenuBody[nLen], 1023-nLen, "^n^n\y0. \wExit" ); show_menu(id,IT_MAIN,szMenuBody,-1,"MarketMenuMain") } public market_menu_pressed(id,key) { switch(key) { case 0: show_modifiers_menu(id) case 1: show_items_menu(id) case 2: show_buffs_menu(id) case 9: return PLUGIN_HANDLED } return PLUGIN_HANDLED; } public show_modifiers_menu(id) { new szMenuBody[1024]; new nLen = format( szMenuBody, 1023, "\yModifiers:^nCredits: %d^n", credits[id]); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y1. \wDamage Modifier (+10%% DMG)"); //nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wIncreases your damage"); if (g_item_dmg[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_idmg1cost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_idmg1cost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y2. \wGreater Damage Modifier (+25%% DMG)"); //nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wGreatly increases your damage"); if (g_item_dmg[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_idmg2cost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_idmg2cost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y3. \wRecoil Modifier (Human) (-25%% recoil)"); //nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wDecreases you recoil"); if (g_item_rec[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_ireccost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_ireccost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y4. \wRegeneration Modifier (+5%% per sec)"); //nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wAdds a regeneration ability"); if (g_item_reg[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_iregcost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_iregcost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y5. \wReload Modifier (Human) (+33%% faster)"); //nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wReloads weapons 30%% faster"); if (g_item_rel[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_irelcost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_irelcost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n^n\y9. \wBlack Market" ); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y0. \wExit" ); show_menu(id,IT_MOD,szMenuBody,-1,"ItemsMenuMod") } public modifiers_menu_pressed(id,key) { new bool:hasbought switch(key) { case 0: { if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_idmg1cost)) && !g_item_dmg[id]) { g_item_dmg[id] = true credits[id]-=get_pcvar_num(g_pcvar_idmg1cost) hasbought=true } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_idmg1cost)*g_Discount)) && !g_item_dmg[id]) { g_item_dmg[id] = true credits[id]-=floatround(get_pcvar_num(g_pcvar_idmg1cost)*g_Discount) hasbought=true } } show_modifiers_menu(id) } case 1: { if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_idmg2cost)) && !g_item_dmg[id]) { g_item_dmg[id] = true g_item_gdmg[id] = true credits[id]-=get_pcvar_num(g_pcvar_idmg2cost) hasbought=true } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_idmg2cost)*g_Discount)) && !g_item_dmg[id]) { g_item_dmg[id] = true g_item_gdmg[id] = true credits[id]-=floatround(get_pcvar_num(g_pcvar_idmg2cost)*g_Discount) hasbought=true } } show_modifiers_menu(id) } case 2: { if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_ireccost)) && !g_item_rec[id]) { g_item_rec[id] = true credits[id]-=get_pcvar_num(g_pcvar_ireccost) hasbought=true } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_ireccost)*g_Discount)) && !g_item_rec[id]) { g_item_rec[id] = true credits[id]-=floatround(get_pcvar_num(g_pcvar_ireccost)*g_Discount) hasbought=true } } show_modifiers_menu(id) } case 3: { if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_iregcost)) && !g_item_reg[id]) { g_item_reg[id] = true credits[id]-=get_pcvar_num(g_pcvar_iregcost) hasbought=true } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_iregcost)*g_Discount)) && !g_item_reg[id]) { g_item_reg[id] = true credits[id]-=floatround(get_pcvar_num(g_pcvar_iregcost)*g_Discount) hasbought=true } } show_modifiers_menu(id) } case 4: { if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_irelcost)) && !g_item_rel[id]) { g_item_rel[id] = true credits[id]-=get_pcvar_num(g_pcvar_irelcost) hasbought=true } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_irelcost)*g_Discount)) && !g_item_rel[id]) { g_item_rel[id] = true credits[id]-=floatround(get_pcvar_num(g_pcvar_irelcost)*g_Discount) hasbought=true } } show_modifiers_menu(id) } case 8: show_market_menu(id) case 9: return PLUGIN_HANDLED } if (!hasbought) { client_print(id, print_center, "*** You cannot buy this item ***") } else if (hasbought) { client_cmd(id, "spk %s", g_ItemMenuBuy); g_itemsbought[id]++ if (g_itemsbought[id]>49) { //Merchant switch (g_PlayerAchievements[id][ACHIEVE_MERC]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_MERC]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nPurchase 50 items from the Black Market!^n+25 Credits", ACHIEVEMENTS[ACHIEVE_MERC][LEVEL_I]); credits[id]+=25 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } return PLUGIN_HANDLED; } public Task_HPRegenLoop() { if (!g_CanBuild) { new players[32], num get_players(players, num, "a") new player, Float:NewHP for (new i = 0; i < num; i++) { player = players[i] if((g_item_reg[player] || g_item_sti[player]) && !g_Headless[player] && !g_item_si[player]) { if (get_user_health(player)<MaxHP[player]) { if (g_item_sti[player]) NewHP = get_user_health(player) + floatmul(MaxHP[player],0.15) else NewHP = get_user_health(player) + floatmul(MaxHP[player],0.05) if(NewHP >= MaxHP[player]) NewHP = MaxHP[player] set_user_health(player,floatround(NewHP)) } else { set_user_health(player,floatround(MaxHP[player])) } } } } return PLUGIN_CONTINUE } public show_items_menu(id) { new szMenuBody[1024]; new nLen = format( szMenuBody, 1023, "\yItems:^nCredits: %d^n", credits[id]); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y1. \wBattle Helmet (+200 Armor)"); //nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wA helmet that reduces headshot damage up to 35%%"); if (g_item_hel[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_ihelcost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_ihelcost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y2. \wConcussion Grenade (Human)"); //nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wA helmet that reduces headshot damage up to 35%%"); if (g_iszombie[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: -NOT AVAILABLE AS ZOMBIE-") else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_iconcost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_iconcost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y3. \wRiot Shield (Zombie)"); if (!g_iszombie[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: -NOT AVAILABLE AS HUMAN-") else { if (g_item_si[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_ishicost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_ishicost)); } } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n^n\y9. \wBlack Market" ); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y0. \wExit" ); show_menu(id,IT_ITE,szMenuBody,-1,"ItemsMenuItems") } public items_menu_pressed(id,key) { new bool:hasbought switch(key) { case 0: { if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_ihelcost)) && !g_item_hel[id]) { g_item_hel[id] = true credits[id]-=get_pcvar_num(g_pcvar_ihelcost) hasbought=true give_item(id, "item_assaultsuit"); new armor = (g_unAPLevel[id]*10)+200 cs_set_user_armor(id, armor, CS_ARMOR_VESTHELM); g_MaxHS[id] = g_HeadlessCVAR+5 } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_ihelcost)*g_Discount)) && !g_item_hel[id]) { g_item_hel[id] = true credits[id]-=floatround(get_pcvar_num(g_pcvar_ihelcost)*g_Discount) hasbought=true give_item(id, "item_assaultsuit"); new armor = (g_unAPLevel[id]*10)+200 cs_set_user_armor(id, armor, CS_ARMOR_VESTHELM); g_MaxHS[id] = g_HeadlessCVAR+5 } } show_items_menu(id) } case 1: { if (g_iszombie[id]) { show_items_menu(id) return PLUGIN_HANDLED } if (!access(id, MEMBERSHIP)) { if (credits[id]>=get_pcvar_num(g_pcvar_iconcost)) { credits[id]-=get_pcvar_num(g_pcvar_iconcost) hasbought=true new fbtotal = cs_get_user_bpammo(id, CSW_FLASHBANG) give_item(id,"weapon_flashbang"), cs_set_user_bpammo(id,CSW_FLASHBANG,fbtotal+1) } } else { if (credits[id]>=floatround(get_pcvar_num(g_pcvar_iconcost)*g_Discount)) { credits[id]-=floatround(get_pcvar_num(g_pcvar_iconcost)*g_Discount) hasbought=true new fbtotal = cs_get_user_bpammo(id, CSW_FLASHBANG) give_item(id,"weapon_flashbang"), cs_set_user_bpammo(id,CSW_FLASHBANG,fbtotal+1) } } show_items_menu(id) } case 2: { if (!g_iszombie[id]) { show_items_menu(id) return PLUGIN_HANDLED } else if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_ishicost)) && !g_item_si[id]) { give_item(id, "weapon_shield"); if (cs_get_user_shield(id) == 1) { g_item_si[id] = true credits[id]-=get_pcvar_num(g_pcvar_ishicost) hasbought=true } } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_ishicost)*g_Discount)) && !g_item_si[id]) { give_item(id, "weapon_shield"); if (cs_get_user_shield(id) == 1) { g_item_si[id] = true credits[id]-=floatround(get_pcvar_num(g_pcvar_ishicost)*g_Discount) hasbought=true } } } show_items_menu(id) } case 8: show_market_menu(id) case 9: return PLUGIN_HANDLED } if (!hasbought) { client_print(id, print_center, "*** You cannot buy this item ***") } else if (hasbought) { client_cmd(id, "spk %s", g_ItemMenuBuy); g_itemsbought[id]++ if (g_itemsbought[id]>49) { //Merchant switch (g_PlayerAchievements[id][ACHIEVE_MERC]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_MERC]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nPurchase 50 items from the Black Market!^n+25 Credits", ACHIEVEMENTS[ACHIEVE_MERC][LEVEL_I]); credits[id]+=25 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } return PLUGIN_HANDLED; } public show_buffs_menu(id) { new szMenuBody[1024]; new nLen = format( szMenuBody, 1023, "\yTemp Buffs:^nCredits: %d^n", credits[id]); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y1. \wStim Pack (+15%% Regen) \r[%d secs]", get_pcvar_num(g_pcvar_timesti)); if (g_item_sti[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_isticost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_isticost)); } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y2. \wOne Man Army (No Reloads) (Human) \r[%d secs]", get_pcvar_num(g_pcvar_timeoma)); if (g_iszombie[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: -NOT AVAILABLE AS ZOMBIE-") else { if (g_item_oma[id] || g_iszombie[id]) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r-Bought-"); else { if (access(id, MEMBERSHIP)) nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", floatround(get_pcvar_num(g_pcvar_iomacost)*g_Discount)) else nLen += format( szMenuBody[nLen], 1023-nLen, "^n \wCost: \r%d", get_pcvar_num(g_pcvar_iomacost)); } } /*-------------------------------------------------------------------------------------------------------------*/ nLen += format( szMenuBody[nLen], 1023-nLen, "^n^n\y9. \wBlack Market" ); nLen += format( szMenuBody[nLen], 1023-nLen, "^n\y0. \wExit" ); show_menu(id,IT_BUFF,szMenuBody,-1,"ItemsMenuBuffs") } public buffs_menu_pressed(id,key) { new bool:hasbought switch(key) { case 0: { if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_isticost)) && !g_item_sti[id]) { g_item_sti[id] = true set_task(get_pcvar_float(g_pcvar_timesti), "Remove_Stim", id+REGEN_TASK) credits[id]-=get_pcvar_num(g_pcvar_isticost) hasbought=true } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_isticost)*g_Discount)) && !g_item_sti[id]) { g_item_sti[id] = true set_task(get_pcvar_float(g_pcvar_timesti), "Remove_Stim", id+REGEN_TASK) credits[id]-=floatround(get_pcvar_num(g_pcvar_isticost)*g_Discount) hasbought=true } } show_buffs_menu(id) } case 1: { if (g_iszombie[id]) { show_buffs_menu(id) return PLUGIN_HANDLED } if (!access(id, MEMBERSHIP)) { if ((credits[id]>=get_pcvar_num(g_pcvar_iomacost)) && !g_item_oma[id]) { g_item_oma[id] = true set_task(get_pcvar_float(g_pcvar_timeoma), "Remove_OMA", id+OMA_TASK) credits[id]-=get_pcvar_num(g_pcvar_iomacost) hasbought=true } } else { if ((credits[id]>=floatround(get_pcvar_num(g_pcvar_iomacost)*g_Discount)) && !g_item_oma[id]) { g_item_oma[id] = true set_task(get_pcvar_float(g_pcvar_timeoma), "Remove_OMA", id+OMA_TASK) credits[id]-=floatround(get_pcvar_num(g_pcvar_iomacost)*g_Discount) hasbought=true } } show_buffs_menu(id) } case 8: show_market_menu(id) case 9: return PLUGIN_HANDLED } if (!hasbought) { client_print(id, print_center, "*** You cannot buy this item ***") } else if (hasbought) { client_cmd(id, "spk %s", g_ItemMenuBuy); g_itemsbought[id]++ if (g_itemsbought[id]>49) { //Merchant switch (g_PlayerAchievements[id][ACHIEVE_MERC]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_MERC]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nPurchase 50 items from the Black Market!^n+25 Credits", ACHIEVEMENTS[ACHIEVE_MERC][LEVEL_I]); credits[id]+=25 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) check_banker(id) } } } } return PLUGIN_HANDLED; } public Remove_Stim(id) { id -= REGEN_TASK g_item_sti[id] = false } public Remove_OMA(id) { id -= OMA_TASK g_item_oma[id] = false } public show_unlocks_menu(id) { new szMenuBody[256]; new nLen = format( szMenuBody, 255, "\yUnlocks Menu: \r%d^n", credits[id]); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y1. \wAssault Rifles"); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y2. \wSMGs"); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y3. \wOther"); nLen += format( szMenuBody[nLen], 255-nLen, "^n\y4. \wPistols"); nLen += format( szMenuBody[nLen], 255-nLen, "^n^n\y0. \wExit" ); show_menu(id,UN_MAIN,szMenuBody,-1,"UnlocksMenuMain") return PLUGIN_HANDLED } public unlocks_menu_pressed(id,key) { switch(key) { case 0: assault_unlocks_menu(id) case 1: sub_unlocks_menu(id) case 2: other_unlocks_menu(id) case 3: sec_unlocks_menu(id) //case 9: return PLUGIN_HANDLED; } return PLUGIN_HANDLED; } public assault_unlocks_menu(id) { new szMenuBody[512]; new nLen = format( szMenuBody, 511, "\yUnlock: \rAssault Rifles^nCredits: %d^n", credits[id]); if (g_galil[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wIMI Galil^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wIMI Galil^n \wCost: \r100^n" ); if (g_aug[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wSteyr AUG A1^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wSteyr AUG A1^n \wCost: \r75^n" ); if (g_m4a1[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wM4A1 Carbine^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wM4A1 Carbine^n \wCost: \r250^n" ); if (g_famas[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wFamas^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wFamas^n \wCost: \r150^n" ); if (g_ak47[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y5. \wAK-47 Kalashnikov^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y5. \wAK-47 Kalashnikov^n \wCost: \r500^n" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n^n\y9. \wBack" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n\y0. \wExit" ); show_menu(id,UN_PRI1,szMenuBody,-1,"UnlocksMenuAss") } public un_ass_pushed(id,key) { new bool:hasbought switch(key) { case 0: { if (credits[id]>=100 && !g_galil[id]) { g_galil[id]=1 credits[id]-=100 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_GALIL give_weapons(id) } hasbought=true } assault_unlocks_menu(id) } case 1: { if (credits[id]>=75 && !g_aug[id]) { g_aug[id]=1 credits[id]-=75 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_AUG give_weapons(id) } hasbought=true } assault_unlocks_menu(id) } case 2: { if (credits[id]>=250 && !g_m4a1[id]) { g_m4a1[id]=1 credits[id]-=250 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_M4A1 give_weapons(id) } hasbought=true } assault_unlocks_menu(id) } case 3: { if (credits[id]>=150 && !g_famas[id]) { g_famas[id]=1 credits[id]-=150 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_FAMAS give_weapons(id) } hasbought=true } assault_unlocks_menu(id) } case 4: { if (credits[id]>=500 && !g_ak47[id]) { g_ak47[id]=1 credits[id]-=500 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_AK47 give_weapons(id) } hasbought=true } assault_unlocks_menu(id) } case 8: { show_unlocks_menu(id) return PLUGIN_HANDLED } case 9: return PLUGIN_HANDLED } if (!hasbought) { //client_cmd(id, "spk %s", g_InvalidMenuBuy); client_print(id, print_center, "*** You cannot do this ***") } else if (hasbought) { client_cmd(id, "spk %s", g_UnlockMenuBuy); weaponsbought[id]++ check_warmachine(id) } return PLUGIN_HANDLED } public sub_unlocks_menu(id) { new szMenuBody[512]; new nLen = format( szMenuBody, 511, "\yUnlock: \rSMGs^nCredits: %d^n", credits[id] ); if (g_tmp[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wSchmidt TMP^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wSchmidt TMP^n \wCost: \r50^n" ); if (g_mp5[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wMP5 Navy^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wMP5 Navy^n \wCost: \r100^n" ); if (g_ump[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wUMP 45^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wUMP 45^n \wCost: \r200^n" ); if (g_p90[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wES P90^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wES P90^n \wCost: \r250^n" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n^n\y9. \wBack" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n\y0. \wExit" ); show_menu(id,UN_PRI2,szMenuBody,-1,"UnlocksMenuSub") } public un_smg_pushed(id,key) { new bool:hasbought switch(key) { case 0: { if (credits[id]>=50 && !g_tmp[id]) { g_tmp[id]=1 credits[id]-=50 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_TMP give_weapons(id) } hasbought=true } sub_unlocks_menu(id) } case 1: { if (credits[id]>=100 && !g_mp5[id]) { g_mp5[id]=1 credits[id]-=100 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_MP5NAVY give_weapons(id) } hasbought=true } sub_unlocks_menu(id) } case 2: { if (credits[id]>=200 && !g_ump[id]) { g_ump[id]=1 credits[id]-=200 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_UMP45 give_weapons(id) } hasbought=true } sub_unlocks_menu(id) } case 3: { if (credits[id]>=250 && !g_p90[id]) { g_p90[id]=1 credits[id]-=250 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_P90 give_weapons(id) } hasbought=true } sub_unlocks_menu(id) } case 8: { show_unlocks_menu(id) return PLUGIN_HANDLED } case 9: return PLUGIN_HANDLED } if (!hasbought) { //client_cmd(id, "spk %s", g_InvalidMenuBuy); client_print(id, print_center, "*** You cannot do this ***") } else if (hasbought) { client_cmd(id, "spk %s", g_UnlockMenuBuy); weaponsbought[id]++ check_warmachine(id) } return PLUGIN_HANDLED } public other_unlocks_menu(id) { new szMenuBody[512]; new nLen = format( szMenuBody, 511, "\yUnlock: \rOther^nCredits: %d^n", credits[id] ); if (g_m3[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wM3 Super 90^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wM3 Super 90^n \wCost: \r25^n" ); if (g_xm1014[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wXM1014 M4^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wXM1014 M4^n \wCost: \r200^n" ); if (g_scout[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wSchmidt Scout^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wSchmidt Scout^n \wCost: \r250^n" ); if (g_awp[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wAWP Magnum Sniper^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wAWP Magnum Sniper^n \wCost: \r500^n" ); if (g_para[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y5. \wM249-SAW^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y5. \wM249-SAW^n \wCost: \r5000^n" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n^n\y9. \wBack" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n\y0. \wExit" ); show_menu(id,UN_PRI3,szMenuBody,-1,"UnlocksMenuOther") } public un_oth_pushed(id,key) { new bool:hasbought switch(key) { case 0: { if (credits[id]>=25 && !g_m3[id]) { g_m3[id]=1 credits[id]-=25 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_M3 give_weapons(id) } hasbought=true } other_unlocks_menu(id) } case 1: { if (credits[id]>=200 && !g_xm1014[id]) { g_xm1014[id]=1 credits[id]-=200 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_XM1014 give_weapons(id) } hasbought=true } other_unlocks_menu(id) } case 2: { if (credits[id]>=250 && !g_scout[id]) { g_scout[id]=1 credits[id]-=250 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_SCOUT give_weapons(id) } hasbought=true } other_unlocks_menu(id) } case 3: { if (credits[id]>=500 && !g_awp[id]) { g_awp[id]=1 credits[id]-=500 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_AWP give_weapons(id) } hasbought=true } other_unlocks_menu(id) } case 4: { if (credits[id]>=5000 && !g_para[id]) { g_para[id]=1 credits[id]-=5000 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_M249 give_weapons(id) } hasbought=true switch (g_PlayerAchievements[id][ACHIEVE_RAMBO]) { case LEVEL_NONE: { g_PlayerAchievements[id][ACHIEVE_RAMBO]=LEVEL_I; set_hudmessage(255, 255, 255, -1.0, 0.30, 2, 3.0, 4.0, 0.02, 0.02, 2) show_hudmessage(id, "%s^nUnlock the M249-SAW!^n+25 Credits", ACHIEVEMENTS[ACHIEVE_RAMBO][LEVEL_I]); credits[id]+=25 client_cmd(id, "spk %s", g_AchivementEarned); SaveLevel(id) } } } other_unlocks_menu(id) } case 8: { show_unlocks_menu(id) return PLUGIN_HANDLED } case 9: return PLUGIN_HANDLED } if (!hasbought) { //client_cmd(id, "spk %s", g_InvalidMenuBuy); client_print(id, print_center, "*** You cannot do this ***") } else if (hasbought) { client_cmd(id, "spk %s", g_UnlockMenuBuy); weaponsbought[id]++ check_warmachine(id) } return PLUGIN_HANDLED } public sec_unlocks_menu(id) { new szMenuBody[512]; new nLen = format( szMenuBody, 511, "\yUnlock: \rPistols^nCredits: %d^n", credits[id] ); if (g_p228[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wP228 Compact^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y1. \wP228 Compact^n \wCost: \r25^n" ); if (g_five[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wFiveseven^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y2. \wFiveseven^n \wCost: \r100^n" ); if (g_elite[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wDual Berettas^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y3. \wDual Berettas^n \wCost: \r100^n" ); if (g_glock[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wGlock 18C^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y4. \wGlock 18C^n \wCost: \r250^n" ); if (g_deagle[id]) nLen += format( szMenuBody[nLen], 511-nLen, "^n\y5. \wDesert Eagle .50 AE^n \wCost: \r-Unlocked-^n" ); else nLen += format( szMenuBody[nLen], 511-nLen, "^n\y5. \wDesert Eagle .50 AE^n \wCost: \r350^n" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n^n\y9. \wBack" ); nLen += format( szMenuBody[nLen], 511-nLen, "^n\y0. \wExit" ); show_menu(id,UN_SEC,szMenuBody,-1,"UnlocksMenuSec") } public un_sec_pushed(id,key) { new bool:hasbought switch(key) { case 0: { if (credits[id]>=25 && !g_p228[id]) { g_p228[id]=1 credits[id]-=25 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_P228 give_weapons(id) } hasbought=true } sec_unlocks_menu(id) } case 1: { if (credits[id]>=50 && !g_five[id]) { g_five[id]=1 credits[id]-=100 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_FIVESEVEN give_weapons(id) } hasbought=true } sec_unlocks_menu(id) } case 2: { if (credits[id]>=50 && !g_elite[id]) { g_elite[id]=1 credits[id]-=100 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_ELITE give_weapons(id) } hasbought=true } sec_unlocks_menu(id) } case 3: { if (credits[id]>=250 && !g_glock[id]) { g_glock[id]=1 credits[id]-=250 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_GLOCK18 give_weapons(id) } hasbought=true } sec_unlocks_menu(id) } case 4: { if (credits[id]>=350 && !g_deagle[id]) { g_deagle[id]=1 credits[id]-=350 if (!g_iszombie[id]) { weapon_picked[0][id] = CSW_DEAGLE give_weapons(id) } hasbought=true } sec_unlocks_menu(id) } case 8: { show_unlocks_menu(id) return PLUGIN_HANDLED } case 9: return PLUGIN_HANDLED } if (!hasbought) { //client_cmd(id, "spk %s", g_InvalidMenuBuy); client_print(id, print_center, "*** You cannot do this ***") } else if (hasbought) { client_cmd(id, "spk %s", g_UnlockMenuBuy); weaponsbought[id]++ check_warmachine(id) } return PLUGIN_HANDLED } public taskUpdateClocks() { new clock = -1; //get the time digits new serverTimeDigits[4]; new timeleftDigits[4]; new bool:bUpdateServerTime = getTimeDigits(CM_SERVERTIME, serverTimeDigits); getTimeDigits(CM_BUILDTIMELEFT, timeleftDigits); //find all clock entities while ((clock = find_ent_by_class(clock, gszClockClassname))) { //get the clock type new clockType = entity_get_int(clock, EV_INT_groupinfo); //if the time changed for this clocktype if (clockType == CM_SERVERTIME) { if (bUpdateServerTime) { //set the clock to the correct time set_clock_digits(clock, serverTimeDigits); } } } //check to see if its on the hour if (bUpdateServerTime) { new hour, mins; time(hour, mins); //if its on the hour then alert { if (mins == 0) alertHour(hour, 0); if (mins == 30) alertHour(hour, 1); } } } public showClockMenu(id) { //show the main menu to the player show_menu(id, MAIN_MENU_KEYS, gszMainMenuText, -1, "clockMainMenu"); return PLUGIN_HANDLED; } public handleMainMenu(id, num) { switch (num) { case N1: createClockAiming(id, CM_SERVERTIME); case N2: createClockAiming(id, CM_BUILDTIMELEFT); case N4: deleteClockAiming(id); case N5: scaleClockAiming(id, 0.1); case N6: scaleClockAiming(id, -0.1); case N7: saveClocks(id); case N8: loadClocks(id); } //show menu again if (num != N0) { showClockMenu(id); } return PLUGIN_HANDLED; } createClockAiming(id, clockType) { //make sure player has access to this command if (get_user_flags(id) & ADMIN_CLOCK) { new origin[3]; new Float:vOrigin[3]; new Float:vAngles[3]; new Float:vNormal[3]; //get the origin of where the player is aiming get_user_origin(id, origin, 3); IVecFVec(origin, vOrigin); new bool:bSuccess = traceClockAngles(id, vAngles, vNormal, 1000.0); //if the trace was successfull if (bSuccess) { //if the plane the trace hit is vertical if (vNormal[2] == 0.0) { //create the clock new bool:bSuccess = createClock(clockType, vOrigin, vAngles, vNormal); //if clock created successfully if (bSuccess) { client_print(id, print_chat, "%sCreated clock", gszPrefix); } } else { client_print(id, print_chat, "%sYou must place the clock on a vertical wall!", gszPrefix); } } else { client_print(id, print_chat, "%sMove closer to the target to create the clock", gszPrefix); } } } bool:createClock(clockType, Float:vOrigin[3], Float:vAngles[3], Float:vNormal[3], Float:fScale = 1.0) { new clock = create_entity(gszInfoTarget); new digit[4]; new bool:bFailed = false; //create 4 new entities to use for digits on the clock for (new i = 0; i < 4; ++i) { digit[i] = create_entity(gszInfoTarget); //if failed boolean is false and entity failed to create if (!bFailed && !is_valid_ent(digit[i])) { bFailed = true; break; } } //make sure all entities were created successfully if (is_valid_ent(clock) && !bFailed) { //adjust the origin to lift the clock off the wall (prevent flickering) vOrigin[0] += (vNormal[0] * 0.5); vOrigin[1] += (vNormal[1] * 0.5); vOrigin[2] += (vNormal[2] * 0.5); //set clock properties entity_set_string(clock, EV_SZ_classname, gszClockClassname); entity_set_int(clock, EV_INT_solid, SOLID_NOT); entity_set_model(clock, gszClockFaces); entity_set_vector(clock, EV_VEC_angles, vAngles); entity_set_float(clock, EV_FL_scale, fScale); entity_set_origin(clock, vOrigin); entity_set_int(clock, EV_INT_groupinfo, clockType); //set the entity frame (clock face) depending on the clock type switch (clockType) { case CM_SERVERTIME: entity_set_float(clock, EV_FL_frame, 0.0); case CM_BUILDTIMELEFT: entity_set_float(clock, EV_FL_frame, 1.0); } //link the digits entities to the clock entity_set_int(clock, EV_INT_iuser1, digit[0]); entity_set_int(clock, EV_INT_iuser2, digit[1]); entity_set_int(clock, EV_INT_iuser3, digit[2]); entity_set_int(clock, EV_INT_iuser4, digit[3]); new digitValues[4]; //setup the digits to make up the time for (new i = 0; i < 4; ++i) { //setup digit properties entity_set_string(digit[i], EV_SZ_classname, gszClockDigitClassname); entity_set_vector(digit[i], EV_VEC_angles, vAngles); entity_set_model(digit[i], gszClockDigits); entity_set_float(digit[i], EV_FL_scale, fScale); //set digit position set_digit_origin(i, digit[i], vOrigin, vNormal, fScale); //get the time digits getTimeDigits(clockType, digitValues); //set the in-game clocks digits set_clock_digits(clock, digitValues); } return true; } else { //delete clock face if it created successfully if (is_valid_ent(clock)) { remove_entity(clock); } //iterate though the entity array and delete whichever ones created successfully for (new i = 0; i < 4; ++i) { if (is_valid_ent(digit[i])) { remove_entity(digit[i]); } } } return false; } deleteClockAiming(id) { new bool:bDeleted; new clock = get_clock_aiming(id); if (clock) { //delete the clock bDeleted = deleteClock(clock); //if the clock was deleted successfully if (bDeleted) { client_print(id, print_chat, "%sDeleted clock", gszPrefix); } } } bool:deleteClock(ent) { //if the entity is a clock if (isClock(ent)) { //get entity IDs of digits on the clock new digit[4]; digit[0] = entity_get_int(ent, EV_INT_iuser1); digit[1] = entity_get_int(ent, EV_INT_iuser2); digit[2] = entity_get_int(ent, EV_INT_iuser3); digit[3] = entity_get_int(ent, EV_INT_iuser4); //delete the digits on the clock if they're valid if (is_valid_ent(digit[0])) remove_entity(digit[0]); if (is_valid_ent(digit[1])) remove_entity(digit[1]); if (is_valid_ent(digit[2])) remove_entity(digit[2]); if (is_valid_ent(digit[3])) remove_entity(digit[3]); //delete the clock face remove_entity(ent); //successfully deleted the clock return true; } return false; } scaleClockAiming(id, Float:fScaleAmount) { //get the clock the player is aiming at (if any) new clock = get_clock_aiming(id); //if player is aiming at a clock if (clock) { //get the clocks digit entities new digit[4]; new bSuccess = get_clock_digits(clock, digit); //if successfully got clocks digit entities if (bSuccess) { new Float:vOrigin[3]; new Float:vNormal[3]; new Float:vAngles[3]; //get the clocks current scale and add on the specified amount new Float:fScale = entity_get_float(clock, EV_FL_scale); fScale += fScaleAmount; //make sure the scale isn't negative if (fScale > 0.01) { //set the clocks scale entity_set_float(clock, EV_FL_scale, fScale); //get the clocks origin and angles entity_get_vector(clock, EV_VEC_origin, vOrigin); entity_get_vector(clock, EV_VEC_angles, vAngles); //get the clocks normal vector from the angles angle_vector(vAngles, ANGLEVECTOR_FORWARD, vNormal); //set the normal to point in the opposite direction vNormal[0] = -vNormal[0]; vNormal[1] = -vNormal[1]; vNormal[2] = -vNormal[2]; //enlarge the clocks digits by the specified amount for (new i = 0; i < 4; ++i) { //set the digits scale entity_set_float(digit[i], EV_FL_scale, fScale); //adjust the digits origin because of the new scale set_digit_origin(i, digit[i], vOrigin, vNormal, fScale); } } } } } saveClocks(id) { //make sure player has access to this command if (get_user_flags(id) & ADMIN_CLOCK) { new ent = -1; new Float:vOrigin[3]; new Float:vAngles[3]; new Float:fScale; new clockCount = 0; new szData[128]; //open file for writing new file = fopen(gszFile, "wt"); new clockType; while ((ent = find_ent_by_class(ent, gszClockClassname))) { //get clock info entity_get_vector(ent, EV_VEC_origin, vOrigin); entity_get_vector(ent, EV_VEC_angles, vAngles); fScale = entity_get_float(ent, EV_FL_scale); clockType = entity_get_int(ent, EV_INT_groupinfo); //format clock info and save it to file formatex(szData, 128, "%c %f %f %f %f %f %f %f^n", gClockSaveIds[clockType], vOrigin[0], vOrigin[1], vOrigin[2], vAngles[0], vAngles[1], vAngles[2], fScale); fputs(file, szData); //increment clock count ++clockCount; } //get players name new szName[32]; get_user_name(id, szName, 32); //notify all admins that the player saved clocks to file for (new i = 1; i <= 32; ++i) { //make sure player is connected if (is_user_connected(i)) { if (get_user_flags(i) & ADMIN_CLOCK) { client_print(i, print_chat, "%s'%s' saved %d clock%s to file!", gszPrefix, szName, clockCount, (clockCount == 1 ? "" : "s")); } } } //close file fclose(file); } } loadClocks(id) { //if the clock save file exists if (file_exists(gszFile)) { new szData[128]; new szType[2]; new oX[13], oY[13], oZ[13]; new aX[13], aY[13], aZ[13]; new szScale[13]; new Float:vOrigin[3]; new Float:vAngles[3]; new Float:vNormal[3]; new Float:fScale; new clockCount = 0; //open the file for reading new file = fopen(gszFile, "rt"); //iterate through all the lines in the file while (!feof(file)) { szType = ""; fgets(file, szData, 128); parse(szData, szType, 2, oX, 12, oY, 12, oZ, 12, aX, 12, aY, 12, aZ, 12, szScale, 12); vOrigin[0] = str_to_float(oX); vOrigin[1] = str_to_float(oY); vOrigin[2] = str_to_float(oZ); vAngles[0] = str_to_float(aX); vAngles[1] = str_to_float(aY); vAngles[2] = str_to_float(aZ); fScale = str_to_float(szScale); if (strlen(szType) > 0) { //get the normal vector from the angles angle_vector(vAngles, ANGLEVECTOR_FORWARD, vNormal); //set the normal to point in the opposite direction vNormal[0] = -vNormal[0]; vNormal[1] = -vNormal[1]; vNormal[2] = -vNormal[2]; //create the clock depending on the clock type switch (szType[0]) { case 'C': createClock(CM_SERVERTIME, vOrigin, vAngles, vNormal, fScale); case 'T': createClock(CM_BUILDTIMELEFT, vOrigin, vAngles, vNormal, fScale); } ++clockCount; } } //close the file fclose(file); //if a player is loading the clocks if (id > 0 && id <= 32) { //get players name new szName[32]; get_user_name(id, szName, 32); //notify all admins that the player loaded clocks from file for (new i = 1; i <= 32; ++i) { //make sure player is connected if (is_user_connected(i)) { if (get_user_flags(i) & ADMIN_CLOCK) { client_print(i, print_chat, "%s'%s' loaded %d clock%s from file!", gszPrefix, szName, clockCount, (clockCount == 1 ? "" : "s")); } } } } } } get_clock_aiming(id) { //get hit point for where player is aiming new origin[3]; new Float:vOrigin[3]; get_user_origin(id, origin, 3); IVecFVec(origin, vOrigin); new ent = -1; //find all entities within a 2 unit sphere while ((ent = find_ent_in_sphere(ent, vOrigin, 2.0))) { //if entity is a clock if (isClock(ent)) { return ent; } } return 0; } bool:traceClockAngles(id, Float:vAngles[3], Float:vNormal[3], Float:fDistance) { //get players origin and add on their view offset new Float:vPlayerOrigin[3]; new Float:vViewOfs[3]; entity_get_vector(id, EV_VEC_origin, vPlayerOrigin); entity_get_vector(id, EV_VEC_view_ofs, vViewOfs); vPlayerOrigin[0] += vViewOfs[0]; vPlayerOrigin[1] += vViewOfs[1]; vPlayerOrigin[2] += vViewOfs[2]; //calculate the end point for trace using the players view angle new Float:vAiming[3]; entity_get_vector(id, EV_VEC_v_angle, vAngles); vAiming[0] = vPlayerOrigin[0] + floatcos(vAngles[1], degrees) * fDistance; vAiming[1] = vPlayerOrigin[1] + floatsin(vAngles[1], degrees) * fDistance; vAiming[2] = vPlayerOrigin[2] + floatsin(-vAngles[0], degrees) * fDistance; //trace a line and get the normal for the plane it hits new trace = trace_normal(id, vPlayerOrigin, vAiming, vNormal); //convert the normal into an angle vector vector_to_angle(vNormal, vAngles); //spin the angle vector 180 degrees around the Y axis vAngles[1] += 180.0; if (vAngles[1] >= 360.0) vAngles[1] -= 360.0; return bool:trace; } set_digit_origin(i, digit, Float:vOrigin[3], Float:vNormal[3], Float:fScale) { //make sure the digit entity is valid if (is_valid_ent(digit)) { new Float:vDigitNormal[3]; new Float:vPos[3]; new Float:fVal; //change the normals to get the left and right depending on the digit vDigitNormal = vNormal; if (i == 0 || i == 1) vDigitNormal[X] = -vDigitNormal[X]; if (i == 2 || i == 3) vDigitNormal[Y] = -vDigitNormal[Y]; //setup digit position fVal = (((gfClockSize[X] / 2) * gfDigitOffsetMultipliers[i])) * fScale; vPos[X] = vOrigin[X] + (vDigitNormal[Y] * fVal); vPos[Y] = vOrigin[Y] + (vDigitNormal[X] * fVal); vPos[Z] = vOrigin[Z] + vNormal[Z] - ((gfTitleSize / 2.0 )* fScale); //bring digit sprites forwards off the clock face to prevent flickering vPos[0] += (vNormal[0] * 0.5); vPos[1] += (vNormal[1] * 0.5); vPos[2] += (vNormal[2] * 0.5); //set the digits origin entity_set_origin(digit, vPos); } } bool:getTimeDigits(clockType, digitValues[4]) { switch (clockType) { case CM_SERVERTIME: { new bool:bChanged = false; new szTime[5]; new timeOffset = get_cvar_num("cm_timeoffset"); new hourType = get_cvar_num("cm_hourtype"); //get the time new hour, mins; time(hour, mins); //add on the time offset hour += timeOffset; //make sure hour hasnt gone out of bounds while (hour < 0) { hour += 24; } while (hour >= 24) { hour -= 24; } //if server is set to use 12 hour clocks if (hourType == 0) { if (hour > 12) { hour -= 12; } if (hour == 0) hour = 12 } //format the time into a string format(szTime, 4, "%s%d%s%d", (hour < 10 ? "0" : ""), hour, (mins < 10 ? "0" : ""), mins); //calculate time digits from string digitValues[0] = szTime[0] - 48; digitValues[1] = szTime[1] - 48; digitValues[2] = szTime[2] - 48; digitValues[3] = szTime[3] - 48; //if the time has changed if (!equal(gszTime, szTime)) { gszTime = szTime; bChanged = true; } //if the hour type has changed if (hourType != gHourTypeOld) { gHourTypeOld = hourType; bChanged = true; } //if the time offset value has changed if (timeOffset != gTimeOffsetOld) { gTimeOffsetOld = timeOffset; bChanged = true; } return bChanged; } case CM_BUILDTIMELEFT: { new mins = count_down / 60 new secs = count_down % 60 //format the timeleft into a string new szTime[5]; format(szTime, 4, "%s%d%s%d", (mins < 10 ? "0" : ""), mins, (secs < 10 ? "0" : ""), secs); //calculate time digits from string digitValues[0] = szTime[0] - 48; digitValues[1] = szTime[1] - 48; digitValues[2] = szTime[2] - 48; digitValues[3] = szTime[3] - 48; return true; } } return false; } bool:get_clock_digits(clock, digit[4]) { //if the entity is a clock if (isClock(clock)) { //get entity IDs of digits on the clock digit[0] = entity_get_int(clock, EV_INT_iuser1); digit[1] = entity_get_int(clock, EV_INT_iuser2); digit[2] = entity_get_int(clock, EV_INT_iuser3); digit[3] = entity_get_int(clock, EV_INT_iuser4); //make sure all the clock digits are valid for (new i = 0; i < 4; ++i) { if (!is_valid_ent(digit[i])) { log_amx("%sInvalid digit entity in clock", gszPrefix); return false; } } } return true; } set_clock_digits(clock, digitValues[4]) { //get the clocks digit entities new digits[4]; new bool:bSuccess = get_clock_digits(clock, digits); //if successfully got clocks digit entities if (bSuccess) { //setup clock digits entity_set_float(digits[0], EV_FL_frame, float(digitValues[0])); entity_set_float(digits[1], EV_FL_frame, float(digitValues[1])); entity_set_float(digits[2], EV_FL_frame, float(digitValues[2])); entity_set_float(digits[3], EV_FL_frame, float(digitValues[3])); } } alertHour(hour, half) { //if we're set to speak the hour if (get_cvar_num("cm_hourannounce") > 0) { new szMeridiem[4] = "am"; new szHour[16]; new timeOffset = get_cvar_num("cm_timeoffset"); hour += timeOffset; //setup hour. Make sure hour isn't above 12 and isn't 00 o'clock if (hour >= 12) szMeridiem = "pm"; if (hour > 12) hour -= 12; if (hour == 0) hour = 12; //get the hour as a word num_to_word(hour, szHour, 15); //speak the time if (half) client_cmd(0, "spk ^"fvox/bell _period %s thirty %s^"", szHour, szMeridiem); else client_cmd(0, "spk ^"fvox/bell _period %s %s^"", szHour, szMeridiem); } } bool:isClock(ent) { //if entity is valid if (is_valid_ent(ent)) { //get classname of entity new szClassname[32]; entity_get_string(ent, EV_SZ_classname, szClassname, 32); //if classname of entity matches global clock classname if (equal(szClassname, gszClockClassname)) { //entity is a clock return true; } } return false; } public find_minmaxs() { new Float:origin[3], i new ent = engfunc(EngFunc_FindEntityByString,g_MaxPlayers,"classname","info_player_deathmatch") while(ent) { if(pev_valid(ent)) { pev(ent,pev_origin,origin) for(i=0;i<3;i++) { if(origin[i] < g_mins[i]) g_mins[i] = origin[i] if(origin[i] > g_maxs[i]) g_maxs[i] = origin[i] } } ent = engfunc(EngFunc_FindEntityByString,ent,"classname","info_player_deathmatch") } /*ent = engfunc(EngFunc_FindEntityByString,g_MaxPlayers,"classname","info_player_start") while(ent) { if(pev_valid(ent)) { pev(ent,pev_origin,origin) for(i=0;i<3;i++) { if(origin[i] < g_mins[1][i]) g_mins[1][i] = origin[i] if(origin[i] > g_maxs[1][i]) g_maxs[1][i] = origin[i] } } ent = engfunc(EngFunc_FindEntityByString,ent,"classname","info_player_start") }*/ g_maxs[2] += 70.0 //g_mins[1][2] -= 70.0 g_maxs[0] += 32.0 //g_mins[1][0] -= 32.0 g_maxs[1] += 32.0 //g_mins[1][1] -= 32.0 for(new j=0;j<3;j++) { I_max[j] = floatround(g_maxs[j]) I_min[j] = floatround(g_mins[j]) } } new cur_offset[33] new options_on_menu[8][33] public show_colors_menu(id,offset) { if(offset<0) offset = 0 new keys, curnum, menu[2048] for(new i=offset;i<RAINBOW;i++) { /*if(i==24) { options_on_menu[curnum][id] = 24 keys += (1<<curnum) curnum++ format(menu,2047,"%s^n%d. Random",menu,curnum) break; } else {*/ options_on_menu[curnum][id] = i keys += (1<<curnum) curnum++ format(menu,2047,"%s^n%d. %s",menu,curnum,g_ColorName[i]) if(curnum==8) break; //} } format(menu,2047,"\ySelect Your Color:^nCurrent: \r%s\w^n^n%s^n", g_ColorName[g_pColor[id]],menu) if(curnum==8 && offset<12) { keys += (1<<8) format(menu,2047,"%s^n9. Next",menu) } if(offset) { keys += (1<<9) format(menu,2047,"%s^n0. Back",menu) } show_menu(id,keys,menu,-1,"ColorsSelect") } public colors_pushed(id,key) { if(key<8) { g_pColor[id] = options_on_menu[key][id] print_color(id, "%s You have picked ^x04%s^x01 as your color", formatmodname, g_ColorName[g_pColor[id]]) cur_offset[id] = 0 } else { if(key==8) cur_offset[id] += 8 if(key==9) cur_offset[id] -= 8 show_colors_menu(id,cur_offset[id]) } return ; } /*-------------------------------------------------------------------------------------------------| |-----------------------------------End Items Menu Code--------------------------------------------| |-------------------------------------------------------------------------------------------------*/ Log(const message_fmt[], any:...) { static message[256]; vformat(message, sizeof(message) - 1, message_fmt, 2); static filename[96]; static dir[64]; if( !dir[0] ) { get_basedir(dir, sizeof(dir) - 1); add(dir, sizeof(dir) - 1, "/logs"); } format_time(filename, sizeof(filename) - 1, "%m-%d-%Y"); format(filename, sizeof(filename) - 1, "%s/ADMIN_ACTIVITY_%s.log", dir, filename); log_to_file(filename, "%s", message); } public get_load_key(id) { get_user_name(id, g_AuthID[id], charsmax(g_AuthID[])); // If we do not have a valid id check again /*if ( equal(g_AuthID[id][9], "PENDING") || g_AuthID[id][0] == '^0' ) { // Try to get a vaild key again in 5.0 seconds set_task(5.0, "get_load_key", id); return; }*/ LoadLevel(id); } SaveLevel(id) { new szData[512]; new szKey[128]; formatex( szKey , 127 , "%s-ID-Upgrades", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i" , credits[id], g_unHPLevel[id], g_unAPLevel[id], g_unGRLevel[id], g_unINLevel[id], hasplayed[id], g_unSPLevel[id], g_pColor[id], g_pThirdPerson[id]); nvault_set( g_Vault , szKey , szData ); //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID-Unlocks", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i", g_galil[id],g_aug[id],g_m4a1[id],g_famas[id],g_ak47[id], g_tmp[id],g_mp5[id],g_ump[id],g_p90[id], g_m3[id],g_xm1014[id],g_scout[id],g_awp[id],g_para[id], g_p228[id],g_five[id],g_elite[id],g_glock[id],g_deagle[id]); nvault_set( g_Vault , szKey , szData ); //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i %i %i %i" , g_PlayerAchievements[id][0], zombiekills[id], g_PlayerAchievements[id][1], humankills[id], g_PlayerAchievements[id][2], objectsmoved[id], g_PlayerAchievements[id][3], headshots[id], g_PlayerAchievements[id][4], connects[id], g_PlayerAchievements[id][5], killedby[id]); nvault_set( g_Vault , szKey , szData ); //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID-2", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i %i %i %i" , g_PlayerAchievements[id][6], clubdread[id], g_PlayerAchievements[id][7], totaldamage[id], g_PlayerAchievements[id][8], pistolonly[id], g_PlayerAchievements[id][9], invisibleman[id], g_PlayerAchievements[id][10], g_PlayerAchievements[id][11], weaponsbought[id], g_PlayerAchievements[id][12]); nvault_set( g_Vault , szKey , szData ); //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID-3", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i" , g_PlayerAchievements[id][13], g_PlayerAchievements[id][14], g_PlayerAchievements[id][15], g_PlayerAchievements[id][16], g_PlayerAchievements[id][17], g_PlayerAchievements[id][18], g_PlayerAchievements[id][19], g_itemsbought[id], g_PlayerAchievements[id][20]); nvault_set( g_Vault , szKey , szData ); return PLUGIN_CONTINUE } LoadLevel(id) { new szData[512]; new szKey[128]; formatex( szKey , 127 , "%s-ID-Upgrades", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i" , credits[id], g_unHPLevel[id], g_unAPLevel[id], g_unGRLevel[id], g_unINLevel[id], hasplayed[id], g_unSPLevel[id], g_pColor[id], g_pThirdPerson[id]); nvault_get(g_Vault, szKey, szData, 511) new unlocknum[32], hplevel[32], aplevel[32], grlevel[32], inlevel[32], haspl[32], splevel[32], color[32], third[32] parse(szData, unlocknum, 31, hplevel, 31, aplevel, 31, grlevel, 31, inlevel, 31, haspl, 31, splevel, 31, color, 31, third, 31) credits[id] = str_to_num(unlocknum) g_unHPLevel[id] = str_to_num(hplevel) g_unAPLevel[id] = str_to_num(aplevel) g_unGRLevel[id] = str_to_num(grlevel) g_unINLevel[id] = str_to_num(inlevel) hasplayed[id] = str_to_num(haspl) g_unSPLevel[id] = str_to_num(splevel) g_pColor[id] = str_to_num(color) g_pThirdPerson[id] = str_to_num(third) //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID-Unlocks", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i", g_galil[id],g_aug[id],g_m4a1[id],g_famas[id],g_ak47[id], g_tmp[id],g_mp5[id],g_ump[id],g_p90[id], g_m3[id],g_xm1014[id],g_scout[id],g_awp[id],g_para[id], g_p228[id],g_five[id],g_elite[id],g_glock[id],g_deagle[id]) nvault_get(g_Vault, szKey, szData, 511) new galil[32],aug[32],m4a1[32],famas[32],ak47[32], tmp[32],mp5[32],ump[32],p90[32], m3[32],xm1014[32],scout[32],awp[32],para[32], p228[32],five[32],elite[32],glock[32],deagle[32] parse(szData, galil, 31, aug, 31, m4a1, 31, famas, 31, ak47, 31, tmp, 31, mp5, 31, ump, 31, p90, 31, m3, 31, xm1014, 31, scout, 31, awp, 31, para, 31, p228, 31, five, 31, elite, 31, glock, 31, deagle, 31) g_galil[id] = str_to_num(galil) g_aug[id] = str_to_num(aug) g_m4a1[id] = str_to_num(m4a1) g_famas[id] = str_to_num(famas) g_ak47[id] = str_to_num(ak47) g_tmp[id] = str_to_num(tmp) g_mp5[id] = str_to_num(mp5) g_ump[id] = str_to_num(ump) g_p90[id] = str_to_num(p90) g_m3[id] = str_to_num(m3) g_xm1014[id] = str_to_num(xm1014) g_scout[id] = str_to_num(scout) g_awp[id] = str_to_num(awp) g_para[id] = str_to_num(para) g_p228[id] = str_to_num(p228) g_five[id] = str_to_num(five) g_elite[id] = str_to_num(elite) g_glock[id] = str_to_num(glock) g_deagle[id] = str_to_num(deagle) //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID", g_AuthID[id]); formatex(szData , 511, "%i %i %i %i %i %i %i %i %i %i %i %i", g_PlayerAchievements[id][0], zombiekills[id], g_PlayerAchievements[id][1], humankills[id], g_PlayerAchievements[id][2], objectsmoved[id], g_PlayerAchievements[id][3], headshots[id], g_PlayerAchievements[id][4], connects[id], g_PlayerAchievements[id][5], killedby[id]); nvault_get(g_Vault, szKey, szData, 511) new ach1[32], zkills[32], ach2[32], hkills[32], ach3[32], objects[32], ach4[32], headsh[32], ach5[32], conne[32], ach6[32], killby[32] parse(szData, ach1, 31, zkills, 31, ach2, 31, hkills, 31, ach3, 31, objects, 31, ach4, 31, headsh, 31, ach5, 31, conne, 31, ach6, 31, killby, 31) g_PlayerAchievements[id][0] = str_to_num(ach1) zombiekills[id] = str_to_num(zkills) g_PlayerAchievements[id][1] = str_to_num(ach2) humankills[id] = str_to_num(hkills) g_PlayerAchievements[id][2] = str_to_num(ach3) objectsmoved[id] = str_to_num(objects) g_PlayerAchievements[id][3] = str_to_num(ach4) headshots[id] = str_to_num(headsh) g_PlayerAchievements[id][4] = str_to_num(ach5) connects[id] = str_to_num(conne) g_PlayerAchievements[id][5] = str_to_num(ach6) killedby[id] = str_to_num(killby) //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID-2", g_AuthID[id]); formatex(szData , 511, "%i %i %i %i %i %i %i %i %i %i %i %i", g_PlayerAchievements[id][6], clubdread[id], g_PlayerAchievements[id][7], totaldamage[id], g_PlayerAchievements[id][8], pistolonly[id], g_PlayerAchievements[id][9], invisibleman[id], g_PlayerAchievements[id][10], g_PlayerAchievements[id][11], weaponsbought[id], g_PlayerAchievements[id][12]); nvault_get(g_Vault, szKey, szData, 511) new ach7[32], cdread[32], ach8[32], dmg[32], ach9[32], pist[32], ach10[32], invis[32], ach11[32], ach12[32], weps[32], ach13[32] parse(szData, ach7, 31, cdread, 31, ach8, 31, dmg, 31, ach9, 31, pist, 31, ach10, 31, invis, 31, ach11, 31, ach12, 31, weps, 31, ach13, 31) g_PlayerAchievements[id][6] = str_to_num(ach7) clubdread[id] = str_to_num(cdread) g_PlayerAchievements[id][7] = str_to_num(ach8) totaldamage[id] = str_to_float(dmg) g_PlayerAchievements[id][8] = str_to_num(ach9) pistolonly[id] = str_to_num(pist) g_PlayerAchievements[id][9] = str_to_num(ach10) invisibleman[id] = str_to_num(invis) g_PlayerAchievements[id][10] = str_to_num(ach11) g_PlayerAchievements[id][11] = str_to_num(ach12) weaponsbought[id] = str_to_num(weps) g_PlayerAchievements[id][12] = str_to_num(ach13) //////////////////////////////////////////////////////////////////////////////////// formatex( szKey , 127 , "%s-ID-3", g_AuthID[id]); formatex( szData , 511 , "%i %i %i %i %i %i %i %i %i" , g_PlayerAchievements[id][13], g_PlayerAchievements[id][14], g_PlayerAchievements[id][15], g_PlayerAchievements[id][16], g_PlayerAchievements[id][17], g_PlayerAchievements[id][18], g_PlayerAchievements[id][19], g_itemsbought[id], g_PlayerAchievements[id][20]); nvault_get(g_Vault, szKey, szData, 511) new ach14[32], ach15[32], ach16[32], ach17[32], ach18[32], ach19[32], ach20[32], items[32], ach21[32] parse(szData, ach14, 31, ach15, 31, ach16, 31, ach17, 31, ach18, 31, ach19, 31, ach20, 31, items, 31, ach21, 31) g_PlayerAchievements[id][13] = str_to_num(ach14) g_PlayerAchievements[id][14] = str_to_num(ach15) g_PlayerAchievements[id][15] = str_to_num(ach16) g_PlayerAchievements[id][16] = str_to_num(ach17) g_PlayerAchievements[id][17] = str_to_num(ach18) g_PlayerAchievements[id][18] = str_to_num(ach19) g_PlayerAchievements[id][19] = str_to_num(ach20) g_itemsbought[id] = str_to_num(items) g_PlayerAchievements[id][20] = str_to_num(ach21) connects[id]++ } print_color(target, const message[], any:...) { static buffer[512], i, argscount argscount = numargs() // Send to everyone if (!target) { static player for (player = 1; player <= g_MaxPlayers; player++) { if (!g_isconnected[player]) continue; static changed[5], changedcount changedcount = 0 for (i = 2; i < argscount; i++) { if (getarg(i) == LANG_PLAYER) { setarg(i, 0, player) changed[changedcount] = i changedcount++ } } vformat(buffer, charsmax(buffer), message, 3) message_begin(MSG_ONE_UNRELIABLE, gmsgSayText, _, player) write_byte(player) write_string(buffer) message_end() for (i = 0; i < changedcount; i++) setarg(changed[i], 0, LANG_PLAYER) } } // Send to specific target else { vformat(buffer, charsmax(buffer), message, 3) message_begin(MSG_ONE, gmsgSayText, _, target) write_byte(target) write_string(buffer) message_end() } }
Users browsing this forum: BLEX [Bot], Doctor whO? <3, GabrielH, Laur eXtream, lexz, Radu eXtream and 58 guests