PDA

Просмотр полной версии : [Вопрос] Помогите с переводом команды на sccanf



den4is01
17.02.2015, 15:43
Добрый день. Пожалуйста помогите перевести на sccanf желательно с пояснениями. За ранее спасибо.


if(strcmp(cmd, "/saveadmin", true) == 0)
{
new strings[MAX_STRING];
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] != 10)
{
SendClientMessage(playerid, COLOR_GREY, " Вы не уполномочены использовать эту команду!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /saveadmins [PlayerName]");
return 1;
}
new playername[MAX_PLAYER_NAME+1];
format(playername, sizeof(playername), "Admins/%s.cfg", tmp);
if(!fexist(playername))
{
new File: hFile = fopen(playername, io_write);
if (hFile)
{
fclose(hFile);
format(strings, sizeof(strings), "Аккаунт администратора %s успешно создан.", tmp);
SendClientMessage(playerid, COLOR_RED, strings);
}
}
else if(fexist(playername))
{
format(strings, sizeof(strings), "Администратор %s уже существует, выберите другое имя !", tmp);
SendClientMessage(playerid, COLOR_GRAYWHITE, strings);
return 1;
}
}
return 1;
}
if(strcmp(cmd, "/deleteadmin", true) == 0)
{
new playername[MAX_PLAYER_NAME+1];
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] != 10)
{
SendClientMessage(playerid, COLOR_GREY, " Вы не уполномочены использовать эту команду!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /deleteadmin [PlayerName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
format(playername, sizeof(playername), "Admins/%s.cfg", tmp);
if(!fexist(playername))
{
SendClientMessage(playerid, COLOR_GREY, " Этого админ- аккаунта не существует !");
return 1;
}
else if(fexist(playername))
{
fremove(playername);
format(string, sizeof(string), "[Server]: %s был удалён из администрации %s.", tmp, PlayerName(playerid));
new lH, lM, lS; gettime(lH,lM,lS);
format(string, sizeof(string), "[%d:%02d:%02d] %s", lH,lM,lS, string);
SendClientMessageToAll(COLOR_RED, string);
Kick(giveplayerid);
return 1;
}
}
return 1;
}

gangzone.ini
17.02.2015, 17:41
В php код закинь... Переведу, а так не хочу)

den4is01
17.02.2015, 17:49
Ок за комп сяду закину

Mazzilla
17.02.2015, 18:11
http://pro-pawn.ru/showthread.php?5560-sscanf-OnPlayerCommandText

den4is01
17.02.2015, 18:22
Я смотрел урок у меня чёт не получилось вот и думал что если бы на примере этих команда кто нить мне объяснил я бы понял.

Mazzilla
17.02.2015, 18:28
Я смотрел урок у меня чёт не получилось вот и думал что если бы на примере этих команда кто нить мне объяснил я бы понял.
Что там непонятного? Добавить в мод 3 строчки и использовать везде params в командах - верх трудности?

if(strcmp(cmd, "/saveadmin", true) == 0)
{
if(!IsPlayerConnected(playerid)) return true;
if(PlayerInfo[playerid][pAdmin] != 10) return SendClientMessage(playerid, COLOR_GREY, " Вы не уполномочены использовать эту команду!");
new playername[MAX_PLAYER_NAME];
if(sscanf(params, "s[24]", playername)) return SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /saveadmins [PlayerName]");
new string[54+MAX_PLAYER_NAME];
format(string, sizeof string, "Admins/%s.cfg", playername);
if(!fexist(string))
{
new File: hFile = fopen(string, io_write);
if (hFile)
{
fclose(hFile);
format(string, sizeof string, "Аккаунт администратора %s успешно создан.", playername);
SendClientMessage(playerid, COLOR_RED, string);
return true;
}
}
else if(fexist(string))
{
format(string, sizeof string, "Администратор %s уже существует, выберите другое имя !", playername);
SendClientMessage(playerid, COLOR_GRAYWHITE, string);
return true;
}
return true;
}
if(strcmp(cmd, "/deleteadmin", true) == 0)
{
if(!IsPlayerConnected(playerid)) return true;
if(PlayerInfo[playerid][pAdmin] != 10) return SendClientMessage(playerid, COLOR_GREY, " Вы не уполномочены использовать эту команду!");
new playername[MAX_PLAYER_NAME];
if(sscanf(params, "s[24]", playername)) return SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /deleteadmin [PlayerName]");
new string[59+MAX_PLAYER_NAME*2];
format(string, sizeof string, "Admins/%s.cfg", playername);
if(!fexist(string)) return SendClientMessage(playerid, COLOR_GREY, " Этого админ- аккаунта не существует !");
else if(fexist(string))
{
fremove(string);
new lH, lM, lS;
gettime(lH,lM,lS);
format(string, sizeof string , "[%d:%02d:%02d] [Server]: %s был удалён из администрации %s.", lH,lM,lS, playername, PlayerName(playerid));
SendClientMessageToAll(COLOR_RED, string);
for(new i; i<MAX_PLAYERS; i++)
if(!strcmp(PlayerName(i), playername, true))
return Kick(i);
return true;
}
return true;
}
Объяснять не буду - анализируйте код, думайте.

den4is01
17.02.2015, 20:25
Что там непонятного? Добавить в мод 3 строчки и использовать везде params в командах - верх трудности?

if(strcmp(cmd, "/saveadmin", true) == 0)
{
if(!IsPlayerConnected(playerid)) return true;
if(PlayerInfo[playerid][pAdmin] != 10) return SendClientMessage(playerid, COLOR_GREY, " Вы не уполномочены использовать эту команду!");
new playername[MAX_PLAYER_NAME];
if(sscanf(params, "s[24]", playername)) return SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /saveadmins [PlayerName]");
new string[54+MAX_PLAYER_NAME];
format(string, sizeof string, "Admins/%s.cfg", playername);
if(!fexist(string))
{
new File: hFile = fopen(string, io_write);
if (hFile)
{
fclose(hFile);
format(string, sizeof string, "Аккаунт администратора %s успешно создан.", playername);
SendClientMessage(playerid, COLOR_RED, string);
return true;
}
}
else if(fexist(string))
{
format(string, sizeof string, "Администратор %s уже существует, выберите другое имя !", playername);
SendClientMessage(playerid, COLOR_GRAYWHITE, string);
return true;
}
return true;
}
if(strcmp(cmd, "/deleteadmin", true) == 0)
{
if(!IsPlayerConnected(playerid)) return true;
if(PlayerInfo[playerid][pAdmin] != 10) return SendClientMessage(playerid, COLOR_GREY, " Вы не уполномочены использовать эту команду!");
new playername[MAX_PLAYER_NAME];
if(sscanf(params, "s[24]", playername)) return SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /deleteadmin [PlayerName]");
new string[59+MAX_PLAYER_NAME*2];
format(string, sizeof string, "Admins/%s.cfg", playername);
if(!fexist(string)) return SendClientMessage(playerid, COLOR_GREY, " Этого админ- аккаунта не существует !");
else if(fexist(string))
{
fremove(string);
new lH, lM, lS;
gettime(lH,lM,lS);
format(string, sizeof string , "[%d:%02d:%02d] [Server]: %s был удалён из администрации %s.", lH,lM,lS, playername, PlayerName(playerid));
SendClientMessageToAll(COLOR_RED, string);
for(new i; i<MAX_PLAYERS; i++)
if(!strcmp(PlayerName(i), playername, true))
return Kick(i);
return true;
}
return true;
}
Объяснять не буду - анализируйте код, думайте.

Спасибо большое. С большего разобрался