Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для Jackal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.08.2015
    Адрес
    Новокузнецк
    Сообщений
    54
    Репутация:
    2 ±

    Ограничение патронов.

    Код:
    #define WeaponRestrict(%0,%1,%2) \
        GetPlayerWeapon(%0) == %1 && GetPlayerAmmo(%0) > %2 && GivePlayerWeapon(%0, %1, -GetPlayerAmmo(%0) + %2)
    Код:
    case 0://Desert Eagle
    {
    if(WeaponRestrict(playerid, 24, 21)) return SCM(playerid, COLOR_GREY, "Превышен предел боеприпасов [Desert Eagle]");
    if(GunInfo[g][gSlot][0] < 1)
    {
    	SCM(playerid, COLOR_GREY, "В сейфе нет Desert Eagle.");
    	SaveGun(playerid);
    	return 1;
    }
    GunInfo[g][gSlot][0] -= 1;
    GivePlayerWeapon(playerid, 24, 7);
    SCM(playerid, COLOR_GREEN, "Вы взяли из сейфа: 1 обойму Desert Eagle.");
    }
    Здравствуйте!

    Выставлено ограничение патронов для Desert Eagle "21" патрон.
    Нужно, чтобы возможно было брать до 21 патрона, в случае превышения - выставить игроку 21 патрон.

    Проблема:
    Возможно брать до "28" патронов.
    Только после того, как игрок получает 28 патронов и берет ещё 1 обойму, производится нужная проверка и игроку выставляется 21 патрон.

  2. #2
    Аватар для Jackal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.08.2015
    Адрес
    Новокузнецк
    Сообщений
    54
    Репутация:
    2 ±
    Прошу прощения (иногда надо высыпаться после суточной смены)

    Код:
    #define WeaponRestrict(%0,%1,%2) \
        GetPlayerWeapon(%0) == %1 && GetPlayerAmmo(%0) >= %2 && GivePlayerWeapon(%0, %1, -GetPlayerAmmo(%0) + %2)
    ">="

  3. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Ужасный макрос, очень медленный и содержит в себе огромное количество потенциальных ошибок.
    PHP код:
    stock WeaponRestrict(playeridweaponidammo)
    {
        if (
    GetPlayerWeapon(playerid) == weaponid && GetPlayerAmmo(playerid) >= ammo) {
            return 
    SetPlayerAmmo(playeridweaponidammo);
        }
        return 
    0;

    Не нужно то, что должно быть функцией, делать макросом.

  4. Пользователь сказал cпасибо:
    Daniel_Cortez (28.05.2016)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •