RU
RU
UA
EN
PL
ГЛАВНАЯ
УСЛУГИ
ПЛАГИНЫ
КАРТЫ
REBUY
SCANMON
CASSA
SALE
ФОРУМ
МОНИТОР
HELP
КОНТАКТ
Главная
/
Plugins
/
[CS 1.6][BIO] Sphere
[CS 1.6][BIO] Sphere
Теги:
Скачать плагины cs
Остальные
Данный плагин добавит на ваш сервер сферу, в которую не смогут зайти зомби, ставится на 1 раунд, но и находится в ней вы можете определенное время.
Компилятор: 1.8.3 Multibild
+ZIP
906
Команды:
say /menu_sphere
.sma / .sp
#include
#include
#include
#include
#include
//===================Настройки=================== #define MENU_SETTINGS //Включить меню настроек. Если не используете, закомментируйте эту строчку [//] #if defined MENU_SETTINGS new const g_szMenuCommand[] = "say /menu_sphere" // Команда, чтобы открыть меню настроек сферы #define ADMIN_FLAGMENU ADMIN_RCON // Флаг админа, чтобы открыть меню #endif new const g_szFileSettings[] = "addons/amxmodx/configs/bio_spheresettings.ini" // Меню сохранённых координат сферы. ФАЙЛ НЕ УДАЛЯТЬ new const g_szModelSpere[] = "models/biozm/aura/aura.mdl" // Модель сферы //Бокс сферы new const Float:g_fMinSphere[] = {-95.0, -95.0, 0.0} new const Float:g_fMaxSphere[] = {95.0, 95.0, 120.0} #define CD_HEAL_HUMAN 3.0 //Раз в сколько секунд хилить в сфере человека #define HEAL_HUMAN 5.0 //Сколько восстанавливать здоровья человеку #define MAX_HEAL_HUMAN 250.0 //Максимальное количество здоровья человека #define CD_HEAL_ZM 4.0 //Раз в сколько секунд хилить в сфере зомби #define HEAL_ZM 25.0 //Сколько восстанавливать здоровья зомби #define MAX_HEAL_ZM 4000.0 //Максимальное количество здоровья зомби #define MONEY_PRIZE 1000 //Сколько давать денег каждый раунд при подходе к сфере (Закомментируйте эту строчку, если хотите отключить эту функцию) //Растановка дыма относительно умершего зомби new const Float:g_fOriginAddSprite[][] = { {0.0, 0.0, 0.0}, {-50.0, -50.0, 0.0}, {-50.0, 50.0, 0.0}, {50.0, 50.0, 0.0}, {50.0, -50.0, 0.0} } //Бокс газа new const Float:g_fGasMin[] = {-80.0, -80.0, -50.0} new const Float:g_fGasMax[] = {80.0, 80.0, 50.0} new const Float:g_fColorGas[] = {255.0, 0.0, 0.0} // Цвет дыма #define HP_DAMAGE_GAS 10.0 //Сколько снимать хп инф газом #define DAMAGE_DELAY 10.0 //Раз в сколько секунд дамажить //Цвет свечения, отравлённого газом #define GAS_RED 0 #define GAS_GREEN 255 #define GAS_BLUE 0 //=============================================== #define IMPULSE_SPHERE 4152352 #define IMPULSE_BOXGAS 5413514 #define TASKID_INFECTDELAY 532353 #define MsgId_SayText 76 #define MsgId_ScreenShake 97 #define MsgId_ScreenFade 98 #define MsgId_Money 102 #define m_iAccount 115 #define m_iTeam 114 #define SetBit(%0,%1) ((%0) |= (1 << (%1))) #define ClearBit(%0,%1) ((%0) &= ~(1 << (%1))) #define IsSetBit(%0,%1) ((%0) & (1 << (%1))) #define fm_get_user_money(%0) get_pdata_int(%0, m_iAccount) #define fm_get_user_team(%0) get_pdata_int(%0, m_iTeam) #if defined MENU_SETTINGS new const g_szSphereClassName[] = "bio_sphere" #endif new const g_szGasClassName[] = "bio_gas_system" new g_iMaxPlayers new Float:g_fUserTimeHeal[33], g_iUserFirstZombie, g_iUserTimeGasDelay[33], Float:g_fTimeSphereDelay[33] #if defined MONEY_PRIZE new g_iBitUserMoneyPrize #endif #if defined MENU_SETTINGS new Float:g_fOriginNew[3], Float:g_fAnglesNew[3] #endif public plugin_precache() { engfunc(EngFunc_PrecacheModel, g_szModelSpere) engfunc(EngFunc_PrecacheModel, "models/w_ak47.mdl") engfunc(EngFunc_PrecacheModel, "sprites/gas_puff_01.spr") } public plugin_init() { register_plugin("[BIO] Sphere", "1.1", "Docaner (peace dads)") register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0") RegisterHam(Ham_Killed, "player", "HM_PlayerKilled_Post", 1) RegisterHam(Ham_Touch, "info_target", "HM_TargetTouch_Post", 1) RegisterHam(Ham_Touch, "player", "HM_PlayerTouch_Post", 1) #if defined MENU_SETTINGS register_clcmd(g_szMenuCommand, "Show_MenuSettings") register_menucmd(register_menuid("Show_MenuSettings"), (1<<0|1<<1|1<<2|1<<9), "Handle_MenuSettings") #endif } public plugin_cfg() { sphere_load() g_iMaxPlayers = get_maxplayers() } sphere_load() { if(file_exists(g_szFileSettings)) { new szBuffer[128], szLeft[34], szMapName[33], szNumbers[6][9], Float:fOrigin[3], Float:fAngles[3], iLine, iLen get_mapname(szMapName, charsmax(szMapName)) while(read_file(g_szFileSettings, iLine++, szBuffer, charsmax(szBuffer), iLen)) { if(!iLen) continue strtok(szBuffer, szLeft, charsmax(szLeft), szBuffer, charsmax(szBuffer), ':') if(!equal(szLeft, szMapName)) continue parse(szBuffer, szNumbers[0], charsmax(szNumbers[]), szNumbers[1], charsmax(szNumbers[]), szNumbers[2], charsmax(szNumbers[]), szNumbers[3], charsmax(szNumbers[]), szNumbers[4], charsmax(szNumbers[]), szNumbers[5], charsmax(szNumbers[])) fOrigin[0] = str_to_float(szNumbers[0]) fOrigin[1] = str_to_float(szNumbers[1]) fOrigin[2] = str_to_float(szNumbers[2]) fAngles[0] = str_to_float(szNumbers[3]) fAngles[1] = str_to_float(szNumbers[4]) fAngles[2] = str_to_float(szNumbers[5]) create_sphere(fOrigin, fAngles) return 1 } } else server_print("[SPHERE] Файл загрузки координат не найден ^"%s^" ", g_szFileSettings) return 0 } public client_disconnect(id) { if(g_iUserFirstZombie == id) g_iUserFirstZombie = 0 if(task_exists(id+TASKID_INFECTDELAY)) { remove_task(id+TASKID_INFECTDELAY) g_iUserTimeGasDelay[id] = 0 fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0) } #if defined MONEY_PRIZE ClearBit(g_iBitUserMoneyPrize, id) #endif } public event_infect(iVictim) { if(task_exists(iVictim+TASKID_INFECTDELAY)) { remove_task(iVictim+TASKID_INFECTDELAY) g_iUserTimeGasDelay[iVictim] = 0 fm_set_rendering(iVictim, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0) } if(!g_iUserFirstZombie) g_iUserFirstZombie = iVictim } public Event_HLTV() { #if defined MONEY_PRIZE g_iBitUserMoneyPrize = 0 #endif g_iUserFirstZombie = 0 for(new i = 1; i <= g_iMaxPlayers; i++) { if(!is_user_connected(i)) continue #if defined MONEY_PRIZE SetBit(g_iBitUserMoneyPrize, i) #endif if(!task_exists(i+TASKID_INFECTDELAY)) continue remove_task(i+TASKID_INFECTDELAY) g_iUserTimeGasDelay[i] = 0 fm_set_rendering(i, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0) } new iEnt while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", g_szGasClassName))) set_pev(iEnt, pev_flags, FL_KILLME) } public HM_PlayerKilled_Post(iVictim) { if(task_exists(iVictim+TASKID_INFECTDELAY)) { remove_task(iVictim+TASKID_INFECTDELAY) g_iUserTimeGasDelay[iVictim] = 0 fm_set_rendering(iVictim, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0) } if(g_iUserFirstZombie == iVictim && is_user_zombie(iVictim)) { new Float:fOrigin[3], Float:fOriginWork[3] pev(iVictim, pev_origin, fOrigin) create_box_gas(fOrigin) for(new i; i <= charsmax(g_fOriginAddSprite); i++) { xs_vec_add(fOrigin, g_fOriginAddSprite[i], fOriginWork) create_gas(fOriginWork) } } } public HM_TargetTouch_Post(iEnt, iTouched) { if(!pev_valid(iEnt) || !is_user_alive(iTouched)) return if(pev(iEnt, pev_impulse) == IMPULSE_SPHERE) { #if defined MONEY_PRIZE if(IsSetBit(g_iBitUserMoneyPrize, iTouched)) { fm_set_user_money(iTouched, fm_get_user_money(iTouched) + MONEY_PRIZE) UTIL_SayText(iTouched, "!y[!gSPHERE!y] Вы получили !g%d$!y! Подходите каждый раунд к сфере, чтобы получить приз", MONEY_PRIZE) ClearBit(g_iBitUserMoneyPrize, iTouched) } #endif if(task_exists(iTouched+TASKID_INFECTDELAY)) { UTIL_SayText(iTouched, "!y[!gSPHERE!y] Вы исцелены от инфекционного газа!") remove_task(iTouched+TASKID_INFECTDELAY) } if(is_user_zombie(iTouched)) { if(get_gametime() - g_fUserTimeHeal[iTouched] >= CD_HEAL_ZM) { new Float:fHealth pev(iTouched, pev_health, fHealth) if(fHealth < MAX_HEAL_ZM) { set_pev(iTouched, pev_health, fHealth + HEAL_ZM > MAX_HEAL_ZM ? MAX_HEAL_ZM : fHealth + HEAL_ZM) UTIL_ScreenFade(iTouched, (2<<12), (1<<12), 0x0000, 0, 255, 0, 100) g_fUserTimeHeal[iTouched] = get_gametime() } } } else { if(get_gametime() - g_fUserTimeHeal[iTouched] >= CD_HEAL_HUMAN) { new Float:fHealth pev(iTouched, pev_health, fHealth) if(fHealth < MAX_HEAL_HUMAN) { set_pev(iTouched, pev_health, fHealth + HEAL_HUMAN > MAX_HEAL_HUMAN ? MAX_HEAL_HUMAN : fHealth + HEAL_HUMAN) UTIL_ScreenFade(iTouched, (2<<12), (1<<12), 0x0000, 0, 255, 0, 100) g_fUserTimeHeal[iTouched] = get_gametime() } } g_fTimeSphereDelay[iTouched] = get_gametime() } } else if(pev(iEnt, pev_impulse) == IMPULSE_BOXGAS && !task_exists(TASKID_INFECTDELAY+iTouched) && !is_user_zombie(iTouched)) gas_infect(iTouched) } public HM_PlayerTouch_Post(iToucher, iTouched) { if(!is_user_alive(iTouched) || !is_user_alive(iTouched) || is_user_zombie(iTouched) || !task_exists(iToucher+TASKID_INFECTDELAY) || task_exists(iTouched+TASKID_INFECTDELAY)) return gas_infect(iTouched) } gas_infect(id) { if(get_gametime() - g_fTimeSphereDelay[id] >= 0.5) { g_iUserTimeGasDelay[id] = 1 task_InfectDelay(TASKID_INFECTDELAY+id) fm_set_rendering(id, kRenderFxGlowShell, GAS_RED, GAS_GREEN, GAS_BLUE, kRenderNormal, 0) UTIL_SayText(id, "!y[!gGAS!y] Вы отравлены инфекционным газом! Бегите к сфере, чтобы исцелиться!") set_task(1.0, "task_InfectDelay", TASKID_INFECTDELAY+id, _, _, "b") } } public task_InfectDelay(id) { id -= TASKID_INFECTDELAY if(!--g_iUserTimeGasDelay[id]) { new Float:fHealth g_iUserTimeGasDelay[id] = DAMAGE_DELAY pev(id, pev_health, fHealth) if(fHealth - HP_DAMAGE_GAS > 0.0) set_pev(id, pev_health, fHealth - HP_DAMAGE_GAS) else { new iHumanCount for(new i = 1; i <= g_iMaxPlayers; i++) { if(!is_user_alive(i) || fm_get_user_team(i) != 2) continue iHumanCount++ } if(iHumanCount > 1) infect_user(id, 0) else ExecuteHamB(Ham_Killed, id, id, 0) } //ExecuteHamB(Ham_TakeDamage, id, g_iUserGasOwner, g_iUserGasOwner, HP_DAMAGE_GAS, DMG_SLASH) UTIL_ScreenShake(id, (10<<12), (2<<12), (10<<12)) } set_hudmessage(0, 255, 0, -1.0, 0.16, 0, 0.0, 0.9, 0.1, 0.1, -1) show_hudmessage(id, "Вы инфицированы!!!^nБыстрее бегите к сфере") } #if defined MENU_SETTINGS public Show_MenuSettings(id) { if(~get_user_flags(id) & ADMIN_FLAGMENU) { UTIL_SayText(id, "!y[!gSPHERE!y] Доступ запрещён!") return PLUGIN_HANDLED } new szMenu[256], iKeys = (1<<0|1<<1|1<<2|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\yМеню настроек сферы^n^n") iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \wПоставить новую сферу^n") iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \wВосстановить из последнего сохранения^n") iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \wСохранить настройки^n^n^n^n^n^n^n") formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[0] \wВыход") return show_menu(id, iKeys, szMenu, -1, "Show_MenuSettings") } public Handle_MenuSettings(id, iKey) { switch(iKey) { case 0: { new iEnt while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", g_szSphereClassName))) set_pev(iEnt, pev_flags, FL_KILLME) fm_get_aiming_position(id, g_fOriginNew) TraceDropToFloor(g_fOriginNew, 1000.0, g_fOriginNew) AnglesToFloor(g_fOriginNew, g_fAnglesNew) create_sphere(g_fOriginNew, g_fAnglesNew) } case 1: { new iEnt while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", g_szSphereClassName))) { pev(iEnt, pev_origin, g_fOriginNew) pev(iEnt, pev_angles, g_fAnglesNew) set_pev(iEnt, pev_flags, FL_KILLME) } if(!sphere_load()) { if(!xs_vec_equal(g_fOriginNew, Float:{0.0, 0.0, 0.0})) create_sphere(g_fOriginNew, g_fAnglesNew) UTIL_SayText(id, "!y[!gSPHERE!y] Сохранение не найдено!") } g_fOriginNew = Float:{0.0, 0.0, 0.0} g_fAnglesNew = Float:{0.0, 0.0, 0.0} } case 2: { if(!xs_vec_equal(g_fOriginNew, Float:{0.0, 0.0, 0.0})) { new szBuffer[128], szLeft[35], szMapName[33], iLine, iLen, bool:bFind get_mapname(szMapName, charsmax(szMapName)) while(read_file(g_szFileSettings, iLine++, szBuffer, charsmax(szBuffer), iLen)) { if(!iLen) continue strtok(szBuffer, szLeft, charsmax(szLeft), szBuffer, charsmax(szBuffer), ':') if(!equal(szLeft, szMapName)) continue bFind = true break } formatex(szBuffer, charsmax(szBuffer), "%s: %.3f %.3f %.3f %.3f %.3f %.3f", szMapName, g_fOriginNew[0], g_fOriginNew[1], g_fOriginNew[2], g_fAnglesNew[0], g_fAnglesNew[1], g_fAnglesNew[2]) write_file(g_szFileSettings, szBuffer, bFind ? iLine - 1 : -1) UTIL_SayText(id, "!y[!gSPHERE!y] Настройки сохранены!") } else UTIL_SayText(id, "!y[!gSPHERE!y] На карте не найдена новая сфера!") } case 9: return PLUGIN_HANDLED } return Show_MenuSettings(id) } #endif create_sphere(Float:fOrigin[3], Float:fAngles[3]) { new iEnt static iszInfoTarget if(iszInfoTarget || (iszInfoTarget = engfunc(EngFunc_AllocString, "info_target"))) iEnt = engfunc(EngFunc_CreateNamedEntity, iszInfoTarget) if(pev_valid(iEnt)) { set_pev(iEnt, pev_impulse, IMPULSE_SPHERE) set_pev(iEnt, pev_solid, SOLID_TRIGGER) //set_pev(iEnt, pev_effects, EF_NODRAW) #if defined MENU_SETTINGS set_pev(iEnt, pev_classname, g_szSphereClassName) #endif engfunc(EngFunc_SetModel, iEnt, g_szModelSpere) engfunc(EngFunc_SetOrigin, iEnt, fOrigin) engfunc(EngFunc_SetSize, iEnt, g_fMinSphere, g_fMaxSphere) set_pev(iEnt, pev_angles, fAngles) fm_set_rendering(iEnt, kRenderFxGlowShell, 0, 255, 0, kRenderTransAlpha, 10) /*new Float:fMin[3], Float:fMax[3] xs_vec_add(fOrigin, g_fMinSphere, fMin) xs_vec_add(fOrigin, g_fMaxSphere, fMax) CTREATE_BOX(fMin, fMax, 999, 255, 0, 0)*/ return iEnt } return 0 } create_gas(Float:fOrigin[3]) { new iEnt static iszEnvSprite if(iszEnvSprite || (iszEnvSprite = engfunc(EngFunc_AllocString, "env_sprite"))) iEnt = engfunc(EngFunc_CreateNamedEntity, iszEnvSprite) if(pev_valid(iEnt)) { set_pev(iEnt, pev_classname, g_szGasClassName) engfunc(EngFunc_SetModel, iEnt, "sprites/gas_puff_01.spr") engfunc(EngFunc_SetOrigin, iEnt, fOrigin) engfunc(EngFunc_SetSize, iEnt, g_fMinSphere, g_fMaxSphere) set_pev(iEnt, pev_scale, 2.5) set_pev(iEnt, pev_rendermode, kRenderTransAlpha); set_pev(iEnt, pev_renderamt, 255.0); set_pev(iEnt, pev_rendercolor, g_fColorGas) return iEnt } return 0 } create_box_gas(Float:fOrigin[3]) { new iEnt static iszInfoTarget if(iszInfoTarget || (iszInfoTarget = engfunc(EngFunc_AllocString, "info_target"))) iEnt = engfunc(EngFunc_CreateNamedEntity, iszInfoTarget) if(pev_valid(iEnt)) { set_pev(iEnt, pev_classname, g_szGasClassName) set_pev(iEnt, pev_impulse, IMPULSE_BOXGAS) set_pev(iEnt, pev_solid, SOLID_TRIGGER) engfunc(EngFunc_SetModel, iEnt, "models/w_ak47.mdl") engfunc(EngFunc_SetOrigin, iEnt, fOrigin) engfunc(EngFunc_SetSize, iEnt, g_fGasMin, g_fGasMax) set_pev(iEnt, pev_effects, EF_NODRAW) return iEnt } return 0 } stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { new Float:color[3] color[0] = float(r) color[1] = float(g) color[2] = float(b) set_pev(entity, pev_renderfx, fx) set_pev(entity, pev_rendercolor, color) set_pev(entity, pev_rendermode, render) set_pev(entity, pev_renderamt, float(amount)) } stock AnglesToFloor(Float:flOrigin[3], Float:fAngles[3]) { new iTrace = create_tr2(), Float:flOrigin2[3] flOrigin2 = flOrigin flOrigin2[2] -= 2.5 engfunc(EngFunc_TraceLine, flOrigin, flOrigin2, IGNORE_MONSTERS, 0, iTrace) get_tr2(iTrace, TR_vecPlaneNormal, fAngles) vector_to_angle(fAngles, fAngles) fAngles[0] += 270.0 free_tr2(iTrace) } stock TraceDropToFloor(Float:flOriginStart[3], Float:flDistance, Float:flOriginResault[3]) { new iTrace = create_tr2(), Float:flOriginEnd[3] flOriginEnd = flOriginStart flOriginEnd[2] -= flDistance engfunc(EngFunc_TraceLine, flOriginStart, flOriginEnd, IGNORE_MONSTERS, 0, iTrace) get_tr2(iTrace, TR_vecEndPos, flOriginResault) free_tr2(iTrace) } stock UTIL_SayText(pPlayer, const szMessage[], any:...) { new szBuffer[190]; if(numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3); else copy(szBuffer, charsmax(szBuffer), szMessage); while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {} while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {} while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {} switch(pPlayer) { case 0: { for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) { if(!is_user_connected(iPlayer)) continue; engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, MsgId_SayText, {0.0, 0.0, 0.0}, iPlayer); write_byte(iPlayer); write_string(szBuffer); message_end(); } } default: { engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, MsgId_SayText, {0.0, 0.0, 0.0}, pPlayer); write_byte(pPlayer); write_string(szBuffer); message_end(); } } } stock fm_get_aiming_position(pPlayer, Float:vecReturn[3]) { new Float:vecOrigin[3], Float:vecViewOfs[3], Float:vecAngle[3], Float:vecForward[3]; pev(pPlayer, pev_origin, vecOrigin); pev(pPlayer, pev_view_ofs, vecViewOfs); xs_vec_add(vecOrigin, vecViewOfs, vecOrigin); pev(pPlayer, pev_v_angle, vecAngle); engfunc(EngFunc_MakeVectors, vecAngle); global_get(glb_v_forward, vecForward); xs_vec_mul_scalar(vecForward, 8192.0, vecForward); xs_vec_add(vecOrigin, vecForward, vecForward); engfunc(EngFunc_TraceLine, vecOrigin, vecForward, DONT_IGNORE_MONSTERS, pPlayer, 0); get_tr2(0, TR_vecEndPos, vecReturn); } stock fm_set_user_money(id, iMoney, iHide = 1) { set_pdata_int(id, m_iAccount, iMoney); message_begin(MSG_ONE, MsgId_Money, _, id); write_long(iMoney); write_byte(iHide); message_end(); } stock UTIL_ScreenFade(pPlayer, iDuration, iHoldTime, iFlags, iRed, iGreen, iBlue, iAlpha, iReliable = 0) { switch(pPlayer) { case 0: { message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, MsgId_ScreenFade); write_short(iDuration); write_short(iHoldTime); write_short(iFlags); write_byte(iRed); write_byte(iGreen); write_byte(iBlue); write_byte(iAlpha); message_end(); } default: { engfunc(EngFunc_MessageBegin, iReliable ? MSG_ONE : MSG_ONE_UNRELIABLE, MsgId_ScreenFade, {0.0, 0.0, 0.0}, pPlayer); write_short(iDuration); write_short(iHoldTime); write_short(iFlags); write_byte(iRed); write_byte(iGreen); write_byte(iBlue); write_byte(iAlpha); message_end(); } } } stock CTREATE_BOX(Float:fOriginMin[3], Float:fOriginMax[3], iLife, iRed, iGreen, iBlue) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BOX) engfunc(EngFunc_WriteCoord, fOriginMin[0]) engfunc(EngFunc_WriteCoord, fOriginMin[1]) engfunc(EngFunc_WriteCoord, fOriginMin[2]) engfunc(EngFunc_WriteCoord, fOriginMax[0]) engfunc(EngFunc_WriteCoord, fOriginMax[1]) engfunc(EngFunc_WriteCoord, fOriginMax[2]) write_short(iLife) // in 0.1 write_byte(iRed) write_byte(iGreen) write_byte(iBlue) message_end() } stock CREATE_FIREFIELD(Float:fOrigin[3], iRadius, pSprite, iCount, iFlags, iTime) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_FIREFIELD) engfunc(EngFunc_WriteCoord, fOrigin[0]) engfunc(EngFunc_WriteCoord, fOrigin[1]) engfunc(EngFunc_WriteCoord, fOrigin[2]) write_short(iRadius) write_short(pSprite) write_byte(iCount) write_byte(iFlags) write_byte(iTime) // SEC * 10 message_end() } stock UTIL_ScreenShake(pPlayer, iAmplitude, iDuration, iFrequency, iReliable = 0) { engfunc(EngFunc_MessageBegin, iReliable ? MSG_ONE : MSG_ONE_UNRELIABLE, MsgId_ScreenShake, {0.0, 0.0, 0.0}, pPlayer); write_short(iAmplitude); write_short(iDuration); write_short(iFrequency); message_end(); }
Отправить
Загрузил
FliNe
2020-12-24 00:19:45
0
47
Установить на сервер
Скачать
Нет оплаченых серверов
Купить сервер CS 1.6
Купить сервер CS:GO
Купить сервер CSS v34
Подключить свой VDS к панели
Данная иконка означает, что плагин был проверен администрацией хостинга на тестовом сервере, и проблем с ним не было выявлено. Рекомендуем ставить исключительно проверенные плагины.
Плагин загружен на сервер, но проверка еще не была проведена.
CSHOST.COM.UA 2012-2024 Хостинг игровых серверов