Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma tabsize 0
- #include <amxmodx>
- #include <amxmisc>
- #include <engine>
- #include <fakemeta>
- #define PLUGIN "[Ar4 Mode] HookManager"
- #define VERSION "3.0"
- #define AUTHOR "LeGioN & arttty7"
- #define PLAYERS_PER_PAGE 8
- #define JBE_CORE //Закомментируйте, если вам не нужна привязка к [JB] Engine.
- #if defined JBE_CORE
- native jbe_get_day_mode();
- native jbe_is_user_wanted(pPlayer);
- #endif
- new g_iMenuPlayers[33][32], g_iMenuPosition[33], szPlayerHook[33], szBreakEnd[33];
- new g_pEndSpriteBreak[4], g_LoadColor[81], g_LoadSprite[81], g_LoadSound[81], bool:g_iHookEnable = true;
- new szPlayerColor[33], szPlayerSprite[33], szPlayerSize[33], szPlayerSound[33], szPlayerSpeed[33], szPlayerView[33], szPlayerEndSprite[33], szPlayerHookOrigin[33][3];
- new g_HookColorNum, g_HookColorDefault, g_HookColorName[999][64], g_HookColorRGB[999][4];
- new g_HookSpriteNum, g_HookSpriteDefault, g_HookSpriteName[999][64], g_HookSpriteFile[999][64], g_HookSpriteMsg[999];
- new g_HookSoundNum, g_HookSoundDefault, g_HookSoundName[999][64], g_HookSoundFile[999][64]
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- register_clcmd("+hook", "HookOn")
- register_clcmd("-hook", "HookOff")
- register_clcmd("say /hook", "Ar4_HookMenu")
- register_dictionary("jbe_ar4mode_hook.txt")
- register_menucmd(register_menuid("Show_HookMenu"), 1023, "Handle_HookMenu");
- register_menucmd(register_menuid("Show_HookTargetMenu"), 1023, "Handle_HookTargetMenu");
- }
- public plugin_precache()
- {
- new g_LoadDir[81]
- get_configsdir(g_LoadDir, charsmax( g_LoadDir ))
- formatex(g_LoadDir, charsmax( g_LoadDir ), "%s/ar4mode_hook", g_LoadDir)
- if(!dir_exists( g_LoadDir ))
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_PRECACHE")
- set_fail_state( szError )
- }
- formatex(g_LoadColor, charsmax( g_LoadColor ), "%s/hook_color.ini", g_LoadDir)
- formatex(g_LoadSprite, charsmax( g_LoadSprite ), "%s/hook_sprite.ini", g_LoadDir)
- formatex(g_LoadSound, charsmax( g_LoadSound ), "%s/hook_sound.ini", g_LoadDir)
- if(!file_exists( g_LoadColor ))
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_NOFILE_COLOR")
- set_fail_state( szError )
- }
- if(!file_exists( g_LoadSprite ))
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_NOFILE_SPRITE")
- set_fail_state( szError )
- }
- if(!file_exists( g_LoadSound ))
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_NOFILE_SOUND")
- set_fail_state( szError )
- }
- set_task(0.5, "LoadColor")
- set_task(0.5, "LoadSprite")
- set_task(0.5, "LoadSound")
- new szParse[320], szParseName[64], szParseFile[256], szLine, szNum, szNums
- for(szLine=0;read_file(g_LoadSprite, szLine, szParse, charsmax( szParse ), szNum);szLine++)
- {
- if(szNum > 0 && szParse[0] != ';')
- {
- ++szNums
- parse(szParse, szParseFile, charsmax( szParseFile ), szParseFile, charsmax( szParseFile ))
- g_HookSpriteMsg[szNums] = precache_model( szParseFile )
- }
- }
- for(szLine=0;read_file(g_LoadSound, szLine, szParse, charsmax( szParse ), szNum);szLine++)
- {
- if(szNum > 0 && szParse[0] != ';')
- {
- parse(szParse, szParseFile, charsmax( szParseFile ), szParseFile, charsmax( szParseFile ))
- precache_sound( szParseFile )
- }
- }
- szParseName = szParseName
- g_pEndSpriteBreak[0] = engfunc(EngFunc_PrecacheModel, "sprites/jbe_ar4mode/end_7.spr");
- g_pEndSpriteBreak[1] = engfunc(EngFunc_PrecacheModel, "sprites/jbe_ar4mode/end_6.spr");
- g_pEndSpriteBreak[2] = engfunc(EngFunc_PrecacheModel, "sprites/jbe_ar4mode/end_3.spr");
- g_pEndSpriteBreak[3] = engfunc(EngFunc_PrecacheModel, "sprites/jbe_ar4mode/end_4.spr");
- }
- public LoadColor()
- {
- new szParse[256], szParseName[64], szParseColor[32], szParseDefault[32], szParseR[32], szParseG[32], szParseB[32], szParseDefaultNum, szLine, szNum
- for(szLine=0;read_file(g_LoadColor, szLine, szParse, charsmax( szParse ), szNum);szLine++)
- {
- if(szNum > 0 && szParse[0] != ';' && szParse[0] != '?')
- {
- ++g_HookColorNum
- parse(szParse, szParseName, charsmax( szParseName ), szParseColor, charsmax( szParseColor ), szParseDefault, charsmax( szParseDefault ))
- parse(szParseColor, szParseR, charsmax( szParseR ), szParseG, charsmax( szParseG ), szParseB, charsmax( szParseB ))
- g_HookColorName[g_HookColorNum] = szParseName
- g_HookColorRGB[g_HookColorNum][0] = str_to_num( szParseR )
- g_HookColorRGB[g_HookColorNum][1] = str_to_num( szParseG )
- g_HookColorRGB[g_HookColorNum][2] = str_to_num( szParseB )
- szParseDefaultNum = str_to_num( szParseDefault )
- if(szParseDefaultNum && !g_HookColorDefault) g_HookColorDefault = g_HookColorNum
- }
- }
- if(!g_HookColorNum)
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_BUILDING_NOCOLOR")
- set_fail_state( szError )
- }
- if(!g_HookColorDefault)
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_BUILDING_NOCOLORDEF")
- set_fail_state( szError )
- }
- }
- public LoadSprite()
- {
- new szParse[256], szParseName[64], szParseFile[32], szParseDefault[32], szParseDefaultNum, szLine, szNum
- for(szLine=0;read_file(g_LoadSprite, szLine, szParse, charsmax( szParse ), szNum);szLine++)
- {
- if(szNum > 0 && szParse[0] != ';' && szParse[0] != '?')
- {
- ++g_HookSpriteNum
- parse(szParse, szParseName, charsmax( szParseName ), szParseFile, charsmax( szParseFile ), szParseDefault, charsmax( szParseDefault ))
- g_HookSpriteName[g_HookSpriteNum] = szParseName
- g_HookSpriteFile[g_HookSpriteNum] = szParseFile
- szParseDefaultNum = str_to_num( szParseDefault )
- if(szParseDefaultNum)
- {
- if(!g_HookSpriteDefault)
- {
- g_HookSpriteDefault = g_HookSpriteNum
- server_print("fsdfsd - %d - %d", g_HookSpriteDefault, g_HookSpriteNum)
- }
- }
- }
- }
- if(!g_HookSpriteNum)
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_BUILDING_NOSPRITE")
- set_fail_state( szError )
- }
- if(!g_HookSpriteDefault)
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_BUILDING_NOSPRITEDEF")
- set_fail_state( szError )
- }
- }
- public LoadSound()
- {
- new szParse[256], szParseName[64], szParseFile[32], szParseDefault[32], szParseDefaultNum, szLine, szNum
- for(szLine=0;read_file(g_LoadSound, szLine, szParse, charsmax( szParse ), szNum);szLine++)
- {
- if(szNum > 0 && szParse[0] != ';' && szParse[0] != '?')
- {
- ++g_HookSoundNum
- parse(szParse, szParseName, charsmax( szParseName ), szParseFile, charsmax( szParseFile ), szParseDefault, charsmax( szParseDefault ))
- g_HookSoundName[g_HookSoundNum] = szParseName
- g_HookSoundFile[g_HookSoundNum] = szParseFile
- szParseDefaultNum = str_to_num( szParseDefault )
- if(szParseDefaultNum && !g_HookSoundDefault) g_HookSoundDefault = g_HookSoundNum
- }
- }
- if(!g_HookSoundNum)
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_BUILDING_NOSOUND")
- set_fail_state( szError )
- }
- if(!g_HookSoundDefault)
- {
- new szError[512]
- formatex(szError, charsmax( szError ), "%L", 0, "JBE_HOOK_AR4_MODE_BUILDING_NOSOUNDDEF")
- set_fail_state( szError )
- }
- }
- public client_putinserver(id)
- {
- if(get_user_flags(id) & ADMIN_LEVEL_G)
- {
- szPlayerHook[id] = true;
- szPlayerColor[id] = g_HookColorDefault
- szPlayerSprite[id] = g_HookSpriteDefault
- szPlayerSize[id] = 0
- szPlayerSound[id] = g_HookSoundDefault
- szPlayerSpeed[id] = 0
- szPlayerView[id] = 0
- szPlayerEndSprite[id] = 0
- }
- }
- public client_disconnect(id)
- {
- RemoveHook(id)
- szPlayerHook[id] = false;
- }
- public Ar4_HookMenu(id)
- {
- if(get_user_flags(id) & ADMIN_LEVEL_G) return Show_HookMenu(id);
- else ChatColor(id, "%L", id, "JBE_MENU_AR4_MODE_NOACCESS"); return PLUGIN_HANDLED;
- }
- Show_HookMenu(id)
- {
- new szMenu[512], iKeys = (1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_AR4_MODE_MAIN_TITLE")
- if(g_iHookEnable)
- {
- iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w1\r] \w%L^n", id, "JBE_MENU_AR4_MODE_COLOR", g_HookColorName[szPlayerColor[id]]);
- iKeys |= (1<<0);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_COLOR_FALLS", g_HookColorName[szPlayerColor[id]]);
- if(g_iHookEnable)
- {
- iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w2\r] \w%L^n", id, "JBE_MENU_AR4_MODE_HOOK", g_HookSpriteName[szPlayerSprite[id]]);
- iKeys |= (1<<1);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_HOOK_FALLS", g_HookSpriteName[szPlayerSprite[id]]);
- if(g_iHookEnable)
- {
- switch(szPlayerSize[id])
- {
- case 0: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w3\r] \w%L^n", id, "JBE_MENU_AR4_MODE_0_SIZE");
- case 1: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w3\r] \w%L^n", id, "JBE_MENU_AR4_MODE_1_SIZE");
- case 2: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w3\r] \w%L^n", id, "JBE_MENU_AR4_MODE_2_SIZE");
- case 3: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w3\r] \w%L^n", id, "JBE_MENU_AR4_MODE_3_SIZE");
- }
- iKeys |= (1<<2);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_0_SIZE_FALLS");
- if(g_iHookEnable)
- {
- iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w4\r] \w%L^n", id, "JBE_MENU_AR4_MODE_SOUND", g_HookSoundName[szPlayerSound[id]]);
- iKeys |= (1<<3);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_SOUND_FALLS", g_HookSoundName[szPlayerSound[id]]);
- if(g_iHookEnable)
- {
- switch(szPlayerSpeed[id])
- {
- case 0: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w5\r] \w%L^n", id, "JBE_MENU_AR4_MODE_1_SPEED");
- case 1: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w5\r] \w%L^n", id, "JBE_MENU_AR4_MODE_0_SPEED");
- case 2: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w5\r] \w%L^n", id, "JBE_MENU_AR4_MODE_2_SPEED");
- }
- iKeys |= (1<<4);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_1_SPEED_FALLS");
- if(g_iHookEnable)
- {
- switch(szPlayerView[id])
- {
- case 0: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w6\r] \w%L^n", id, "JBE_MENU_AR4_MODE_0_VIEW");
- case 1: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w6\r] \w%L^n", id, "JBE_MENU_AR4_MODE_1_VIEW");
- case 2: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w6\r] \w%L^n", id, "JBE_MENU_AR4_MODE_2_VIEW");
- }
- iKeys |= (1<<5);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_0_VIEW_FALLS");
- if(g_iHookEnable)
- {
- switch(szPlayerEndSprite[id])
- {
- case 0: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w7\r] \w%L^n", id, "JBE_MENU_AR4_MODE_0_END");
- case 1: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w7\r] \w%L^n", id, "JBE_MENU_AR4_MODE_1_END");
- case 2: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w7\r] \w%L^n", id, "JBE_MENU_AR4_MODE_2_END");
- case 3: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w7\r] \w%L^n", id, "JBE_MENU_AR4_MODE_3_END");
- case 4: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w7\r] \w%L^n", id, "JBE_MENU_AR4_MODE_4_END");
- }
- iKeys |= (1<<6);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_0_END_FALLS");
- if(get_user_flags(id) & ADMIN_RESERVATION && g_iHookEnable)
- {
- if(g_iHookEnable) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w8\r] \w%L^n", id, "JBE_MENU_AR4_MODE_HOOK_TARGET_MENU");
- iKeys |= (1<<7);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\d[#] \d%L^n", id, "JBE_MENU_AR4_MODE_HOOK_TARGET_MENU_FALLS");
- if(get_user_flags(id) & ADMIN_RESERVATION)
- {
- iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w9\r] \w%L^n", id, g_iHookEnable ? "JBE_AR4_MODE_HOOK_ENABLE" : "JBE_AR4_MODE_HOOK_DISABLE");
- iKeys |= (1<<8);
- }
- else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[#] %L^n", id, g_iHookEnable ? "JBE_AR4_MODE_HOOK_ENABLE" : "JBE_AR4_MODE_HOOK_DISABLE");
- formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w0\r] \w%L", id, "JBE_MENU_AR4_MODE_EXIT");
- return show_menu(id, iKeys, szMenu, -1, "Show_HookMenu");
- }
- public Handle_HookMenu(id, iKey)
- {
- switch(iKey)
- {
- case 0:
- {
- if(g_iHookEnable)
- {
- ++szPlayerColor[id];
- if(szPlayerColor[id] == g_HookColorNum + 1) szPlayerColor[id] = 1;
- }
- }
- case 1:
- {
- if(g_iHookEnable)
- {
- ++szPlayerSprite[id]
- if(szPlayerSprite[id] == g_HookSpriteNum + 1) szPlayerSprite[id] = 1
- }
- }
- case 2:
- {
- if(g_iHookEnable)
- {
- ++szPlayerSize[id]
- if(szPlayerSize[id] == 4) szPlayerSize[id] = 0
- }
- }
- case 3:
- {
- if(g_iHookEnable)
- {
- ++szPlayerSound[id]
- if(szPlayerSound[id] == g_HookSoundNum + 1) szPlayerSound[id] = 1
- }
- }
- case 4:
- {
- if(g_iHookEnable)
- {
- ++szPlayerSpeed[id]
- if(szPlayerSpeed[id] == 3) szPlayerSpeed[id] = 0
- }
- }
- case 5:
- {
- if(g_iHookEnable)
- {
- ++szPlayerView[id]
- if(szPlayerView[id] == 3) szPlayerView[id] = 0
- }
- }
- case 6:
- {
- if(g_iHookEnable)
- {
- ++szPlayerEndSprite[id]
- if(szPlayerEndSprite[id] == 5) szPlayerEndSprite[id] = 0
- }
- }
- case 7: if(g_iHookEnable) return Cmd_HookTargetMenu(id);
- case 8:
- {
- new szName[32]; get_user_name(id, szName, charsmax(szName))
- if(g_iHookEnable)
- {
- g_iHookEnable = false
- ChatColor(0, "%L", id, "JBE_MENU_AR4_MODE_HOOK_OFF_CHAT", szName)
- }
- else
- {
- g_iHookEnable = true
- ChatColor(0, "%L", id, "JBE_MENU_AR4_MODE_HOOK_ON_CHAT", szName)
- }
- }
- case 9: return PLUGIN_HANDLED;
- }
- return Show_HookMenu(id);
- }
- public Cmd_HookTargetMenu(id) return Show_HookTargetMenu(id, g_iMenuPosition[id] = 0);
- Show_HookTargetMenu(id, iPos)
- {
- new iPlayersNum;
- for(new i = 1; i <= 32; i++)
- {
- if(!is_user_connected(i)) continue;
- g_iMenuPlayers[id][iPlayersNum++] = i;
- }
- new iStart = iPos * PLAYERS_PER_PAGE;
- if(iStart > iPlayersNum) iStart = iPlayersNum;
- iStart = iStart - (iStart % 8);
- g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
- new iEnd = iStart + PLAYERS_PER_PAGE;
- if(iEnd > iPlayersNum) iEnd = iPlayersNum;
- new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
- switch(iPagesNum)
- {
- case 0:
- {
- ChatColor(id, "%L", id, "JBE_HOOK_AR4_MODE_PLAYER");
- return PLUGIN_HANDLED;
- }
- default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_HOOK_AR4_MODE_TARGET_HOOK", iPos + 1, iPagesNum);
- }
- new szName[32], i, iKeys = (1<<9), b;
- for(new a = iStart; a < iEnd; a++)
- {
- i = g_iMenuPlayers[id][a];
- get_user_name(i, szName, charsmax(szName));
- iKeys |= (1<<b);
- iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\w%d\r] \w%s %L^n", ++b, szName, i, szPlayerHook[i] ? "JBE_HOOK_AR4_MODE_HOOK_TAKE" : "JBE_HOOK_AR4_MODE_HOOK_GIVE");
- }
- for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
- if(iEnd < iPlayersNum)
- {
- iKeys |= (1<<8);
- formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\w9\r] \w%L^n\r[\w0\r] \w%L", id, "JBE_MENU_AR4_MODE_NEXT", id, iPos ? "JBE_MENU_AR4_MODE_BACK" : "JBE_MENU_AR4_MODE_EXIT");
- }
- else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\r[\w0\r] \w%L", id, iPos ? "JBE_MENU_AR4_MODE_BACK" : "JBE_MENU_AR4_MODE_EXIT");
- return show_menu(id, iKeys, szMenu, -1, "Show_HookTargetMenu");
- }
- public Handle_HookTargetMenu(id, iKey)
- {
- switch(iKey)
- {
- case 8: return Show_HookTargetMenu(id, ++g_iMenuPosition[id]);
- case 9: return Show_HookTargetMenu(id, --g_iMenuPosition[id]);
- default:
- {
- new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
- new szName[32], szTargetName[32];
- get_user_name(id, szName, charsmax(szName))
- get_user_name(iTarget, szTargetName, charsmax(szTargetName))
- if(!szPlayerHook[iTarget])
- {
- szPlayerSpeed[iTarget] = szPlayerSpeed[id]
- szPlayerSize[iTarget] = szPlayerSize[id]
- szPlayerColor[iTarget] = szPlayerColor[id]
- szPlayerSound[iTarget] = szPlayerSound[id]
- szPlayerSprite[iTarget] = szPlayerSprite[id]
- szPlayerEndSprite[iTarget] = szPlayerEndSprite[id]
- szPlayerView[iTarget] = szPlayerView[id]
- szPlayerHook[iTarget] = true
- ChatColor(0, "%L", LANG_PLAYER, "JBE_HOOK_AR4_MODE_HOOK_GIVE_CHAT", szName, szTargetName)
- }
- else
- {
- szPlayerHook[iTarget] = false
- ChatColor(0, "%L", LANG_PLAYER, "JBE_HOOK_AR4_MODE_HOOK_TAKE_CHAT", szName, szTargetName)
- }
- }
- }
- return Show_HookTargetMenu(id, g_iMenuPosition[id]);
- }
- public HookOn(id)
- {
- #if defined JBE_CORE
- if(jbe_get_day_mode() > 2 || jbe_is_user_wanted(id)) return PLUGIN_HANDLED;
- #endif
- if(is_user_alive(id) && szPlayerHook[id] && g_iHookEnable)
- {
- get_user_origin(id, szPlayerHookOrigin[id], 3)
- if(callfunc_begin("detect_cheat", "prokreedz.amxx") == 1)
- {
- callfunc_push_int(id)
- callfunc_push_str("Hook")
- callfunc_end()
- }
- emit_sound(id, CHAN_STATIC, g_HookSoundFile[szPlayerSound[id]], 1.0, ATTN_NORM, 0, PITCH_NORM)
- set_task(0.1, "HookTask", id, "", 0, "ab")
- HookTask(id)
- szBreakEnd[id] = szPlayerEndSprite[id] + 1;
- break_end(id);
- }
- return PLUGIN_HANDLED;
- }
- public HookOff(id)
- {
- RemoveHook(id)
- return PLUGIN_HANDLED
- }
- public HookTask(id)
- {
- #if defined JBE_CORE
- if(jbe_is_user_wanted(id)) RemoveHook(id)
- #endif
- if(!is_user_connected(id) || !is_user_alive(id)) RemoveHook(id)
- RemoveBeam(id)
- DrawHook(id)
- new szOrigin[3], Float:szVelocity[3]
- get_user_origin(id, szOrigin)
- new szDistance = get_distance(szPlayerHookOrigin[id], szOrigin)
- if(szDistance > 25)
- {
- if(szPlayerSpeed[id] == 0)
- {
- szVelocity[0] = (szPlayerHookOrigin[id][0] - szOrigin[0]) * (3.0 * 280 / szDistance)
- szVelocity[1] = (szPlayerHookOrigin[id][1] - szOrigin[1]) * (3.0 * 280 / szDistance)
- szVelocity[2] = (szPlayerHookOrigin[id][2] - szOrigin[2]) * (3.0 * 280 / szDistance)
- }
- else if(szPlayerSpeed[id] == 1)
- {
- szVelocity[0] = (szPlayerHookOrigin[id][0] - szOrigin[0]) * (3.0 * 150 / szDistance)
- szVelocity[1] = (szPlayerHookOrigin[id][1] - szOrigin[1]) * (3.0 * 150 / szDistance)
- szVelocity[2] = (szPlayerHookOrigin[id][2] - szOrigin[2]) * (3.0 * 150 / szDistance)
- }
- else if(szPlayerSpeed[id] == 2)
- {
- szVelocity[0] = (szPlayerHookOrigin[id][0] - szOrigin[0]) * (3.0 * 400 / szDistance)
- szVelocity[1] = (szPlayerHookOrigin[id][1] - szOrigin[1]) * (3.0 * 400 / szDistance)
- szVelocity[2] = (szPlayerHookOrigin[id][2] - szOrigin[2]) * (3.0 * 400 / szDistance)
- }
- entity_set_vector(id, EV_VEC_velocity, szVelocity)
- }
- }
- public DrawHook(id)
- {
- new szSize, szView
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte(1)
- write_short(id)
- write_coord(szPlayerHookOrigin[id][0])
- write_coord(szPlayerHookOrigin[id][1])
- write_coord(szPlayerHookOrigin[id][2])
- write_short(g_HookSpriteMsg[szPlayerSprite[id]])
- write_byte(7)
- write_byte(7)
- write_byte(100)
- switch(szPlayerSize[id])
- {
- case 0: szSize = 34
- case 1: szSize = 18
- case 2: szSize = 48
- case 3: szSize = 80
- }
- write_byte(szSize)
- switch(szPlayerView[id])
- {
- case 0: szView = 0
- case 1: szView = 7
- case 2: szView = 35
- }
- write_byte(szView)
- write_byte(g_HookColorRGB[szPlayerColor[id]][0])
- write_byte(g_HookColorRGB[szPlayerColor[id]][1])
- write_byte(g_HookColorRGB[szPlayerColor[id]][2])
- write_byte(250)
- write_byte(7)
- message_end()
- }
- public RemoveHook(id)
- {
- if(task_exists(id))
- remove_task(id)
- RemoveBeam(id)
- }
- public RemoveBeam(id)
- {
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte(99)
- write_short(id)
- message_end()
- }
- public break_end(id)
- {
- new origin[3], szSprite;
- switch(szBreakEnd[id])
- {
- case 1: szSprite = g_pEndSpriteBreak[0];
- case 2: szSprite = g_pEndSpriteBreak[1];
- case 3: szSprite = g_pEndSpriteBreak[2];
- case 4: szSprite = g_pEndSpriteBreak[3];
- }
- get_user_origin(id,origin,3)
- message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0},id)
- write_byte(TE_SPRITETRAIL)
- write_coord(origin[0])
- write_coord(origin[1])
- write_coord(origin[2]+20)
- write_coord(origin[0])
- write_coord(origin[1])
- write_coord(origin[2]+80)
- write_short(szSprite);
- write_byte(30);
- write_byte(20);
- write_byte(2);
- write_byte(20);
- write_byte(10);
- message_end()
- }
- stock ChatColor(const id, const input[], any:...)
- {
- new count = 1, players[32]
- static msg[191]
- vformat(msg, 190, input, 3)
- replace_all(msg, 190, "!g", "^4")
- replace_all(msg, 190, "!y", "^1")
- replace_all(msg, 190, "!t", "^3")
- if (id) players[0] = id; else get_players(players, count, "ch")
- {
- for (new i = 0; i < count; i++)
- {
- if (is_user_connected(players[i]))
- {
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
- write_byte(players[i]);
- write_string(msg);
- message_end();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement