- 0
Sign in to follow this
Followers
0

[закрыто] Run time error 4: "Array index out of bounds"
Asked by
alwintooo
,
-
Recently Browsing 0 members
No registered users viewing this page.
-
Similar Content
-
By MetaLife Online
Привествую! писал код. проверил работу, в БД отправилось информация криво
потом добавил к P_NICK[MAX_PLAYER_NAME] для того чтобы все было окей. Но после этого данные вообще не отпровляються и не показываеться %s. пару раз удалял и не помогло не чего
enum PLAYER_INFO { P_ID, P_NICK[MAX_PLAYER_NAME], P_PASS, P_GENDER, P_SKIN, P_LVL, };
-
By Danny_Marcelo
Всех приветствую. Сегодня я решил обновить систему мероприятий, т.к. на самом проекте Advance RP уже давно видоизменили систему, добавили нового функционала. Мы не должны стоять на месте и я решил тоже свою систему доработать. Вы можете использовать данную систему как аналог Advance RP или же доработать для своего проекта. Все в ваших руках как говорится.
Что нового?
Итак приступим:
Находим свои переменные и вставляем:
new settp = 0; // Флаг включения/выключения телепортации new Float:TeleportFloat[3]; // Координаты точки телепортации new TeleportInfo[2]; // Интерьер и виртуальный мир new Float:PlayerLastPos[MAX_PLAYERS][3]; // Последние координаты игрока new PlayerLastInt[MAX_PLAYERS]; // Последний интерьер игрока new PlayerLastVW[MAX_PLAYERS]; // Последний виртуальный мир игрока new PlayerWeapons[MAX_PLAYERS][13][2]; // Оружие игрока (слот и патроны) new PlayerUsedTP[MAX_PLAYERS]; // Флаг для отслеживания использования /tp
Далее идём в команды, мой случай на Pawn.CMD, но +/- везде одинаково, разве что меняется шапка
CMD:settp(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] < 4) return 1; new string[95]; if (settp == 0) { GetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]); TeleportInfo[0] = GetPlayerInterior(playerid); TeleportInfo[1] = GetPlayerVirtualWorld(playerid); settp = 1; format(string, sizeof(string), "[A] %s[%d] установил точку телепорта для игроков. {00CC00}ТП включен.", PlayerInfo[playerid][pName], playerid); SendAdminMessage(0x52B2B5FF, string); } else { format(string, sizeof(string), "[A] %s[%d] удалил точку телепорта для игроков. {FF6600}ТП отключен.", PlayerInfo[playerid][pName], playerid); SendAdminMessage(0x52B2B5FF, string); settp = 0; } return 1; } CMD:tp(playerid, params[]) { if (settp == 0) return SendClientMessage(playerid, 0xCECECEFF, !"Функция отключена администратором."); if (PlayerInfo[playerid][pJailed] >= 1) return SendClientMessage(playerid, 0xCECECEFF, !"Арестованным не разрешено покидать камеру."); if (PlayerInfo[playerid][pRabota] != 0) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия."); if (bolkam[playerid] == true) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия."); GetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]); PlayerLastInt[playerid] = GetPlayerInterior(playerid); PlayerLastVW[playerid] = GetPlayerVirtualWorld(playerid); for (new i = 0; i < 13; i++) { GetPlayerWeaponData(playerid, i, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]); } PlayerUsedTP[playerid] = 1; ShowPlayerDialog(playerid, 22, DIALOG_STYLE_MSGBOX, !"{6699FF}Телепортация", !"{FFFFFF}Вы уверены, что хотите попасть на место проведения мероприятия?\n{FFCD00}Ваше оружие будет изъято для хранения и возвращено позже.", !"Да", !"Нет"); return 1; }
CMD:back(playerid, params[]) { if (!PlayerUsedTP[playerid]) { return SendClientMessage(playerid, 0xCECECEFF, !"Эту функцию можно использовать после {FF9933}/tp, /go {CECECE}или по окончании {FF9933}мероприятий"); } SetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]); SetPlayerInterior(playerid, PlayerLastInt[playerid]); SetPlayerVirtualWorld(playerid, PlayerLastVW[playerid]); ResetPlayerWeapons(playerid); for (new i = 0; i < 13; i++) { if (PlayerWeapons[playerid][i][0] != 0) { GivePlayerWeapon(playerid, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]); } } PlayerUsedTP[playerid] = 0; SendClientMessage(playerid, 0x3399FFFF, !"Вы вернулись туда, где были до телепортации"); return 1; } Ну и в OnDialogResponse:
case 22: // Не забудьте проверить и при надобности изменить id диалога на вашу цифру или ID_NAME { if (response) { SetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]); SetPlayerInterior(playerid, TeleportInfo[0]); SetPlayerVirtualWorld(playerid, TeleportInfo[1]); ResetPlayerWeapons(playerid); SendClientMessage(playerid, 0x66CCFFFF, "Вы были доставлены на место проведения мероприятия"); SendClientMessage(playerid, 0x66CCFFFF, "Чтобы вернуться обратно, введите {FF9900}/back"); } } Скриншоты:
Если игрок сидит в КПЗ и вводит /tp:
При включенном /tp:
При выключенном /tp:
Сообщение администраторам:
Если работаешь или лечишься в больнице:
Текст после телепортации:
При вводе /back 1 и более раз:
P.S. Команду /tp на Advance можно нажимать бесконечно, по этому я не стал сюда пихать аналогичную проверку как в /back.
Если что, не сложно будет добавить 1 строчку проверки. Просто имейте ввиду, что это не баг. Просто нужно же соответствовать названию темы "На 100% КОПИЯ"))
Автор: Danny_Marcelo
Размещая на другие порталы, обязательно указать автора
-
Posted (edited) · Report post
Прежде всего, извините, я использовал перевод Что не так с моим кодом, сэр?
Edited by alwintooo
Share this post
Link to post
Share on other sites