Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Система батареи КПК как на Orio[N]

Статус
В этой теме нельзя размещать новые ответы.

АleX82

Дебютант
Здравствуйте, уважаемые.
Вот, вылаживаю систему написанную мною, а придумано разработчиком Orio[N] (чуть удобнее чем на Orio[N]).

Итак, начнём!

Для начала, в enum pInfo вставим систему. Ну назовем её к примеру: pZarad.
Выглядеть это будет так

PHP:
enum pInfo
{
   pZarad,
};
и ещё:
PHP:
new zaradka[MAX_PLAYERS];
Затем, в паблик коннекта (OnPlayerConnect), вставим:
PHP:
PlayerInfo[playerid][pZarad] = 0;
zaradka[playerid] = 0;
Теперь, для сохранения/авторизации/регистрации системы, мы ставим её в паблики, такие как:
OnPlayerLogin, OnPlayerRegister, OnPlayerSave (У вас возможно они по другому называются).

Затем, создаём таймер на 5 минут, либо ищем паблик такой как:
Production (во многих паблевских модах он есть).
И вставляем там:
PHP:
if(PlayerInfo[playerid][pZarad] < 30) { PlayerInfo[playerid][pZarad] += 1; }
То есть, если зарядки меньше чем 30, то через 5 минут прибавляем +1 палочку.

Далее, ставим команду зарядки:
PHP:
if(strcmp(cmd, "/zarad", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(PlayerInfo[playerid][pZarad] < 0) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {33aa33}|||||||||| 100% (Полностью заряжена){ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 3) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {33aa33}||||||||| 90%{ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 6) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {33aa33}|||||||| 80%{ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 9) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {33aa33}||||||| 70%{ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 12) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {33aa33}|||||| 60%{ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 15) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {33aa33}||||| 50%{ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 18) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {ff3300}|||| 40%{ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 21) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {ff3300}||| 30%{ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 24) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {ff3300}|| 20% (Осталось мало энергии){ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 27) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {ff3300}| 10% (Осталось мало энергии){ffffff}.", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 30) return SPD(playerid, 1264, DIALOG_STYLE_MSGBOX,"{33FFCC}Заряд батареи", "{ffffff}Зарядка: {ff3300}Разряжена{ffffff}.", "Ок", "");
        }
        return true;
    }
Затем, сделаем магазин батареи. У кого в моде есть магазины 24/7, можно добавить:
PHP:
  else if (item == КАКОЙ ПО СЧЁТУ В СПИСКЕ && PlayerInfo[playerid][pMoney] > 500)
            {
                    PlayerInfo[playerid][pMoney] -= 500;
                    send(playerid,COLOR_WHITE,"Вы купили зарядку, чтобы зарядить КПК, введите /z+ (-500$).");
                    zaradka[playerid] = 1;
                    GameTextForPlayer(playerid, "~r~-500$", 5000, 1);
                    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                return true;
            }
создаём магазин или где нибудь прилавок и делаем команду:
PHP:
 if(strcmp(cmd, "/buyzarad", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
                   if(PlayerToPoint(3.0,playerid, x,y,z))
                   {
                      zaradka[playerid] = 1;
                      GivePlayerMoney(playerid, -500);
                      send(playerid,COLOR_WHITE,"{999999}Вы купили зарядку, чтобы зарядить КПК, введите /z+ (-500$).");
                   }
                   else
                   {
                       SendClientMessage(playerid,COLOR_WHITE,"Вы не у магазина покупки батареек!");
                   }
return true;
}
И затем ради интереса команду /z+:
PHP:
if(strcmp(cmd, "/zarad", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
                   if(zaradka[playerid] = 1) return SendClientMessage(playerid,COLOR_WHITE,"У вас нет батарейки!");
                      PlayerInfo[playerid][pZarad] = 0;
                      zaradka[playerid] = 0;
                      SendClientMessage(playerid,COLOR_WHITE,"Вы вставили батарейку в КПК, теперь он полностью заряжен!");
return true;
}
Если ещё хотите чтобы в КПК показывало сколько проц. зарядки осталось, то делаем так...
Ищем команду /kpk (/munu, /mm или что там у вас), и изменяем свой диалог:
PHP:
   if(PlayerInfo[playerid][pZarad] < 0) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}|||||||||| 100%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 3) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}||||||||| 90%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 6) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}|||||||| 80%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 9) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}||||||| 70%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 12) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}|||||| 60%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 15) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}||||| 50%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 18) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}|||| 40%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 21) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}||| 30%{ffffff}]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 24) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}|| 20%{ffffff} Мало зарядки]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 27) return SPD(playerid, 1264, DIALOG_STYLE_LIST,"{33FFCC}КПК [Заряд батареи: {33aa33}| 10%{ffffff} Мало зарядки]", "Статистика\nБла-бла-бла...", "Ок", "");
            if(PlayerInfo[playerid][pZarad] <= 30) return SPD(playerid, 12464, DIALOG_STYLE_MSGBOX,"{33FFCC}КПК [Заряд батареи: {33aa33}0%{ffffff} Зарядка кончилась]", "ВАШ КПК РАЗРЯЖЕН! КУПИТЕ БАТАРЕЙКУ!", "Ок", "");
У кого ерроры на "SPD", вместо них, ставим - ShowPlayerDialog

Вот и всё.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу