Не знаю в чем ошибка...
Автор мода - Hellmith
- Код: Выделить всё
Добавлено спустя 1 минуту 27 секунд:
- Код: Выделить всё
#include amxmodx
#include fakemeta
#include fun
#include engine
#include hamsandwich
#include xs
#include sqlx
#include dhudmessage
#include chr_engine
//#pragma defclasslib sqlx sqlite //sqlx
#define CVAR_IP "146.255.193.26"
new const VERSION[] = "0.3";
new bool:g_iDublJump[33];
/*===== -> Макросы -> =====*///{
#define OLD_WEAPONS_GUARD // Старое меню оружия
//#define PING_CONGROL // Контроль пинга
/* -> Нативы -> */
native jbe_is_user_block(pPlayer);
native jbe_emotion(id);
native give_weapon_infi(id);
native give_weapon_thompson(id);
native give_weapon_m24(id);
native give_ak47beast(id);
native Open_Oaio(id);
//native jbe_open_guard_weapon_menu(pPlayer); Помойная оружейка со скинами
/* -> Остальное -> */
#define DbSetBit(%0,%1) (%0 |= (1<<(%1 - 1)))
#define DbClearBit(%0,%1) (%0 &= ~(1<<(%1 - 1)))
#define DbCheckBit(%0,%1) (%0 & (1<<(%1 - 1)))
#define DbIsNotSetBit(%0,%1) (~(%0) & (1<<(%1 - 1)))
#define jbe_is_user_valid(%0) (%0 && %0 <= g_iMaxPlayers)
#define MAX_PLAYERS 32
#define IUSER1_DOOR_KEY 376027
#define IUSER1_BUYZONE_KEY 140658
#define IUSER1_FROSTNADE_KEY 235876
#define PLAYERS_PER_PAGE 8
#define TIME_POSITION_CHECK 5.0
#define TIME_POSITION_TASK 3.0
#define INDEX_POSITION_TASK 129910
#define QUEST_TIME 90.0 // Время через которое появится новый вопрос
#define QUEST_TIME_ANSWER 60 // Время ответа на вопрос
#define HOOK_TIME_NUM_MAX 2 // Скольким игрокам одновременно можно выдать паутинку
#define CAMERA_OWNER EV_INT_iuser1
#define CAMERA_CLASSNAME "trigger_camera"
#define CAMERA_MODEL "models/rpgrocket.mdl"
/* -> Бит суммы -> */
#define SetBit(%0,%1) ((%0) |= (1 << (%1)))
#define ClearBit(%0,%1) ((%0) &= ~(1 << (%1)))
#define IsSetBit(%0,%1) ((%0) & (1 << (%1)))
#define InvertBit(%0,%1) ((%0) ^= (1 << (%1)))
#define IsNotSetBit(%0,%1) (~(%0) & (1 << (%1)))
/* -> Оффсеты -> */
#define linux_diff_weapon 4
#define linux_diff_animating 4
#define linux_diff_player 5
#define ACT_RANGE_ATTACK1 28
#define m_flFrameRate 36
#define m_flGroundSpeed 37
#define m_flLastEventCheck 38
#define m_fSequenceFinished 39
#define m_fSequenceLoops 40
#define m_pPlayer 41
#define m_flNextSecondaryAttack 47
#define m_iClip 51
#define m_Activity 73
#define m_IdealActivity 74
#define m_LastHitGroup 75
#define m_flNextAttack 83
#define m_bloodColor 89
#define m_iPlayerTeam 114
#define m_fHasPrimary 116
#define m_bHasChangeTeamThisRound 125
#define m_flLastAttackTime 220
#define m_afButtonPressed 246
#define m_iHideHUD 361
#define m_iClientHideHUD 362
#define m_iSpawnCount 365
#define m_pActiveItem 373
#define m_flNextDecalTime 486
#define g_szModelIndexPlayer 491
/* -> Задачи -> */
#define TASK_ROUND_END 486787
#define TASK_CHANGE_MODEL 367678
#define TASK_SHOW_INFORMER_MAIN 769784
#define TASK_SHOW_INFORMER_SECOND 769784
#define TASK_FREE_DAY_ENDED 675754
#define TASK_CHIEF_CHOICE_TIME 867475
#define TASK_COUNT_DOWN_TIMER 645876
#define TASK_VOTE_DAY_MODE_TIMER 856365
#define TASK_RESTART_GAME_TIMER 126554
#define TASK_DAY_MODE_TIMER 783456
#define TASK_SHOW_SOCCER_SCORE 756356
#define TASK_REMOVE_SYRINGE 567989
#define TASK_FROSTNADE_DEFROST 645864
#define TASK_DUEL_COUNT_DOWN 567658
#define TASK_DUEL_BEAMCYLINDER 857576
#define TASK_DUEL_TIMER_ATTACK 735756
#define TASK_HOOK_THINK 865367
#define TASK_COUNT_DOWN_QUEST 196681
#define TASK_ROUND_END_FADE 486787
#define TASK_FREE_DAY_OPEN_DOORS 126554
#if defined PING_CONTROL
#define TASK_PING_CHECK 242984
#endif
#define TASK_LAST_PRISONER_TIMER 798745
#define TASK_LATCH_KEY 181230216
#define TASK_PLAYER_GAMETIME 154376
#define TASK_GLOBAL_GAME_START 675754
#define TASK_GLOBAL_GAME_END 675754
#define TASK_BOSS_AURA 337653
#define TASK_PLAYER_CONNECT 1616151
#define TASK_SOUND 961961
/* -> Индексы сообщений -> */
#define MsgId_CurWeapon 66
#define MsgId_SayText 76
#define MsgId_TextMsg 77
#define MsgId_ResetHUD 79
#define MsgId_ShowMenu 96
#define MsgId_ScreenShake 97
#define MsgId_ScreenFade 98
#define MsgId_SendAudio 100
#define MsgId_Money 102
#define MsgId_StatusText 106
#define MsgId_VGUIMenu 114
#define MsgId_ClCorpse 122
#define MsgId_HudTextArgs 145
/* -> Индексы предметов магазина для кваров -> */
#define SHARPENING 0
#define SCREWDRIVER 1
#define BALISONG 2
#define STILETO 3
#define USP 4
#define DEAGLE 5
#define LATCHKEY 6
#define FLASHBANG 7
#define KOKAIN 8
#define STIMULATOR 9
#define FROSTNADE 10
#define ARMOR 11
#define CLOTHING_GUARD 12
#define HEGRENADE 13
#define FAST_RUN 14
#define DOUBLE_JUMP 15
#define RANDOM_GLOW 16
#define AUTO_BHOP 17
#define DOUBLE_DAMAGE 18
#define LOW_GRAVITY 19
#define CLOSE_CASE 20
#define FREE_DAY_SHOP 21
#define RESOLUTION_VOICE 22
#define PRANK_PRISONER 23
#define PARACHUTE_PN 24
#define STIMULATOR_GR 25
#define RANDOM_GLOW_GR 26
#define KOKAIN_GR 27
#define DOUBLE_JUMP_GR 28
#define FAST_RUN_GR 29
#define LOW_GRAVITY_GR 30
#define PARACHUTE_GR 31
#define KATANA 32
/* -> Индексы общих настроек для кваров -> */
#define FREE_DAY_ID 0
#define FREE_DAY_ALL 1
#define TEAM_BALANCE 2
#define DAY_MODE_VOTE_TIME 3
#define RESTART_GAME_TIME 4
#define RIOT_START_MONEY 5
#define KILLED_GUARD_MONEY 6
#define KILLED_CHIEF_MONEY 7
#define ROUND_FREE_MONEY 8
#define ROUND_ALIVE_MONEY 9
#define LAST_PRISONER_MONEY 10
#define LAST_PRISONER_EXP 11
#define NIGHT_DISCOUNT_SHOP 12
#define MAX_PING 13
#define LAST_PR_TIMER 14
#define BONUS_HEALTH_ROUND 15
#define BONUS_HEALTH_NUM 16
#define BONUS_MONEY_ROUND 17
#define BONUS_MONEY_NUM 18
#define BONUS_GRAVSPEED_ROUND 19
#define BONUS_GRENADE_ROUND 20
#define BONUS_GLOCK_ROUND 21
#define BONUS_BAYONET_ROUND 22
/* -> Индексы доната для кваров -> */
#define RESPAWN_PLAYERS_NUM 0
#define VIP_DISCOUNT_SHOP 1
#define VIP_RESPAWN_NUM 2
#define VIP_MONEY_ROUND 3
#define VIP_MONEY_NUM 4
#define VIP_HEALTH_ROUND 5
#define VIP_HEALTH_NUM 6
#define VIP_SPEED_ROUND 7
#define VIP_FREE_ROUND 8
#define VIP_VOICE_ROUND 9
#define SUPER_VIP_DISCOUNT_SHOP 10
#define SUPER_VIP_RESPAWN_NUM 11
#define SUPER_VIP_MONEY_ROUND 12
#define SUPER_VIP_MONEY_NUM 13
#define SUPER_VIP_HEALTH_ROUND 14
#define SUPER_VIP_HEALTH_NUM 15
#define SUPER_VIP_GRAVITY_ROUND 16
#define SUPER_VIP_GLOW_ROUND 17
#define SUPER_VIP_SHARPENING_ROUND 18
#define SUPER_VIP_AUTOBHOP_ROUND 19
#define PREMIUM_RESPAWN_NUM 20
#define PREMIUM_HOLO_ROUND 21
#define PREMIUM_DAMAGE_ROUND 22
#define PREMIUM_GM_ROUND 23
#define PREMIUM_MASK_ROUND 24
#define PREMIUM_MEGA_JUMP_ROUND 25
#define PREMIUM_WANTED_ROUND 26
#define BOSS_AURA_ROUND 27
#define BOSS_BAYONET_ROUND 28
#define SUPER_ADMIN_GRENADE_ROUND 29
#define SUPER_ADMIN_INVIS_ROUND 30
#define SUPER_ADMIN_MONEY_ROUND 31
#define SUPER_ADMIN_MONEY_NUM 32
#define SUPER_ADMIN_DJ 33
#define D_SPAWN 34
#define D_GREN 35
#define D_HEALTH 36
#define D_GRAV 37
#define D_SPEED 38
#define PREMIUM_STILETO_ROUND 39
#define OWNER_MONEY_ROUND 40
#define OWNER_MONEY_NUM 41
/*===== <- Макросы <- =====*///}
/*===== -> Битсуммы, переменные и массивы для работы с модом -> =====*///{
/* -> Переменные -> */
new g_bRoundEnd = false, g_iFakeMetaKeyValue, g_iFakeMetaSpawn, g_iFakeMetaUpdateClientData, g_iSyncMainInformer, g_iSyncSecondInformer,
g_iSyncSoccerScore, g_iSyncStatusText, g_iSyncDuelInformer, g_iSyncConnected, g_iMaxPlayers, g_iFriendlyFire,
bool:g_bRestartGame = true, Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
new bool: g_TransliteStatus[33];
new g_iCountDown, g_iCountDownTime, g_szCountDown[] = {3, 5, 10, 20, 30, 50, 100};
/* -> Указатели для моделей -> */
new g_pModelGlass;
/* -> Указатели для спрайтов -> */
new g_pSpriteWave, g_pSpriteBeam, g_pSpriteBall, g_pSpriteDuelRed, g_pSpriteDuelBlue, g_pSpriteMegaJump;
/* -> Массивы -> */
new g_iPlayersNum[4], g_iAlivePlayersNum[4], Trie:g_tRemoveEntities;
/* -> Массивы для кваров -> */
new g_iShopCvars[33], g_iAllCvars[23], g_iDonateCvars[42];
/* -> Переменные и массивы для дней и дней недели -> */
new g_iDay, g_iDayWeek;
new const g_szDaysWeek[][] =
{
"JBE_HUD_DAY_WEEK_0",
"JBE_HUD_DAY_WEEK_1",
"JBE_HUD_DAY_WEEK_2",
"JBE_HUD_DAY_WEEK_3",
"JBE_HUD_DAY_WEEK_4",
"JBE_HUD_DAY_WEEK_5",
"JBE_HUD_DAY_WEEK_6",
"JBE_HUD_DAY_WEEK_7"
};
/* -> Битсуммы, переменные и массивы для режимов игры -> */
enum _:DATA_DAY_MODE
{
LANG_MODE[32],
MODE_BLOCKED,
VOTES_NUM,
MODE_TIMER,
MODE_BLOCK_DAYS
}
new Array:g_aDataDayMode, g_iDayModeListSize, g_iDayModeVoteTime, g_iHookDayModeStart, g_iHookDayModeEnded, g_iReturnDayMode,
g_iDayMode, g_szDayMode[32] = "JBE_HUD_GAME_MODE_0", g_iDayModeTimer, g_szDayModeTimer[8] = "", g_iVoteDayMode = -1,
g_iBitUserVoteDayMode, g_iBitUserDayModeVoted, g_szQuestActive[128] = "";
/* -> Переменные и массивы для работы с клетками -> */
new bool:g_bDoorStatus, Array:g_aDoorList, g_iDoorListSize, Trie:g_tButtonList;
/* -> Массивы для работы с событиями 'hamsandwich' -> */
new const g_szHamHookEntityBlock[][] =
{
"func_vehicle", // Управляемая машина
"func_tracktrain", // Управляемый поезд
"func_tank", // Управляемая пушка
"game_player_hurt", // При активации наносит игроку повреждения
"func_recharge", // Увеличение запаса бронижелета
"func_healthcharger", // Увеличение процентов здоровья
"game_player_equip", // Выдаёт оружие
"player_weaponstrip", // Забирает всё оружие
"func_button", // Кнопка
"trigger_hurt", // Наносит игроку повреждения
"trigger_gravity", // Устанавливает игроку силу гравитации
"armoury_entity", // Объект лежащий на карте, оружия, броня или гранаты
"weaponbox", // Оружие выброшенное игроком
"weapon_shield" // Щит
};
new HamHook:g_iHamHookForwards[14];
enum _:DATA_ROUND_SOUND
{
FILE_NAME[64],
TRACK_NAME[64]
}
new Array:g_aDataRoundSound, g_iRoundSoundSize;
/*===== <- Переменные и массивы для работы с модом <- =====*///}
/*===== -> Битсуммы, переменные и массивы для работы с игроками -> =====*///{
/* -> Битсуммы -> */
new g_iBitUserConnected, g_iBitUserAlive, g_iBitUserVoice, g_iBitUserVoiceNextRound, g_iBitUserModel, g_iBitBlockMenu,
g_iBitKilledUsers[MAX_PLAYERS + 1], g_iBitUserVip, g_iBitUserSuperVip, g_iBitUserPremium, g_iBitUserAdmin, g_iBitUserSuperAdmin, g_iBitUserBoss, g_iBitUserManaging, g_iBitUserIron, g_iBitUserOwner, g_iBitUserHook, g_iBitUserHookTime, g_iBitUserPrefix, g_iBitUserModels, g_iBitUserBuild, g_iBitUserOAIO,
g_iBitUserRoundSound, g_iBitUserRoundEffect, g_iBitUserButtonSound, g_iBitUserAutoWeapon, g_iBitMegaJump, g_iBitAura, g_iBitUserHookNextRound, g_iBitHookRound;
/* -> Переменные -> */
new g_iLastPnId, g_iLastPnTimer;
/* -> Массивы -> */
new g_iUserTeam[MAX_PLAYERS + 1], g_iUserSkin[MAX_PLAYERS + 1], g_iUserMoney[MAX_PLAYERS + 1], g_iUserDiscount[MAX_PLAYERS + 1],
g_szUserModel[MAX_PLAYERS + 1][32], Float:g_vecHookOrigin[MAX_PLAYERS + 1][3];
/* -> Массивы для меню из игроков -> */
new g_iMenuPlayers[MAX_PLAYERS + 1][MAX_PLAYERS], g_iMenuPosition[MAX_PLAYERS + 1], g_iMenuTarget[MAX_PLAYERS + 1];
/* -> Переменные и массивы для начальника -> */
new g_iChiefId, g_iChiefIdOld, g_iChiefChoiceTime, g_szChiefName[32], g_iChiefStatus, g_iChiefSteps[MAX_PLAYERS + 1], g_iChiefVoice, g_iChiefFallDamage;
new const g_szChiefStatus[][] =
{
"JBE_HUD_CHIEF_NOT",
"JBE_HUD_CHIEF_ALIVE",
"JBE_HUD_CHIEF_DEAD",
"JBE_HUD_CHIEF_DISCONNECT",
"JBE_HUD_CHIEF_FREE"
};
/* -> Битсуммы, переменные и массивы для освобождённых заключённых -> */
new g_iBitUserFree, g_iBitUserFreeNextRound, g_szFreeNames[192], g_iFreeLang;
new const g_szFreeLang[][] =
{
"JBE_HUD_NOT_FREE",
"JBE_HUD_HAS_FREE"
};
/* -> Битсуммы, переменные и массивы для разыскиваемых заключённых -> */
new g_iBitUserWanted, g_szWantedNames[192], g_iWantedLang;
new const g_szWantedLang[][] =
{
"JBE_HUD_NOT_WANTED",
"JBE_HUD_HAS_WANTED"
};
/* -> Переменные и массивы для костюмов -> */
enum _:DATA_COSTUMES_PRECACHE
{
MODEL_NAME[32],
SUB_MODEL[4],
NAME_COSTUME[64],
FLAG_COSTUME[2],
WARNING_MSG[32]
}
enum _:DATA_COSTUMES
{
COSTUMES,
ENTITY,
bool:HIDE
}
new Array:g_aCostumesList, g_iCostumesListSize, g_eUserCostumes[MAX_PLAYERS + 1][DATA_COSTUMES];
/* -> Битсуммы, переменные и массивы для футбола -> */
new g_iSoccerBall, Float:g_flSoccerBallOrigin[3], bool:g_bSoccerBallTouch, bool:g_bSoccerBallTrail, bool:g_bSoccerStatus,
bool:g_bSoccerGame, g_iSoccerScore[2], g_iBitUserSoccer, g_iSoccerBallOwner, g_iSoccerKickOwner, g_iSoccerUserTeam[MAX_PLAYERS + 1];
/* -> Битсуммы, переменные и массивы для бокса -> */
new bool:g_bBoxingStatus, g_iBoxingGame, g_iBitUserBoxing, g_iBoxingTypeKick[MAX_PLAYERS + 1], g_iBoxingUserTeam[MAX_PLAYERS + 1];
/* -> Битсуммы для магазина -> */
new g_iBitSharpening, g_iBitScrewdriver, g_iBitBalisong, g_iBitStileto, g_iBitKatana, g_iBitWeaponStatus, g_iBitLatchkey, g_iBitKokain, g_iBitFrostNade,
g_iBitUserFrozen, g_iBitClothingGuard, g_iBitClothingType, g_iBitHingJump, g_iBitFastRun, g_iBitDoubleJump,
g_iBitRandomGlow, g_iBitAutoBhop, g_iBitDoubleDamage, g_iBitParachute;
/* -> Переменные и массивы для рендеринга -> */
enum _:DATA_RENDERING
{
RENDER_STATUS,
RENDER_FX,
RENDER_RED,
RENDER_GREEN,
RENDER_BLUE,
RENDER_MODE,
RENDER_AMT
}
new g_eUserRendering[MAX_PLAYERS + 1][DATA_RENDERING];
/* -> Битсуммы, переменные и массивы для работы с дуэлями -> */
new g_iDuelStatus, g_iDuelType, g_iBitUserDuel, g_iDuelUsersId[2], g_iDuelNames[2][32], g_iDuelCountDown, g_iDuelTimerAttack, g_iDuelPrize, g_iDuelPrizeId, g_iDuelTypeFair, g_iDuelTimeToAttack, g_iTimeAttack[] = {5, 10, 15};
new const g_szDuelLang[][] =
{
"JBE_MENU_DUEL_WEAPON_NONE",
"JBE_MENU_DUEL_WEAPON_DEAGLE",
"JBE_MENU_DUEL_WEAPON_M3",
"JBE_MENU_DUEL_WEAPON_HEGRENADE",
"JBE_MENU_DUEL_WEAPON_M249",
"JBE_MENU_DUEL_WEAPON_AWP",
"JBE_MENU_DUEL_WEAPON_KNIFE"
};
new const g_szDuelPrizeLang[][] =
{
"JBE_DUEL_PRIZE_NONE",
"JBE_DUEL_PRIZE_FREEDAY",
"JBE_DUEL_PRIZE_VOICE",
"JBE_DUEL_PRIZE_EXP",
"JBE_DUEL_PRIZE_MONEY",
"JBE_DUEL_PRIZE_HOOK"
};
/* -> Битсуммы, переменные и массивы для работы с донатом -> */
new g_iVipRespawn[MAX_PLAYERS + 1], g_iVipMoney[MAX_PLAYERS + 1], g_iVipHealth[MAX_PLAYERS + 1], g_iVipSpeed[MAX_PLAYERS + 1], g_iVipFree[MAX_PLAYERS + 1], g_iVipKnife[MAX_PLAYERS + 1];
new g_iDSpawn[33], g_iDGren[33], g_iDHealth[33], g_iDGrav[33], g_iDSpeed[33];
new g_iSuperVipRespawn[MAX_PLAYERS + 1], g_iSuperVipMoney[MAX_PLAYERS + 1], g_iSuperVipHealth[MAX_PLAYERS + 1], g_iSuperVipGravity[MAX_PLAYERS + 1],
g_iSuperVipGlow[MAX_PLAYERS + 1], g_iSuperVipSharpening[MAX_PLAYERS + 1], g_iPremiumStileto[MAX_PLAYERS + 1], g_iSuperVipAutobhop[MAX_PLAYERS + 1];
new g_iPremiumRespawn[MAX_PLAYERS + 1], g_iPremiumHolo[MAX_PLAYERS + 1], g_iPremiumDamage[MAX_PLAYERS + 1], g_iPremiumGm[MAX_PLAYERS + 1], g_iPremiumMask[MAX_PLAYERS + 1],
g_iPremiumMegaJump[MAX_PLAYERS + 1], g_iPremiumWanted[MAX_PLAYERS + 1];
new g_iSuperAdminTrail[MAX_PLAYERS + 1], g_iSuperAdminGrenade[MAX_PLAYERS + 1], g_iSuperAdminInvis[MAX_PLAYERS + 1], g_iSuperAdminMoney[MAX_PLAYERS + 1], g_iSuperAdminDj[MAX_PLAYERS + 1];
new g_iOwnerMoney[MAX_PLAYERS + 1];
new g_bShopStatus, g_bGuardStatus, g_iBossStatusTrue[3], g_iBossAura[MAX_PLAYERS + 1], g_iBossBayonet[MAX_PLAYERS + 1], g_bHookStatus, g_iBitBayonet;
/* -> Битсуммы, переменные и массивы для рабботы с информером -> */
new g_iInfoStatus[MAX_PLAYERS + 1][3], g_iInfoColor[MAX_PLAYERS + 1][3];
// LVL SYSTEM
enum _:CVARS_LVL
{
KILL_CT,
KILL_CHIEF,
RIOT_START,
KILL_TT,
KILL_WT,
MONEY_BONUS,
HEALTH_BONUS,
PLAYERS_NEED
}
new g_iLevelCvars[CVARS_LVL];
#define TOTAL_PLAYER_LEVELS 15
#define MAX_LEVEL 14
static const g_szExp[TOTAL_PLAYER_LEVELS] =
{
0, // 0 Уровень
20, // 1 Уровень
60, // 2 Уровень
105, // 3 Уровень
200, // 4 Уровень
320, // 5 Уровень
500, // 6 Уровень
700, // 7 Уровень
1000, // 8 Уровень
2000, // 9 Уровень
4000, // 10 Уровень
6000, // 11 Уровень
8000, // 12 Уровень
10000, // 13 Уровень
12000 // 14 Уровень
};
static const g_szRankName[TOTAL_PLAYER_LEVELS][] =
{
"JBE_ID_HUD_RANK_NAME_1",
"JBE_ID_HUD_RANK_NAME_2",
"JBE_ID_HUD_RANK_NAME_3",
"JBE_ID_HUD_RANK_NAME_4",
"JBE_ID_HUD_RANK_NAME_5",
"JBE_ID_HUD_RANK_NAME_6",
"JBE_ID_HUD_RANK_NAME_7",
"JBE_ID_HUD_RANK_NAME_8",
"JBE_ID_HUD_RANK_NAME_9",
"JBE_ID_HUD_RANK_NAME_10",
"JBE_ID_HUD_RANK_NAME_11",
"JBE_ID_HUD_RANK_NAME_12",
"JBE_ID_HUD_RANK_NAME_13",
"JBE_ID_HUD_RANK_NAME_14",
"JBE_ID_HUD_RANK_NAME_15"
};
new g_szRankHost[32], g_szRankUser[32], g_szRankPassword[32], g_szRankDataBase[32], g_szRankTable[32];
new g_szQuery[2048] , g_szSteamID[MAX_PLAYERS + 1][34];
new Handle:g_hDBTuple, Handle:g_hConnect;
new g_iLevel[MAX_PLAYERS + 1];
new g_iExpName[MAX_PLAYERS + 1];
public SQL_QueryConnection(iState, Handle:hQuery, szError[], iErrcode, iParams[] , iParamsSize)
{
new pPlayer = iParams[0];
if(SQL_NumResults(hQuery) < 1)
{
if(equal(g_szSteamID[pPlayer], "ID_PENDING"))
return PLUGIN_HANDLED;
g_iLevel[pPlayer] = 0;
g_iExpName[pPlayer] = 0;
g_iUserMoney[pPlayer] = 0;
format
(
g_szQuery, charsmax(g_szQuery),
"INSERT INTO `%s`(`SteamID`, `user_level`, `user_exp`) VALUES ('%s' ,'%i' ,'%i');",
g_szRankTable, g_szSteamID[pPlayer],
g_iLevel[pPlayer], g_iExpName[pPlayer]
);
SQL_ThreadQuery(g_hDBTuple, "ThreadQueryHandler", g_szQuery);
return PLUGIN_HANDLED;
}
else
{
g_iLevel[pPlayer] = SQL_ReadResult(hQuery, 1);
g_iExpName[pPlayer] = SQL_ReadResult(hQuery, 2);
}
return PLUGIN_HANDLED;
}
public ThreadQueryHandler(iState, Handle:hQuery, szError[], iError, iParams[], iParamsSize)
{
if(iState == 0)
return;
}
/* -> Битсуммы, переменные и массивы для работы с хуком -> */
new const g_szHookSound[][][] =
{
{"1", "jb_engine/hook/rope.wav"},
{"2", "jb_engine/hook/ball.wav"},
{"3", "jb_engine/hook/bun.wav"},
{"4", "jb_engine/hook/pay.wav"},
{"5", "jb_engine/hook/lightning.wav"},
{"6", "jb_engine/hook/laser.wav"},
{"7", "jb_engine/hook/kick.wav"},
{"8", "jb_engine/hook/jump.wav"},
{"9", "jb_engine/boxing/gong.wav"}
};
new const g_szHookSprite[][][] =
{
{"1", "sprites/jb_engine/hook/hook_v.spr"},
{"2", "sprites/jb_engine/hook/hook_n.spr"},
{"3", "sprites/jb_engine/hook/hook_c.spr"},
{"4", "sprites/jb_engine/hook/hook_b.spr"},
{"5", "sprites/jb_engine/hook/hook_av.spr"},
{"6", "sprites/jb_engine/hook/hook_an.spr"},
{"7", "sprites/jb_engine/hook/hook_am.spr"},
{"8", "sprites/jb_engine/hook/hook_ac.spr"},
{"9", "sprites/jb_engine/hook/hook_ab.spr"},
{"10", "sprites/jb_engine/hook/hook_aa.spr"},
{"11", "sprites/jb_engine/hook/hook_axe_v2.spr"},
{"12", "sprites/jb_engine/hook/rainbow.spr"},
{"13", "sprites/jb_engine/hook/lgtning.spr"}
};
new const g_szHookEnd[][][] =
{
{"1", "sprites/jb_engine/hook/richo2.spr"},
{"2", "sprites/jb_engine/hook/love.spr"},
{"3", "sprites/jb_engine/hook/balls.spr"},
{"4", "sprites/jb_engine/hook/half-life.spr"},
{"5", "sprites/jb_engine/hook/end_6.spr"},
{"6", "sprites/jb_engine/hook/Biohazard.spr"},
{"7", "sprites/jb_engine/hook/frostgib.spr"},
{"8", "sprites/jb_engine/hook/cake_explosion.spr"}
};
new const g_szHookSpeed[][][] =
{
{"СРЕДНЯЯ", "160.0"},
{"НИЗКАЯ", "120.0"},
{"ВЫСОКАЯ", "250.0"}
};
new const g_szHookColor[][][] =
{
{"БЕЛЫЙ", "255", "255", "255"},
{"КРАСНЫЙ", "255", "0", "0"},
{"ФИОЛЕТОВЫЙ", "255", "0", "255"},
{"ЖЁЛТЫЙ", "255", "255", "0"},
{"ЗЕЛЁНЫЙ", "0", "255", "0"},
{"ГОЛУБОЙ", "0", "255", "255"},
{"СИНИЙ", "0", "0", "255"},
{"ОРАНЖЕВЫЙ", "255", "60", "0"}
};
new const g_szHookSize[][][] =
{
{"СРЕДНИЙ", "45"},
{"МАЛЕНЬКИЙ", "25"},
{"БОЛЬШОЙ", "75"}
};
new const g_szHookType[][][] =
{
{"ПРЯМАЯ", "0"},
{"ЗМЕЙКА", "10"},
{"МОЛНИЯ", "30"}
};
new g_iHookSound[33], g_iHookSprite[33], g_iHookEnd[33], g_iHookSpeed[33], g_iHookColor[33], g_iHookSize[33], g_iHookType[33];
new g_iHookSpriteEff[64], g_iHookSpriteEnd[64];
enum _:DATA_QUEST
{
QUEST_TEXT[64],
QUEST_ANSWER[64],
QUEST_PRIZE[16]
}
new Array:g_aQuestList;
new g_iQuestListSize;
new g_iCountDownQuest;
new g_iAnswer[64], g_szMath[196], g_iPrize;
/* -> Остальное -> */
new g_iUserChoose[MAX_PLAYERS + 1], g_iUserModel[MAX_PLAYERS + 1];
new g_iSvetoforColor[MAX_PLAYERS + 1], g_iSvetoforSound, g_iUserCamera[MAX_PLAYERS + 1],
g_iUserParaEnt[MAX_PLAYERS + 1], g_iUserParaUse[MAX_PLAYERS + 1], g_iUserWarning[MAX_PLAYERS + 1], g_iPlayer_GameTime[MAX_PLAYERS + 1], g_iHookTimeNum;
new g_iBonusHealth[MAX_PLAYERS + 1], g_iBonusMoney[MAX_PLAYERS + 1], g_iBonusGravSpeed[MAX_PLAYERS + 1], g_iBonusGrenade[MAX_PLAYERS + 1], g_iBonusGlock[MAX_PLAYERS + 1], g_iBonusBayonet[MAX_PLAYERS + 1];
/* -> Глобальные игры -> */
static const g_szGlobalType[][] =
{
"JBE_GLOBAL_GAME_HUNGER_GAME",
"JBE_GLOBAL_GAME_RIOT"
};
static const g_szGlobalWeapon[][] =
{
"JBE_GLOBAL_GAME_AK47",
"JBE_GLOBAL_GAME_M4A1",
"JBE_GLOBAL_GAME_AWP",
"JBE_GLOBAL_GAME_M3"
};
static const g_szGlobalDay[][] =
{
"JBE_GLOBAL_GAME_DAY",
"JBE_GLOBAL_GAME_NOON",
"JBE_GLOBAL_GAME_EVENING",
"JBE_GLOBAL_GAME_NIGHT"
};
static const g_szGlobalMusic[][] =
{
"Majlo x Tim Heart - Bounce",
"Masuria - Yuza"
};
new g_szGlobalTime[] = {10, 20, 30}, g_szGlobalHp[] = {100, 150, 200, 255, 300};
new g_iGlobalGame, g_iGlobalType, g_iGlobalWeapon, g_iGlobalTime, g_iGlobalTimer, g_iGlobalDay, g_iGlobalHp[2], g_iGlobalMusic;
/* <- Глобальные игры <- */
/* -> Массивы для работы с заданиями -> */
enum _:DATA_USER_QUEST
{
ENABLED,
INDEX,
PROGRESS
};
new g_iUserQuest[MAX_PLAYERS + 1][DATA_USER_QUEST], g_iQuestPrize;
new const g_szQuestPrizeLang[][] =
{
"JBE_QUEST_PRIZE_MONEY",
"JBE_QUEST_PRIZE_EXP"
};
/* <- Массивы для работы с заданиями <- */
/* <- Дуэли <- */
new Float:fDuelOriginPrison[3], Float:fDuelOriginGuard[3];
new g_iUserBet[MAX_PLAYERS + 1], g_iUserBetId[MAX_PLAYERS + 1], g_iBitUserBet, g_iCountMoney[2];
/* -> Дуэли -> */
/*===== <- Битсуммы, переменные и массивы для работы с игроками <- =====*///}
public plugin_precache()
{
files_precache();
models_precache();
sounds_precache();
sprites_precache();
jbe_create_buyzone();
g_tButtonList = TrieCreate();
g_iFakeMetaKeyValue = register_forward(FM_KeyValue, "FakeMeta_KeyValue_Post", 1);
g_tRemoveEntities = TrieCreate();
new const szRemoveEntities[][] = {"func_hostage_rescue", "info_hostage_rescue", "func_bomb_target", "info_bomb_target", "func_vip_safetyzone", "info_vip_start", "func_escapezone", "hostage_entity", "monster_scientist", "func_buyzone"};
for(new i; i < sizeof(szRemoveEntities); i++) TrieSetCell(g_tRemoveEntities, szRemoveEntities[i], i);
g_iFakeMetaSpawn = register_forward(FM_Spawn, "FakeMeta_Spawn_Post", 1);
}
// Секции mode_settings.ini
enum
{
SELECT_FLAGS = 1,
SELECT_HEALTH_GR,
SELECT_PR_SKINS,
SELECT_INFORMER
};
// Флаги доступа
enum _:FLAGS
{
VIP = 0,
SUPER_VIP,
PREMIUM,
ADMIN,
SUPER_ADMIN,
BOSS,
MANAGING,
IRON,
OWNER,
HOOK,
PREFIX,
MODELM,
BUILD,
OAIO
};
new g_iFlagAccess[FLAGS];
// Здоровье охраны
enum _:HEALTH_GR
{
GUARD_HP,
CHIEF_HP
};
new g_iHealthGuard[HEALTH_GR];
// Одежда заключенных
enum _:PR_SKINS
{
SKIN_ADMIN,
SKIN_FREEDAY,
SKIN_WANTED,
SKIN_FOOTBAL_RED,
SKIN_FOOTBAL_BLUE
};
new g_iPrisonerSkin[PR_SKINS];
// Настройка информера
enum _:INFORMER
{
COLOR_RED,
COLOR_GREEN,
COLOR_BLUE
};
new g_iInformer[INFORMER];
// Секции mode_precache.ini
enum
{
SELECT_MODELS = 1,
SELECT_SOUNDS,
SELECT_SPRITES
};
// Модели
enum _:MODELS
{
V_PR_HAND,
P_PR_HAND,
V_GR_HAND,
P_GR_HAND,
V_GLOVE_RED,
P_GLOVE_RED,
V_GLOVE_BLUE,
P_GLOVE_BLUE,
BALL,
V_HAND_BALL,
V_RS,
PARACHUTE,
V_ICE,
P_ICE,
V_SYRINGE,
V_SHARPENING,
P_SHARPENING,
V_SCREWDRIVER,
P_SCREWDRIVER,
V_BALISONG,
P_BALISONG,
V_CRIMSON,
P_CRIMSON,
V_STILETO,
P_STILETO,
V_KATANA,
P_KATANA
};
new g_szModels[MODELS][128];
// Модели игроков
enum _:PLAYER_MODELS
{
PRISONER,
GUARD,
CHIEF,
BUY_MODEL_1,
BUY_MODEL_2,
BUY_MODEL_3,
BUY_MODEL_4,
BUY_MODEL_5,
BUY_MODEL_6,
BUY_MODEL_7,
BUY_MODEL_8
};
new g_szPlayerModels[PLAYER_MODELS][32];
// Звуки
enum _:SOUNDS
{
HAND_HIT,
HAND_SLASH,
HAND_DEPLOY,
BATON_DEPLOY,
BATON_HITWALL,
BATON_SLASH,
BATON_STAB,
BATON_HIT,
BOUNCE_BALL,
GRAB_BALL,
KICK_BALL,
WHITLE_START,
WHITLE_END,
CROWD,
GLOVES_HIT,
SUPER_HIT,
GONG,
GRENADE_FROST_EXPLOSION,
FREEZE_PLAYER,
DEFROST_PLAYER,
SHARPENING_DEPLOY,
SHARPENING_HITWALL,
SHARPENING_SLASH,
SHARPENING_HIT,
SCREWDRIVER_DEPLOY,
SCREWDRIVER_HITWALL,
SCREWDRIVER_SLASH,
SCREWDRIVER_HIT,
BALISONG_DEPLOY,
BALISONG_HITWALL,
BALISONG_SLASH,
BALISONG_HIT,
CRIMSON_DEPLOY,
CRIMSON_HITWALL,
CRIMSON_SLASH,
CRIMSON_HIT,
PRISON_RIOT,
BUTTON_SOUND,
MEGA_JUMP,
FREEDAY_START,
FREEDAY_END,
START_END,
RIGHT,
COUNT,
GIVE_HOOK,
DUEL_SOUND,
GLOBAL_1,
GLOBAL_2,
KATANA_DEPLOY,
KATANA_HITWALL,
KATANA_SLASH,
KATANA_HIT
};
new g_szSounds[SOUNDS][128];
enum _:SPRITES
{
HAS_BALL,
DUEL_RED,
DUEL_BLUE,
MEGA_JUMP_LINE,
ICEG
};
new g_szSprites[SPRITES][128];
public plugin_init()
{
//SQL_SetAffinity("sqlite"); //sqlx
main_init();
cvars_init();
event_init();
clcmd_init();
menu_init();
message_init();
door_init();
fakemeta_init();
hamsandwich_init();
game_mode_init();
}
public plugin_end()
{
// LVL SYSTEM
if(g_hDBTuple) SQL_FreeHandle(g_hDBTuple);
if(g_hConnect) SQL_FreeHandle(g_hConnect);
return;
}
/*===== -> Файлы -> =====*///{
files_precache()
{
new szCfgDir[64], szCfgFile[128];
get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
formatex(szCfgFile, charsmax(szCfgFile), "%s/jb_engine/ini/quests.ini", szCfgDir);
switch(file_exists(szCfgFile))
{
case 0: log_to_file("%s/jb_engine/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
case 1: jbe_quest_read_file(szCfgFile);
}
formatex(szCfgFile, charsmax(szCfgFile), "%s/jb_engine/ini/round_sound.ini", szCfgDir);
switch(file_exists(szCfgFile))
{
case 0: log_to_file("%s/jb_engine/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
case 1:
{
new aDataRoundSound[DATA_ROUND_SOUND], szBuffer[128], iLine, iLen;
g_aDataRoundSound = ArrayCreate(DATA_ROUND_SOUND);
while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
{
if(!iLen || szBuffer[0] == ';') continue;
parse
(
szBuffer,
aDataRoundSound[FILE_NAME], charsmax(aDataRoundSound[FILE_NAME]),
aDataRoundSound[TRACK_NAME], charsmax(aDataRoundSound[TRACK_NAME])
);
formatex(szBuffer, charsmax(szBuffer), "%s.mp3", aDataRoundSound[FILE_NAME]);
engfunc(EngFunc_PrecacheGeneric, szBuffer);
ArrayPushArray(g_aDataRoundSound, aDataRoundSound);
}
g_iRoundSoundSize = ArraySize(g_aDataRoundSound);
}
}
formatex(szCfgFile, charsmax(szCfgFile), "%s/jb_engine/ini/costumes_list.ini", szCfgDir);
switch(file_exists(szCfgFile))
{
case 0: log_to_file("%s/jb_engine/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
case 1:
{
new aDataCostumesRead[DATA_COSTUMES_PRECACHE], szBuffer[256], iLine, iLen;
g_aCostumesList = ArrayCreate(DATA_COSTUMES_PRECACHE);
while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
{
if(!iLen || szBuffer[0] == ';') continue;
parse
(
szBuffer,
aDataCostumesRead[MODEL_NAME], charsmax(aDataCostumesRead[MODEL_NAME]),
aDataCostumesRead[SUB_MODEL], charsmax(aDataCostumesRead[SUB_MODEL]),
aDataCostumesRead[NAME_COSTUME], charsmax(aDataCostumesRead[NAME_COSTUME]),
aDataCostumesRead[FLAG_COSTUME], charsmax(aDataCostumesRead[FLAG_COSTUME]),
aDataCostumesRead[WARNING_MSG], charsmax(aDataCostumesRead[WARNING_MSG])
);
format(szBuffer, charsmax(szBuffer), "models/jb_engine/costumes/%s.mdl", aDataCostumesRead[MODEL_NAME]);
if(file_exists(szBuffer)) engfunc(EngFunc_PrecacheModel, szBuffer);
ArrayPushArray(g_aCostumesList, aDataCostumesRead);
}
g_iCostumesListSize = ArraySize(g_aCostumesList);
}
}
new szMapName[64]; get_mapname(szMapName, charsmax(szMapName));
formatex(szCfgFile, charsmax(szCfgFile), "%s/jb_engine/duels/%s.ini", szCfgDir, szMapName);
switch(file_exists(szCfgFile))
{
case 1:
{
new iFile = fopen(szCfgFile, "rt");
new sStringBuf[512];
new GetFloatString[3][64], GetString[2][64];
while(!feof(iFile))
{
fgets(iFile, sStringBuf, charsmax(sStringBuf));
if(sStringBuf[0] && sStringBuf[0] != ';' && parse(sStringBuf, GetString[0], charsmax(GetString[]), GetString[1], charsmax(GetString[])))
{
parse(GetString[0], GetFloatString[0], charsmax(GetFloatString[]), GetFloatString[1], charsmax(GetFloatString[]), GetFloatString[2], charsmax(GetFloatString[]));
fDuelOriginPrison[0] = str_to_float(GetFloatString[0]);
fDuelOriginPrison[1] = str_to_float(GetFloatString[1]);
fDuelOriginPrison[2] = str_to_float(GetFloatString[2]);
parse(GetString[1], GetFloatString[0], charsmax(GetFloatString[]), GetFloatString[1], charsmax(GetFloatString[]), GetFloatString[2], charsmax(GetFloatString[]));
fDuelOriginGuard[0] = str_to_float(GetFloatString[0]);
fDuelOriginGuard[1] = str_to_float(GetFloatString[1]);
fDuelOriginGuard[2] = str_to_float(GetFloatString[2]);
}
}
}
default:
{
for(new i = 0; i < 3; i++) fDuelOriginPrison[i] = 0.0;
for(new i = 0; i < 3; i++) fDuelOriginGuard[i] = 0.0;
log_to_file("%s/jb_engine/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
}
}
formatex(szCfgFile, charsmax(szCfgFile), "%s/jb_engine/ini/mode_settings.ini", szCfgDir);
if(!file_exists(szCfgFile))
{
new szError[100];
formatex(szError, charsmax(szError), "[MJB] Отсутсвтует файл: %s", szCfgFile);
set_fail_state(szError);
return;
}
new szBuffer[128], szKey[64], szValue[960], iSectrion;
new iFile = fopen(szCfgFile, "rt");
while(iFile && !feof(iFile))
{
fgets(iFile, szBuffer, charsmax(szBuffer));
replace(szBuffer, charsmax(szBuffer), "^n", "");
if(!szBuffer[0] || szBuffer[0] == ';' || szBuffer[0] == '{' || szBuffer[0] == '}' || szBuffer[0] == '#') continue;
if(szBuffer[0] == '[')
{
iSectrion++;
continue;
}
parse(szBuffer, szKey, charsmax(szKey), szValue, charsmax(szValue));
trim(szKey);
trim(szValue);
switch(iSectrion)
{
case SELECT_FLAGS:
{
if(equal(szKey, "VIP")) g_iFlagAccess[VIP] = read_flags(szValue);
else if(equal(szKey, "SUPER_VIP")) g_iFlagAccess[SUPER_VIP] = read_flags(szValue);
else if(equal(szKey, "PREMIUM")) g_iFlagAccess[PREMIUM] = read_flags(szValue);
else if(equal(szKey, "ADMIN")) g_iFlagAccess[ADMIN] = read_flags(szValue);
else if(equal(szKey, "SUPER_ADMIN")) g_iFlagAccess[SUPER_ADMIN] = read_flags(szValue);
else if(equal(szKey, "BOSS")) g_iFlagAccess[BOSS] = read_flags(szValue);
else if(equal(szKey, "MANAGING")) g_iFlagAccess[MANAGING] = read_flags(szValue);
else if(equal(szKey, "IRON")) g_iFlagAccess[IRON] = read_flags(szValue);
else if(equal(szKey, "OWNER")) g_iFlagAccess[OWNER] = read_flags(szValue);
else if(equal(szKey, "HOOK")) g_iFlagAccess[HOOK] = read_flags(szValue);
else if(equal(szKey, "PREFIX")) g_iFlagAccess[PREFIX] = read_flags(szValue);
else if(equal(szKey, "MODELM")) g_iFlagAccess[MODELM] = read_flags(szValue);
else if(equal(szKey, "BUILD")) g_iFlagAccess[BUILD] = read_flags(szValue);
else if(equal(szKey, "OAIO")) g_iFlagAccess[OAIO] = read_flags(szValue);
}
case SELECT_HEALTH_GR:
{
if(equal(szKey, "GUARD_HP")) g_iHealthGuard[GUARD_HP] = str_to_num(szValue);
else if(equal(szKey, "CHIEF_HP")) g_iHealthGuard[CHIEF_HP] = str_to_num(szValue);
}
case SELECT_PR_SKINS:
{
if(equal(szKey, "SKIN_ADMIN")) g_iPrisonerSkin[SKIN_ADMIN] = str_to_num(szValue);
else if(equal(szKey, "SKIN_FREEDAY")) g_iPrisonerSkin[SKIN_FREEDAY] = str_to_num(szValue);
else if(equal(szKey, "SKIN_WANTED")) g_iPrisonerSkin[SKIN_WANTED] = str_to_num(szValue);
else if(equal(szKey, "SKIN_FOOTBAL_RED")) g_iPrisonerSkin[SKIN_FOOTBAL_RED] = str_to_num(szValue);
else if(equal(szKey, "SKIN_FOOTBAL_BLUE")) g_iPrisonerSkin[SKIN_FOOTBAL_BLUE] = str_to_num(szValue);
}
case SELECT_INFORMER:
{
if(equal(szKey, "COLOR_RED")) g_iInformer[COLOR_RED] = str_to_num(szValue);
else if(equal(szKey, "COLOR_GREEN")) g_iInformer[COLOR_GREEN] = str_to_num(szValue);
else if(equal(szKey, "COLOR_BLUE")) g_iInformer[COLOR_BLUE] = str_to_num(szValue);
}
}
}
fclose(iFile);
formatex(szCfgFile, charsmax(szCfgFile), "%s/jb_engine/ini/mode_precache.ini", szCfgDir);
if(!file_exists(szCfgFile))
{
new szError[100];
formatex(szError, charsmax(szError), "[MJB] Отсутсвтует файл: %s", szCfgFile);
set_fail_state(szError);
return;
}
iSectrion = 0;
iFile = fopen(szCfgFile, "rt");
while(iFile && !feof(iFile))
{
fgets(iFile, szBuffer, charsmax(szBuffer));
replace(szBuffer, charsmax(szBuffer), "^n", "");
if(!szBuffer[0] || szBuffer[0] == ';' || szBuffer[0] == '{' || szBuffer[0] == '}' || szBuffer[0] == '#') continue;
if(szBuffer[0] == '[')
{
iSectrion++;
continue;
}
parse(szBuffer, szKey, charsmax(szKey), szValue, charsmax(szValue));
trim(szKey);
trim(szValue);
switch(iSectrion)
{
case SELECT_MODELS:
{
if(equal(szKey, "V_PR_HAND")) formatex(g_szModels[V_PR_HAND], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_PR_HAND")) formatex(g_szModels[P_PR_HAND], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_GR_HAND")) formatex(g_szModels[V_GR_HAND], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_GR_HAND")) formatex(g_szModels[P_GR_HAND], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_GLOVE_RED")) formatex(g_szModels[V_GLOVE_RED], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_GLOVE_RED")) formatex(g_szModels[P_GLOVE_RED], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_GLOVE_BLUE")) formatex(g_szModels[V_GLOVE_BLUE], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_GLOVE_BLUE")) formatex(g_szModels[P_GLOVE_BLUE], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "BALL")) formatex(g_szModels[BALL], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_HAND_BALL")) formatex(g_szModels[V_HAND_BALL], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_RS")) formatex(g_szModels[V_RS], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "PARACHUTE")) formatex(g_szModels[PARACHUTE], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_ICE")) formatex(g_szModels[V_ICE], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_ICE")) formatex(g_szModels[P_ICE], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_SYRINGE")) formatex(g_szModels[V_SYRINGE], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_SHARPENING")) formatex(g_szModels[V_SHARPENING], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_SHARPENING")) formatex(g_szModels[P_SHARPENING], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_SCREWDRIVER")) formatex(g_szModels[V_SCREWDRIVER], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_SCREWDRIVER")) formatex(g_szModels[P_SCREWDRIVER], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_BALISONG")) formatex(g_szModels[V_BALISONG], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_BALISONG")) formatex(g_szModels[P_BALISONG], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_CRIMSON")) formatex(g_szModels[V_CRIMSON], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_CRIMSON")) formatex(g_szModels[P_CRIMSON], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_STILETO")) formatex(g_szModels[V_STILETO], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_STILETO")) formatex(g_szModels[P_STILETO], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "V_KATANA")) formatex(g_szModels[V_KATANA], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "P_KATANA")) formatex(g_szModels[P_KATANA], charsmax(g_szModels[]), szValue);
else if(equal(szKey, "PRISONER")) formatex(g_szPlayerModels[PRISONER], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "GUARD")) formatex(g_szPlayerModels[GUARD], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "CHIEF")) formatex(g_szPlayerModels[CHIEF], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_1")) formatex(g_szPlayerModels[BUY_MODEL_1], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_2")) formatex(g_szPlayerModels[BUY_MODEL_2], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_3")) formatex(g_szPlayerModels[BUY_MODEL_3], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_4")) formatex(g_szPlayerModels[BUY_MODEL_4], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_5")) formatex(g_szPlayerModels[BUY_MODEL_5], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_6")) formatex(g_szPlayerModels[BUY_MODEL_6], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_7")) formatex(g_szPlayerModels[BUY_MODEL_7], charsmax(g_szPlayerModels[]), szValue);
else if(equal(szKey, "BUY_MODEL_8")) formatex(g_szPlayerModels[BUY_MODEL_8], charsmax(g_szPlayerModels[]), szValue);
}
case SELECT_SOUNDS:
{
if(equal(szKey, "HAND_HIT")) formatex(g_szSounds[HAND_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "HAND_SLASH")) formatex(g_szSounds[HAND_SLASH], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "HAND_DEPLOY")) formatex(g_szSounds[HAND_DEPLOY], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BATON_DEPLOY")) formatex(g_szSounds[BATON_DEPLOY], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BATON_HITWALL")) formatex(g_szSounds[BATON_HITWALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BATON_SLASH")) formatex(g_szSounds[BATON_SLASH], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BATON_STAB")) formatex(g_szSounds[BATON_STAB], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BATON_HIT")) formatex(g_szSounds[BATON_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BOUNCE_BALL")) formatex(g_szSounds[BOUNCE_BALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "GRAB_BALL")) formatex(g_szSounds[GRAB_BALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "KICK_BALL")) formatex(g_szSounds[KICK_BALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "WHITLE_START")) formatex(g_szSounds[WHITLE_START], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "WHITLE_END")) formatex(g_szSounds[WHITLE_END], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "CROWD")) formatex(g_szSounds[CROWD], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "GLOVES_HIT")) formatex(g_szSounds[GLOVES_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SUPER_HIT")) formatex(g_szSounds[SUPER_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "GONG")) formatex(g_szSounds[GONG], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "GRENADE_FROST_EXPLOSION")) formatex(g_szSounds[GRENADE_FROST_EXPLOSION], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "FREEZE_PLAYER")) formatex(g_szSounds[FREEZE_PLAYER], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "DEFROST_PLAYER")) formatex(g_szSounds[DEFROST_PLAYER], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SHARPENING_DEPLOY")) formatex(g_szSounds[SHARPENING_DEPLOY], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SHARPENING_HITWALL")) formatex(g_szSounds[SHARPENING_HITWALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SHARPENING_SLASH")) formatex(g_szSounds[SHARPENING_SLASH], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SHARPENING_HIT")) formatex(g_szSounds[SHARPENING_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SCREWDRIVER_DEPLOY")) formatex(g_szSounds[SCREWDRIVER_DEPLOY], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SCREWDRIVER_HITWALL")) formatex(g_szSounds[SCREWDRIVER_HITWALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SCREWDRIVER_SLASH")) formatex(g_szSounds[SCREWDRIVER_SLASH], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "SCREWDRIVER_HIT")) formatex(g_szSounds[SCREWDRIVER_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BALISONG_DEPLOY")) formatex(g_szSounds[BALISONG_DEPLOY], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BALISONG_HITWALL")) formatex(g_szSounds[BALISONG_HITWALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BALISONG_SLASH")) formatex(g_szSounds[BALISONG_HITWALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BALISONG_HIT")) formatex(g_szSounds[BALISONG_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "KATANA_DEPLOY")) formatex(g_szSounds[KATANA_DEPLOY], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "KATANA_HITWALL")) formatex(g_szSounds[KATANA_HITWALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "KATANA_SLASH")) formatex(g_szSounds[KATANA_SLASH], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "KATANA_HIT")) formatex(g_szSounds[KATANA_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "CRIMSON_DEPLOY")) formatex(g_szSounds[CRIMSON_DEPLOY], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "CRIMSON_HITWALL")) formatex(g_szSounds[CRIMSON_HITWALL], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "CRIMSON_SLASH")) formatex(g_szSounds[CRIMSON_SLASH], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "CRIMSON_HIT")) formatex(g_szSounds[CRIMSON_HIT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "PRISON_RIOT")) formatex(g_szSounds[PRISON_RIOT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "BUTTON_SOUND")) formatex(g_szSounds[BUTTON_SOUND], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "MEGA_JUMP")) formatex(g_szSounds[MEGA_JUMP], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "FREEDAY_START")) formatex(g_szSounds[FREEDAY_START], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "FREEDAY_END")) formatex(g_szSounds[FREEDAY_END], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "START_END")) formatex(g_szSounds[START_END], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "RIGHT")) formatex(g_szSounds[RIGHT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "COUNT")) formatex(g_szSounds[COUNT], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "GIVE_HOOK")) formatex(g_szSounds[GIVE_HOOK], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "DUEL_SOUND")) formatex(g_szSounds[DUEL_SOUND], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "GLOBAL_1")) formatex(g_szSounds[GLOBAL_1], charsmax(g_szSounds[]), szValue);
else if(equal(szKey, "GLOBAL_2")) formatex(g_szSounds[GLOBAL_2], charsmax(g_szSounds[]), szValue);
}
case SELECT_SPRITES:
{
if(equal(szKey, "HAS_BALL")) formatex(g_szSprites[HAS_BALL], charsmax(g_szSprites[]), szValue);
else if(equal(szKey, "DUEL_RED")) formatex(g_szSprites[DUEL_RED], charsmax(g_szSprites[]), szValue);
else if(equal(szKey, "DUEL_BLUE")) formatex(g_szSprites[DUEL_BLUE], charsmax(g_szSprites[]), szValue);
else if(equal(szKey, "MEGA_JUMP_LINE")) formatex(g_szSprites[MEGA_JUMP_LINE], charsmax(g_szSprites[]), szValue);
else if(equal(szKey, "ICEG")) formatex(g_szSprites[ICEG], charsmax(g_szSprites[]), szValue);
}
}
}
fclose(iFile);
}
jbe_quest_read_file(szCfgFile[])
{
new aDataQuestRead[DATA_QUEST], szBuffer[128];
g_aQuestList = ArrayCreate(DATA_QUEST);
new file = fopen(szCfgFile, "rt");
while(file && !feof(file))
{
fgets(file, szBuffer, charsmax(szBuffer));
if(szBuffer[0] == ';' || szBuffer[0] == '#') continue;
parse
(
szBuffer,
aDataQuestRead[QUEST_TEXT], charsmax(aDataQuestRead[QUEST_TEXT]),
aDataQuestRead[QUEST_ANSWER], charsmax(aDataQuestRead[QUEST_ANSWER]),
aDataQuestRead[QUEST_PRIZE], charsmax(aDataQuestRead[QUEST_PRIZE])
);
if(!aDataQuestRead[QUEST_TEXT]) continue;
ArrayPushArray(g_aQuestList, aDataQuestRead);
}
g_iQuestListSize = ArraySize(g_aQuestList);
fclose(file);
}
/*===== <- Файлы <- =====*///}
/*===== -> Модели -> =====*///{
models_precache()
{
g_pModelGlass = engfunc(EngFunc_PrecacheModel, "models/glassgibs.mdl");
engfunc(EngFunc_PrecacheModel, "models/rpgrocket.mdl");
engfunc(EngFunc_PrecacheModel, g_szModels[V_PR_HAND]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_PR_HAND]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_GR_HAND]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_GR_HAND]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_GLOVE_RED]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_GLOVE_RED]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_GLOVE_BLUE]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_GLOVE_BLUE]);
engfunc(EngFunc_PrecacheModel, g_szModels[BALL]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_HAND_BALL]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_RS]);
engfunc(EngFunc_PrecacheModel, g_szModels[PARACHUTE]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_ICE]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_ICE]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_SYRINGE]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_SHARPENING]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_SHARPENING]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_SCREWDRIVER]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_SCREWDRIVER]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_BALISONG]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_BALISONG]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_CRIMSON]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_CRIMSON]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_STILETO]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_STILETO]);
engfunc(EngFunc_PrecacheModel, g_szModels[V_KATANA]);
engfunc(EngFunc_PrecacheModel, g_szModels[P_KATANA]);
// Модели игроков
for(new i = 0, szBuffer[64]; i < 11; i++)
{
formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", g_szPlayerModels[i], g_szPlayerModels[i]);
engfunc(EngFunc_PrecacheModel, szBuffer);
}
}
/*===== <- Модели <- =====*///}
/*===== -> Звуки -> =====*///{
sounds_precache()
{
engfunc(EngFunc_PrecacheSound, g_szSounds[HAND_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[HAND_SLASH]);
engfunc(EngFunc_PrecacheSound, g_szSounds[HAND_DEPLOY]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BATON_DEPLOY]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BATON_HITWALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BATON_SLASH]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BATON_STAB]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BATON_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BOUNCE_BALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[GRAB_BALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[KICK_BALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[WHITLE_START]);
engfunc(EngFunc_PrecacheSound, g_szSounds[WHITLE_END]);
engfunc(EngFunc_PrecacheSound, g_szSounds[CROWD]);
engfunc(EngFunc_PrecacheSound, g_szSounds[GLOVES_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SUPER_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[GONG]);
engfunc(EngFunc_PrecacheSound, g_szSounds[GRENADE_FROST_EXPLOSION]);
engfunc(EngFunc_PrecacheSound, g_szSounds[FREEZE_PLAYER]);
engfunc(EngFunc_PrecacheSound, g_szSounds[DEFROST_PLAYER]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SHARPENING_DEPLOY]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SHARPENING_HITWALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SHARPENING_SLASH]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SHARPENING_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SCREWDRIVER_DEPLOY]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SCREWDRIVER_HITWALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SCREWDRIVER_SLASH]);
engfunc(EngFunc_PrecacheSound, g_szSounds[SCREWDRIVER_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BALISONG_DEPLOY]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BALISONG_HITWALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BALISONG_SLASH]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BALISONG_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[CRIMSON_DEPLOY]);
engfunc(EngFunc_PrecacheSound, g_szSounds[CRIMSON_HITWALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[CRIMSON_SLASH]);
engfunc(EngFunc_PrecacheSound, g_szSounds[CRIMSON_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[KATANA_DEPLOY]);
engfunc(EngFunc_PrecacheSound, g_szSounds[KATANA_HITWALL]);
engfunc(EngFunc_PrecacheSound, g_szSounds[KATANA_SLASH]);
engfunc(EngFunc_PrecacheSound, g_szSounds[KATANA_HIT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[PRISON_RIOT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[BUTTON_SOUND]);
engfunc(EngFunc_PrecacheSound, g_szSounds[MEGA_JUMP]);
engfunc(EngFunc_PrecacheSound, g_szSounds[FREEDAY_START]);
engfunc(EngFunc_PrecacheSound, g_szSounds[FREEDAY_END]);
engfunc(EngFunc_PrecacheSound, g_szSounds[START_END]);
engfunc(EngFunc_PrecacheSound, g_szSounds[RIGHT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[COUNT]);
engfunc(EngFunc_PrecacheSound, g_szSounds[GIVE_HOOK]);
engfunc(EngFunc_PrecacheGeneric, g_szSounds[DUEL_SOUND]);
engfunc(EngFunc_PrecacheGeneric, g_szSounds[GLOBAL_1]);
engfunc(EngFunc_PrecacheGeneric, g_szSounds[GLOBAL_2]);
for(new i = 0, szBuffer[64]; i <= 10; i++)
{
formatex(szBuffer, charsmax(szBuffer), "jb_engine/countdown_new/%d.wav", i);
engfunc(EngFunc_PrecacheSound, szBuffer);
}
for(new i; i < sizeof(g_szHookSound); i++) precache_sound(g_szHookSound[i][1]);
}
/*===== <- Звуки <- =====*///}
/*===== -> Спрайты -> =====*///{
sprites_precache()
{
g_pSpriteWave = engfunc(EngFunc_PrecacheModel, g_szSprites[ICEG]);
g_pSpriteBeam = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr");
g_pSpriteBall = engfunc(EngFunc_PrecacheModel, g_szSprites[HAS_BALL]);
g_pSpriteDuelRed = engfunc(EngFunc_PrecacheModel, g_szSprites[DUEL_RED]);
g_pSpriteDuelBlue = engfunc(EngFunc_PrecacheModel, g_szSprites[DUEL_BLUE]);
g_pSpriteMegaJump = engfunc(EngFunc_PrecacheModel, g_szSprites[MEGA_JUMP_LINE]);
for(new i = 0; i < sizeof(g_szHookSprite); i++) g_iHookSpriteEff[i] = precache_model(g_szHookSprite[i][1]);
for(new i = 0; i < sizeof(g_szHookEnd); i++) g_iHookSpriteEnd[i] = precache_model(g_szHookEnd[i][1]);
}
/*===== <- Спрайты <- =====*///}
/*===== -> Основное -> =====*///{
main_init()
{
register_plugin("[MJB] Core", VERSION, "Sanlerus & Hellmit & qkvander");
register_dictionary("jbe_core.txt");
g_iSyncMainInformer = CreateHudSyncObj();
g_iSyncSecondInformer = CreateHudSyncObj();
g_iSyncSoccerScore = CreateHudSyncObj();
g_iSyncStatusText = CreateHudSyncObj();
g_iSyncDuelInformer = CreateHudSyncObj();
g_iSyncConnected = CreateHudSyncObj();
g_iMaxPlayers = get_maxplayers();
// set_task(QUEST_TIME, "jbe_create_quest");
register_think(CAMERA_CLASSNAME, "fw_camera_think");
#if defined PING_CONTROL
set_task(15.0, "jbe_check_ping", TASK_PING_CHECK, _, _, "b");
#endif
}
public client_putinserver(id)
{
SetBit(g_iBitUserConnected, id);
SetBit(g_iBitUserRoundSound, id);
SetBit(g_iBitUserRoundEffect, id);
SetBit(g_iBitUserButtonSound, id);
g_iDublJump[id] = false;
g_iPlayersNum[g_iUserTeam[id]]++;
new iFlags = get_user_flags(id);
if(iFlags & g_iFlagAccess[VIP]) SetBit(g_iBitUserVip, id);
if(iFlags & g_iFlagAccess[SUPER_VIP]) SetBit(g_iBitUserSuperVip, id);
if(iFlags & g_iFlagAccess[PREMIUM]) SetBit(g_iBitUserPremium, id);
if(iFlags & g_iFlagAccess[ADMIN]) SetBit(g_iBitUserAdmin, id);
if(iFlags & g_iFlagAccess[SUPER_ADMIN]) SetBit(g_iBitUserSuperAdmin, id);
if(iFlags & g_iFlagAccess[BOSS]) SetBit(g_iBitUserBoss, id);
if(iFlags & g_iFlagAccess[MANAGING]) SetBit(g_iBitUserManaging, id);
if(iFlags & g_iFlagAccess[IRON]) SetBit(g_iBitUserIron, id);
if(iFlags & g_iFlagAccess[OWNER]) SetBit(g_iBitUserOwner, id);
if(iFlags & g_iFlagAccess[HOOK]) SetBit(g_iBitUserHook, id);
if(iFlags & g_iFlagAccess[PREFIX]) SetBit(g_iBitUserPrefix, id);
if(iFlags & g_iFlagAccess[MODELM]) SetBit(g_iBitUserModels, id);
if(iFlags & g_iFlagAccess[BUILD]) SetBit(g_iBitUserBuild, id);
if(iFlags & g_iFlagAccess[OAIO]) SetBit(g_iBitUserOAIO, id);
g_iInfoColor[id][0] = g_iInformer[COLOR_RED];
g_iInfoColor[id][1] = g_iInformer[COLOR_GREEN];
g_iInfoColor[id][2] = g_iInformer[COLOR_BLUE];
set_task(1.0, "jbe_main_informer", id+TASK_SHOW_INFORMER_MAIN, _, _, "b");
set_task(1.0, "jbe_second_informer", id+TASK_SHOW_INFORMER_SECOND, _, _, "b");
set_task(1.0, "jbe_player_gametime", id+TASK_PLAYER_GAMETIME, _, _, "b");
// set_task(1.0, "jbe_player_connect", id+TASK_PLAYER_CONNECT);
g_iSvetoforColor[id] = true;
g_iSvetoforSound = true;
g_iChiefSteps[id] = true;
g_iUserWarning[id] = 0;
g_iUserQuest[id][ENABLED] = false;
g_iUserQuest[id][INDEX] = -1;
g_iUserQuest[id][PROGRESS] = 0;
// LVL SYSTEM
new iParams[1]; iParams[0] = id;
get_user_authid(id, g_szSteamID[id], charsmax(g_szSteamID[]));
format(g_szQuery, charsmax(g_szQuery), "SELECT * FROM `%s` WHERE (`%s`.`SteamID` = '%s')", g_szRankTable, g_szRankTable, g_szSteamID[id]);
SQL_ThreadQuery(g_hDBTuple, "SQL_QueryConnection", g_szQuery, iParams, sizeof iParams);
}
public client_disconnect(id)
{
if(IsNotSetBit(g_iBitUserConnected, id)) return;
ClearBit(g_iBitUserConnected, id);
remove_task(id+TASK_SHOW_INFORMER_MAIN);
remove_task(id+TASK_SHOW_INFORMER_SECOND);
remove_task(id+TASK_PLAYER_GAMETIME);
if(task_exists(id+TASK_PLAYER_CONNECT)) remove_task(id+TASK_PLAYER_CONNECT);
g_iUserCamera[id] = false;
g_iPlayersNum[g_iUserTeam[id]]--;
if(IsSetBit(g_iBitUserAlive, id))
{
g_iAlivePlayersNum[g_iUserTeam[id]]--;
ClearBit(g_iBitUserAlive, id);
}
if(id == g_iChiefId)
{
g_iChiefId = 0;
g_iChiefStatus = 3;
g_szChiefName = "";
if(g_bSoccerGame) remove_task(id+TASK_SHOW_SOCCER_SCORE);
g_iChiefSteps[id] = false;
}
if(IsSetBit(g_iBitUserFree, id)) jbe_sub_user_free(id);
if(IsSetBit(g_iBitUserWanted, id)) jbe_sub_user_wanted(id);
if(g_iUserTeam[id] == 1)
{
g_iBonusHealth[id] = 0;
g_iBonusMoney[id] = 0;
g_iBonusGravSpeed[id] = 0;
g_iBonusGrenade[id] = 0;
g_iBonusGlock[id] = 0;
g_iBonusBayonet[id] = 0;
}
g_iUserTeam[id] = 0;
g_iUserMoney[id] = 0;
g_iUserSkin[id] = 0;
g_iBitKilledUsers[id] = 0;
g_iDublJump[id] = false;
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(IsNotSetBit(g_iBitKilledUsers[i], id)) continue;
ClearBit(g_iBitKilledUsers[i], id);
}
if(g_eUserCostumes[id][COSTUMES]) jbe_set_user_costumes(id, 0);
if(task_exists(id+TASK_CHANGE_MODEL)) remove_task(id+TASK_CHANGE_MODEL);
ClearBit(g_iBitUserModel, id);
if(task_exists(id+TASK_CHANGE_MODEL)) remove_task(id+TASK_CHANGE_MODEL);
ClearBit(g_iBitUserFreeNextRound, id);
ClearBit(g_iBitUserVoice, id);
ClearBit(g_iBitUserVoiceNextRound, id);
ClearBit(g_iBitUserHookNextRound, id);
ClearBit(g_iBitBlockMenu, id);
ClearBit(g_iBitUserVoteDayMode, id);
ClearBit(g_iBitUserDayModeVoted, id);
if(IsSetBit(g_iBitUserSoccer, id))
{
ClearBit(g_iBitUserSoccer, id);
if(id == g_iSoccerBallOwner)
{
CREATE_KILLPLAYERATTACHMENTS(id);
set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
g_iSoccerBallOwner = 0;
}
if(g_bSoccerGame) remove_task(id+TASK_SHOW_SOCCER_SCORE);
}
ClearBit(g_iBitUserBoxing, id);
ClearBit(g_iBitSharpening, id);
ClearBit(g_iBitScrewdriver, id);
ClearBit(g_iBitBalisong, id);
ClearBit(g_iBitBayonet, id);
ClearBit(g_iBitWeaponStatus, id);
ClearBit(g_iBitLatchkey, id);
ClearBit(g_iBitKokain, id);
ClearBit(g_iBitUserBuild, id);
ClearBit(g_iBitUserOAIO, id);
if(task_exists(id+TASK_REMOVE_SYRINGE)) remove_task(id+TASK_REMOVE_SYRINGE);
ClearBit(g_iBitFrostNade, id);
ClearBit(g_iBitUserFrozen, id);
if(task_exists(id+TASK_FROSTNADE_DEFROST)) remove_task(id+TASK_FROSTNADE_DEFROST);
ClearBit(g_iBitClothingGuard, id);
ClearBit(g_iBitClothingType, id);
ClearBit(g_iBitHingJump, id);
ClearBit(g_iBitFastRun, id);
ClearBit(g_iBitDoubleJump, id);
ClearBit(g_iBitRandomGlow, id);
ClearBit(g_iBitAutoBhop, id);
ClearBit(g_iBitDoubleDamage, id);
ClearBit(g_iBitParachute, id);
ClearBit(g_iBitMegaJump, id);
ClearBit(g_iBitAura, id);
ClearBit(g_iBitUserHook, id);
g_iUserParaUse[id] = false;
g_iUserParaEnt[id] = 0;
if(IsSetBit(g_iBitUserVip, id))
{
ClearBit(g_iBitUserVip, id);
g_iVipRespawn[id] = 0;
g_iVipMoney[id] = 0;
g_iVipHealth[id] = 0;
g_iVipSpeed[id] = 0;
g_iVipFree[id] = 0;
g_iVipKnife[id] = 0;
}
if(IsSetBit(g_iBitUserSuperVip, id))
{
ClearBit(g_iBitUserSuperVip, id);
g_iSuperVipRespawn[id] = 0;
g_iSuperVipMoney[id] = 0;
g_iSuperVipHealth[id] = 0;
g_iSuperVipGravity[id] = 0;
g_iSuperVipGlow[id] = 0;
g_iSuperVipSharpening[id] = 0;
g_iSuperVipAutobhop[id] = 0;
}
if(IsSetBit(g_iBitUserAdmin, id))
{
g_iDSpawn[id] = 0;
g_iDGren[id] = 0;
g_iDHealth[id] = 0;
g_iDGrav[id] = 0;
g_iDSpeed[id] = 0;
}
if(IsSetBit(g_iBitUserPremium, id))
{
ClearBit(g_iBitUserPremium, id);
g_iPremiumRespawn[id] = 0;
g_iPremiumHolo[id] = 0;
g_iPremiumDamage[id] = 0;
g_iPremiumGm[id] = 0;
g_iPremiumMask[id] = 0;
g_iPremiumMegaJump[id] = 0;
g_iPremiumWanted[id] = 0;
g_iPremiumStileto[id] = 0;
}
ClearBit(g_iBitUserAdmin, id);
if(IsSetBit(g_iBitUserSuperAdmin, id))
{
ClearBit(g_iBitUserSuperAdmin, id);
g_iSuperAdminTrail[id] = false;
if(task_exists(id+INDEX_POSITION_TASK)) remove_task(id+INDEX_POSITION_TASK);
g_iSuperAdminGrenade[id] = 0;
g_iSuperAdminInvis[id] = 0;
g_iSuperAdminMoney[id] = 0;
g_iSuperAdminDj[id] = 0;
}
if(IsSetBit(g_iBitUserBoss, id))
{
ClearBit(g_iBitUserBoss, id);
g_iBossAura[id] = 0;
g_iBossBayonet[id] = 0;
if(task_exists(id+TASK_BOSS_AURA)) remove_task(id+TASK_BOSS_AURA);
}
if(IsSetBit(g_iBitUserOwner, id))
{
ClearBit(g_iBitUserOwner, id);
g_iOwnerMoney[id] = 0;
}
ClearBit(g_iBitUserIron, id);
ClearBit(g_iBitUserManaging, id);
ClearBit(g_iBitUserOwner, id);
ClearBit(g_iBitHookRound, id);
if(IsSetBit(g_iBitUserHookTime, id))
{
ClearBit(g_iBitUserHookTime, id);
g_iHookTimeNum--;
}
ClearBit(g_iBitUserPrefix, id);
ClearBit(g_iBitUserModels, id);
if(g_iDuelStatus && IsSetBit(g_iBitUserDuel, id)) jbe_duel_ended(id);
#if defined OLD_WEAPONS_GUARD
ClearBit(g_iBitUserAutoWeapon, id);
#endif
g_iSvetoforColor[id] = false;
if(g_bGuardStatus && g_iBossStatusTrue[1] == id)
{
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_CHAT_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_BOSS_OFF_SHOP_ON");
g_iBossStatusTrue[1] = 0;
g_bGuardStatus = false;
}
if(g_bShopStatus && g_iBossStatusTrue[0] == id)
{
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_CHAT_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_BOSS_OFF_GUARD_ON");
g_iBossStatusTrue[0] = 0;
g_bShopStatus = false;
}
if(g_bHookStatus && g_iBossStatusTrue[2] == id)
{
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_CHAT_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_BOSS_OFF_HOOK_ON");
g_iBossStatusTrue[2] = 0;
g_bHookStatus = false;
}
// LVL SYSTEM
format(g_szQuery, charsmax(g_szQuery), "UPDATE `%s` SET `user_level` = '%i', `user_exp` = '%i' WHERE `%s`.`SteamID` = '%s';", g_szRankTable, g_iLevel[id], g_iExpName[id], g_szRankTable, g_szSteamID[id]);
SQL_ThreadQuery(g_hDBTuple, "ThreadQueryHandler", g_szQuery);
g_iLevel[id] = 0;
g_iExpName[id] = 0;
g_iPlayer_GameTime[id] = 0;
g_iUserModel[id] = 0;
g_iUserBet[id] = 0;
g_iUserBetId[id] = 0;
ClearBit(g_iBitUserBet, id);
}
#if defined PING_CONTROL
public jbe_check_ping()
{
static i, iPing, iLoss;
for(i = 1; i <= g_iMaxPlayers; i++)
{
if(IsNotSetBit(g_iBitUserConnected, i)) continue;
get_user_ping(i, iPing, iLoss);
if(iPing > float(g_iAllCvars[MAX_PING]))
{
if(++g_iUserWarning[i] >= 3)
{
new szName[32];
get_user_name(i, szName, charsmax(szName));
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_CHAT_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_KICK_OF_PING", szName);
server_cmd("kick #%d ^"Вы были кикнуты из-за плохого соединения^"", get_user_userid(i));
}
}
else if(g_iUserWarning[i]) g_iUserWarning[i]--;
}
}
#endif
public jbe_player_gametime(pPlayer)
{
pPlayer -= TASK_PLAYER_GAMETIME;
g_iPlayer_GameTime[pPlayer]++;
}
/*===== <- Основное <- =====*///}
/*===== -> Квары -> =====*///{
cvars_init()
{
register_cvar("jbe_pn_price_sharpening", "250");
register_cvar("jbe_pn_price_screwdriver", "200");
register_cvar("jbe_pn_price_balisong", "320");
register_cvar("jbe_pn_price_stileto", "600");
register_cvar("jbe_pn_price_katana", "777");
register_cvar("jbe_pn_price_usp", "400");
register_cvar("jbe_pn_price_deagle", "420");
register_cvar("jbe_pn_price_hegrenade", "120");
register_cvar("jbe_pn_price_latchkey", "150");
register_cvar("jbe_pn_price_flashbang", "80");
register_cvar("jbe_pn_price_kokain", "200");
register_cvar("jbe_pn_price_stimulator", "230");
register_cvar("jbe_pn_price_frostnade", "170");
register_cvar("jbe_pn_price_armor", "70");
register_cvar("jbe_pn_price_clothing_guard", "300");
register_cvar("jbe_pn_price_fast_run", "240");
register_cvar("jbe_pn_price_double_jump", "280");
register_cvar("jbe_pn_price_random_glow", "100");
register_cvar("jbe_pn_price_auto_bhop", "180");
register_cvar("jbe_pn_price_double_damage", "250");
register_cvar("jbe_pn_price_low_gravity", "220");
register_cvar("jbe_pn_price_close_case", "250");
register_cvar("jbe_pn_price_free_day", "300");
register_cvar("jbe_pn_price_resolution_voice", "400");
register_cvar("jbe_pn_price_prank_prisoner", "350");
register_cvar("jbe_pn_price_parachute", "200");
register_cvar("jbe_gr_price_stimulator", "230");
register_cvar("jbe_gr_price_random_glow", "100");
register_cvar("jbe_gr_price_kokain", "200");
register_cvar("jbe_gr_price_double_jump", "280");
register_cvar("jbe_gr_price_fast_run", "240");
register_cvar("jbe_gr_price_low_gravity", "250");
register_cvar("jbe_gr_price_parachute", "200");
register_cvar("jbe_free_day_id_time", "120");
register_cvar("jbe_free_day_all_time", "240");
register_cvar("jbe_team_balance", "4");
register_cvar("jbe_day_mode_vote_time", "15");
register_cvar("jbe_restart_game_time", "40");
register_cvar("jbe_riot_start_money", "30");
register_cvar("jbe_killed_guard_money", "40");
register_cvar("jbe_killed_chief_money", "65");
register_cvar("jbe_round_free_money", "10");
register_cvar("jbe_round_alive_money", "20");
register_cvar("jbe_last_prisoner_money", "300");
register_cvar("jbe_last_prisoner_exp", "10");
register_cvar("jbe_night_discount_shop", "5");
register_cvar("jbe_max_ping", "150");
register_cvar("jbe_last_prisoner_timer", "20");
register_cvar("jbe_bonus_health_round", "2");
register_cvar("jbe_bonus_health_num", "70");
register_cvar("jbe_bonus_money_round", "3");
register_cvar("jbe_bonus_money_num", "150");
register_cvar("jbe_bonus_gravspeed_round", "3");
register_cvar("jbe_bonus_grenade_round", "4");
register_cvar("jbe_bonus_glock_round", "6");
register_cvar("jbe_bonus_bayonet_round", "5");
register_cvar("jbe_respawn_players_num", "3");
register_cvar("jbe_vip_discount_shop", "10");
register_cvar("jbe_vip_respawn_num", "2");
register_cvar("jbe_vip_money_round", "3");
register_cvar("jbe_vip_money_num", "200");
register_cvar("jbe_vip_health_round", "2");
register_cvar("jbe_vip_health_num", "70");
register_cvar("jbe_vip_speed_round", "3");
register_cvar("jbe_vip_free_round", "5");
register_cvar("jbe_vip_voice_round", "1");
register_cvar("jbe_super_vip_discount_shop", "20");
register_cvar("jbe_super_vip_respawn_num", "2");
register_cvar("jbe_super_vip_money_round", "4");
register_cvar("jbe_super_vip_money_num", "260");
register_cvar("jbe_super_vip_health_round", "3");
register_cvar("jbe_super_vip_health_num", "80");
register_cvar("jbe_super_vip_gravity_round", "3");
register_cvar("jbe_super_vip_glow_round", "2");
register_cvar("jbe_super_vip_sharpening_round", "4");
register_cvar("jbe_super_vip_autobhop_round", "3");
register_cvar("jbe_d_spawn", "1");
register_cvar("jbe_d_gren", "2");
register_cvar("jbe_d_health", "2");
register_cvar("jbe_d_grav", "1");
register_cvar("jbe_d_speed", "1");
register_cvar("jbe_premium_respawn_num", "5");
register_cvar("jbe_premium_holo_round", "2");
register_cvar("jbe_premium_damage_round", "3");
register_cvar("jbe_premium_gm_round", "5");
register_cvar("jbe_premium_mask_round", "3");
register_cvar("jbe_premium_mega_jump_round", "2");
register_cvar("jbe_premium_wanted_round", "3");
register_cvar("jbe_premium_stileto_round", "3");
register_cvar("jbe_boss_aura_round", "2");
register_cvar("jbe_boss_bayonet_round", "3");
register_cvar("jbe_super_admin_grenade_round", "3");
register_cvar("jbe_super_admin_invis_round", "2");
register_cvar("jbe_super_admin_money_round", "4");
register_cvar("jbe_super_admin_money_num", "260");
register_cvar("jbe_super_admin_dj", "2");
register_cvar("jbe_owner_money_num", "100000");
register_cvar("jbe_owner_money_round", "5");
// LVL SYSTEM
register_cvar("jbe_sql_host", "");
register_cvar("jbe_sql_user", "");
register_cvar("jbe_sql_password", "");
register_cvar("jbe_sql_database", "");
register_cvar("jbe_sql_table", "");
register_cvar("jbe_rank_kill_ct", "2");
register_cvar("jbe_rank_kill_chief", "4");
register_cvar("jbe_rank_riot_start", "1");
register_cvar("jbe_rank_kill_tt", "1");
register_cvar("jbe_rank_kill_wanted", "2");
register_cvar("jbe_rank_money_bonus", "5");
register_cvar("jbe_rank_health_bonus", "5");
register_cvar("jbe_rank_players_need", "8");
}
public plugin_cfg()
{
new szIp[25];
get_user_ip(0, szIp, charsmax(szIp), 1);
new szCfgDir[64];
get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
server_cmd("exec %s/jb_engine/cfg/shop_cvars.cfg", szCfgDir);
server_cmd("exec %s/jb_engine/cfg/all_cvars.cfg", szCfgDir);
server_cmd("exec %s/jb_engine/cfg/lvl_cvars.cfg", szCfgDir);
server_cmd("exec %s/jb_engine/cfg/donate_cvars.cfg", szCfgDir);
set_task(0.1, "jbe_get_cvars");
}
public jbe_get_cvars()
{
g_iShopCvars[SHARPENING] = get_cvar_num("jbe_pn_price_sharpening");
g_iShopCvars[SCREWDRIVER] = get_cvar_num("jbe_pn_price_screwdriver");
g_iShopCvars[BALISONG] = get_cvar_num("jbe_pn_price_balisong");
g_iShopCvars[STILETO] = get_cvar_num("jbe_pn_price_stileto");
g_iShopCvars[KATANA] = get_cvar_num("jbe_pn_price_katana");
g_iShopCvars[USP] = get_cvar_num("jbe_pn_price_usp");
g_iShopCvars[DEAGLE] = get_cvar_num("jbe_pn_price_deagle");
g_iShopCvars[HEGRENADE] = get_cvar_num("jbe_pn_price_hegrenade");
g_iShopCvars[LATCHKEY] = get_cvar_num("jbe_pn_price_latchkey");
g_iShopCvars[FLASHBANG] = get_cvar_num("jbe_pn_price_flashbang");
g_iShopCvars[KOKAIN] = get_cvar_num("jbe_pn_price_kokain");
g_iShopCvars[STIMULATOR] = get_cvar_num("jbe_pn_price_stimulator");
g_iShopCvars[FROSTNADE] = get_cvar_num("jbe_pn_price_frostnade");
g_iShopCvars[ARMOR] = get_cvar_num("jbe_pn_price_armor");
g_iShopCvars[CLOTHING_GUARD] = get_cvar_num("jbe_pn_price_clothing_guard");
g_iShopCvars[FAST_RUN] = get_cvar_num("jbe_pn_price_fast_run");
g_iShopCvars[DOUBLE_JUMP] = get_cvar_num("jbe_pn_price_double_jump");
g_iShopCvars[RANDOM_GLOW] = get_cvar_num("jbe_pn_price_random_glow");
g_iShopCvars[AUTO_BHOP] = get_cvar_num("jbe_pn_price_auto_bhop");
g_iShopCvars[DOUBLE_DAMAGE] = get_cvar_num("jbe_pn_price_double_damage");
g_iShopCvars[LOW_GRAVITY] = get_cvar_num("jbe_pn_price_low_gravity");
g_iShopCvars[CLOSE_CASE] = get_cvar_num("jbe_pn_price_close_case");
g_iShopCvars[FREE_DAY_SHOP] = get_cvar_num("jbe_pn_price_free_day");
g_iShopCvars[RESOLUTION_VOICE] = get_cvar_num("jbe_pn_price_resolution_voice");
g_iShopCvars[PRANK_PRISONER] = get_cvar_num("jbe_pn_price_prank_prisoner");
g_iShopCvars[PARACHUTE_PN] = get_cvar_num("jbe_pn_price_parachute");
g_iShopCvars[STIMULATOR_GR] = get_cvar_num("jbe_gr_price_stimulator");
g_iShopCvars[RANDOM_GLOW_GR] = get_cvar_num("jbe_gr_price_random_glow");
g_iShopCvars[KOKAIN_GR] = get_cvar_num("jbe_gr_price_kokain");
g_iShopCvars[DOUBLE_JUMP_GR] = get_cvar_num("jbe_gr_price_double_jump");
g_iShopCvars[FAST_RUN_GR] = get_cvar_num("jbe_gr_price_fast_run");
g_iShopCvars[LOW_GRAVITY_GR] = get_cvar_num("jbe_gr_price_low_gravity");
g_iShopCvars[PARACHUTE_GR] = get_cvar_num("jbe_gr_price_parachute");
g_iAllCvars[FREE_DAY_ID] = get_cvar_num("jbe_free_day_id_time");
g_iAllCvars[FREE_DAY_ALL] = get_cvar_num("jbe_free_day_all_time");
g_iAllCvars[TEAM_BALANCE] = get_cvar_num("jbe_team_balance");
g_iAllCvars[DAY_MODE_VOTE_TIME] = get_cvar_num("jbe_day_mode_vote_time");
g_iAllCvars[RESTART_GAME_TIME] = get_cvar_num("jbe_restart_game_time");
g_iAllCvars[RIOT_START_MONEY] = get_cvar_num("jbe_riot_start_money");
g_iAllCvars[KILLED_GUARD_MONEY] = get_cvar_num("jbe_killed_guard_money");
g_iAllCvars[KILLED_CHIEF_MONEY] = get_cvar_num("jbe_killed_chief_money");
g_iAllCvars[ROUND_FREE_MONEY] = get_cvar_num("jbe_round_free_money");
g_iAllCvars[ROUND_ALIVE_MONEY] = get_cvar_num("jbe_round_alive_money");
g_iAllCvars[LAST_PRISONER_MONEY] = get_cvar_num("jbe_last_prisoner_money");
g_iAllCvars[LAST_PRISONER_EXP] = get_cvar_num("jbe_last_prisoner_exp");
g_iAllCvars[NIGHT_DISCOUNT_SHOP] = get_cvar_num("jbe_night_discount_shop");
g_iAllCvars[MAX_PING] = get_cvar_num("jbe_max_ping");
g_iAllCvars[LAST_PR_TIMER] = get_cvar_num("jbe_last_prisoner_timer");
g_iAllCvars[BONUS_HEALTH_ROUND] = get_cvar_num("jbe_bonus_health_round");
g_iAllCvars[BONUS_HEALTH_NUM] = get_cvar_num("jbe_bonus_health_num");
g_iAllCvars[BONUS_MONEY_ROUND] = get_cvar_num("jbe_bonus_money_round");
g_iAllCvars[BONUS_MONEY_NUM] = get_cvar_num("jbe_bonus_money_num");
g_iAllCvars[BONUS_GRAVSPEED_ROUND] = get_cvar_num("jbe_bonus_gravspeed_round");
g_iAllCvars[BONUS_GRENADE_ROUND] = get_cvar_num("jbe_bonus_grenade_round");
g_iAllCvars[BONUS_GLOCK_ROUND] = get_cvar_num("jbe_bonus_glock_round");
g_iAllCvars[BONUS_BAYONET_ROUND] = get_cvar_num("jbe_bonus_bayonet_round");
g_iDonateCvars[RESPAWN_PLAYERS_NUM] = get_cvar_num("jbe_respawn_players_num");
g_iDonateCvars[VIP_DISCOUNT_SHOP] = get_cvar_num("jbe_vip_discount_shop");
g_iDonateCvars[VIP_RESPAWN_NUM] = get_cvar_num("jbe_vip_respawn_num");
g_iDonateCvars[VIP_MONEY_ROUND] = get_cvar_num("jbe_vip_money_round");
g_iDonateCvars[VIP_MONEY_NUM] = get_cvar_num("jbe_vip_money_num");
g_iDonateCvars[VIP_HEALTH_ROUND] = get_cvar_num("jbe_vip_health_round");
g_iDonateCvars[VIP_HEALTH_NUM] = get_cvar_num("jbe_vip_health_num");
g_iDonateCvars[VIP_SPEED_ROUND] = get_cvar_num("jbe_vip_speed_round");
g_iDonateCvars[VIP_FREE_ROUND] = get_cvar_num("jbe_vip_free_round");
g_iDonateCvars[VIP_VOICE_ROUND] = get_cvar_num("jbe_vip_voice_round");
g_iDonateCvars[SUPER_VIP_DISCOUNT_SHOP] = get_cvar_num("jbe_super_vip_discount_shop");
g_iDonateCvars[SUPER_VIP_RESPAWN_NUM] = get_cvar_num("jbe_super_vip_respawn_num");
g_iDonateCvars[SUPER_VIP_MONEY_ROUND] = get_cvar_num("jbe_super_vip_money_round");
g_iDonateCvars[SUPER_VIP_MONEY_NUM] = get_cvar_num("jbe_super_vip_money_num");
g_iDonateCvars[SUPER_VIP_HEALTH_ROUND] = get_cvar_num("jbe_super_vip_health_round");
g_iDonateCvars[SUPER_VIP_HEALTH_NUM] = get_cvar_num("jbe_super_vip_health_num");
g_iDonateCvars[SUPER_VIP_GRAVITY_ROUND] = get_cvar_num("jbe_super_vip_gravity_round");
g_iDonateCvars[SUPER_VIP_GLOW_ROUND] = get_cvar_num("jbe_super_vip_glow_round");
g_iDonateCvars[SUPER_VIP_SHARPENING_ROUND] = get_cvar_num("jbe_super_vip_sharpening_round");
g_iDonateCvars[SUPER_VIP_AUTOBHOP_ROUND] = get_cvar_num("jbe_super_vip_autobhop_round");
g_iDonateCvars[D_SPAWN] = get_cvar_num("jbe_d_spawn");
g_iDonateCvars[D_GREN] = get_cvar_num("jbe_d_gren");
g_iDonateCvars[D_HEALTH] = get_cvar_num("jbe_d_health");
g_iDonateCvars[D_GRAV] = get_cvar_num("jbe_d_grav");
g_iDonateCvars[D_SPEED] = get_cvar_num("jbe_d_speed");
g_iDonateCvars[PREMIUM_RESPAWN_NUM] = get_cvar_num("jbe_premium_respawn_num");
g_iDonateCvars[PREMIUM_HOLO_ROUND] = get_cvar_num("jbe_premium_holo_round");
g_iDonateCvars[PREMIUM_DAMAGE_ROUND] = get_cvar_num("jbe_premium_damage_round");
g_iDonateCvars[PREMIUM_GM_ROUND] = get_cvar_num("jbe_premium_gm_round");
g_iDonateCvars[PREMIUM_MASK_ROUND] = get_cvar_num("jbe_premium_mask_round");
g_iDonateCvars[PREMIUM_MEGA_JUMP_ROUND] = get_cvar_num("jbe_premium_mega_jump_round");
g_iDonateCvars[PREMIUM_WANTED_ROUND] = get_cvar_num("jbe_premium_wanted_round");
g_iDonateCvars[PREMIUM_STILETO_ROUND] = get_cvar_num("jbe_super_vip_sharpening_round");
g_iDonateCvars[BOSS_AURA_ROUND] = get_cvar_num("jbe_boss_aura_round");
g_iDonateCvars[BOSS_BAYONET_ROUND] = get_cvar_num("jbe_boss_bayonet_round");
g_iDonateCvars[SUPER_ADMIN_GRENADE_ROUND] = get_cvar_num("jbe_super_admin_grenade_round");
g_iDonateCvars[SUPER_ADMIN_INVIS_ROUND] = get_cvar_num("jbe_super_admin_invis_round");
g_iDonateCvars[SUPER_ADMIN_MONEY_ROUND] = get_cvar_num("jbe_super_admin_money_round");
g_iDonateCvars[SUPER_ADMIN_MONEY_NUM] = get_cvar_num("jbe_super_admin_money_num");
g_iDonateCvars[SUPER_ADMIN_DJ] = get_cvar_num("jbe_super_admin_dj");
g_iDonateCvars[OWNER_MONEY_NUM] = get_cvar_num("jbe_owner_money_num");
g_iDonateCvars[OWNER_MONEY_ROUND] = get_cvar_num("jbe_owner_money_round");
// LVL SYSTEM
g_iLevelCvars[KILL_CT] = get_cvar_num("jbe_rank_kill_ct");
g_iLevelCvars[KILL_CHIEF] = get_cvar_num("jbe_rank_kill_chief");
g_iLevelCvars[RIOT_START] = get_cvar_num("jbe_rank_riot_start");
g_iLevelCvars[KILL_TT] = get_cvar_num("jbe_rank_kill_tt");
g_iLevelCvars[KILL_WT] = get_cvar_num("jbe_rank_kill_wanted");
g_iLevelCvars[MONEY_BONUS] = get_cvar_num("jbe_rank_money_bonus");
g_iLevelCvars[HEALTH_BONUS] = get_cvar_num("jbe_rank_health_bonus");
g_iLevelCvars[PLAYERS_NEED] = get_cvar_num("jbe_rank_players_need");
get_cvar_string("jbe_sql_host", g_szRankHost, charsmax(g_szRankHost));
get_cvar_string("jbe_sql_user", g_szRankUser, charsmax(g_szRankUser));
get_cvar_string("jbe_sql_password", g_szRankPassword, charsmax(g_szRankPassword));
get_cvar_string("jbe_sql_database", g_szRankDataBase, charsmax(g_szRankDataBase));
get_cvar_string("jbe_sql_table", g_szRankTable, charsmax(g_szRankTable));
new szError[512], iErrorCode;
g_hDBTuple = SQL_MakeDbTuple(g_szRankHost, g_szRankUser, g_szRankPassword, g_szRankDataBase);
g_hConnect = SQL_Connect(g_hDBTuple, iErrorCode, szError, charsmax(szError));
new Handle:Queries;
new Query[1024];
format(Query, 1023, "CREATE TABLE IF NOT EXISTS `%s` (SteamID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_level INT NOT NULL, user_exp INT NOT NULL)", g_szRankTable);
Queries = SQL_PrepareQuery(g_hConnect, Query);
if(!SQL_Execute(Queries))
{
SQL_QueryError(Queries, szError, charsmax(szError));
}
SQL_FreeHandle(Queries);