Sign in to follow this
Followers
0

7 posts in this topic
Create an account or sign in to comment
You need to be a member in order to leave a comment
Sign in to follow this
Followers
0
-
Recently Browsing 0 members
No registered users viewing this page.
-
Similar Content
-
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
Размещая на другие порталы, обязательно указать автора
-
By Wiggins
Доброго времени суток, нуждаюсь в помощи. Если есть люди, которые шарят в pawno, нужна помощь. Короче, мод ART RP, там в донате есть строка "Уникальные аксессуары", когда на него нажмешь, открывается TextDraw менью, нужно переделать это на обычную менью (/mm например, там обычная менью), буду рад, если поможете, за ранее спасибо.
Если не ошибаюсь, строка текстдрав аксессуаров начинается с 1416 до 1443.
art4.pwn
-