PDA

Просмотр полной версии : [Вопрос] Ошибки с краша



DmX
19.01.2016, 00:08
[21:16:54] [debug] Run time error 4: "Array index out of bounds"
[21:16:54] [debug] Accessing element at index 65535 past array upper bound 100
[21:16:54] [debug] AMX backtrace:
[21:16:54] [debug] #0 0017f7d8 in public cmd_skick (playerid=0, params[]=@0023b520 "") at C:\Users\1\Desktop\serv RPG\gamemodes\siman.pwn:20263
[21:16:54] [debug] #1 native DC_CMD () from dc_cmd.so
[21:16:54] [debug] #2 0000041c in public OnPlayerCommandText (playerid=0, cmdtext[]=@0023b4ec "/skick 2 ;*)") at C:\Users\1\Desktop\ Serv RPG\pawno\include\dc_cmd.inc:62

Что значит? )

$continue$
19.01.2016, 00:29
20263 строку в студию
И прочитайте урок (http://pro-pawn.ru/showthread.php?12957)

DmX
19.01.2016, 00:43
mysql_function_query(MYSQL_ARG, string, false, "", "");

$continue$
19.01.2016, 00:48
mysql_function_query(MYSQL_ARG, string, false, "", "");

:grin:
Значит, показывай всю функцию/команду, которая высше функции mysql_function_query

DmX
19.01.2016, 00:51
CMD:kick(playerid, params[])
{
if(GetPVarInt(playerid, "Logged")) return true;
new string[124];
if(PlayerInfo[playerid][pAdmin] < 1) return true;
//if(GetPVarInt(playerid, "adminlogged") != 1)return error(playerid, "Ты не авторизован в Админ-панели, используйте команду: /aduty");
if(sscanf(params, "us[36]", params[0],params[1])) return command(playerid,"/kick [ID персонажа] [Причина]");
if(playerid == params[0]) return error(playerid,"Нельзя кикнуть самого себя");
if(PlayerInfo[params[0]][pAdmin] == 6) return error(playerid,"Иди в очко гастарбайтер ебанный");
if(!IsPlayerConnected(params[0])) return error(playerid,"Этот персонаж не в сети");
if(GetPVarInt(params[0], "Logged")) return error(playerid,"Этот персонаж не в игре");
SetPlayerCameraPos(params[0], 2016.5560,-1466.5215,63.9992),SetPlayerCameraLookAt(params[0], 1893.2737,-1391.4126,13.5703);
TogglePlayerControllable(params[0],false);
for(new i = 0; i < 100; i++) SCM(params[0],0xFFFFFFAA, " ");
format(string, sizeof(string), "Игрок %s был(а) кикнут(а) %sом %s, Причина: %s",PlayerInfo[params[0]][pName],GetAdmName(playerid),PlayerInfo[playerid][pName],params[1]),ToAll(0xFF6347FF, string);
Kick.(params[0]);
PlayerInfo[playerid][pKicki]++;
mysql_format(MYSQL_ARG, string, sizeof(string),"UPDATE `account` SET `Kicki` = '%d' WHERE BINARY `Name` = '%s'",
PlayerInfo[playerid][pKicki],
PlayerInfo[playerid][pName]);
mysql_function_query(MYSQL_ARG, string, false, "", "");
Vzlom(playerid);
return true;
}

$continue$
19.01.2016, 01:22
хз, что тут может выходить за пределы массива, но я переписал чуток команду:


CMD:kick(playerid, params[])
{
if(GetPVarInt(playerid, "Logged") || PlayerInfo[playerid][pAdmin] < 1)
return 0;
/*if(GetPVarInt(playerid, "adminlogged") != 1)
return SendClientMessage(playerid, цвет укажи, "Ты не авторизован в Админ-панели, используйте команду: /aduty"); */
if(sscanf(params, "us[144]", params[0],params[1]))
return SendClientMessage(playerid,/* цвет укажи */, "/kick [ID персонажа] [Причина]");
if(playerid == params[0])
return SendClientMessage(playerid,/* цвет укажи */, "Нельзя кикнуть самого себя");
if(!IsPlayerConnected(params[0]) || GetPVarInt(params[0], "Logged"))
return SendClientMessage(playerid, /* цвет укажи */, "Этот персонаж не в сети/игре");
if(PlayerInfo[params[0]][pAdmin] == 6)
return SendClientMessage(playerid, /* цвет укажи */, "Иди в очко гастарбайтер ебанный");
SetPlayerCameraPos(params[0], 2016.5560,-1466.5215,63.9992);
SetPlayerCameraLookAt(params[0], 1893.2737,-1391.4126,13.5703);
TogglePlayerControllable(params[0], false);
for(new i = 0; i < 100; i++)
{
SendClientMessage(params[0], 0xFFFFFFAA, " ");
}
static const fmt_str[] = "Игрок %s был(а) кикнут(а) %sом %s, Причина: %s";
new str[(sizeof(fmt_str) - 8) + (MAX_PLAYER_NAME * 2) + 144 + 1];
format(str, sizeof(str), fmt_str, PlayerInfo[params[0]][pName], GetAdmName(playerid), PlayerInfo[playerid][pName], params[1]);
SendClientMessageToAll(0xFF6347FF, string);
Kick(params[0]);
PlayerInfo[playerid][pKicki]++;
static const query[] = "UPDATE `account` SET `Kicki` = '%d' WHERE BINARY `Name` = '%s'";
str[0] = "\0";
mysql_format(MYSQL_ARG, str, sizeof(str), query, PlayerInfo[playerid][pKicki], PlayerInfo[playerid][pName]);
mysql_function_query(MYSQL_ARG, str, false, "", "");
Vzlom(playerid);
return 1;
}

Так же советую для отчиски чата использовать метод от Daniel'a Cortez'a (http://pro-pawn.ru/showthread.php?10231-cc-%28ZCMD-DC_CMD%29)

DmX
19.01.2016, 01:57
CMD:skick(playerid, params[])
{
if(GetPVarInt(playerid, "Logged")) return true;
new string[124];
if(PlayerInfo[playerid][pAdmin] < 3) return true;
if(GetPVarInt(playerid, "adminlogged") != 1)return error(playerid, "Ты не авторизован в Админ-панели, используйте команду: /aduty");
if(sscanf(params, "us[24]", params[0],params[1])) return command(playerid,"/skick [ID персонажа] [Причина]");
if(playerid == params[0]) return error(playerid,"Нельзя кикнуть самого себя");
if(PlayerInfo[params[0]][pAdmin] == 6) return error(playerid,"Иди в очко гастарбайтер ебанный");
if(!IsPlayerConnected(params[0])) return error(playerid,"Этот персонаж не в сети");
if(GetPVarInt(params[0], "Logged")) return error(playerid,"Этот персонаж не в игре");
Vzlom(playerid);
format(string, sizeof(string), "[А] Игрок %s был(а) кикнут(а) скрытно %sом %s, Причина: %s",PlayerInfo[params[0]][pName],GetAdmName(playerid),PlayerInfo[playerid][pName],params[1]),SendAdminMessage(COLOR_OFF, string);
Kick.(params[0]);
return true;
}

Может тут есть ?

$continue$
19.01.2016, 20:43
CMD:skick(playerid, params[])
{
if(GetPVarInt(playerid, "Logged")) return true;
new string[124];
if(PlayerInfo[playerid][pAdmin] < 3) return true;
if(GetPVarInt(playerid, "adminlogged") != 1)return error(playerid, "Ты не авторизован в Админ-панели, используйте команду: /aduty");
if(sscanf(params, "us[24]", params[0],params[1])) return command(playerid,"/skick [ID персонажа] [Причина]");
if(playerid == params[0]) return error(playerid,"Нельзя кикнуть самого себя");
if(PlayerInfo[params[0]][pAdmin] == 6) return error(playerid,"Иди в очко гастарбайтер ебанный");
if(!IsPlayerConnected(params[0])) return error(playerid,"Этот персонаж не в сети");
if(GetPVarInt(params[0], "Logged")) return error(playerid,"Этот персонаж не в игре");
Vzlom(playerid);
format(string, sizeof(string), "[А] Игрок %s был(а) кикнут(а) скрытно %sом %s, Причина: %s",PlayerInfo[params[0]][pName],GetAdmName(playerid),PlayerInfo[playerid][pName],params[1]),SendAdminMessage(COLOR_OFF, string);
Kick.(params[0]);
return true;
}

Может тут есть ?

Опробуйте мой вариант в посте #6 (http://pro-pawn.ru/showthread.php?13231-%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D1%81-%D0%BA%D1%80%D0%B0%D1%88%D0%B0&p=67926&viewfull=1#post67926)

DeimoS
19.01.2016, 21:48
CMD:kick(playerid, params[])
{
if(GetPVarInt(playerid, "Logged")) return true;
if(PlayerInfo[playerid][pAdmin] < 1) return true;
new string[124];
//if(GetPVarInt(playerid, "adminlogged") != 1)return error(playerid, "Ты не авторизован в Админ-панели, используйте команду: /aduty");
if(sscanf(params, "us[36]", params[0],params[1])) return command(playerid,"/kick [ID персонажа] [Причина]");
if(playerid == params[0]) return error(playerid,"Нельзя кикнуть самого себя");
if(!IsPlayerConnected(params[0])) return error(playerid,"Этот персонаж не в сети");
if(PlayerInfo[params[0]][pAdmin] == 6) return error(playerid,"Иди в очко гастарбайтер ебанный");ф
if(GetPVarInt(params[0], "Logged")) return error(playerid,"Этот персонаж не в игре");
SetPlayerCameraPos(params[0], 2016.5560,-1466.5215,63.9992),SetPlayerCameraLookAt(params[0], 1893.2737,-1391.4126,13.5703);
TogglePlayerControllable(params[0],false);
for(new i = 0; i < 100; i++) SCM(params[0],0xFFFFFFAA, " ");
format(string, sizeof(string), "Игрок %s был(а) кикнут(а) %sом %s, Причина: %s",PlayerInfo[params[0]][pName],GetAdmName(playerid),PlayerInfo[playerid][pName],params[1]),ToAll(0xFF6347FF, string);
Kick.(params[0]);
PlayerInfo[playerid][pKicki]++;
mysql_format(MYSQL_ARG, string, sizeof(string),"UPDATE `account` SET `Kicki` = '%d' WHERE BINARY `Name` = '%s'",
PlayerInfo[playerid][pKicki],
PlayerInfo[playerid][pName]);
mysql_function_query(MYSQL_ARG, string, false, "", "");
Vzlom(playerid);
return true;
}