GetPlayerWeaponData
Материал из Pro-Pawn Wiki
Описание:
Узнаёт оружие и количество патронов у игрока в указанном оружейном слоте.
Параметры:
(playerid, slot, &weapons, &ammo) |
playerid | ID игрока. |
slot | ID оружейного слота. |
&weapons | Переменная, в которую будет записан ID оружия в указанном слоте. |
&ammo | Переменная, в которую будет записано количество патронов. |
Возвращаемое значение:
1
в случае успеха, либо 0
, если игрок не подключен или указан неправильный ID слота.
Примечание |
Для огнемёта в HUD'е игрока отображается в 10 раз меньше патронов, чем на самом деле (например, если выдать огнемёт с 500 патронами, в HUD'е будет показано только 50). |
Пример использования:
enum
{
DIALOG_NONE = 0,
// ...
};
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:listweapons(playerid, params[])
{
if (0 == IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Вы не администратор сервера!");
extract params -> new player:targetid; else // sscanf2
return SendClientMessage(playerid, -1, "Использование: /listweapons [ID игрока/часть ника]");
if (targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, "Игрок не найден.");
new text[40 * 13 + 1], line[40 + 1], len = 0;
new weaponid, ammo;
for (new slotid = 0; slotid <= 12; ++slotid)
{
GetPlayerWeaponData(targetid, slotid, weaponid, ammo);
if (weaponid == 0 || ammo == 0)
continue;
switch (weaponid)
{
case 1..15, 40, 45, 46:
{
len += strcat(text[len], weapon_names[weaponid], sizeof(text)-len);
text[len++] = '\n';
continue;
}
}
format(line, sizeof(line), "%s: %d\n", weapon_names[weaponid], ammo);
len += strcat(text[len], line, sizeof(text)-len);
}
text[len] = '\0'; // Удалим последний перенос ('\n')
line = "Оружие игрока ";
GetPlayerName(targetid, line[14], sizeof(line) - 14);
return ShowPlayerDialog(
playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX,
line, (text[0] != '\0') ? text : weapon_names[0], "Ок", "Отмена"
);
}
{
DIALOG_NONE = 0,
// ...
};
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:listweapons(playerid, params[])
{
if (0 == IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, "Вы не администратор сервера!");
extract params -> new player:targetid; else // sscanf2
return SendClientMessage(playerid, -1, "Использование: /listweapons [ID игрока/часть ника]");
if (targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, "Игрок не найден.");
new text[40 * 13 + 1], line[40 + 1], len = 0;
new weaponid, ammo;
for (new slotid = 0; slotid <= 12; ++slotid)
{
GetPlayerWeaponData(targetid, slotid, weaponid, ammo);
if (weaponid == 0 || ammo == 0)
continue;
switch (weaponid)
{
case 1..15, 40, 45, 46:
{
len += strcat(text[len], weapon_names[weaponid], sizeof(text)-len);
text[len++] = '\n';
continue;
}
}
format(line, sizeof(line), "%s: %d\n", weapon_names[weaponid], ammo);
len += strcat(text[len], line, sizeof(text)-len);
}
text[len] = '\0'; // Удалим последний перенос ('\n')
line = "Оружие игрока ";
GetPlayerName(targetid, line[14], sizeof(line) - 14);
return ShowPlayerDialog(
playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX,
line, (text[0] != '\0') ? text : weapon_names[0], "Ок", "Отмена"
);
}
См. также: