Здравствуйте. Скажите кто нибудь пожалуйста как добавлять эти предметы в этот плагин? Нашел строчку написал список не хочет компилироватся. Я не знаю как их добавлять вообще. Вот сам плагин:
Код:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <xs>
#include <WPMGPrintChatColor>
#include <zombieplague>
#define PLUGIN "[ZP]Present"
#define VERSION "1.0"
#define AUTHOR "CrAsH"
/*==========================================
Предметы
===========================================*/
enum _:EItems
{
EExtra[128] = 1,
ERand
}
new g_ItemsNum
new g_Items[200][EItems]
/*==========================================
Всякая хрень
===========================================*/
//Траектория
new g_LoadMap[128]
//Выбранная траектория
new iPlayerSTracer[33]
//Идентификаторы траекторий
new g_TracerNum
new g_TracerStart[10]
new g_TracerEnd[10]
//Переменные траекторий
new g_TracerCount
new g_TracerGO
//Данные траекторий
new Float:g_TracerOrigin[999][3]
new Float:g_TracerAngles[999][3]
new Float:g_TracerAngleV[999][3]
new g_TracerDrop[999]
new g_TracerMetka[999]
//Действие траекторий
new g_CreateSteps[10][5]
//Модели
new const gModels[4][] =
{
"models/zombus_cso/other/vert.mdl",
"models/xman2030/supplybox_xman2030.mdl",
"models/zombus_cso/other/parachut.mdl",
"sprites/xman2030/supplybox_icon_new.spr"
}
//Звуки
new const gSounds[3][] =
{
"zombus_cso/other/idle.wav",
"zombus_cso/other/get_present.wav",
"xman2030/spawn_vert_3.wav"
}
//Объекты соприкосновение
new const szEntity[][] =
{
"worldspawn", "func_wall", "func_door", "func_door_rotating",
"func_wall_toggle", "func_breakable", "func_pushable", "func_train",
"func_illusionary", "func_button", "func_rot_button", "func_rotating", "player"
}
//Класснеймы
new const gClassname[] = "present_ver"
new const gClassnameBox[] = "present_box"
new const gClassnameSprite[] = "present_sprite"
new const gClassnamePara[] = "present_para"
//Прочее
new Float:g_fSkyOrigin[3]
new g_PresentSky[999]
new g_PresentFix[999]
/*==========================================
Инициализация плагина
===========================================*/
public plugin_init()
{
//Регистрация плагина
register_plugin(PLUGIN, VERSION, AUTHOR)
//Действие вертолета
register_think(gClassname, "VertThink")
//Действие подарка
register_think(gClassnameBox, "BoxThink")
//Соприкосновение подарка с объектами
for(new i; i<sizeof szEntity; i++)
{
register_touch(gClassnameBox, szEntity[i], "BoxTouchWorld")
}
register_menucmd(register_menuid("Show_MainMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_MainMenu")
register_menucmd(register_menuid("Show_TracerMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_TracerMenu")
//Команды
register_clcmd("present_manager", "Show_MainMenu")
//Ланг файл
register_dictionary("zp_present.txt")
}
/*==========================================
Скачивание ресурсов
===========================================*/
public plugin_precache()
{
for(new i = 0;i < sizeof( gModels ); i++)
engfunc(EngFunc_PrecacheModel, gModels[i])
for(new i = 0;i < sizeof( gSounds ); i++)
engfunc(EngFunc_PrecacheSound, gSounds[i])
}
/*==========================================
Загрузка траекторий
===========================================*/
public plugin_cfg()
{
new szText[1024]
new iFile
new g_LoadDir[128]
get_configsdir(g_LoadDir, charsmax( g_LoadDir ))
formatex(g_LoadDir, charsmax( g_LoadDir ), "%s/zp_present", g_LoadDir)
if(!dir_exists( g_LoadDir ))
mkdir( g_LoadDir )
formatex(g_LoadDir, charsmax( g_LoadDir ), "%s/Tracers", g_LoadDir)
if(!dir_exists( g_LoadDir ))
mkdir( g_LoadDir )
new szMap[128]
get_mapname(szMap, charsmax( szMap ))
formatex(g_LoadMap, charsmax( g_LoadMap ), "%s/%s.ini", g_LoadDir, szMap)
if(!file_exists( g_LoadMap ))
{
new iFile = fopen(g_LoadMap, "at")
fclose( iFile )
return PLUGIN_CONTINUE
}
iFile = fopen(g_LoadMap, "rt")
while(!feof( iFile ))
{
fgets(iFile, szText, charsmax( szText ))
trim( szText )
if(!strlen( szText ) || szText[0] == ';' || (szText[0] == '/' && szText[1] == '/' ))
continue
new szParse[12][32]
parse(szText,
szParse[1], 31, szParse[2], 31, szParse[3], 31,
szParse[4], 31, szParse[5], 31, szParse[6], 31,
szParse[7], 31, szParse[8], 31, szParse[9], 31,
szParse[10], 31, szParse[11], 31
)
g_TracerOrigin[g_TracerCount][0] = str_to_float( szParse[1] )
g_TracerOrigin[g_TracerCount][1] = str_to_float( szParse[2] )
g_TracerOrigin[g_TracerCount][2] = str_to_float( szParse[3] )
g_TracerAngles[g_TracerCount][0] = str_to_float( szParse[4] )
g_TracerAngles[g_TracerCount][1] = str_to_float( szParse[5] )
g_TracerAngles[g_TracerCount][2] = str_to_float( szParse[6] )
g_TracerAngleV[g_TracerCount][0] = str_to_float( szParse[7] )
g_TracerAngleV[g_TracerCount][1] = str_to_float( szParse[8] )
g_TracerAngleV[g_TracerCount][2] = str_to_float( szParse[9] )
g_TracerDrop[g_TracerCount] = str_to_num( szParse[10] )
if(str_to_num( szParse[11] ))
{
if(g_TracerNum)
{
g_TracerEnd[g_TracerNum] = g_TracerCount
}
g_TracerNum += 1
if(strlen(szParse[1]))
{
g_CreateSteps[g_TracerNum][1] = true
}
g_TracerMetka[g_TracerCount] = true
g_TracerStart[g_TracerNum] = g_TracerCount
GetSkyOrigin(g_TracerOrigin[g_TracerCount])
}
g_TracerCount += 1
}
fclose( iFile )
return PLUGIN_CONTINUE
}
/*==========================================
Главное меню
===========================================*/
public Show_MainMenu(id)
{
new szMenu[512], iKeys = (1<<9),
iLen = formatex(szMenu, charsmax(szMenu), "%L^n^n", LANG_PLAYER, "ZP_PRESENT_MAINMENU_TITLE", g_TracerNum)
iKeys |= (1<<0)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r1\y] \w%L^n^n", LANG_PLAYER, "ZP_PRESENT_MAINMENU_ITEM_1")
for(new i = 1; i <= g_TracerNum; i++)
{
iKeys |= (1<<i)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r%d\y] \w%L^n", i + 1, LANG_PLAYER, "ZP_PRESENT_MAINMENU_ITEMS", i)
}
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[\r0\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_MAINMENU_ITEM_0")
show_menu(id, iKeys, szMenu, -1, "Show_MainMenu")
return PLUGIN_HANDLED
}
/*==========================================
Главное меню(Обработчик)
===========================================*/
public Handle_MainMenu(id, iKey)
{
switch(iKey)
{
case 0:
{
g_TracerNum += 1
iPlayerSTracer[id] = g_TracerNum
Show_TracerMenu(id, g_TracerNum)
}
case 9: return PLUGIN_HANDLED
default:
{
iPlayerSTracer[id] = iKey
Show_TracerMenu(id, iKey)
}
}
return PLUGIN_HANDLED
}
/*==========================================
Управление траекторией
===========================================*/
public Show_TracerMenu(id, iType)
{
new szMenu[512], iKeys = (1<<9),
iLen = formatex(szMenu, charsmax(szMenu), "%L^n^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_TITLE", iType)
if(!g_CreateSteps[iType][1])
{
iKeys |= (1<<0)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r1\y] \w%L^n^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_1")
}else{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r1\y] \d%L^n^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_1")
}
if(g_CreateSteps[iType][1])
{
if(!g_CreateSteps[iType][3])
{
if(!g_CreateSteps[iType][2])
{
iKeys |= (1<<1)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r2\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_2")
}else{
iKeys |= (1<<1)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r2\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_2_1")
}
}else{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r2\y] \d%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_2_1")
}
}else{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r2\y] \d%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_2")
}
if(g_CreateSteps[iType][2])
{
if(!g_CreateSteps[iType][3])
{
iKeys |= (1<<2)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r3\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_3")
}else{
iKeys |= (1<<2)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r3\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_3_1")
}
}else{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r3\y] \d%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_3")
}
if(g_CreateSteps[iType][3])
{
iKeys |= (1<<3)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r4\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_4")
}else{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r4\y] \d%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_4")
}
if(g_CreateSteps[iType][1] && !g_CreateSteps[iType][3] && !g_CreateSteps[iType][4])
{
iKeys |= (1<<4)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r5\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_5")
}else{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r5\y] \d%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_5")
}
if(g_CreateSteps[iType][1] && !g_CreateSteps[iType][3] && !g_CreateSteps[iType][4])
{
iKeys |= (1<<5)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r6\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_6")
}else{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r6\y] \d%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_6")
}
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r0\y] \w%L^n", LANG_PLAYER, "ZP_PRESENT_TRACERMENU_ITEM_0")
show_menu(id, iKeys, szMenu, -1, "Show_TracerMenu")
return PLUGIN_HANDLED
}
/*==========================================
Управление траекторией(Обработчик)
===========================================*/
public Handle_TracerMenu(id, iKey)
{
switch(iKey)
{
case 0:
{
new iOrigin[3]
get_user_origin(id, iOrigin, 3)
new Float:fOrigin[3]
IVecFVec(iOrigin, fOrigin)
g_TracerMetka[g_TracerCount] = true
g_TracerStart[iPlayerSTracer[id]] = g_TracerCount
g_TracerOrigin[g_TracerCount][0] = fOrigin[0]
g_TracerOrigin[g_TracerCount][1] = fOrigin[1]
g_TracerOrigin[g_TracerCount][2] = fOrigin[2]
g_TracerCount += 1
g_CreateSteps[iPlayerSTracer[id]][1] = true
GetSkyOrigin(fOrigin)
Show_TracerMenu(id, iPlayerSTracer[id])
}
case 1:
{
if(!g_CreateSteps[iPlayerSTracer[id]][2])
{
g_CreateSteps[iPlayerSTracer[id]][2] = true
set_user_maxspeed(id, 400.0)
set_user_noclip(id, 1)
}else{
g_CreateSteps[iPlayerSTracer[id]][2] = false
set_user_maxspeed(id)
set_user_noclip(id, 0)
}
Show_TracerMenu(id, iPlayerSTracer[id])
}
case 2:
{
if(!g_CreateSteps[iPlayerSTracer[id]][3])
{
g_CreateSteps[iPlayerSTracer[id]][3] = true
set_task(0.05, "TracerRecord", id + 5435, _, _, "b")
}else{
g_CreateSteps[iPlayerSTracer[id]][3] = false
g_TracerEnd[iPlayerSTracer[id]] = g_TracerCount
g_TracerCount += 1
remove_task(id + 5435)
}
Show_TracerMenu(id, iPlayerSTracer[id])
}
case 3:
{
g_TracerDrop[g_TracerCount] = true
Show_TracerMenu(id, iPlayerSTracer[id])
}
case 4:
{
g_CreateSteps[iPlayerSTracer[id]][4] = true
g_TracerGO = g_TracerStart[iPlayerSTracer[id]]
new Float:fAngles[3]
pev(id, pev_angles, fAngles)
new Float:fAngleV[3]
pev(id, pev_v_angle, fAngleV)
fAngleV[0] = 0.0
fAngleV[2] = 0.0
fAngles[0] = 0.0
fAngles[2] = 0.0
CreateWert(g_TracerOrigin[g_TracerGO], fAngles, fAngleV, iPlayerSTracer[id])
client_print(id, print_chat, "start: %d, end: %d", g_TracerStart[iPlayerSTracer[id]], g_TracerEnd[iPlayerSTracer[id]])
}
case 5:
{
delete_file( g_LoadMap )
new iFile = fopen(g_LoadMap, "at")
fclose( iFile )
new szText[512]
for(new i = 0; i <= g_TracerCount; i++)
{
formatex(szText, charsmax( szText ), "^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%d^" ^"%d^"",
g_TracerOrigin[i][0], g_TracerOrigin[i][1], g_TracerOrigin[i][2],
g_TracerAngles[i][0], g_TracerAngles[i][1], g_TracerAngles[i][2],
g_TracerAngleV[i][0], g_TracerAngleV[i][1], g_TracerAngleV[i][2],
g_TracerDrop[i], g_TracerMetka[i]
)
write_file(g_LoadMap, szText, -1)
}
}
case 9: return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
/*==========================================
Создание траектории
===========================================*/
public TracerRecord(id)
{
id -= 5435
new Float:fOrigin[3]
pev(id, pev_origin, fOrigin)
new Float:fAngles[3]
pev(id, pev_angles, fAngles)
new Float:fAngleV[3]
pev(id, pev_v_angle, fAngleV)
g_TracerOrigin[g_TracerCount] = fOrigin
g_TracerAngles[g_TracerCount] = fAngles
g_TracerAngleV[g_TracerCount] = fAngleV
g_TracerCount += 1
if(g_TracerCount == 998)
{
remove_task(id + 5435)
}
}
/*==========================================
Создание вертолета
===========================================*/
stock CreateWert(Float:fOrigin[3], Float:fAngles[3], Float:fAngleV[3], iTracer)
{
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!pev_valid( iEntity ))
return
set_pev(iEntity, pev_origin, fOrigin)
set_pev(iEntity, pev_angles, fAngles)
set_pev(iEntity, pev_v_angle, fAngleV)
set_pev(iEntity, pev_classname, gClassname)
set_pev(iEntity, pev_solid, SOLID_TRIGGER)
set_pev(iEntity, pev_movetype, MOVETYPE_NONE)
set_pev(iEntity, pev_sequence, 0)
set_pev(iEntity, pev_framerate, 1.0)
set_pev(iEntity, pev_iuser1, iTracer)
set_pev(iEntity, pev_nextthink, get_gametime() + 0.08)
engfunc(EngFunc_SetModel, iEntity, gModels[0])
engfunc(EngFunc_SetSize, iEntity, Float:{-1.0,-1.0,-1.0}, Float:{1.0,1.0,1.0})
set_rendering(iEntity, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
}
/*==========================================
Полет вертолета
===========================================*/
public VertThink(iEntity)
{
if(!pev_valid( iEntity ))
return
if(!g_CreateSteps[pev(iEntity, pev_iuser1)][4])
return
set_pev(iEntity, pev_origin, g_TracerOrigin[g_TracerGO])
set_pev(iEntity, pev_angles, g_TracerAngles[g_TracerGO])
set_pev(iEntity, pev_v_angle, g_TracerAngleV[g_TracerGO])
if(pev(iEntity, pev_iuser2) >= 5)
{
set_rendering(iEntity)
}else{
set_pev(iEntity, pev_iuser2, (pev(iEntity, pev_iuser2) + 1))
}
g_TracerGO += 1
if(g_TracerGO == g_TracerCount || g_TracerGO == g_TracerEnd[pev(iEntity, pev_iuser1)])
{
g_TracerGO = 0
g_CreateSteps[pev(iEntity, pev_iuser1)][4] = false
set_pev(iEntity, pev_flags, pev(iEntity, pev_flags) | FL_KILLME)
return
}
if(g_TracerDrop[g_TracerGO])
{
new iBox = CreateBox(g_TracerOrigin[g_TracerStart[pev(iEntity, pev_iuser1)]])
set_pev(iBox, pev_origin, g_TracerOrigin[g_TracerGO])
new iParashute = CreatePatashute(g_TracerOrigin[g_TracerStart[pev(iEntity, pev_iuser1)]])
set_pev(iBox, pev_iuser1, iParashute)
new Float:fOrigin[3]
fOrigin = g_TracerOrigin[g_TracerGO]
fOrigin[2] -= 40.0
set_pev(iParashute, pev_origin, fOrigin)
}
set_pev(iEntity, pev_nextthink, get_gametime() + 0.08)
}
/*==========================================
Создание подарка
===========================================*/
stock CreateBox(Float:fOrigin[3])
{
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(iEntity, pev_origin, fOrigin)
set_pev(iEntity, pev_classname, gClassnameBox)
set_pev(iEntity, pev_solid, SOLID_TRIGGER)
set_pev(iEntity, pev_movetype, MOVETYPE_NONE)
set_pev(iEntity, pev_sequence, 0)
set_pev(iEntity, pev_framerate, 1.0)
set_pev(iEntity, pev_nextthink, get_gametime() + 0.08)
engfunc(EngFunc_SetModel, iEntity, gModels[1])
engfunc(EngFunc_SetSize, iEntity, Float:{-1.0,-1.0,-1.0}, Float:{1.0,1.0,-1.0})
set_pev(iEntity, pev_body, 29)
return iEntity
}
/*==========================================
Полет подарка(о0)
===========================================*/
public BoxThink(iEntity)
{
if(!pev_valid( iEntity ))
return
new Float:fOrigin[3]
pev(iEntity, pev_origin, fOrigin)
if(!g_PresentSky[iEntity])
{
fOrigin[2] -= 10.0
set_pev(iEntity, pev_origin, fOrigin)
if(pev(iEntity, pev_iuser1))
{
pev(pev(iEntity, pev_iuser1), pev_origin, fOrigin)
fOrigin[2] -= 10.0
set_pev(pev(iEntity, pev_iuser1), pev_origin, fOrigin)
}
}
if(g_fSkyOrigin[2] >= fOrigin[2])
{
g_PresentSky[iEntity] = true
if(pev(iEntity, pev_iuser1))
{
set_pev(pev(iEntity, pev_iuser1), pev_flags, pev(pev(iEntity, pev_iuser1), pev_flags) | FL_KILLME)
set_pev(iEntity, pev_iuser1, 0)
}
set_pev(iEntity, pev_solid, SOLID_TRIGGER)
set_pev(iEntity, pev_movetype, MOVETYPE_BOUNCE)
engfunc(EngFunc_SetSize, iEntity, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0})
}
set_pev(iEntity, pev_nextthink, get_gametime() + 0.05)
}
/*==========================================
Создание парашута
===========================================*/
stock CreatePatashute(Float:fOrigin[3])
{
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(iEntity, pev_origin, fOrigin)
set_pev(iEntity, pev_classname, gClassnamePara)
set_pev(iEntity, pev_solid, SOLID_TRIGGER)
set_pev(iEntity, pev_movetype, MOVETYPE_NONE)
engfunc(EngFunc_SetModel, iEntity, gModels[2])
engfunc(EngFunc_SetSize, iEntity, Float:{-1.0,-1.0,-1.0}, Float:{1.0,1.0,-1.0})
return iEntity
}
/*==========================================
Получение границы ская
===========================================*/
stock GetSkyOrigin(Float:fOrigin[3])
{
while(engfunc(EngFunc_PointContents, fOrigin) == CONTENTS_EMPTY)
{
fOrigin[2] += 1.0
if(engfunc(EngFunc_PointContents, fOrigin) == CONTENTS_SKY)
{
fOrigin[2] -= 40.0
g_fSkyOrigin = fOrigin
break
}
}
}
/*==========================================
Соприкосновение с подарком
===========================================*/
public BoxTouchWorld(iEntity, iWorld)
{
if(!pev_valid( iEntity ))
return
new szClassname[32]
pev(iWorld, pev_classname, szClassname, charsmax( szClassname ))
if(szClassname[0] == 'p')
{
if(zp_get_user_zombie(iWorld) || zp_get_user_nemesis(iWorld))
return
if(zp_get_user_survivor(iWorld))
return
if(g_PresentFix[iEntity])
return
g_PresentSky[iEntity] = false
g_PresentFix[iEntity] = true
new szName[32]
get_user_name(iWorld, szName, charsmax( szName ))
client_print(0, print_center, "%L", LANG_PLAYER, "ZP_PRESENT_GIVE", szName)
client_cmd(iWorld, "spk %s", gSounds[1])
if(pev(iEntity, pev_iuser1))
{
set_pev(pev(iEntity, pev_iuser1), pev_flags, pev(pev(iEntity, pev_iuser1), pev_flags) | FL_KILLME)
set_pev(iEntity, pev_iuser1, 0)
}
if(pev(iEntity, pev_iuser2))
{
set_pev(pev(iEntity, pev_iuser2), pev_flags, pev(pev(iEntity, pev_iuser2), pev_flags) | FL_KILLME)
set_pev(iEntity, pev_iuser2, 0)
}
set_pev(iEntity, pev_flags, pev(iEntity, pev_flags) | FL_KILLME)
RandomerItem(iWorld)
}else{
new Float:fVelocity[3]
pev(iEntity, pev_velocity, fVelocity)
fVelocity[0] *= 0.25
fVelocity[1] *= 0.25
fVelocity[2] *= 0.25
set_pev(iEntity, pev_velocity, fVelocity)
if(!pev(iEntity, pev_iuser2))
{
new Float:fOrigin[3]
pev(iEntity, pev_origin, fOrigin)
fOrigin[2] += 50.0
new iSprite = CreateSprite(fOrigin)
set_pev(iEntity, pev_iuser2, iSprite)
}
if(pev(iEntity, pev_iuser1))
{
set_pev(pev(iEntity, pev_iuser1), pev_flags, pev(pev(iEntity, pev_iuser1), pev_flags) | FL_KILLME)
set_pev(iEntity, pev_iuser1, 0)
}
}
}
/*==========================================
Создание спрайта дуели
===========================================*/
stock CreateSprite(Float:fOrigin[3])
{
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(iEntity, pev_origin, fOrigin)
set_pev(iEntity, pev_classname, gClassnameSprite)
set_pev(iEntity, pev_solid, SOLID_TRIGGER)
set_pev(iEntity, pev_movetype, MOVETYPE_NONE)
set_pev(iEntity, pev_scale, 0.5)
engfunc(EngFunc_SetModel, iEntity, gModels[3])
engfunc(EngFunc_SetSize, iEntity, Float:{-1.0,-1.0,-1.0}, Float:{1.0,1.0,-1.0})
set_rendering(iEntity, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
return iEntity
}
/*==========================================
Рандомер
===========================================*/
public RandomerItem(id)
{
new iRandom = random_num(1, 100)
new iType
if(zp_is_nemesis_round())
{
if(iRandom >= 96)
{
RandomerItem(id)
return PLUGIN_CONTINUE
}
}
switch( iRandom )
{
case 1..10:
{
iType = 1
}
case 11..95:
{
iType = 2
}
case 96..100:
{
iType = 3
}
}
GiveItem(id, iType)
return PLUGIN_CONTINUE
}
/*==========================================
Рандомер предмета
===========================================*/
stock GiveItem(id, iType)
{
if(iType == 3)
{
if(!zp_get_user_last_human(id))
{
zp_infect_user(id)
return PLUGIN_CONTINUE
}
}
new iNum
new iExtra[200]
for(new i = 1; i <= g_ItemsNum; i++)
{
if(g_Items[i][ERand] != iType)
continue
iNum += 1
iExtra[iNum] = i
}
new iRandom = random_num(1, iNum)
if(containi(g_Items[iRandom][EExtra], "weapon_") != -1)
{
if(!equal(g_Items[iRandom][EExtra], "weapon_flashbang") && !equal(g_Items[iRandom][EExtra], "weapon_hegrenade") &&
!equal(g_Items[iRandom][EExtra], "weapon_smokegrenade") && !equal(g_Items[iRandom][EExtra], "Armor"))
strip_user_weapon(id, 2)
for(new i; i < 10; i++)
{
give_item(id, g_Items[iRandom][EExtra])
}
}else{
switch(random_num(0, 6)){
case 0: zp_force_buy_extra_item( id , zp_get_extra_item_id("Cyclone"), 1);
case 1: zp_force_buy_extra_item( id , zp_get_extra_item_id("HK-416"), 1);
case 2: zp_force_buy_extra_item( id , zp_get_extra_item_id("Double Barrel"), 1);
case 3: zp_force_buy_extra_item( id , zp_get_extra_item_id("Winchester M1887"), 1);
case 4: zp_force_buy_extra_item( id , zp_get_extra_item_id("Gold Deagle"), 1);
case 5: zp_force_buy_extra_item( id , zp_get_extra_item_id("CrossBow"), 1);
case 6: zp_force_buy_extra_item( id , zp_get_extra_item_id("Water Pistol"), 1);
}
}
return PLUGIN_CONTINUE
}
/*==========================================
Первоначальный запуск
===========================================*/
public zp_round_started(gamemode, id)
{
if(g_TracerNum)
{
remove_task(525735)
set_task(30.0, "GoVert", 525735)
}
}
public zp_round_ended()
{
if(g_TracerNum)
{
DeleteAllPresent()
remove_task(525735)
}
}
/*==========================================
Запуск верта
===========================================*/
public GoVert()
{
DeleteAllPresent()
new iRandom = random_num(1, g_TracerNum)
g_CreateSteps[iRandom][4] = true
g_TracerGO = g_TracerStart[iRandom]
CreateWert(g_TracerOrigin[g_TracerGO], g_TracerAngles[g_TracerGO], g_TracerAngleV[g_TracerGO], iRandom)
client_print(0, print_center, "%L", LANG_PLAYER, "ZP_PRESENT_GO")
client_cmd(0, "spk %s", gSounds[2])
set_task(120.0, "GoVert", 525735)
}
/*==========================================
Удаление всего и вся
===========================================*/
public DeleteAllPresent()
{
remove_entity_name(gClassname)
remove_entity_name(gClassnameBox)
remove_entity_name(gClassnameSprite)
remove_entity_name(gClassnamePara)
for(new i; i < 999; i++)
{
g_PresentSky[i] = false
g_PresentFix[i] = false
}
}
/*==========================================
Дроп оружие
===========================================*/
stock strip_user_weapon(id, typew)
{
new weapons[32], wpnum
get_user_weapons(id, weapons, wpnum)
for(new i; i <= wpnum; i++)
{
new wpnid = weapons[i]
if((is_primary(wpnid) && typew == 2) || (is_pistol(wpnid) && typew == 1))
{
new wpname[32]
get_weaponname(wpnid, wpname, 31)
engclient_cmd(id, "drop", wpname)
}
}
}
/*==========================================
Основное оружие
===========================================*/
stock is_primary(wpnid)
{
if(wpnid != CSW_SCOUT && wpnid != CSW_XM1014 && wpnid != CSW_MAC10 && wpnid != CSW_AUG && wpnid != CSW_UMP45 && wpnid != CSW_SG550 && wpnid != CSW_GALIL && wpnid != CSW_FAMAS && wpnid != CSW_AWP && wpnid != CSW_MP5NAVY && wpnid != CSW_M249 && wpnid != CSW_M3 && wpnid != CSW_M4A1 && wpnid != CSW_TMP && wpnid != CSW_G3SG1 && wpnid != CSW_SG552 && wpnid != CSW_AK47 && wpnid != CSW_P90)
return 0
return 1
}
/*==========================================
Второстеменное
===========================================*/
stock is_pistol(wpnid)
{
if(wpnid != CSW_P228 && wpnid != CSW_ELITE && wpnid != CSW_FIVESEVEN && wpnid != CSW_USP && wpnid != CSW_GLOCK18 && wpnid != CSW_DEAGLE)
return 0
return 1
}
Отредактировал: TheArtemMaps, - 11.6.2021, 20:51