SetPlayerAmmo

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск

Описание:

Устанавливает количество патронов в указанном оружии у игрока.

Параметры:

(playerid, weaponslot, ammo)
playerid ID игрока.
weaponslot ID оружия (не оружейный слот; см. прим.)
ammo Количество патронов.


Возвращаемое значение:

1, если игрок подключен, иначе 0.

Info rhombus.png
Примечание
Функция не выдаёт оружие, а только устанавливает количество патронов для оружия, если оно есть у игрока (или было, но закончились патроны).
Если параметр ammo равен нулю или отрицательное число, оружие пропадёт из инвентаря (при этом функция GetPlayerWeaponData() продолжит возвращать его ID с 0 патронов).


Bug.png
Баг SA-MP
2-й параметр функции по ошибке назван weaponslot: на самом деле это не оружейный слот, а ID оружия.
Возвращаемое функцией значение зависит только от подключения игрока, но не от успеха выполнения функции. Если указан неправильный ID оружия, либо игрок находится в состоянии слежки (PLAYER_STATE_SPECTATING) или спавна (PLAYER_STATE_SPAWNED), количество патронов не будет изменено, но функция всё равно вернёт 1.


Пример использования:

new const weapon_names[][] = {
/*  0 */{"Без оружия"},                 /*  1 */{"Кастет"},                     /*  2 */{"Клюшка для гольфа"},
/*  3 */{"Полицейская дубинка"},        /*  4 */{"Нож"},                        /*  5 */{"Бейсбольная бита"},
/*  6 */{"Лопата"},                     /*  7 */{"Кий"},                        /*  8 */{"Катана"},
/*  9 */{"Бензопила"},                  /* 10 */{"Большой дилдо"},              /* 11 */{"Малый дилдо"},
/* 12 */{"Большой вибратор"},           /* 13 */{"Малый вибратор"},             /* 14 */{"Цветы"},
/* 15 */{"Трость"},                     /* 16 */{"Граната"},                    /* 17 */{"Слезоточивый газ"},
/* 18 */{"Коктейль Молотова"},          /* 19 */{""},/* 20 */{""},/* 21 */{""}, /* 22 */{"Кольт .45"},
/* 23 */{"Кольт .45 с глушителем"},     /* 24 */{"Пустынный орёл"},             /* 25 */{"Дробовик"},
/* 26 */{"Обрез"},                      /* 27 */{"SPAS-12"},                    /* 28 */{"Микро-Узи"},
/* 29 */{"MP5"},                        /* 30 */{"АК-47"},                      /* 31 */{"M4"},
/* 32 */{"TEC-9"},                      /* 33 */{"Винтовка"},                   /* 34 */{"Снайперская винтовка"},
/* 35 */{"Гранатомёт"},                 /* 36 */{"Самонаводящийся гранатомёт"}, /* 37 */{"Огнемёт"},
/* 38 */{"Пулемёт"},                    /* 39 */{"Взрывпакет"},                 /* 40 */{"Детонатор"},
/* 41 */{"Баллончик с краской"},        /* 42 */{"Огнетушитель"},               /* 43 */{"Фотоаппарат"},
/* 44 */{"Прибор ночного видения"},     /* 45 */{"Тепловизор"},                 /* 46 */{"Парашют"}
};

CMD:setammo(playerid, params[])
{
    if (0 == IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Вы не администратор сервера!");
    extract params -> new player:targetid, weaponid, ammo; else // sscanf2
        return SendClientMessage(playerid, -1, "Использование: /setammo [ID игрока/часть ника] [ID оружия] [кол-во патронов]");
    if (targetid == INVALID_PLAYER_ID)
        return SendClientMessage(playerid, -1, "Игрок не найден.");
    if (weaponid < 1 || weaponid > 46 || weaponid == 19 || weaponid == 20 || weaponid == 21)
        return SendClientMessage(playerid, -1, "Неправильный ID оружия.");
    SetPlayerAmmo(targetid, weaponid, ammo);
    new string[128];
    GetPlayerName(targetid, string, sizeof(string));
    format(string, sizeof(string), "Вы выдали %s %d патронов к оружию \"%s\".", string, ammo, weapon_names[weaponid]);
    return SendClientMessage(playerid, -1, string);
}


См. также: