PDA

Просмотр полной версии : [Вопрос] Вопрос по банам



Ne_nub
02.08.2016, 02:42
Проблема с командой бан. Например, если я баню, прописав свою причину, он попросу показывает

Nick [%s] R-IP [%s] L-IP [%s] IP [%s]
. Ну а если цифри писать (1 или 2), то банится по своей причине ( как указано в коде ) и на свое число дней.

А вот как сделать так, чтобы банил игрока по примеру /ban 0 30 Реклама ( 0 - id, 30 - кол-во дней, Реклама - причина ). Вот сам код:



else if(strcmp(cmd, "/ban", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 2)
{
tmp = strcharsplit(cmdtext, idx);
new stringr[64];
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /ban [id] [причина]");
giveplayerid = ReturnUser(tmp);
if(AntiBan[playerid] >= 60) { SendClientMessage(playerid,COLOR_GREY,"[Анти-перебан] Ваши адм действия заблокированы на 3 минуты"); AntiBan[playerid] = 180; return true; }
if(anti[playerid] == 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "[Анти-Наказание] Вы словили блок на наказание сроком 5 минут");
if (PlayerInfo[playerid][pAdmin] >= 2)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(PlayerInfo[giveplayerid][pLeader] > 0) return SendClientMessage(playerid,COLOR_GRAD2, "Лидер не может быть забанен!");
if(PlayerInfo[giveplayerid][pAdmin] > 0) return SendClientMessage(playerid, COLOR_GRAD2, "Администратор не может быть забанен!");
new ip[15];
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(IsIpFound(result))
{
PlayerInfo[playerid][pMuteTime] = 10800;
PlayerInfo[playerid][pMuted] = 1;
format(stringer, sizeof(stringer), "%s: %s",PlayerInfo[playerid][pNames],result);
ABroadCast(COLOR_LIGHTRED,stringer,1);
GetPlayerIp(playerid,ip,14);
format(stringer, sizeof(stringer), "- ID: %d | IP: [%s]",playerid,ip);
ABroadCast(COLOR_LIGHTRED,stringer,1);
SendMes(playerid, COLOR_LIGHTRED, "Вы получили бан чата на 3 часа");
SetPlayerChatBubble(playerid,"заткнут(а)",COLOR_PURPLE,30.0,10000);
KickEx(playerid);
return true;
}
new chislo;
switch(PlayerInfo[giveplayerid][pBanKol])
{
case 0: chislo = 7;
case 1: chislo = 14;
case 2: chislo = 7;
case 3: chislo = 14;
case 4: chislo = 30;
default: chislo = 30;
}
if(strfind(result, "1", true) == 0)
{
format(strcmd,sizeof(strcmd), "Администратор {FFFFFF}%s {FF9900}забанил {FFFFFF}%s {FF9900}на {FFFFFF}%d {FF9900}дней. {FF9900}Причина: {FFFFFF}Читы", PlayerInfo[playerid][pNames], PlayerInfo[giveplayerid][pNames], chislo);
SendClientMessageToAll(COLOR_ORANGE, strcmd);
format(stringr, sizeof(stringr), "Читы");
getdate(year, month, day);
gettime(hour,minuite,second);
FixHour(hour);
hour = shifthour;
new data2[64];
format(data2, 16, "%d-%d-%d %d:%d",day,month,year,hour,minuite);
format(stringer, sizeof(stringer), "INSERT INTO `banlog` (`Name`, `NameAdmin`,`Day`, `Date`, `Text`) VALUES ('%s','%s','7','%s','Чит')",PlayerInfo[giveplayerid]
[pNames],PlayerInfo[playerid][pNames],data2);
mysql_function_query(connects, stringer, false, "","");
}
else if(strfind(result, "2", true) == 0)
{
format(strcmd,sizeof(strcmd), "Администратор {FFFFFF}%s {FF9900}забанил {FFFFFF}%s {FF9900}на {FFFFFF}%d {FF9900}дней. {FF9900}Причина: {FFFFFF}Реклама", PlayerInfo[playerid][pNames], PlayerInfo[giveplayerid][pNames], chislo);
SendClientMessageToAll(COLOR_ORANGE, strcmd);
format(stringr, sizeof(stringr), "Реклама");
getdate(year, month, day);
gettime(hour,minuite,second);
FixHour(hour);
hour = shifthour;
new data2[64];
format(data2, 16, "%d-%d-%d %d:%d",day,month,year,hour,minuite);
format(stringer, sizeof(stringer), "INSERT INTO `banlog` (`Name`, `NameAdmin`,`Day`, `Date`, `Text`) VALUES ('%s','%s','14','%s','Реклама')",PlayerInfo[giveplayerid]
[pNames],PlayerInfo[playerid][pNames],data2);
mysql_function_query(connects, stringer, false, "","");
}
else
{
format(strcmd,sizeof(strcmd), "Администратор {FFFFFF}%s {FF9900}забанил {FFFFFF}%s {FF9900}на {FFFFFF}%d {FF9900}дней. {FF9900}Причина: {FFFFFF}%s",PlayerInfo[playerid][pNames], PlayerInfo[giveplayerid][pNames], chislo, result);
SendClientMessageToAll(COLOR_ORANGE,strcmd);
format(stringr, sizeof(stringr), "%s",result);
getdate(year, month, day);
gettime(hour,minuite,second);
FixHour(hour);
hour = shifthour;
new data2[64];
format(data2, 16, "%d-%d-%d %d:%d",day,month,year,hour,minuite);
format(stringer, sizeof(stringer), "INSERT INTO `banlog` (`Name`, `NameAdmin`,`Day`, `Date`, `Text`) VALUES ('%s','%s','30','%s','%s')",PlayerInfo[giveplayerid]
[pNames],PlayerInfo[playerid][pNames],data2,result);
mysql_function_query(connects, stringer, false, "","");
}
antiwarn[playerid] += 8;
PlayerInfo[playerid][pBana] += 1;
if(antiwarn[playerid] >= 30 && anti[playerid] == 0) anti[playerid] = 1, antiwarn[playerid] = 300;
new curdate = getdate(year,month,day);
PlayerInfo[giveplayerid][pLocked2] = 1;
PlayerInfo[giveplayerid][pBanTime1] = curdate+chislo;
PlayerInfo[giveplayerid][pBanData1] = curdate;
getdate(year, month, day);
gettime(hour,minuite,second);
FixHour(hour);
hour = shifthour;
AntiBan[playerid] += 30;
format(stringer, sizeof(stringer), " Nick [%s] R-IP [%s] L-IP [%s] IP [%s]",PlayerInfo[giveplayerid][pNames],PlayerInfo[giveplayerid][
pIpReg],PlayerInfo[giveplayerid][pIpReg],ip);
ABroadCast(COLOR_LIGHTRED,stringer,1);
KickEx(giveplayerid);
return true;
}
}
else SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!");
}
else SendClientMessage(playerid, COLOR_GREY, "У вас недостаточно прав!");
}
return true;

Голова совсем не варит.

vovandolg
02.08.2016, 03:13
:russian_roulette: ну и код

Ne_nub
02.08.2016, 14:20
:russian_roulette: ну и код


Я знаю )

vovandolg
02.08.2016, 14:52
Я знаю )

Вангую что тебе не кто не ответил, потому что такой код з@п@дло кому то перебирать и писать с нуля,
мой тебе совет найти какой нибудь new.pwn на новых командных движках и с норм кодом.

StevenH
02.08.2016, 19:04
Я знаю )

Выше совет годный, подобная команда, на DC_CMD, будет занимать в раз 5 меньше строк, да и как минимум будет лучше "оптимизация". С таким кодом, как выше и ответили, врятли кто буде помогать, хотя может найдутся такие :victory:

Ne_nub
02.08.2016, 23:35
Выше совет годный, подобная команда, на DC_CMD, будет занимать в раз 5 меньше строк, да и как минимум будет лучше "оптимизация". С таким кодом, как выше и ответили, врятли кто буде помогать, хотя может найдутся такие :victory:

Да, знаю что dc_cmd хорош, но переводить все команды в моде.. Ухх.

vovandolg
03.08.2016, 01:07
Да, знаю что dc_cmd хорош, но переводить все команды в моде.. Ухх.

Если этот мод ты начал недавно ковырять, то поверь есть намного лучше моды, бросай этот гиблый код:victory:

Ne_nub
03.08.2016, 01:46
Если этот мод ты начал недавно ковырять, то поверь есть намного лучше моды, бросай этот гиблый код:victory:

Мод свой ( помогали писать ). А, кстати. Можно ли как-нибудь сразу все команды перевести на dc_cmd ?

BadPawn
03.08.2016, 02:51
Мод свой ( помогали писать ). А, кстати. Можно ли как-нибудь сразу все команды перевести на dc_cmd ?

Утром начал, ночью закончил. )))

vovandolg
03.08.2016, 03:14
Мод свой ( помогали писать ). А, кстати. Можно ли как-нибудь сразу все команды перевести на dc_cmd ?

Значит плохому Вас научили писать раз мод Ваш, а команды с говномодов)

Nexius_Tailer
03.08.2016, 03:25
Выше совет годный, подобная команда, на DC_CMD, будет занимать в раз 5 меньше строк, да и как минимум будет лучше "оптимизация". С таким кодом, как выше и ответили, врятли кто буде помогать, хотя может найдутся такие :victory:
Проще заново эту команду переписать. И да, если просто перевести этот код на zcmd/dc_cmd/izcmd - лучше он вряд ли станет. Плохой код и на командном процессоре будет плохим.