Перейти к содержанию
Авторизация  
xDimasx

Система кейсов,(/putmoney & /pickmoney).

Рекомендуемые сообщения

xDimasx

Всем привет. Сегодня мне понадобилась система выбрасывания денег,которой в паблике я не нашёл (без багов).
Поэтому я решил её сделать себе и Вам.

Что используется здесь для создания этой системы?:
- SSCANF
- ZCMD/DC_CMD

Ну что-же,приступим.

В начало мода:

#define MAX_CASE 50 // Лимит на кейсы.

enum caseInfo
{
    Float:csX,
    Float:csY,
    Float:csZ,
    csMoney,
    csObject
}
new CaseInfo[MAX_CASE][caseInfo];
new TOTALCASE;

Ко всем командам:
CMD:putmoney(playerid, params[])
{
    if(gPlayerLogged[playerid] == 0) return true; // Проверка на авторизацию. (Может быть другая)
    if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, -1, "Выкладывать деньги можно с 3-ого уровня."); // Можете убрать проверку на то,с какого уровня выкидывать деньги. (PlayerInfo[playerid][pLeve] меняем под себя)
    if(GetPVarInt(playerid, "PlayerCase") == 0) return SendClientMessage(playerid, -1, "У Вас нет чемодана для денег!"); // Проверка на чемодан. (Сделайте покупку в магазине или уберите проверку).
    if(TOTALCASE >= MAX_CASE) return SendClientMessage(playerid, -1, "Превышен лимит выбрасываемых кейсов."); // Проверка на лимт кейсов.
    if(GetPVarInt(playerid,"AntiFlood") > gettime()) return SendClientMessage(playerid, -1, "Нельзя так часто выкидывать деньги!"); // Антифлуд
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Взять деньги находясь в машине - нельзя."); // Проверка на нахождение игрока в машине
    if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "Используйте: /putmoney [сумма]");
    if(params[0] < 1 || params[0] > PlayerInfo[playerid][pMoney]) return SendClientMessage(playerid, -1,"У Вас недостаточно денег на руках."); // Проверка на деньги (PlayerInfo[playerid][pMoney] меняйте под себя).
    new i = TOTALCASE,string[128];
    TOTALCASE++;
    GetPlayerPos(playerid, CaseInfo[i][csX], CaseInfo[i][csY], CaseInfo[i][csZ]); // УЗнаём позицию
    CaseInfo[i][csObject] = CreateDynamicObject(1210, CaseInfo[i][csX], CaseInfo[i][csY]+1.0, CaseInfo[i][csZ]-0.87, 0.0, 0.0, 0.0, -1, -1, -1, 300.0), RemovePlayerAttachedObject(playerid, 4); // Создаём кейс
    RemovePlayerAttachedObject(playerid, 5); // Удаляем кейс из рук
    PlayerInfo[playerid][pMoney] -= params[0], CaseInfo[i][csMoney] = params[0]; // Снимаем деньги (PlayerInfo[playerid][pMoney] меняйте под себя)
    if(CaseInfo[i][csMoney] >= 100000) format(string, sizeof(string), "[A] Игрок %s[%d] только что положил чемодан с %d$", Player[playerid][pName], playerid, CaseInfo[i][csMoney]), ABroadCast(0xAAAAAAFF, string, 1); // Если игрок выкинул чемодан с боле чем 100.000$ то оповещаем администрацию. (ABroadCast у вас может быть другой).
    SetPVarInt(playerid,"AntiFlood",gettime() + 30), DeletePVar(playerid, "PlayerCase"); // Создаём антифлуд + удаляем значение что у нас есть чемодан.
    format(string,sizeof(string),"Вы положили чемодан с %d$", params[0]),SendClientMessage(playerid, -1, string);
    return true;
}

CMD:pickmoney(playerid, params[])
{
    if(gPlayerLogged[playerid] == 0) return true; // Проверка на авторизацию. (Может быть другая)
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Положить деньги находясь в машине - нельзя."); // Проверка на нахождение игрока в машине
    new cas,string[128]; // Создаём переменные
    for(new i = 0; i <= TOTALCASE; i++) // Создаём цикл
    {
        if(IsPlayerInRangeOfPoint(playerid, 3.0, CaseInfo[i][csX], CaseInfo[i][csY], CaseInfo[i][csZ])) // Создаём проверку на нахождение рядом с кейсом
        { // Если кейсов рядом,то продолжаем.
            cas++,TOTALCASE--,SetPlayerAttachedObject(playerid, 5, 1210, 5, 0.272000,0.073000,-0.045000, 0.000000,-83.099998,0.000000),SetPVarInt(playerid, "PlayerCase", 1), DestroyDynamicObject(CaseInfo[i][csObject]); // Функции)
            format(string,sizeof(string),"Вы подобрали чемодан с %d$", CaseInfo[i][csMoney]),SendClientMessage(playerid, -1, string);
            if(CaseInfo[i][csMoney] >= 100000) format(string, sizeof(string), "[A] Игрок %s[%d] только что подобрал чемодан с %d$", PlayerInfo[playerid][pName], playerid, CaseInfo[i][csMoney]), ABroadCast(0xAAAAAAFF, string, 1); // Если игрок поднял чемодан с более чем 100.000$ то оповещаем администрацию. (Вместо ABroadCast может быть SendAdminMessage и т.д),а также вместо PlayerInfo[playerid][pName] ставим своё.
            PlayerInfo[playerid][pMoney] += CaseInfo[i][csMoney]; // ПРибавляем кол-во денег с кейса. PlayerInfo[playerid][pMoney] меняем под себя.
            CaseInfo[i][csX] = 0.0, CaseInfo[i][csY] = 0.0, CaseInfo[i][csZ] = 0.0; // Убираем найденный кейс.
            break;
        } // Если кейса рядом нет,то ничего не делаем
    }
    if(cas == 0) SendClientMessage(playerid, -1, "Рядом с вами нет чемодана!");
    return true;
}

Система без сохранения.
Если есть какие-то ошибки то пишите. Возможно что то забыл вставить.
Вот такой вот лёгкий урок) Если хотите какую-либо систему то пишите мне и я постараюсь её сделать в паблик.

P.S: Что касается данного форума,то я здесь недавно. Поэтому более сложные работы у меня находятся на других форумах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Na'Vi

Пригодится, правда придётся на стандартный процессор переводить 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.