Пользователь
- Сообщения
- 23
- Реакции
- 3
- Ошибка
-
L 01/25/2021 - 07:58:44: [AMXX] Run time error 4: index out of bounds
L 01/25/2021 - 07:58:44: [AMXX] [0] checkpoints.sma::fw_TouchCheckpoint (line 525)
- ОС
- Linux
- Amx Mod X
-
AMX Mod X 1.10.0.5406
- Билд
-
ReHLDS version: 3.8.0.703-dev
- ReGamedll
-
ReGameDLL version: 5.20.0.492-dev
- Версия Metamod
-
Metamod-r v1.3.0.128, API (5:13)
- Список метамодулей
-
[ 1] Reunion RUN - reunion_mm_i386.so v0.1.0.137 ini Start Never
[ 2] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 3] Revoice RUN - revoice_mm_i386.so v0.1.0.34 ini Start Never
[ 4] SafeNameAndChat RUN - safenameandchat.so v1.1 ini ANY ANY
[ 5] AMX Mod X RUN - amxmodx_mm_i386.so v1.10.0.5406 ini Start ANY
[ 6] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 7] CSX RUN - csx_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[ 8] FakeMeta RUN - fakemeta_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[ 9] MySQL RUN - mysql_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[10] CStrike RUN - cstrike_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[11] Fun RUN - fun_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[12] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[13] ReAPI RUN - reapi_amxx_i386.so v5.19.0.210-dev pl5 ANY Never
[14] Engine RUN - engine_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[15] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl5 ANY Never
- Список плагинов
-
-
- Автор плагина
- Psycrow
- Версия плагина
- 0.9
- Исходный код
-
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>
#include <color_print>
#include <reapi>
#include <acp>
#define PLUGIN "Checkpoints"
#define VERSION "0.9"
#define AUTHOR "Psycrow"
#define MODEL_CHECKPOINT "models/checkpoints/checkpoints.mdl"
#define SOUND_CHECKPOINT "checkpoints/checkpoint.wav"
#define CLASSNAME_CHECKPOINT "checkpoint"
#define MAX_CHECKPOINTS 32
#define TASK_RETURN_PLAYER 100
#define TASK_SECONDS 40401
#define RETURN_PLAYER_TRY_TIMES 10
#define CHECKPOINT_RADIUS 70.0
//#define DHUD_POSITION random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.78, 1, 1.0, 1.0, 0.5, 1.0
#define CHAT_PREFIX "Чекпоинты"
#define ACCESS_FLAG ADMIN_RCON
#define COLOR_EFFECT // color transition effect in checkpoints
//#define DUELS_ENABLED // for https://dev-cs.ru/resources/136/
enum _:CvarList
{
CVAR_CHECKPOINT_REWARD, // common reward, 0 - none
CVAR_CHECKPOINT_KOEF, // common reward multiplier
CVAR_CHECKPOINT_FINISH_REWARD[3], // rewards for finish, 0 - none
CVAR_CHECKPOINT_TELEPORT, // teleport after spawn
CVAR_CHECKPOINT_LIGHT, // 0 - none, 1 - light
CVAR_CHECKPOINT_GLOW, // glow size
CVAR_CHECKPOINT_SKIP_LIMIT, // the number of checkpoints that can't be skipped
CVAR_CHECKPOINT_MAXMONEY
}
new
g_iCheckpointsNum,
g_iCheckpoint[MAX_CHECKPOINTS],
g_iWasChanged,
HamHook: g_fwTouch,
g_iRoundEnd,
g_iPlrCompleted[MAX_PLAYERS + 1],
g_iFinishedNum,
g_iCheckpointKey,
g_iDuelStart,
g_pCvars[CvarList]
new g_iSecond[MAX_PLAYERS + 1];
public plugin_precache()
{
precache_model(MODEL_CHECKPOINT)
precache_sound(SOUND_CHECKPOINT)
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_menu("Checkpoint Menu", MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_0,
"handler_checkpoint_menu")
register_concmd("say /checkpoint", "show_checkpoint_menu", ACCESS_FLAG, "-Open Checkpoint Spawn Menu")
register_concmd("checkpointsmenu", "show_checkpoint_menu", ACCESS_FLAG, "-Open Checkpoint Spawn Menu")
register_dictionary("checkpoints.txt")
g_pCvars[CVAR_CHECKPOINT_REWARD] = register_cvar("cv_checkpoint_reward", "300")
g_pCvars[CVAR_CHECKPOINT_KOEF] = register_cvar("cv_checkpoint_money_koef", "1")
g_pCvars[CVAR_CHECKPOINT_FINISH_REWARD][0] = register_cvar("cv_checkpoint_money_last_first", "5000")
g_pCvars[CVAR_CHECKPOINT_FINISH_REWARD][1] = register_cvar("cv_checkpoint_money_last_second", "3000")
g_pCvars[CVAR_CHECKPOINT_FINISH_REWARD][2] = register_cvar("cv_checkpoint_money_last_third", "1500")
g_pCvars[CVAR_CHECKPOINT_TELEPORT] = register_cvar("cv_checkpoint_teleport", "0")
g_pCvars[CVAR_CHECKPOINT_LIGHT] = register_cvar("cv_checkpoint_light_effect", "1")
g_pCvars[CVAR_CHECKPOINT_GLOW] = register_cvar("cv_checkpoint_glow_effect", "10.0")
g_pCvars[CVAR_CHECKPOINT_SKIP_LIMIT] = register_cvar("cv_checkpoint_skip_limit", "0")
g_pCvars[CVAR_CHECKPOINT_MAXMONEY] = register_cvar("cv_checkpoint_money_max", "999999")
register_clcmd("gostartduelstreettmruchecking", "duel_check");
register_event("HLTV", "startround", "a", "1=0", "2=0")
g_iCheckpointKey = engfunc(EngFunc_AllocString, CLASSNAME_CHECKPOINT)
load_checkpoints()
}
/*** Checkpoints functions ***/
load_checkpoints()
{
new szMap[48]
get_mapname(szMap, 47)
add(szMap, 47, ".ini")
new szDirCfg[128], iDir, szFile[128]
get_configsdir(szDirCfg, 127)
add(szDirCfg, 127, "/checkpoints")
iDir = open_dir(szDirCfg, szFile, 126)
if (!iDir)
{
server_print("[%s] Checkpoints were not loaded", PLUGIN)
return
}
while (next_file(iDir, szFile, 126))
{
if (szFile[0] == '.')
continue
if (equali(szMap, szFile))
{
format(szFile, 126, "%s/%s", szDirCfg, szFile)
load_spawn(szFile)
break
}
}
close_dir(iDir)
}
load_spawn(const szFile[])
{
new iFile = fopen(szFile, "rt")
if (!iFile)
{
server_print("[%s] Unable to open %s.", PLUGIN, szFile)
return
}
new szLineData[512], szOrigin[3][24], Float: fOrigin[3], szAngle[24], Float: fAngle
while (iFile && !feof(iFile))
{
fgets(iFile, szLineData, 511)
if (!szLineData[0] || szLineData[0] == ';')
continue
parse(szLineData, szOrigin[0], 23, szOrigin[1], 23, szOrigin[2], 23, szAngle, 23)
fOrigin[0] = str_to_float(szOrigin[0])
fOrigin[1] = str_to_float(szOrigin[1])
fOrigin[2] = str_to_float(szOrigin[2])
fAngle = str_to_float(szAngle)
create_checkpoint(fOrigin, fAngle)
}
fclose(iFile)
switch (g_iCheckpointsNum)
{
case 0: server_print("[%s] Checkpoints were not loaded", PLUGIN)
case 1: server_print("[%s] Loaded one checkpoint", PLUGIN)
default: server_print("[%s] Loaded %d checkpoints", PLUGIN, g_iCheckpointsNum)
}
set_finish_bodypart()
}
create_checkpoint(const Float: fOrigin[3], const Float: fAngle)
{
static infotarget, iEventsRegistration
if (!infotarget)
infotarget = engfunc(EngFunc_AllocString, "info_target")
if (g_iCheckpointsNum == MAX_CHECKPOINTS)
return 1
new iEnt = engfunc(EngFunc_CreateNamedEntity, infotarget)
if (pev_valid(iEnt) != 2)
return 1
engfunc(EngFunc_SetOrigin, iEnt, fOrigin)
engfunc(EngFunc_SetModel, iEnt, MODEL_CHECKPOINT)
engfunc(EngFunc_SetSize, iEnt, Float: {-CHECKPOINT_RADIUS, -CHECKPOINT_RADIUS, -CHECKPOINT_RADIUS},
Float: {CHECKPOINT_RADIUS, CHECKPOINT_RADIUS, CHECKPOINT_RADIUS})
new Float: fAngles[3]
fAngles[1] = fAngle
set_pev(iEnt, pev_angles, fAngles)
set_pev(iEnt, pev_solid, SOLID_TRIGGER)
set_pev(iEnt, pev_movetype, MOVETYPE_NOCLIP)
set_pev(iEnt, pev_classname, CLASSNAME_CHECKPOINT)
set_pev(iEnt, pev_impulse, g_iCheckpointKey)
set_pev(iEnt, pev_framerate, 1.0)
set_pev(iEnt, pev_colormap, random(256))
#if defined COLOR_EFFECT
set_pev(iEnt, pev_nextthink, get_gametime() + 0.05)
#endif
new Float: fGlow = get_pcvar_float(g_pCvars[CVAR_CHECKPOINT_GLOW])
if (fGlow > 0.0)
{
new Float: fColors[3]
fColors[0] = random(256) + 0.0
fColors[1] = random(256) + 0.0
fColors[2] = random(256) + 0.0
set_pev(iEnt, pev_renderfx, kRenderFxGlowShell)
set_pev(iEnt, pev_renderamt, fGlow)
set_pev(iEnt, pev_rendercolor, fColors)
}
if (get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_LIGHT]))
set_pev(iEnt, pev_effects, EF_DIMLIGHT)
g_iCheckpoint[g_iCheckpointsNum++] = iEnt
if (!iEventsRegistration)
{
register_event("HLTV", "fw_RoundStart", "a", "1=0", "2=0")
register_event("SendAudio", "fw_RoundEnd", "a", "2&%!MRAD_rounddraw")
register_event("SendAudio", "fw_RoundEnd", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "fw_RoundEnd", "a", "2&%!MRAD_ctwin")
g_fwTouch = RegisterHamFromEntity(Ham_Touch, iEnt, "fw_TouchCheckpoint")
#if defined COLOR_EFFECT
RegisterHamFromEntity(Ham_Think, iEnt, "fw_ThinkCheckpoint")
#endif
if (g_iWasChanged)
DisableHamForward(g_fwTouch)
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
fw_RoundStart()
iEventsRegistration = 1
}
return 0
}
set_finish_bodypart()
{
if (!g_iCheckpointsNum)
return
for (new i = 0; i < g_iCheckpointsNum - 1; i++)
{
set_pev(g_iCheckpoint[i], pev_body, 0)
set_pev(g_iCheckpoint[i], pev_skin, 0)
}
set_pev(g_iCheckpoint[g_iCheckpointsNum - 1], pev_body, 1)
set_pev(g_iCheckpoint[g_iCheckpointsNum - 1], pev_skin, 1)
}
save_checkpoints()
{
new szDirCfg[128], szFile[128]
get_configsdir(szDirCfg, 127)
add(szDirCfg, 127, "/checkpoints")
get_mapname(szFile, 127)
format(szFile, 127, "%s/%s.ini", szDirCfg, szFile)
if (!dir_exists(szDirCfg))
mkdir(szDirCfg)
delete_file(szFile)
if (!g_iCheckpointsNum)
return 0
for (new i = 0; i < g_iCheckpointsNum; i++)
{
new szText[128], Float: fOrigin[3], Float: fAngles[3]
pev(g_iCheckpoint[i], pev_origin, fOrigin)
pev(g_iCheckpoint[i], pev_angles, fAngles)
format(szText, 127, "^"%f^" ^"%f^" ^"%f^" ^"%f^"",
fOrigin[0], fOrigin[1], fOrigin[2], fAngles[2])
write_file(szFile, szText, -1)
}
return 0
}
/*** Menu handlers ***/
public show_checkpoint_menu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
display_checkpoint_menu(id)
return PLUGIN_HANDLED
}
display_checkpoint_menu(const id)
{
new szMenu[512], iLen, iKeys = MENU_KEY_0
iLen = formatex(szMenu, 511, "\r%L \y[\w%i/%i\y]^n^n",
LANG_PLAYER, "MENU_HEADER", g_iCheckpointsNum, MAX_CHECKPOINTS)
if (g_iCheckpointsNum != MAX_CHECKPOINTS)
{
iLen += formatex(szMenu[iLen], 511 - iLen, "\r1. \w%L^n", id, "MENU_SPAWN")
iKeys |= MENU_KEY_1
}
if (g_iCheckpointsNum)
{
iLen += formatex(szMenu[iLen], 511 - iLen, "\r2. \w%L^n", id, "MENU_REMOVE")
iLen += formatex(szMenu[iLen], 511 - iLen, "\r3. \w%L^n", id, "MENU_REMOVE_ALL")
iKeys |= MENU_KEY_2 | MENU_KEY_3
}
if (g_iWasChanged)
{
iLen += formatex(szMenu[iLen], 511 - iLen, "^n\r4. \w%L^n", id, "MENU_SAVE")
iKeys |= MENU_KEY_4
}
iLen += formatex(szMenu[iLen], 511 - iLen, "^n\r0. \w%L", id, "MENU_EXIT")
show_menu(id, iKeys, szMenu, -1, "Checkpoint Menu")
}
public handler_checkpoint_menu(id, key)
{
if (key == 9)
return PLUGIN_CONTINUE
switch (key + 1)
{
case 1:
{
new Float: fOrigin[3], Float: fAngles[3]
fm_get_aim_origin(id, fOrigin)
fOrigin[2] += CHECKPOINT_RADIUS
pev(id, pev_v_angle, fAngles)
if (!create_checkpoint(fOrigin, fAngles[1]))
{
set_finish_bodypart()
g_iWasChanged = 1
DisableHamForward(g_fwTouch)
if (check_stuck(fOrigin, id))
color_print(id, "!y[!g%s!y]!y %L", CHAT_PREFIX, LANG_PLAYER, "CP_CAN_STUCK")
}
}
case 2:
{
engfunc(EngFunc_RemoveEntity, g_iCheckpoint[--g_iCheckpointsNum])
if (g_iCheckpointsNum)
set_finish_bodypart()
g_iWasChanged = 1
DisableHamForward(g_fwTouch)
}
case 3:
{
for (new i = 0; i < g_iCheckpointsNum; i++)
engfunc(EngFunc_RemoveEntity, g_iCheckpoint[i])
g_iCheckpointsNum = 0
g_iWasChanged = 1
DisableHamForward(g_fwTouch)
}
case 4:
{
if (!save_checkpoints())
{
color_print(id, "!y[!g%s!y]!y %L", CHAT_PREFIX, LANG_PLAYER, "CP_SAVED")
g_iWasChanged = 0
if (g_iCheckpointsNum)
EnableHamForward(g_fwTouch)
arrayset(g_iPlrCompleted, -1, 33)
g_iFinishedNum = 0
}
}
}
display_checkpoint_menu(id)
return PLUGIN_CONTINUE
}
/*** Global events ***/
public startround()
{
g_iDuelStart = 0
for (new i = 1; i <= MaxClients; i++)
{
if (!is_user_connected(i))
continue;
g_iSecond[i] = 0;
remove_task(i + TASK_SECONDS);
}
}
public fw_RoundStart()
{
g_iRoundEnd = 0
arrayset(g_iPlrCompleted, -1, 33)
g_iFinishedNum = 0
}
public fw_RoundEnd()
{
g_iRoundEnd = 1
}
/*** Player events ***/
public client_putinserver(id)
{
g_iPlrCompleted[id] = -1
}
public client_disconnected(id)
{
g_iSecond[id] = 0;
remove_task(id + TASK_SECONDS);
g_iPlrCompleted[id] = -1;
}
public fw_PlayerSpawn(const iPlayer)
{
remove_task(iPlayer + TASK_RETURN_PLAYER)
if (get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_TELEPORT]) && g_iPlrCompleted[iPlayer] > -1)
{
if (return_player(iPlayer, g_iPlrCompleted[iPlayer]))
set_task(0.5, "task_teleport_player", iPlayer + TASK_RETURN_PLAYER,
.flags = "a", .repeat = RETURN_PLAYER_TRY_TIMES)
}
if (get_member(iPlayer, m_iTeam) == TEAM_CT)
set_task(1.0, "Task_Seconds", iPlayer + TASK_SECONDS, _, _, "b");
}
public Task_Seconds(id)
{
id -= TASK_SECONDS;
if (!is_user_connected(id) || !is_user_alive(id) || get_member(id, m_iTeam) != TEAM_CT)
{
remove_task(id + TASK_SECONDS);
return;
}
g_iSecond[id]++;
}
public task_return_player(id)
{
new iPlayer = id - TASK_RETURN_PLAYER
if (g_iPlrCompleted[iPlayer] >= g_iCheckpointsNum)
g_iPlrCompleted[iPlayer] = -1
if (!is_user_alive(iPlayer))
remove_task(id)
if (!return_player(iPlayer, g_iPlrCompleted[iPlayer]))
{
print_skip_ad(iPlayer)
remove_task(id)
}
}
public task_teleport_player(id)
{
new iPlayer = id - TASK_RETURN_PLAYER
if (!is_user_alive(iPlayer))
remove_task(id)
if (g_iPlrCompleted[iPlayer] >= g_iCheckpointsNum || !return_player(iPlayer, g_iPlrCompleted[iPlayer]))
{
remove_task(id)
return
}
}
/*** Checkpoint's actions ***/
public fw_TouchCheckpoint(const iEnt, const iPlayer)
{
static i, iPos
if (g_iRoundEnd || pev(iEnt, pev_impulse) != g_iCheckpointKey)
return HAM_IGNORED
if (g_iDuelStart)
return HAM_IGNORED
for (i = 0; i < g_iCheckpointsNum; i++)
{
if (g_iCheckpoint[i] == iEnt)
{
iPos = i
break
}
}
if (g_iPlrCompleted[iPlayer] >= iPos || !is_user_alive(iPlayer))
return HAM_IGNORED
new iSkipLimit = get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_SKIP_LIMIT])
if (iSkipLimit && iPos - g_iPlrCompleted[iPlayer] > iSkipLimit)
{
if (!return_player(iPlayer, g_iPlrCompleted[iPlayer]))
print_skip_ad(iPlayer)
else if (!task_exists(iPlayer + TASK_RETURN_PLAYER))
set_task(0.5, "task_return_player", iPlayer + TASK_RETURN_PLAYER,
.flags = "a", .repeat = RETURN_PLAYER_TRY_TIMES)
return HAM_IGNORED
}
client_cmd(iPlayer, "spk %s", SOUND_CHECKPOINT)
new iReward
//set_dhudmessage(DHUD_POSITION)
if (iPos == g_iCheckpointsNum - 1)
{
new endings[30]
get_ending(g_iSecond[iPlayer], "секунду", "секунды", "секунд", endings, charsmax(endings))
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.78, 1, 1.0, 2.5, 0.5, 1.0)
show_dhudmessage(iPlayer, "%L", LANG_PLAYER, "CP_FINISH", ++g_iFinishedNum, g_iSecond[iPlayer], endings);
new szPlayerName[24]
get_user_name(iPlayer, szPlayerName, 23)
if (szPlayerName[22] != 0)
szPlayerName[22] = szPlayerName[21] = szPlayerName[20] = '.'
color_print(0, "!y[!g%s!y]!y %L", CHAT_PREFIX, LANG_PLAYER, "FINISH_AD",prefix(iPlayer), szPlayerName, g_iFinishedNum, g_iSecond[iPlayer], endings);
if (g_iFinishedNum > 3)
{
iReward = get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_REWARD])
if (get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_KOEF]))
iReward *= iPos + 1
}
else
iReward = get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_FINISH_REWARD][g_iFinishedNum - 1])
}
else
{
iReward = get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_REWARD])
if (get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_KOEF]))
iReward *= iPos + 1
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.78, 1, 1.0, 1.0, 0.5, 1.0)
show_dhudmessage(iPlayer, "%L", LANG_PLAYER, "CP_COMPLETE", iPos + 1, iReward);
}
if (iReward)
{
new iCurMoney = cs_get_user_money(iPlayer),
iMaxMoney = get_pcvar_num(g_pCvars[CVAR_CHECKPOINT_MAXMONEY])
if (iCurMoney + iReward > iMaxMoney)
iReward = iMaxMoney - iCurMoney
cs_set_user_money(iPlayer, iCurMoney + iReward)
if ((iPos == g_iCheckpointsNum - 1) && !(g_iFinishedNum > 3))
{
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.81, 1, 1.0, 2.5, 0.5, 1.0)
show_dhudmessage(iPlayer, "%L", LANG_PLAYER, "BONUS_F", iReward);
}
//color_print(iPlayer, "!y[!g%s!y]!y %L", CHAT_PREFIX, LANG_PLAYER, "CP_REWARD", iReward)
}
g_iPlrCompleted[iPlayer] = iPos
return HAM_IGNORED
}
public fw_ThinkCheckpoint(const iEnt)
{
static iTopColor
if (pev(iEnt, pev_impulse) != g_iCheckpointKey)
return HAM_IGNORED
iTopColor = pev(iEnt, pev_colormap)
iTopColor = iTopColor == 255 ? 0 : iTopColor + 1
set_pev(iEnt, pev_colormap, iTopColor)
set_pev(iEnt, pev_nextthink, get_gametime() + 0.05)
return HAM_IGNORED
}
/*** Other stuff ***/
return_player(const iPlayer, const iPos)
{
new Float: fOrigin[3], Float: fAngles[3]
if (iPos == -1)
{
new iSpawnEnts[32], iSpawnNum, iSpawn = -1
while ((iSpawn = engfunc(EngFunc_FindEntityByString, iSpawn, "classname", "info_player_start")))
iSpawnEnts[iSpawnNum++] = iSpawn
pev(iSpawnEnts[random(iSpawnNum)], pev_origin, fOrigin)
}
else
{
pev(g_iCheckpoint[iPos], pev_origin, fOrigin)
pev(g_iCheckpoint[iPos], pev_angles, fAngles)
}
if (check_stuck(fOrigin, iPlayer))
return 1
engfunc(EngFunc_SetOrigin, iPlayer, fOrigin)
set_pev(iPlayer, pev_angles, fAngles)
set_pev(iPlayer, pev_fixangle, 1)
set_pev(iPlayer, pev_velocity, Float: {0.0, 0.0, 0.0})
return 0
}
print_skip_ad(const iPlayer)
{
new szPlayerName[18]
get_user_name(iPlayer, szPlayerName, 17)
if (szPlayerName[16] != 0)
szPlayerName[16] = szPlayerName[15] = szPlayerName[14] = '.'
color_print(0, "!y[!g%s!y]!y %L", CHAT_PREFIX, LANG_PLAYER, "CP_RETURN", szPlayerName)
}
bool: check_stuck(const Float: fOrigin[3], const iPlayer)
{
static tr
engfunc(EngFunc_TraceHull, fOrigin, fOrigin, 0, HULL_HUMAN, iPlayer, tr)
if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))
return false
return true
}
/*** Duel forwards ***/
public duel_check()
{
g_iDuelStart = 1
for(new i = 1; i <= get_maxplayers(); i++)
{
if(is_user_alive(i))
{
remove_task(i + TASK_RETURN_PLAYER)
}
}
}
stock get_ending ( num, const a[], const b[], const c[], output[], output_len )
{
new iNum100 = num%100, iNum10 = num%10
if ( iNum100 >= 5 && iNum100 <= 20 || iNum10 == 0 || iNum10 >= 5 && iNum10 <= 9 ) format ( output, output_len, "%s", c )
else if ( iNum10 == 1 ) format ( output, output_len, "%s", a )
else if ( iNum10 >= 2 && iNum10 <= 4 ) format ( output, output_len, "%s", b )
}
Доброго времени суток, флудит в лог ошибкой, проблема именно в строке
но никак не получается исправить, подскажите пожалуйста, на что обратить внимание.
Код:
g_iPlrCompleted[iPlayer] >= iPos
В этой теме было размещено решение! Перейти к решению.