Desulaid
28.01.2016, 14:59
Команда просматривает все оружие у игрока: выводит наименование оружия и его количество. Я не смог подобрать обобщенное слово как и для патронов, так и для ... В общем обозвал все это "количеством".
http://ihost.pro-pawn.ru/image.php?di=GD1G
Автор: Untonyst
#include <dc_cmd>
#include <sscanf2>
#if !defined MAX_WEAPON_NAME
#define MAX_WEAPON_NAME (19)
#endif
#if !defined WEAPON_FIST
#define WEAPON_FIST (0)
#endif
#if !defined MAX_WEAPON_SLOTS
#define MAX_WEAPON_SLOTS (12)
#endif
COMMAND:weapon(playerid, params[])
{
if(0 == IsPlayerAdmin(playerid)) // меняем на свой аналог
return SendClientMessage(playerid, -1, "Вы не администратор!");
new
targetid,
weapon_id, weapon_name[MAX_WEAPON_NAME], ammo;
if (sscanf(params, "u", targetid))
return SendClientMessage(playerid, -1, "Введите /weapon [игрок]");
if (0 == IsPlayerConnected(targetid)) // меняем на свой аналог
return SendClientMessage(playerid, -1, "Такого игрока нет на сервере!");
static const
fmt_str_dlg_title[] = "Оружие %s",
fmt_str_dlg_head_body[] = "Оружие\tКоличество\n",
fmt_str_dlg_body[] = "%s\t%i\n%s";
new
str_dlg_title[sizeof(fmt_str_dlg_title)-2+MAX_PLAYER_NAME+1],
str_dlg_body[
(sizeof(fmt_str_dlg_head_body)-1)-2*3+2+
(((sizeof(fmt_str_dlg_body)-1)-2*5+MAX_WEAPON_NAME+6+2)*12)+1
];
GetPlayerName(targetid, str_dlg_title, MAX_PLAYER_NAME+1);
format(str_dlg_title, sizeof(str_dlg_title), fmt_str_dlg_title, str_dlg_title);
for (new i; i <= MAX_WEAPON_SLOTS; i++)
{
GetPlayerWeaponData(targetid, i, weapon_id, ammo);
if (weapon_id == WEAPON_FIST) continue;
else
{
GetWeaponName(weapon_id, weapon_name, MAX_WEAPON_NAME);
format(str_dlg_body, sizeof(str_dlg_body), fmt_str_dlg_body, weapon_name, ammo, str_dlg_body);
}
}
strins(str_dlg_body, fmt_str_dlg_head_body, 0);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_TABLIST_HEADERS, str_dlg_title, str_dlg_body, "Закрыть", "");
return 1;
}
Копирование данной темы без разрешения автора запрещено!
http://ihost.pro-pawn.ru/image.php?di=GD1G
Автор: Untonyst
#include <dc_cmd>
#include <sscanf2>
#if !defined MAX_WEAPON_NAME
#define MAX_WEAPON_NAME (19)
#endif
#if !defined WEAPON_FIST
#define WEAPON_FIST (0)
#endif
#if !defined MAX_WEAPON_SLOTS
#define MAX_WEAPON_SLOTS (12)
#endif
COMMAND:weapon(playerid, params[])
{
if(0 == IsPlayerAdmin(playerid)) // меняем на свой аналог
return SendClientMessage(playerid, -1, "Вы не администратор!");
new
targetid,
weapon_id, weapon_name[MAX_WEAPON_NAME], ammo;
if (sscanf(params, "u", targetid))
return SendClientMessage(playerid, -1, "Введите /weapon [игрок]");
if (0 == IsPlayerConnected(targetid)) // меняем на свой аналог
return SendClientMessage(playerid, -1, "Такого игрока нет на сервере!");
static const
fmt_str_dlg_title[] = "Оружие %s",
fmt_str_dlg_head_body[] = "Оружие\tКоличество\n",
fmt_str_dlg_body[] = "%s\t%i\n%s";
new
str_dlg_title[sizeof(fmt_str_dlg_title)-2+MAX_PLAYER_NAME+1],
str_dlg_body[
(sizeof(fmt_str_dlg_head_body)-1)-2*3+2+
(((sizeof(fmt_str_dlg_body)-1)-2*5+MAX_WEAPON_NAME+6+2)*12)+1
];
GetPlayerName(targetid, str_dlg_title, MAX_PLAYER_NAME+1);
format(str_dlg_title, sizeof(str_dlg_title), fmt_str_dlg_title, str_dlg_title);
for (new i; i <= MAX_WEAPON_SLOTS; i++)
{
GetPlayerWeaponData(targetid, i, weapon_id, ammo);
if (weapon_id == WEAPON_FIST) continue;
else
{
GetWeaponName(weapon_id, weapon_name, MAX_WEAPON_NAME);
format(str_dlg_body, sizeof(str_dlg_body), fmt_str_dlg_body, weapon_name, ammo, str_dlg_body);
}
}
strins(str_dlg_body, fmt_str_dlg_head_body, 0);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_TABLIST_HEADERS, str_dlg_title, str_dlg_body, "Закрыть", "");
return 1;
}
Копирование данной темы без разрешения автора запрещено!