PDA

Просмотр полной версии : [CMD] /hp [DC_CMD]



Alanchick
08.01.2016, 23:55
Доброго времени суток, Уважаемые пользователи Pro-Pawn.Ru!
Пришла идея написать команду /hp, которая будет, так сказать, многофункциональная.
У нее есть 3 типа, это:

Установить
Прибавить
Убавить


Установить - устанавливает указанное кол-во HP.
Прибавить - прибавляет указанное кол-во HP.
Убавить - убавляет указанное кол-во HP.

Синтаксис команды:

/hp <id> <тип> <кол-во>
Перейдем к коду:
Сама команда:


CMD:hp(playerid, params[])
{
new
targetid,
type,
hp,
Float:health;

if(!IsPlayerConnected(playerid))
return true;

if(PlayerInfo[playerid][pAdmin] < 4)
return true;

if(sscanf(params, "ddd", targetid, type, hp))
{
SendClientMessage(playerid, -1, "Введите: /hp [id] [тип] [кол-во]");
SendClientMessage(playerid, -1, "{008000}Типы:");
SendClientMessage(playerid, -1, "{FFFFFF}1 {008000}- Установить");
SendClientMessage(playerid, -1, "{FFFFFF}2 {008000}- Прибавить");
return SendClientMessage(playerid, -1, "{FFFFFF}3 {008000}- Убавить");
}

if(!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Игрок не авторизован!");

if(hp > 100 || hp < 0)
return SendClientMessage(playerid, -1, "HP не может быть больше 100 и меньше 0!");

switch(type)
{
case 1:
return SetPlayerHealth(targetid, hp);
case 2:
{
GetPlayerHealth(targetid, health);
return SetPlayerHealth(targetid, health+hp);
}
case 3:
{
GetPlayerHealth(targetid, health);
return SetPlayerHealth(targetid, health-hp);
}
default:
return SendClientMessage(playerid, -1, "Тип не может быть более 3 и менее 1!");
}
return 1;
}

Скриншоты:

http://ihost.pro-pawn.ru/image.php?di=90P5
http://ihost.pro-pawn.ru/image.php?di=ONKM
http://ihost.pro-pawn.ru/image.php?di=OSJJ



Автор: Alanchick
Жду адекватной критики.

Desulaid
09.01.2016, 00:00
С такой проверкой лучшей обойтись IsPlayerConnected()

#enotik
09.01.2016, 00:02
С такой проверкой лучшей обойтись IsPlayerConnected()

Согласен с тобой

Alanchick
09.01.2016, 00:02
С такой проверкой лучшей обойтись IsPlayerConnected()

Прислушался, исправил :)

Daniel_Cortez
09.01.2016, 00:31
ИМХО, гораздо интуитивнее (и, как бонус разработчику, проще в реализации) было бы сделать команды "/sethp", "/addhp" и "/subhp" ("/takehp" ?), чем пытаться уместить несколько команд в одну. Как-никак, названия запоминаются лучше, да и перепутать их сложнее, чем цифры.

$continue$
09.01.2016, 00:39
Лишняя проверка:


if(!IsPlayerConnected(playerid))


Ибо:
SendClientMessage - вернет 0 в случии если игрок отключен от сервера.

ziggi
09.01.2016, 01:09
ИМХО, гораздо интуитивнее (и, как бонус разработчику, проще в реализации) было бы сделать команды "/sethp", "/addhp" и "/subhp" ("/takehp" ?), чем пытаться уместить несколько команд в одну. Как-никак, названия запоминаются лучше, да и перепутать их сложнее, чем цифры.

Но придётся запоминать несколько команд, я предпочитаю такой вариант:

/health <set/get/give> <id/ник/all> <количество/>

Alanchick
09.01.2016, 18:57
ИМХО, гораздо интуитивнее (и, как бонус разработчику, проще в реализации) было бы сделать команды "/sethp", "/addhp" и "/subhp" ("/takehp" ?), чем пытаться уместить несколько команд в одну. Как-никак, названия запоминаются лучше, да и перепутать их сложнее, чем цифры.

Мне кажется, мой вариант проще.
Ибо вместо трех команд - одна.