PDA

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



Alanchick
06.01.2016, 17:37
Доброго времени суток, Уважаемые пользователи Pro-Pawn.Ru!
Команда /virtmir предназначена для изменения виртуального мира указанному игроку на указанный мир.
Без особых предисловий, перейдем к коду:

Ко всем #define

#define SCM SendClientMessage
В public OnPlayerConnect

SetPVarInt(playerid, "Logged", 0);
В public OnPlayerSpawn

SetPVarInt(playerid, "Logged", 1);
Сама команда:

CMD:virtmir(playerid, params[])
{
new
player,
mir;

if(GetPVarInt(playerid, "Logged") == 0)
return true; // Проверка на авторизацию

if(PlayerInfo[playerid][pAdmin] < 3)
return true; // Проверка на админ-уровень (с 3 админ-уровня)

if(sscanf(params, "dd", player, mir))
return SCM(playerid, -1, "Введите: /virtmir [ID игрока] [вирт. мир]"); // Если администратор не ввел какое либо из значений

if(GetPVarInt(id, "Logged") == 0)
return SCM(playerid, -1, "Игрок не авторизован!"); // Если игрок, id которого ввели, не авторизован

SetPlayerVirtualWorld(player, mir); // присвоение указанного вирт. мира указанному игроку

static const
msg[] = "Администратор %s изменил ваш виртуальный мир на %d.",
msg1[] = "Вы изменили вирт. мир игроку %s на %d.";

new fmt_msg[sizeof(msg) - 4 + MAX_PLAYER_NAME + 2];

format(fmt_msg, sizeof(fmt_msg), msg, PlayerInfo[playerid][pName], mir);
SCM(player, -1, fmt_msg); // Собщение игроку

format(fmt_msg, sizeof(fmt_msg), msg1, PlayerInfo[player][pName], mir);
SCM(playerid, -1, fmt_msg); // сообщение администратору
return 1;
}



Жду адекватной критики.
Автор: Alanchick
За помощь спасибо: Untonyst (http://pro-pawn.ru/member.php?4123-Untonyst)

#enotik
06.01.2016, 17:59
Как же много всего..
Попроще бы сделал..

InCorrect
06.01.2016, 18:59
Доброго времени суток, Уважаемые пользователи Pro-Pawn.Ru!
Команда /virtmir предназначена для изменения виртуального мира указанному игроку на указанный мир.
Без особых предисловий, перейдем к коду:

Ко всем #define

#define SCM SendClientMessage
В public OnPlayerConnect

SetPVarInt(playerid, "Logged", 0);
В public OnPlayerSpawn

SetPVarInt(playerid, "Logged", 1);
Сама команда:

CMD:virtmir(playerid, params[])
{
static const msg[] = "Администратор %s изменил ваш виртуальный мир на %d.",
msg1[] = "Вы изменили вирт. мир игроку %s на %d.";
new player,
mir,
fmt_msg[sizeof(msg) - 4 + MAX_PLAYER_NAME + 2],
fmt_msg1[sizeof(msg1) - 4 + MAX_PLAYER_NAME + 2];

if(GetPVarInt(playerid, "Logged") == 0) return true; // Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 3) return true; // Проверка на админ-уровень (с 5 админ-уровня)
if(sscanf(params, "dd", player, mir)) return
SCM(playerid, -1, "Введите: /virtmir [ID игрока] [вирт. мир]"); // Если администратор не ввел какое либо из значений
if(GetPVarInt(id, "Logged") == 0) return
SCM(playerid, -1, "Игрок не авторизован!"); // Если игрок, id которого ввели, не авторизован
SetPlayerVirtualWorld(player, mir); // присвоение указанного вирт. мира указанному игроку

format(fmt_msg, sizeof(fmt_msg), msg, PlayerInfo[playerid][pName], mir);
SCM(player, -1, fmt_msg); // Собщение игроку

format(fmt_msg1, sizeof(fmt_msg1), msg1, PlayerInfo[player][pName], mir);
SCM(playerid, -1, fmt_msg1); // сообщение администратору
return 1;
}



Жду адекватной критики.
Автор: Alanchick
За помощь спасибо: Untonyst (http://pro-pawn.ru/member.php?4123-Untonyst)
Зачем объявлять статические константы в самом начале?Ведь при не совпадение одного из условий они во все не понадобятся.


if(PlayerInfo[playerid][pAdmin] < 3) return true; // Проверка на админ-уровень (с 5 админ-уровня)
Ничего странного не замечаете?

#enotik
06.01.2016, 19:23
Зачем объявлять статические константы в самом начале?Ведь при не совпадение одного из условий они во все не понадобятся.


if(PlayerInfo[playerid][pAdmin] < 3) return true; // Проверка на админ-уровень (с 5 админ-уровня)
Ничего странного не замечаете?

Ну ошибся человек в тексте, хотел не с пятого а с четвертого уровня :dash2:

Desulaid
06.01.2016, 19:30
Сентябрь горит, перфекционист плачет, автор не мог поступить иначе, логики нееееет :grin:

Alanchick
06.01.2016, 19:33
Зачем объявлять статические константы в самом начале?Ведь при не совпадение одного из условий они во все не понадобятся.
Перенес.


if(PlayerInfo[playerid][pAdmin] < 3) return true; // Проверка на админ-уровень (с 5 админ-уровня)
Ничего странного не замечаете?
Опечатка. Исправил.

#enotik
06.01.2016, 19:36
Сентябрь горит, перфекционист плачет, автор не мог поступить иначе, логики нееееет :grin:

в чем именно нет логики?

Desulaid
06.01.2016, 19:54
в чем именно нет логики?

не знал что в песню впихнуть, сейчас немного свой вариант сделаю :)

ня. фулл улучшение :3


CMD:vworld(playerid, params[])
{
if (!IsPlayerAdmin(playerid)) // замените на свой аналог
return 1;

new targetid, virtual_world;
if (sscanf(params, "dd", targetid, virtual_world))
return SendClientMessage(playerid, -1, "Введите: /vworld [ID игрока] [вирт. мир]");

if (0 == IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Игрок не подключен!");

SetPlayerVirtualWorld(targetid, virtual_world);

static const
msg_1[] = "Администратор %s изменил ваш виртуальный мир на %d.",
msg_2[] = "Вы изменили вирт. мир игроку %s на %d.";

new fmt_msg[sizeof(msg_1) - 4 + MAX_PLAYER_NAME + 2];

GetPlayerName(targetid, fmt_msg, sizeof(fmt_msg));
format(fmt_msg, sizeof(fmt_msg), msg_1, fmt_msg, virtual_world);
SendClientMessage(targetid, -1, fmt_msg);

GetPlayerName(playerid, fmt_msg, sizeof(fmt_msg));
format(fmt_msg, sizeof(fmt_msg), msg_2, fmt_msg, virtual_world);
SendClientMessage(playerid, -1, fmt_msg);
return 1;
}

#enotik
06.01.2016, 22:20
не знал что в песню впихнуть, сейчас немного свой вариант сделаю :)

ня. фулл улучшение :3


CMD:vworld(playerid, params[])
{
if (!IsPlayerAdmin(playerid)) // замените на свой аналог
return 1;

new targetid, virtual_world;
if (sscanf(params, "dd", targetid, virtual_world))
return SendClientMessage(playerid, -1, "Введите: /vworld [ID игрока] [вирт. мир]");

if (0 == IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Игрок не подключен!");

SetPlayerVirtualWorld(targetid, virtual_world);

static const
msg_1[] = "Администратор %s изменил ваш виртуальный мир на %d.",
msg_2[] = "Вы изменили вирт. мир игроку %s на %d.";

new fmt_msg[sizeof(msg_1) - 4 + MAX_PLAYER_NAME + 2];

GetPlayerName(targetid, fmt_msg, sizeof(name));
format(fmt_msg, sizeof(fmt_msg), msg_1, fmt_msg, virtual_world);
SendClientMessage(targetid, -1, fmt_msg);

GetPlayerName(playerid, fmt_msg, sizeof(fmt_msg));
format(fmt_msg, sizeof(fmt_msg), msg_2, fmt_msg, virtual_world);
SendClientMessage(playerid, -1, fmt_msg);
return 1;
}

особо разницы не заметил..
Только что пвары не юзаются, да и код немного по другому построен.

Desulaid
06.01.2016, 22:24
особо разницы не заметил..
Только что пвары не юзаются, да и код немного по другому построен.

Сейчас они очень похожи, потому что с автором мы в личной переписке поболтали. Но свои "плюхи" он оставил.