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



2 posts in this topic

Всем привет.

У меня есть команда для ОПГ для продажи оружия, но продавать можно только на своей территории. Вот команда:

CMD:sellgun(playerid, params[])
{
    if(IsAGang(playerid))
    {
        new full = 0;
        for(new i; i < MAX_GZONE;i++)
        {
            if(PlayerToKvadrat(playerid,GZMZ[i][gCoords][0], GZMZ[i][gCoords][1],GZMZ[i][gCoords][2],GZMZ[i][gCoords][3]) && ZoneOnBattle[i] == 0)
            {
                if(sscanf(params, "udd", params[0], params[1], params[2])) return SendClientMessage(playerid, COLOR_RED, "[Информация] {FFFFFF}Используйте: /sellgun [id игрока] [патроны] [Цена]");
                if(!IsPlayerConnected(params[0]) || params[0] == playerid) return SendClientMessage(playerid,CWHITE,"Неверный ID игрока");
                if(GetPlayerDistanceToPlayer(playerid,params[0]) > 3.0 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) return SendClientMessage(playerid,CWHITE,"Вы далеко друг от друга");
                if(params[2] > 30000 || params[2] < 1) return SendClientMessage(playerid,CWHITE,"Цена должна быть от 1 до 30000.");
                if(params[1] > 150 || params[1] < 1) return SendClientMessage(playerid,CWHITE,"Неверное к-во патронов 1 до 150");
                new weaponid = GetPlayerWeapon(playerid);
                new ammo = GetPlayerAmmo(playerid);
                if(!weaponid) return SendClientMessage(playerid,CWHITE,"Возьмите в руку то оружие, которое хотите продать");
                if(ammo < params[1]) return SendClientMessage(playerid,CWHITE,"У вас недостаточно патронов");
                SetPVarInt(playerid,"gunoffee",params[0]);
                SetPVarInt(params[0],"gunoffee",params[0]);
                SetPVarInt(params[0],"gunoffer",playerid);
                SetPVarInt(params[0],"gunprice",params[2]);
                SetPVarInt(params[0],"gunammo",params[1]);
                SetPVarInt(params[0],"gunid",weaponid);
                SetPVarInt(params[0],"pxa",ammo);
                new weapname[24];
                GetWeaponName(weaponid,weapname,24);
                SFCM(playerid,CINFO,"Вы предложили {FFFFFF}%s купить у вас {FFFFFF}%s за {FFFFFF}%d рублей. Патронов: {FFFFFF}%d",pData[params[0]][pNickname],weapname,params[2],params[1]);
                SFCM(params[0],CINFO,"%s предложил вам купить {FFFFFF}%s за {FFFFFF}%d рублей. Патронов: {FFFFFF}%d",pData[playerid][pNickname],weapname,params[2],params[1]);
                SendClientMessage(params[0],CGREEN,"{33AAFF}Нажмите {f6ff00}Y {33AAFF}что-бы принять предложение или {c54d13}N {33AAFF}для отказа");
                break;
            }
        }
        if(!full) return SendClientMessage(playerid, COLOR_GREY, "Нужно быть на своей территории");
    }
    return true;

А что бы продавать можно было где угодна, будет так: ( Это вопрос )

CMD:sellgun(playerid, params[])
{
    if(IsAGang(playerid))
    {
                if(sscanf(params, "udd", params[0], params[1], params[2])) return SendClientMessage(playerid, COLOR_RED, "[Информация] {FFFFFF}Используйте: /sellgun [id игрока] [патроны] [Цена]");
                if(!IsPlayerConnected(params[0]) || params[0] == playerid) return SendClientMessage(playerid,CWHITE,"Неверный ID игрока");
                if(GetPlayerDistanceToPlayer(playerid,params[0]) > 3.0 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) return SendClientMessage(playerid,CWHITE,"Вы далеко друг от друга");
                if(params[2] > 30000 || params[2] < 1) return SendClientMessage(playerid,CWHITE,"Цена должна быть от 1 до 30000.");
                if(params[1] > 150 || params[1] < 1) return SendClientMessage(playerid,CWHITE,"Неверное к-во патронов 1 до 150");
                new weaponid = GetPlayerWeapon(playerid);
                new ammo = GetPlayerAmmo(playerid);
                if(!weaponid) return SendClientMessage(playerid,CWHITE,"Возьмите в руку то оружие, которое хотите продать");
                if(ammo < params[1]) return SendClientMessage(playerid,CWHITE,"У вас недостаточно патронов");
                SetPVarInt(playerid,"gunoffee",params[0]);
                SetPVarInt(params[0],"gunoffee",params[0]);
                SetPVarInt(params[0],"gunoffer",playerid);
                SetPVarInt(params[0],"gunprice",params[2]);
                SetPVarInt(params[0],"gunammo",params[1]);
                SetPVarInt(params[0],"gunid",weaponid);
                SetPVarInt(params[0],"pxa",ammo);
                new weapname[24];
                GetWeaponName(weaponid,weapname,24);
                SFCM(playerid,CINFO,"Вы предложили {FFFFFF}%s купить у вас {FFFFFF}%s за {FFFFFF}%d рублей. Патронов: {FFFFFF}%d",pData[params[0]][pNickname],weapname,params[2],params[1]);
                SFCM(params[0],CINFO,"%s предложил вам купить {FFFFFF}%s за {FFFFFF}%d рублей. Патронов: {FFFFFF}%d",pData[playerid][pNickname],weapname,params[2],params[1]);
                SendClientMessage(params[0],CGREEN,"{33AAFF}Нажмите {f6ff00}Y {33AAFF}что-бы принять предложение или {c54d13}N {33AAFF}для отказа");
                break;
            }
    return true;

Верно?

Share this post


Link to post
Share on other sites

да... (смысл просто задавать вопрос когда можно протестить её за 5 сек...)

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • odosenok
      By odosenok
      Описание системы.
      Система полета камерой представляет собой возможность перемещаться в пространстве игры по всем осям (X, Y, Z) путем нажатия кнопок на клавиатуре.
       
      Подключение системы.
      1. Система написана в отдельном файле - include. Вам необходимо скачать этот файл и добавить в папку, находящейся в следующей директории:
      "..\pawno\include" 2. Затем Вам следует открыть свой игровой мод и в начале, после всех инклудов, дописать следующую строку:
      #include <fly>  
      Работа с системой.
      В систему полета камерой включены две функции:
      1.
      SetPlayerFlyStatus(playerid, status = 2) /* playerid - ID игрока, которого Вы хотите "отправить" в режим полета status - режим полета* * предусмотрено три режима полета: CAMERA_MODE_NONE (0) - выключить режим полета, CAMERA_MODE_FLY (1) - включить режим полета, CAMERA_MODE_REVERSE (2) - сменить режим на реверсивный */ 2. 
      IsPlayerFlying(playerid) /* playerid - ID игрока, пребывание в состоянии полета которого Вы хотите проверить *данная функция возвращает: CAMERA_MODE_NONE (0), если игрок не находится в состоянии полета, CAMERA_MODE_FLY (1), если игрок находится в состоянии полета */ При помощи данных функций Вы можете управлять пребыванием игрока в режиме полета, а также получать информацию о том, "летает" ли игрок в тот или иной момент.
       
      Особенности системы.
      Системой полета предусмотрено, что игрок, выходящий из режима полета, появится именно там, где вышел. Так, если Вы покидаете режим полета, пребывая в озере, то появление игрока будет именно в этом озере.
       
      Пример использования.
      CMD:fly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /fly [mode 0-2]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new mode; if(sscanf(params, "d", mode)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(!(0 <= mode <= 2)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; SetPlayerFlyStatus(playerid, mode); return 1; } CMD:checkfly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /checkfly [playerid]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new id; if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, !"The player is not connected") & 0; static const status_fly[][] = { !"The player is not flying", !"The player is flying" }; SendClientMessage(playerid, -1, status_fly[IsPlayerFlying(id)]); return 1 } Авторское право.
      Функции для получения позиции для перемещения камеры, само перемещение вырезаны из разработки Norck.
      В свою очередь я, @odosenok, лишь преобразовал данный код, создал более удобный интерфейс.
       
      fly.inc
    • KAIF
      By KAIF
      Здравствуйте, хотел бы продать переделанный игровой мод всем знакомого проекта GTA RolePlay
      Фракции:
      1)Правительство
      2)ГИБДД
      3)Полиция Южного
      4)ФСБ
      5)ЦГБ-А
      6)Автошкола
      7)ВВС
      8)СМИ
      9)ОМОН
      10)опг.Тукаевские
      11)опг.Тяп-Ляп
      12)Чеченская Мафия
      13)Американская Мафия
      14)Якудза
      15)Русская Мафия
      16)Итальянская Мафия
      Добавлено/исправлено:
      1)Добавлен ВЕСЬ ОПТИМИЗИРОВАННЫЙ маппинг GTA ROLEPLAY.(2018-2019г)
      2)Добавлены организации мафий.
      3)Перенесены все чекпоинты как на GTA ROLEPLAY.
      4)Добавил в донат покупку военного билета.
      5)Изменил название рангов во фракциях как на GTA ROLEPLAY/
      6)Изменен логотип GTA ROLEPLAY
      7)Переделан весь GPS, изменены все координаты.
      В моде - 6 уровней администрации.(если хотите можете увелить кол-во админок)
      Имеется фуллдоступ, выдаётся в pawno.
      Так же в комплекте будет идти мод-пак к серверу.
      После покупки вы получите архив с модом, а в самом архиве будет текстовый файл с ссылкой на скачивание модпака.