PDA

Просмотр полной версии : [Вопрос] Вопрос про sscanf и переменную.



DmitriyVasilev
27.03.2019, 16:27
Привет, в чем разница будет между:
CMD:vc(playerid, params[])
{
if(User[playerid][pMuted] == 1) return SendClientMessage(playerid,COLOR_GREY,"У вас бан чата!");
if(User[playerid][pDonateRank] < 1) return SendClientMessage(playerid,COLOR_GREY, !"Вы не имеете доступ к VIP чату");
if(sscanf(params,"s[100]",params[0])) return SendClientMessage(playerid, -1, !"Введите: /vc [чат]");
new vip_chat[128];
new vip_rank[25];
if(IsIP(params[0]) || CheckString(params[0]))
{
new ip[32];
GetPlayerIp(playerid,ip,sizeof(ip));
new fmt_chat[145];
User[playerid][pMuted] = 10800;
format(fmt_chat,sizeof(fmt_chat), "%s: %s IN /vc",User[playerid][pName],params[0]);
ABroadCast(COLOR_LIGHTRED,fmt_chat,1);
format(fmt_chat, sizeof(fmt_chat), "ID: %i | IP: [%s]",playerid,ip);
ABroadCast(COLOR_LIGHTRED,fmt_chat,1);
SendClientMessage(playerid, COLOR_LIGHTRED, !"Вы получили бан чата на 3 часа. /mm - репорт");
return 1;
}
if(User[playerid][pDonateRank] == 1) vip_rank = "{cd7f32}[BRONZE VIP]:";
else if(User[playerid][pDonateRank] == 2) vip_rank = "{c0c0c0}[SILVER VIP]:";
else if(User[playerid][pDonateRank] == 3) vip_rank = "{FFD700}[GOLD VIP]:";
else vip_rank = "[PREMIUM VIP]:";
format(vip_chat,sizeof(vip_chat), "*%s {FFFFFF}%s[%i]: %s",vip_rank, User[playerid][pName],playerid,params[0]);
SendVipMessage(COLOR_YELLOW,vip_chat);
return 1;
}
И
CMD:vc(playerid, params[])
{
new pparamz[100];
if(User[playerid][pMuted] == 1) return SendClientMessage(playerid,COLOR_GREY,"У вас бан чата!");
if(User[playerid][pDonateRank] < 1) return SendClientMessage(playerid,COLOR_GREY, !"Вы не имеете доступ к VIP чату");
if(sscanf(params,"s[100]",pparamz)) return SendClientMessage(playerid, -1, !"Введите: /vc [чат]");
new vip_chat[128];
new vip_rank[25];
if(IsIP(pparamz) || CheckString(pparamz))
{
new ip[32];
GetPlayerIp(playerid,ip,sizeof(ip));
new fmt_chat[145];
User[playerid][pMuted] = 10800;
format(fmt_chat,sizeof(fmt_chat), "%s: %s IN /vc",User[playerid][pName],pparamz);
ABroadCast(COLOR_LIGHTRED,fmt_chat,1);
format(fmt_chat, sizeof(fmt_chat), "ID: %i | IP: [%s]",playerid,ip);
ABroadCast(COLOR_LIGHTRED,fmt_chat,1);
SendClientMessage(playerid, COLOR_LIGHTRED, !"Вы получили бан чата на 3 часа. /mm - репорт");
return 1;
}
if(User[playerid][pDonateRank] == 1) vip_rank = "{cd7f32}[BRONZE VIP]:";
else if(User[playerid][pDonateRank] == 2) vip_rank = "{c0c0c0}[SILVER VIP]:";
else if(User[playerid][pDonateRank] == 3) vip_rank = "{FFD700}[GOLD VIP]:";
else vip_rank = "[PREMIUM VIP]:";

Обьясните когда просто можно без обьявления переменной писать "s[100]", params[0], а когда надо объявлять переменную наподобие pparams[100]; и точь в точь так же использовать ее. Спасибо!

DeimoS
27.03.2019, 16:41
http://pro-pawn.ru/showthread.php?12988

verteich
27.03.2019, 21:23
Разница в быстроте кодов, обычная переменная быстрей массива
Можно так же использовать extract, но эта на любителя ( разницы в скорости нет)

Nexius_Tailer
28.03.2019, 00:12
обычная переменная быстрей массива
Но на её выделение тоже нужно время.

DeimoS
28.03.2019, 08:48
Разница в быстроте кодов, обычная переменная быстрей массива

В примере автора в любом случае будет 2 массива. В конкретном случае разница будет лишь в читаемости. А про остальные случаи описано в статье, ссылку на которую дал выше