/* Base Builder Zombie Mod Tirant Version 6.5 Pub */ #include #include #include #include #include #include #include #include #include //Enable this only if you have bought the credits plugin //#define BB_CREDITS #define FLAGS_BUILD ADMIN_KICK #define FLAGS_LOCK ADMIN_LEVEL_A #define FLAGS_BUILDBAN ADMIN_KICK #define FLAGS_SWAP ADMIN_KICK #define FLAGS_REVIVE ADMIN_KICK #define FLAGS_GUNS ADMIN_LEVEL_A #define FLAGS_RELEASE ADMIN_BAN #define FLAGS_OVERRIDE ADMIN_BAN #define VERSION "6.5" #define MODNAME "^x01 [^x04 Base Builder^x01 ]" #define LockBlock(%1,%2) ( entity_set_int( %1, EV_INT_iuser1, %2 ) ) #define UnlockBlock(%1) ( entity_set_int( %1, EV_INT_iuser1, 0 ) ) #define BlockLocker(%1) ( entity_get_int( %1, EV_INT_iuser1 ) ) #define MovingEnt(%1) ( entity_set_int( %1, EV_INT_iuser2, 1 ) ) #define UnmovingEnt(%1) ( entity_set_int( %1, EV_INT_iuser2, 0 ) ) #define IsMovingEnt(%1) ( entity_get_int( %1, EV_INT_iuser2 ) == 1 ) #define SetEntMover(%1,%2) ( entity_set_int( %1, EV_INT_iuser3, %2 ) ) #define UnsetEntMover(%1) ( entity_set_int( %1, EV_INT_iuser3, 0 ) ) #define GetEntMover(%1) ( entity_get_int( %1, EV_INT_iuser3 ) ) #define SetLastMover(%1,%2) ( entity_set_int( %1, EV_INT_iuser4, %2 ) ) #define UnsetLastMover(%1) ( entity_set_int( %1, EV_INT_iuser4, 0 ) ) #define GetLastMover(%1) ( entity_get_int( %1, EV_INT_iuser4 ) ) #define MAXPLAYERS 32 #define MAXENTS 1024 #define AMMO_SLOT 376 #define MODELCHANGE_DELAY 0.5 #define AUTO_TEAM_JOIN_DELAY 0.1 #define TEAM_SELECT_VGUI_MENU_ID 2 #define OBJECT_PUSHPULLRATE 4.0 #define HUD_FRIEND_HEIGHT 0.30 #define BARRIER_COLOR 0.0, 0.0, 0.0 #define BARRIER_RENDERAMT 150.0 #define BLOCK_RENDERAMT 150.0 #define LOCKED_COLOR 125.0, 0.0, 0.0 #define LOCKED_RENDERAMT 225.0 const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1< Menu, one color per player, random g_iColorMode = get_pcvar_num(g_pcvar_colormode) g_pcvar_entmaxdist = register_cvar("bb_max_move_dist", "768") //Push ceiling g_fEntMaxDist = get_pcvar_float(g_pcvar_entmaxdist) g_pcvar_entmindist = register_cvar("bb_min_move_dist", "32") //Pull floor g_fEntMinDist = get_pcvar_float(g_pcvar_entmindist) g_pcvar_entsetdist = register_cvar("bb_min_dist_set", "64") //Grab set g_fEntSetDist = get_pcvar_float(g_pcvar_entsetdist) g_pcvar_resetent = register_cvar("bb_resetblocks", "1") //Reset blocks on new round g_iResetEnt = get_pcvar_num(g_pcvar_resetent) g_pcvar_supercut = register_cvar("bb_zombie_supercut", "0") //One hit kill for zombies g_iSupercut = get_pcvar_num(g_pcvar_supercut) g_pcvar_gunsmenu = register_cvar("bb_gunsmenu", "0") //Use the internal guns menu g_iGunsMenu = get_pcvar_num(g_pcvar_gunsmenu) g_pcvar_givenades = register_cvar("bb_roundnades","h") //Grenades g_pcvar_allowedweps = register_cvar("bb_weapons","abcdeghijlmnqrstuvwx") get_pcvar_string(g_pcvar_givenades, szCache, sizeof szCache - 1) for (i=0; i"); register_clcmd("bb_unbuildban", "cmdBuildBan",0, " "); register_clcmd("bb_bban", "cmdBuildBan",0, " "); register_clcmd("bb_swap", "cmdSwap",0, " "); register_clcmd("bb_revive", "cmdRevive",0, " "); if (g_iGunsMenu) register_clcmd("bb_guns", "cmdGuns",0, " "); register_clcmd("bb_startround", "cmdStartRound",0, " - Starts the round"); register_logevent("logevent_round_start",2, "1=Round_Start") register_logevent("logevent_round_end", 2, "1=Round_End") register_message(get_user_msgid("TextMsg"), "msgRoundEnd") register_message(get_user_msgid("TextMsg"), "msgSendAudio") register_message(get_user_msgid("StatusIcon"), "msgStatusIcon"); register_message(get_user_msgid("Health"), "msgHealth"); register_message(get_user_msgid("StatusValue"), "msgStatusValue") register_message(get_user_msgid("TeamInfo"), "msgTeamInfo"); register_menucmd(register_menuid("ColorsSelect"),KEYS_GENERIC,"colors_pushed") register_menucmd(register_menuid("ZClassSelect"),KEYS_GENERIC,"zclass_pushed") if (g_iGunsMenu) { register_menucmd(register_menuid("WeaponMethodMenu"),(1<<0)|(1<<1)|(1<<2),"weapon_method_pushed") register_menucmd(register_menuid("PrimaryWeaponSelect"),KEYS_GENERIC,"prim_weapons_pushed") register_menucmd(register_menuid("SecWeaponSelect"),KEYS_GENERIC,"sec_weapons_pushed") } register_event("HLTV", "ev_RoundStart", "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("Health", "ev_Health", "be", "1>0"); 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"); RegisterHam(Ham_Touch, "weapon_shield","ham_WeaponCleaner_Post", 1) RegisterHam(Ham_Touch, "weaponbox", "ham_WeaponCleaner_Post", 1) RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1) RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage") for (new i = 1; i < sizeof g_szWpnEntNames; i++) if (g_szWpnEntNames[i][0]) RegisterHam(Ham_Item_Deploy, g_szWpnEntNames[i], "ham_ItemDeploy_Post", 1) register_forward(FM_GetGameDescription, "fw_GetGameDescription") register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue") register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged") register_forward(FM_CmdStart, "fw_CmdStart"); register_forward(FM_PlayerPreThink, "fw_PlayerPreThink") register_forward(FM_EmitSound, "fw_EmitSound") register_forward(FM_ClientKill, "fw_Suicide") if (g_iShowMovers) register_forward(FM_TraceLine, "fw_Traceline") register_clcmd("drop", "clcmd_drop") register_clcmd("buy", "clcmd_buy") //Team Handlers 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") set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET) g_iMaxPlayers = get_maxplayers() g_HudSync = CreateHudSyncObj(); g_msgSayText = get_user_msgid("SayText") g_msgStatusText = get_user_msgid("StatusText"); g_iEntBarrier = find_ent_by_tname( -1, "barrier" ); //Custom Forwards g_fwRoundStart = CreateMultiForward("bb_round_started", ET_IGNORE) g_fwPrepStarted = CreateMultiForward("bb_prepphase_started", ET_IGNORE) g_fwBuildStarted = CreateMultiForward("bb_buildphase_started", ET_IGNORE) g_fwClassPicked = CreateMultiForward("bb_zombie_class_picked", ET_IGNORE, FP_CELL, FP_CELL) g_fwClassSet = CreateMultiForward("bb_zombie_class_set", ET_IGNORE, FP_CELL, FP_CELL) g_fwPushPull = CreateMultiForward("bb_block_pushpull", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL) g_fwGrabEnt_Pre = CreateMultiForward("bb_grab_pre", ET_IGNORE, FP_CELL, FP_CELL) g_fwGrabEnt_Post = CreateMultiForward("bb_grab_post", ET_IGNORE, FP_CELL, FP_CELL) g_fwDropEnt_Pre = CreateMultiForward("bb_drop_pre", ET_IGNORE, FP_CELL, FP_CELL) g_fwDropEnt_Post = CreateMultiForward("bb_drop_post", ET_IGNORE, FP_CELL, FP_CELL) g_fwNewColor = CreateMultiForward("bb_new_color", ET_IGNORE, FP_CELL, FP_CELL) g_fwLockEnt_Pre = CreateMultiForward("bb_lock_pre", ET_IGNORE, FP_CELL, FP_CELL) g_fwLockEnt_Post = CreateMultiForward("bb_lock_post", ET_IGNORE, FP_CELL, FP_CELL) register_dictionary("basebuilder.txt"); } public plugin_natives() { register_native("bb_register_zombie_class","native_register_zombie_class", 1) register_native("bb_get_class_cost","native_get_class_cost", 1) register_native("bb_get_user_zombie_class","native_get_user_zombie_class", 1) register_native("bb_get_user_next_class","native_get_user_next_class", 1) register_native("bb_set_user_zombie_class","native_set_user_zombie_class", 1) register_native("bb_is_user_zombie","native_is_user_zombie", 1) register_native("bb_is_user_banned","native_is_user_banned", 1) register_native("bb_is_build_phase","native_bool_buildphase", 1) register_native("bb_is_prep_phase","native_bool_prepphase", 1) register_native("bb_get_build_time","native_get_build_time", 1) register_native("bb_set_build_time","native_set_build_time", 1) register_native("bb_get_user_color","native_get_user_color", 1) register_native("bb_set_user_color","native_set_user_color", 1) register_native("bb_drop_user_block","native_drop_user_block", 1) register_native("bb_get_user_block","native_get_user_block", 1) register_native("bb_set_user_block","native_set_user_block", 1) register_native("bb_is_locked_block","native_is_locked_block", 1) register_native("bb_lock_block","native_lock_block", 1) register_native("bb_unlock_block","native_unlock_block", 1) register_native("bb_release_zombies","native_release_zombies", 1) register_native("bb_set_user_primary","native_set_user_primary", 1) register_native("bb_get_user_primary","native_get_user_primary", 1) register_native("bb_get_flags_build","native_get_flags_build", 1) register_native("bb_get_flags_lock","native_get_flags_lock", 1) register_native("bb_get_flags_buildban","native_get_flags_buildban", 1) register_native("bb_get_flags_swap","native_get_flags_swap", 1) register_native("bb_get_flags_revive","native_get_flags_revive", 1) register_native("bb_get_flags_guns","native_get_flags_guns", 1) register_native("bb_get_flags_release","native_get_flags_release", 1) register_native("bb_get_flags_override","native_get_flags_override", 1) //register_native("bb_set_user_mult","native_set_user_mult", 1) //ZP Natives Converted register_native("zp_register_zombie_class","native_register_zombie_class", 1) register_native("zp_get_user_zombie_class","native_get_user_zombie_class", 1) register_native("zp_get_user_next_class","native_get_user_next_class", 1) register_native("zp_set_user_zombie_class","native_set_user_zombie_class", 1) register_native("zp_get_user_zombie","native_is_user_zombie", 1) } public fw_GetGameDescription() { forward_return(FMV_STRING, g_szModName) return FMRES_SUPERCEDE; } public client_putinserver(id) { if (!is_user_connected(id)) return PLUGIN_HANDLED; g_isConnected[id] = true g_isAlive[id] = false g_isZombie[id] = false g_isBuildBan[id] = false g_isCustomModel[id] = false g_boolFirstSpawn[id] = true g_boolFirstTeam[id] = false g_boolFirstTime[id] = true g_boolRepick[id] = true g_iZombieClass[id] = 0 g_iNextClass[id] = g_iZombieClass[id] //for (new i = 0; i < 3; i++) g_fClassMultiplier[id][i] = 1.0 set_task(7.0,"Respawn_Player",id+TASK_RESPAWN); return PLUGIN_CONTINUE; } public client_disconnect(id) { if (g_iOwnedEnt[id]) cmdStopEnt(id) g_isConnected[id] = false g_isAlive[id] = false g_isZombie[id] = false g_isBuildBan[id] = false g_isCustomModel[id] = false g_boolFirstSpawn[id] = false g_boolFirstTeam[id] = false g_boolFirstTime[id] = false g_boolRepick[id] = false g_iZombieClass[id] = 0 g_iNextClass[id] = 0 //for (new i = 0; i < 3; i++) g_fClassMultiplier[id][i] = 1.0 g_iOwnedEntities[id] = 0 remove_task(id+TASK_RESPAWN) remove_task(id+TASK_HEALTH) remove_task(id+TASK_IDLESOUND) for (new iEnt = g_iMaxPlayers+1; iEnt < MAXENTS; iEnt++) { if (is_valid_ent(iEnt) && g_iLockBlocks && BlockLocker(iEnt) == id) { UnlockBlock(iEnt) set_pev(iEnt,pev_rendermode,kRenderNormal) UnsetLastMover(iEnt); UnsetEntMover(iEnt); } } } public ev_RoundStart() { remove_task(TASK_BUILD) remove_task(TASK_PREPTIME) arrayset(g_iOwnedEntities, 0, MAXPLAYERS+1) arrayset(g_iColor, 0, MAXPLAYERS+1) arrayset(g_iColorOwner, 0, MAX_COLORS) arrayset(g_boolRepick, true, MAXPLAYERS+1) g_boolRoundEnded = false g_boolCanBuild = true g_fRoundStartTime = get_gametime() if (g_iResetEnt) { new szClass[10], szTarget[7]; for (new iEnt = g_iMaxPlayers+1; iEnt < MAXENTS; iEnt++) { if (is_valid_ent(iEnt)) { entity_get_string(iEnt, EV_SZ_classname, szClass, 9); entity_get_string(iEnt, EV_SZ_targetname, szTarget, 6); if (!BlockLocker(iEnt) && iEnt != g_iEntBarrier && equal(szClass, "func_wall") && !equal(szTarget, "ignore")) { set_pev(iEnt,pev_rendermode,kRenderNormal) engfunc( EngFunc_SetOrigin, iEnt, Float:{ 0.0, 0.0, 0.0 } ); UnsetLastMover(iEnt); UnsetEntMover(iEnt); } else if (g_iLockBlocks && BlockLocker(iEnt)) { UnlockBlock(iEnt) set_pev(iEnt,pev_rendermode,kRenderNormal) engfunc( EngFunc_SetOrigin, iEnt, Float:{ 0.0, 0.0, 0.0 } ); UnsetLastMover(iEnt); UnsetEntMover(iEnt); } } } } } public ev_AmmoX(id) set_pdata_int(id, AMMO_SLOT + read_data(1), 200, 5) public ev_Health(taskid) { if (taskid>g_iMaxPlayers) taskid-=TASK_HEALTH if (is_user_alive(taskid)) { new szGoal[32] //if (is_credits_active()) #if defined BB_CREDITS format(szGoal, 31, "^n%L: %d", LANG_SERVER, "HUD_GOAL", credits_get_user_goal(taskid)) #endif set_hudmessage(255, 255, 255, -1.0, 0.9, 0, 12.0, 12.0, 0.1, 0.2, 4); if (g_isZombie[taskid]) { static szCache1[32] ArrayGetString(g_zclass_name, g_iZombieClass[taskid], szCache1, charsmax(szCache1)) show_hudmessage(taskid, "%L: %d^n%L: %s%s", LANG_SERVER, "HUD_HEALTH", pev(taskid, pev_health), LANG_SERVER, "HUD_CLASS", szCache1, szGoal); } else { show_hudmessage(taskid, "%L: %d%s", LANG_SERVER, "HUD_HEALTH", pev(taskid, pev_health), szGoal); } set_task(11.9, "ev_Health", taskid+TASK_HEALTH); } } 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 msgHealth(msgid, dest, id) { if(!g_isAlive[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; } public msgRoundEnd(const MsgId, const MsgDest, const MsgEntity) { static Message[192] get_msg_arg_string(2, Message, 191) if (equal(Message, "#Terrorists_Win")) { g_boolRoundEnded = true set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 6.0, 0.1, 0.2, 1) show_hudmessage(0, "%L", LANG_SERVER, "WIN_ZOMBIE") set_msg_arg_string(2, "") client_cmd(0, "spk %s", WIN_ZOMBIES) return PLUGIN_HANDLED } else if (equal(Message, "#Target_Saved") || equal(Message, "#CTs_Win")) { g_boolRoundEnded = true set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 6.0, 0.1, 0.2, 1) show_hudmessage(0, "%L", LANG_SERVER, "WIN_BUILDER") set_msg_arg_string(2, "") client_cmd(0, "spk %s", WIN_BUILDERS) return PLUGIN_HANDLED } return PLUGIN_HANDLED } public msgSendAudio(const MsgId, const MsgDest, const MsgEntity) { static szSound[17] get_msg_arg_string(2,szSound,16) if(equal(szSound[7], "terwin") || equal(szSound[7], "ctwin") || equal(szSound[7], "rounddraw")) return PLUGIN_HANDLED return PLUGIN_CONTINUE } public ham_WeaponCleaner_Post(iEnt) { call_think(iEnt) } public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits) { if (!is_valid_ent(victim) || !g_isAlive[victim] || !g_isConnected[attacker]) return HAM_IGNORED if(g_boolCanBuild || g_boolRoundEnded || g_boolPrepTime || victim == attacker) return HAM_SUPERCEDE if (g_iSupercut) { damage*=99.0 } SetHamParamFloat(4, damage) return HAM_HANDLED } public ham_ItemDeploy_Post(weapon_ent) { static owner owner = get_pdata_cbase(weapon_ent, OFFSET_WPN_WIN, OFFSET_WPN_LINUX); static weaponid weaponid = cs_get_weapon_id(weapon_ent) if (g_isZombie[owner] && weaponid == CSW_KNIFE) { static szClawModel[100] ArrayGetString(g_zclass_clawmodel, g_iZombieClass[owner], szClawModel, charsmax(szClawModel)) format(szClawModel, charsmax(szClawModel), "models/%s.mdl", szClawModel) entity_set_string( owner , EV_SZ_viewmodel , szClawModel ) entity_set_string( owner , EV_SZ_weaponmodel , "" ) } if (g_isZombie[owner] && !((1<=0) client_print(0, print_center, "%L - %d:%s%d", LANG_SERVER, "BUILD_TIMER", mins, (secs < 10 ? "0" : ""), secs) else { if (g_iPrepTime) { g_boolCanBuild = false g_boolPrepTime = true g_iCountDown = g_iPrepTime+1 set_task(1.0, "task_PrepTime", TASK_PREPTIME,_, _, "a", g_iCountDown); 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, "PREP_ANNOUNCE"); new players[32], num get_players(players, num) for (new i = 0; i < num; i++) { if (g_isAlive[players[i]] && !g_isZombie[players[i]]) { ExecuteHamB(Ham_CS_RoundRespawn, players[i]) if (g_iOwnedEnt[players[i]]) cmdStopEnt(players[i]) } } print_color(0, "%s^x04 %L", MODNAME, LANG_SERVER, "PREP_ANNOUNCE") client_cmd(0, "spk %s", PHASE_PREP) ExecuteForward(g_fwPrepStarted, g_fwDummyResult); } else Release_Zombies() remove_task(TASK_BUILD); return PLUGIN_HANDLED; } new szTimer[32] if (g_iCountDown>10) { if (mins && !secs) num_to_word(mins, szTimer, 31) else if (!mins && secs == 30) num_to_word(secs, szTimer, 31) else return PLUGIN_HANDLED; client_cmd(0, "spk ^"fvox/%s %s remaining^"", szTimer, (mins ? "minutes" : "seconds")) } else { num_to_word(g_iCountDown, szTimer, 31) client_cmd(0, "spk ^"fvox/%s^"", szTimer) } return PLUGIN_CONTINUE; } public task_PrepTime() { g_iCountDown-- if (g_iCountDown>=0) client_print(0, print_center, "%L - 0:%s%d", LANG_SERVER, "PREP_TIMER", (g_iCountDown < 10 ? "0" : ""), g_iCountDown) if (0= MODELCHANGE_DELAY) { fm_set_user_model(taskid) g_fModelsTargetTime = fCurTime } else { set_task((g_fModelsTargetTime + MODELCHANGE_DELAY) - fCurTime, "fm_set_user_model", taskid) g_fModelsTargetTime += MODELCHANGE_DELAY } } public fm_set_user_model(player) { player -= TASK_MODELSET engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", g_szPlayerModel[player]) g_isCustomModel[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_isCustomModel[player] = false dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player)) } public message_show_menu(msgid, dest, id) { if (!(!get_user_team(id) && !is_user_bot(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) && !is_user_bot(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) } public msgTeamInfo(msgid, dest) { if (dest != MSG_ALL && dest != MSG_BROADCAST) return; static id, team[2] id = get_msg_arg_int(1) get_msg_arg_string(2, team, charsmax(team)) switch (team[0]) { case 'T' : // TERRORIST { g_iCurTeam[id] = CS_TEAM_T; } case 'C' : // CT { g_iCurTeam[id] = CS_TEAM_CT; } case 'S' : // SPECTATOR { g_iCurTeam[id] = CS_TEAM_SPECTATOR; } default : g_iCurTeam[id] = CS_TEAM_UNASSIGNED; } if (!g_boolFirstTeam[id]) { g_boolFirstTeam[id] = true g_iTeam[id] = g_iCurTeam[id] } } public clcmd_changeteam(id) { static CsTeams:team team = cs_get_user_team(id) if (team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED) return PLUGIN_CONTINUE; show_zclass_menu(id, 0) return PLUGIN_HANDLED; } 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 msgStatusValue() set_msg_block(g_msgStatusText, BLOCK_SET); public ev_SetTeam(id) g_iFriend[id] = read_data(2) public ev_ShowStatus(id) //called when id looks at someone { new szName[32], pid = read_data(2); get_user_name(pid, szName, 31); if (g_iFriend[id] == 1) // friend { new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo), szWpnName[32]; if (wpnid) xmod_get_wpnname(wpnid, szWpnName, 31); set_hudmessage(0, 225, 0, -1.0, HUD_FRIEND_HEIGHT, 1, 0.01, 3.0, 0.01, 0.01); new nLen, szStatus[512] if (!g_isZombie[pid]) nLen += format( szStatus[nLen], 511-nLen, "%s^nZycia: %d | Bron: %s^nKolor: %s", szName, pev(pid, pev_health), szWpnName, g_szColorName[g_iColor[pid]]); else { nLen += format( szStatus[nLen], 511-nLen, "%s^nKlasa: %s^nZycia: %d", szName, g_szPlayerClass[pid], pev(pid, pev_health)); /*if (is_credits_active()) { nLen += format( szStatus[nLen], 511-nLen, "^n^nMnoznik klasy:", szName, g_szPlayerClass[pid], pev(pid, pev_health)); nLen += format( szStatus[nLen], 511-nLen, "^nZycia: %f", g_fClassMultiplier[pid][ATT_HEALTH]); nLen += format( szStatus[nLen], 511-nLen, "^nSzybkosc: %f", g_fClassMultiplier[pid][ATT_SPEED]); nLen += format( szStatus[nLen], 511-nLen, "^nGrawitacja: %f", g_fClassMultiplier[pid][ATT_GRAVITY]); }*/ } ShowSyncHudMsg(id, g_HudSync, szStatus); } if (g_iFriend[id] != 1) //enemy { set_hudmessage(225, 0, 0, -1.0, HUD_FRIEND_HEIGHT, 1, 0.01, 3.0, 0.01, 0.01); if (g_isZombie[pid]) ShowSyncHudMsg(id, g_HudSync, "%s", szName); else ShowSyncHudMsg(id, g_HudSync, "%s^nKolor: %s", szName, g_szColorName[g_iColor[pid]]); } } public ev_HideStatus(id) ClearSyncHud(id, g_HudSync); public cmdSay(id) { if (!g_isConnected[id]) return PLUGIN_HANDLED; new szMessage[32] read_args(szMessage, charsmax(szMessage)); remove_quotes(szMessage); if(szMessage[0] == '/') { if (equali(szMessage, "/commands") == 1 || equali(szMessage, "/cmd") == 1 ) { print_color(id, "%s /class, /respawn, /random, /mycolor, /guns%s%s%s", MODNAME, (g_iColorMode ? ", /whois ": ""), (g_iColorMode != 2 ? ", /colors":""), (access(id, FLAGS_LOCK) ? ", /lock":"") ); } else if (equali(szMessage, "/class") == 1) { show_zclass_menu(id, 0) } else if (equali(szMessage, "/respawn") == 1 || equali(szMessage, "/revive") == 1 || equali(szMessage, "/fixspawn") == 1) { if (g_boolCanBuild && !g_isZombie[id]) ExecuteHamB(Ham_CS_RoundRespawn, id) else if (g_isZombie[id]) { if (pev(id, pev_health) == float(ArrayGetCell(g_zclass_hp, g_iZombieClass[id])) || !is_user_alive(id)) ExecuteHamB(Ham_CS_RoundRespawn, id) else client_print(id, print_center, "%L", LANG_SERVER, "FAIL_SPAWN"); } } else if (equali(szMessage, "/lock") == 1 || equali(szMessage, "/claim") == 1 && g_isAlive[id]) { if (access(id, FLAGS_LOCK)) cmdLockBlock(id) else client_print(id, print_center, "%L", LANG_SERVER, "FAIL_ACCESS"); return PLUGIN_HANDLED; } else if (equal(szMessage, "/whois",6) && g_iColorMode) { for ( new i=0; i get_gametime()) { g_fBuildDelay[id] = get_gametime() client_print (id, print_center, "%L", LANG_SERVER, "BUILD_SPAM") return PLUGIN_HANDLED } else g_fBuildDelay[id] = get_gametime() if (g_isBuildBan[id]) { client_print (id, print_center, "%L", LANG_SERVER, "BUILD_BANNED") client_cmd(id, "spk %s", LOCK_FAIL); return PLUGIN_HANDLED; } if (g_isZombie[id] && !access(id, FLAGS_OVERRIDE)) return PLUGIN_HANDLED if (!g_boolCanBuild && !access(id, FLAGS_BUILD) && !access(id, FLAGS_OVERRIDE)) { client_print (id, print_center, "%L", LANG_SERVER, "BUILD_NOTIME") return PLUGIN_HANDLED } if (g_iOwnedEnt[id] && is_valid_ent(g_iOwnedEnt[id])) cmdStopEnt(id) new ent, bodypart get_user_aiming (id,ent,bodypart) if (!is_valid_ent(ent) || ent == g_iEntBarrier || is_user_alive(ent) || IsMovingEnt(ent)) return PLUGIN_HANDLED; if ((BlockLocker(ent) && BlockLocker(ent) != id) || (BlockLocker(ent) && !access(id, FLAGS_OVERRIDE))) return PLUGIN_HANDLED; new szClass[10], szTarget[7]; entity_get_string(ent, EV_SZ_classname, szClass, 9); entity_get_string(ent, EV_SZ_targetname, szTarget, 6); if (!equal(szClass, "func_wall") || equal(szTarget, "ignore")) return PLUGIN_HANDLED; ExecuteForward(g_fwGrabEnt_Pre, g_fwDummyResult, id, ent); new Float:fOrigin[3], iAiming[3], Float:fAiming[3] get_user_origin(id, iAiming, 3); IVecFVec(iAiming, fAiming); entity_get_vector(ent, EV_VEC_origin, fOrigin); g_fOffset1[id] = fOrigin[0] - fAiming[0]; g_fOffset2[id] = fOrigin[1] - fAiming[1]; g_fOffset3[id] = fOrigin[2] - fAiming[2]; g_fEntDist[id] = get_user_aiming(id, ent, bodypart); if (g_fEntMinDist) { if (g_fEntDist[id] < g_fEntMinDist) g_fEntDist[id] = g_fEntSetDist; } else if (g_fEntMaxDist) { if (g_fEntDist[id] > g_fEntMaxDist) return PLUGIN_HANDLED } set_pev(ent,pev_rendermode,kRenderTransColor) set_pev(ent,pev_rendercolor, g_fColor[g_iColor[id]] ) set_pev(ent,pev_renderamt, g_fRenderAmt[g_iColor[id]] ) MovingEnt(ent); SetEntMover(ent, id); g_iOwnedEnt[id] = ent //Checked after object is successfully grabbed if (!g_boolCanBuild && (access(id, FLAGS_BUILD) || access(id, FLAGS_OVERRIDE))) { new adminauthid[32],adminname[32] get_user_authid (id,adminauthid,31) get_user_name(id,adminname,31) Log("[MOVE] Admin: %s || SteamID: %s moved an entity", adminname, adminauthid) } client_cmd(id, "spk %s", GRAB_START); ExecuteForward(g_fwGrabEnt_Post, g_fwDummyResult, id, ent); return PLUGIN_HANDLED } public cmdStopEnt(id) { if (!g_iOwnedEnt[id]) return PLUGIN_HANDLED; new ent = g_iOwnedEnt[id] ExecuteForward(g_fwDropEnt_Pre, g_fwDummyResult, id, ent); if (BlockLocker(ent)) { switch(g_iLockBlocks) { case 0: { set_pev(ent,pev_rendermode,kRenderTransColor) set_pev(ent,pev_rendercolor, Float:{ LOCKED_COLOR }) set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT }) } case 1: { set_pev(ent,pev_rendermode,kRenderTransColor) set_pev(ent,pev_rendercolor, g_fColor[g_iColor[id]]) set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT }) } } } else set_pev(ent,pev_rendermode,kRenderNormal) UnsetEntMover(ent); SetLastMover(ent,id); g_iOwnedEnt[id] = 0; UnmovingEnt(ent); client_cmd(id, "spk %s", GRAB_STOP); ExecuteForward(g_fwDropEnt_Post, g_fwDummyResult, id, ent); return PLUGIN_HANDLED; } public cmdLockBlock(id) { if (!g_boolCanBuild && g_iLockBlocks) { client_print(id, print_center, "%L", LANG_SERVER, "FAIL_LOCK"); return PLUGIN_HANDLED; } if (!access(id, FLAGS_LOCK) || (g_isZombie[id] && !access(id, FLAGS_OVERRIDE))) return PLUGIN_HANDLED; new ent, bodypart get_user_aiming (id,ent,bodypart) new szTarget[7], szClass[10]; entity_get_string(ent, EV_SZ_targetname, szTarget, 6); entity_get_string(ent, EV_SZ_classname, szClass, 9); if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent == g_iEntBarrier || !equal(szClass, "func_wall") || equal(szTarget, "ignore")) return PLUGIN_HANDLED; ExecuteForward(g_fwLockEnt_Pre, g_fwDummyResult, id, ent); switch (g_iLockBlocks) { case 0: { if (!BlockLocker(ent) && !IsMovingEnt(ent)) { LockBlock(ent, id); set_pev(ent,pev_rendermode,kRenderTransColor) set_pev(ent,pev_rendercolor,Float:{LOCKED_COLOR}) set_pev(ent,pev_renderamt,Float:{LOCKED_RENDERAMT}) client_cmd(id, "spk %s", LOCK_OBJECT); } else if (BlockLocker(ent)) { UnlockBlock(ent) set_pev(ent,pev_rendermode,kRenderNormal) client_cmd(id, "spk %s", LOCK_OBJECT); } } case 1: { if (!BlockLocker(ent) && !IsMovingEnt(ent)) { if (g_iOwnedEntities[id]=g_iLockMax) { client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_MAX", g_iLockMax) client_cmd(id, "spk %s", LOCK_FAIL); } } else if (BlockLocker(ent)) { if (BlockLocker(ent) == id || access(id, FLAGS_OVERRIDE)) { g_iOwnedEntities[BlockLocker(ent)]-- set_pev(ent,pev_rendermode,kRenderNormal) client_print(BlockLocker(ent), print_center, "%L [ %d / %d ]", LANG_SERVER, "BUILD_CLAIM_LOST", g_iOwnedEntities[BlockLocker(ent)], g_iLockMax) UnlockBlock(ent) client_cmd(id, "spk %s", LOCK_OBJECT); } else { client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_FAIL") client_cmd(id, "spk %s", LOCK_FAIL); } } } } ExecuteForward(g_fwLockEnt_Post, g_fwDummyResult, id, ent); return PLUGIN_HANDLED } public cmdBuildBan(id, target) { if (access(id, FLAGS_BUILDBAN)) { new player if (target) player = target else { new arg[32] read_argv(1, arg, 31) player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY) } if (!player) return client_print(id, print_console, "[Base Builder] %L", LANG_SERVER, "FAIL_NAME"); new szAdminAuthid[32],szAdminName[32],szPlayerName[32],szPlayerID[32] get_user_name(id,szAdminName,31) get_user_authid (id,szAdminAuthid,31) get_user_name(player, szPlayerName, 31) get_user_authid (player,szPlayerID,31) g_isBuildBan[player] = g_isBuildBan[player] ? false : true if (g_isBuildBan[player] && g_iOwnedEnt[player]) cmdStopEnt(player) client_print(id, print_console, "[Base Builder] Gracz %s zostal %s z budowania", szPlayerName, g_isBuildBan[player] ? "zbanowany":"odbanowany") Log("[MOVE] Admin: %s || SteamID: %s zbanowal Gracz: %s || SteamID: %s z budowania", szAdminName, szAdminAuthid, szPlayerName, szPlayerID) set_hudmessage(255,0, 0, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1) show_hudmessage(player, "%L", LANG_SERVER, "ADMIN_BUILDBAN", g_isBuildBan[player] ? "disabled":"re-enabled"); print_color(0, "%s Gracz^x04 %s^x01 zostal^x04 %s^x01 z budowania", MODNAME, szPlayerName, g_isBuildBan[player] ? "zbanowany":"odbanowany") } return PLUGIN_HANDLED; } public fw_PlayerPreThink(id) { if (!is_user_connected(id)) { cmdStopEnt(id) return PLUGIN_HANDLED } if (g_isZombie[id]) set_pev(id, pev_maxspeed, g_fPlayerSpeed[id]) if (!g_iOwnedEnt[id] || !is_valid_ent(g_iOwnedEnt[id])) return FMRES_HANDLED new buttons = pev(id, pev_button) if (buttons & IN_ATTACK) { g_fEntDist[id] += OBJECT_PUSHPULLRATE; if (g_fEntDist[id] > g_fEntMaxDist) { g_fEntDist[id] = g_fEntMaxDist client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MAX") } else client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PUSH") ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 1); } else if (buttons & IN_ATTACK2) { g_fEntDist[id] -= OBJECT_PUSHPULLRATE; if (g_fEntDist[id] < g_fEntSetDist) { g_fEntDist[id] = g_fEntSetDist client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MIN") } else client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PULL") ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 2); } new iOrigin[3], iLook[3], Float:fOrigin[3], Float:fLook[3], Float:vMoveTo[3], Float:fLength get_user_origin(id, iOrigin, 1); IVecFVec(iOrigin, fOrigin); get_user_origin(id, iLook, 3); IVecFVec(iLook, fLook); fLength = get_distance_f(fLook, fOrigin); if (fLength == 0.0) fLength = 1.0; vMoveTo[0] = (fOrigin[0] + (fLook[0] - fOrigin[0]) * g_fEntDist[id] / fLength) + g_fOffset1[id]; vMoveTo[1] = (fOrigin[1] + (fLook[1] - fOrigin[1]) * g_fEntDist[id] / fLength) + g_fOffset2[id]; vMoveTo[2] = (fOrigin[2] + (fLook[2] - fOrigin[2]) * g_fEntDist[id] / fLength) + g_fOffset3[id]; vMoveTo[2] = float(floatround(vMoveTo[2], floatround_floor)); entity_set_origin(g_iOwnedEnt[id], vMoveTo); return FMRES_HANDLED } 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 szClass[10], szTarget[7]; entity_get_string(ent, EV_SZ_classname, szClass, 9); entity_get_string(ent, EV_SZ_targetname, szTarget, 6); if (equal(szClass, "func_wall") && !equal(szTarget, "ignore") && ent != g_iEntBarrier && g_iShowMovers == 1) { if (g_boolCanBuild || access(id, ADMIN_SLAY)) { set_hudmessage(0, 50, 255, -1.0, 0.55, 1, 0.01, 3.0, 0.01, 0.01); if (!BlockLocker(ent)) { new szCurMover[32], szLastMover[32] if (GetEntMover(ent)) { get_user_name(GetEntMover(ent),szCurMover,31) if (!GetLastMover(ent)) ShowSyncHudMsg(id, g_HudSync, "Przemieszczane przez: %s^nOstatnio przemieszczane przez: NIKT", szCurMover); } if (GetLastMover(ent)) { get_user_name(GetLastMover(ent),szLastMover,31) if (!GetEntMover(ent)) ShowSyncHudMsg(id, g_HudSync, "Przemieszczane przez: NIKT^nOtatnio przemieszczane przez: %s", szLastMover); } if (GetEntMover(ent) && GetLastMover(ent)) ShowSyncHudMsg(id, g_HudSync, "Przemieszczane przez: %s^nOstatnio przemieszczane przez: %s", szCurMover, szLastMover); else if (!GetEntMover(ent) && !GetLastMover(ent)) ShowSyncHudMsg(id, g_HudSync, "Ten obiekt nie byl jeszcze przesuwany"); } else { new szEntOwner[32] get_user_name(BlockLocker(ent),szEntOwner,31) ShowSyncHudMsg(id, g_HudSync, "Przypisane przez: %s", szEntOwner); } } } } else ClearSyncHud(id, g_HudSync); return PLUGIN_HANDLED } public fw_EmitSound(id,channel,const sample[],Float:volume,Float:attn,flags,pitch) { if (!is_user_connected(id) || !g_isZombie[id] || g_boolCanBuild || g_boolPrepTime || g_boolRoundEnded) return FMRES_IGNORED; if(equal(sample[7], "die", 3) || equal(sample[7], "dea", 3)) { emit_sound(id,channel,g_szZombieDie[random(sizeof g_szZombieDie - 1)],volume,attn,flags,pitch) return FMRES_SUPERCEDE } if(equal(sample[7], "bhit", 4)) { emit_sound(id,channel,g_szZombiePain[random(sizeof g_szZombiePain - 1)],volume,attn,flags,pitch) return FMRES_SUPERCEDE } // Zombie attacks with knife if (equal(sample[8], "kni", 3)) { if (equal(sample[14], "sla", 3)) // slash { emit_sound(id,channel,g_szZombieMiss[random(sizeof g_szZombieMiss - 1)],volume,attn,flags,pitch) return FMRES_SUPERCEDE; } if (equal(sample[14], "hit", 3)) // hit { if (sample[17] == 'w') // wall { emit_sound(id,channel,g_szZombieHit[random(sizeof g_szZombieHit - 1)],volume,attn,flags,pitch) return FMRES_SUPERCEDE; } else { emit_sound(id,channel,g_szZombieHit[random(sizeof g_szZombieHit - 1)],volume,attn,flags,pitch) return FMRES_SUPERCEDE; } } if (equal(sample[14], "sta", 3)) // stab { emit_sound(id,channel,g_szZombieMiss[random(sizeof g_szZombieMiss - 1)],volume,attn,flags,pitch) return FMRES_SUPERCEDE; } } return FMRES_IGNORED } public fw_Suicide(id) return FMRES_SUPERCEDE public show_colors_menu(id,offset) { if(offset<0) offset = 0 new keys, curnum, menu[2048] for(new i=offset;i nummodels_default) { for (k = nummodels_default; k < nummodels_custom; k++) { ArrayGetString(g_zclass2_playermodel, ArrayGetCell(g_zclass2_modelsstart, i) + k, buffer, charsmax(buffer)) ArrayInsertStringAfter(g_zclass_playermodel, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k - 1, buffer) // Precache player model and retrieve its modelindex formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", buffer, buffer) ArrayInsertCellAfter(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k - 1, engfunc(EngFunc_PrecacheModel, prec_mdl)) } // Fix models end index for this class ArraySetCell(g_zclass_modelsend, g_iZClasses, ArrayGetCell(g_zclass_modelsend, g_iZClasses) + (nummodels_custom - nummodels_default)) } // Replace clawmodel ArrayGetString(g_zclass2_clawmodel, i, buffer, charsmax(buffer)) ArraySetString(g_zclass_clawmodel, g_iZClasses, buffer) // Precache clawmodel formatex(prec_mdl, charsmax(prec_mdl), "models/%s.mdl", buffer) engfunc(EngFunc_PrecacheModel, prec_mdl) // Replace health buffer[0] = ArrayGetCell(g_zclass2_hp, i) ArraySetCell(g_zclass_hp, g_iZClasses, buffer[0]) // Replace speed buffer[0] = ArrayGetCell(g_zclass2_spd, i) ArraySetCell(g_zclass_spd, g_iZClasses, buffer[0]) // Replace gravity buffer2 = Float:ArrayGetCell(g_zclass2_grav, i) ArraySetCell(g_zclass_grav, g_iZClasses, buffer2) // Replace admin flags buffer2 = ArrayGetCell(g_zclass2_admin, i) ArraySetCell(g_zclass_admin, g_iZClasses, buffer2) // Replace credits buffer2 = ArrayGetCell(g_zclass2_credits, i) ArraySetCell(g_zclass_credits, g_iZClasses, buffer2) } // If class was not overriden with customization data if (ArrayGetCell(g_zclass_new, g_iZClasses)) { // Precache default class model and replace modelindex with the real one formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", model, model) ArraySetCell(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses), engfunc(EngFunc_PrecacheModel, prec_mdl)) // Precache default clawmodel formatex(prec_mdl, charsmax(prec_mdl), "models/%s.mdl", clawmodel) engfunc(EngFunc_PrecacheModel, prec_mdl) } g_iZClasses++ return g_iZClasses-1 } public native_get_class_cost(classid) { if (classid < 0 || classid >= g_iZClasses) return -1; return ArrayGetCell(g_zclass_credits, classid) } public native_get_user_zombie_class(id) return g_iZombieClass[id]; public native_get_user_next_class(id) return g_iNextClass[id]; public native_set_user_zombie_class(id, classid) { if (classid < 0 || classid >= g_iZClasses) return 0; g_iNextClass[id] = classid return 1; } public native_is_user_zombie(id) return g_isZombie[id] public native_is_user_banned(id) return g_isBuildBan[id] public native_bool_buildphase() return g_boolCanBuild public native_bool_prepphase() return g_boolPrepTime public native_get_build_time() { if (g_boolCanBuild) return g_iCountDown return 0; } public native_set_build_time(time) { if (g_boolCanBuild) { g_iCountDown = time return 1 } return 0; } public native_get_user_color(id) return g_iColor[id] public native_set_user_color(id, color) { g_iColor[id] = color } public native_drop_user_block(id) { cmdStopEnt(id) } public native_get_user_block(id) { if (g_iOwnedEnt[id]) return g_iOwnedEnt[id] return 0; } public native_set_user_block(id, entity) { if (is_valid_ent(entity) && !is_user_alive(entity) && !MovingEnt(entity)) g_iOwnedEnt[id] = entity } public native_is_locked_block(entity) { if (is_valid_ent(entity) && !is_user_alive(entity)) return BlockLocker(entity) ? true : false return -1; } public native_lock_block(entity) { if (is_valid_ent(entity) && !is_user_alive(entity) && !BlockLocker(entity)) { LockBlock(entity, 33); set_pev(entity,pev_rendermode,kRenderTransColor) set_pev(entity,pev_rendercolor,Float:{LOCKED_COLOR}) set_pev(entity,pev_renderamt,Float:{LOCKED_RENDERAMT}) } } public native_unlock_block(entity) { if (is_valid_ent(entity) && !is_user_alive(entity) && BlockLocker(entity)) { UnlockBlock(entity) set_pev(entity,pev_rendermode,kRenderNormal) } } public native_release_zombies() { if (g_boolCanBuild || g_boolPrepTime) { Release_Zombies() return 1; } return 0; } public native_set_user_primary(id, csw_primary) { if (CSW_P228<=csw_primary<=CSW_P90) { g_iPrimaryWeapon[id] = csw_primary return g_iPrimaryWeapon[id]; } return -1; } public native_get_user_primary(id) return g_iPrimaryWeapon[id] public native_get_flags_build() return FLAGS_BUILD public native_get_flags_lock() return FLAGS_LOCK public native_get_flags_buildban() return FLAGS_BUILDBAN public native_get_flags_swap() return FLAGS_SWAP public native_get_flags_revive() return FLAGS_REVIVE public native_get_flags_guns() return FLAGS_GUNS public native_get_flags_release() return FLAGS_RELEASE public native_get_flags_override() return FLAGS_OVERRIDE /*public native_set_user_mult(id, attribute, Float: amount) { if (attribute < ATT_HEALTH || attribute > ATT_GRAVITY) return 0; if (amount < 1.0) amount = 1.0 g_fClassMultiplier[id][attribute] = amount return 1; }*/