PDA

Просмотр полной версии : [Вопрос] Общий чат. /o



Dimon_Fanat
16.12.2014, 15:04
В общем такая проблема когда я пишу в общий чат обычным игроком, то для того чтобы еще раз написать в общий чат должно пройти 40 секунд, а если vip пишет до должно пройти 20 секунд, а оно почему-то пишет что должно пройти 40 секунд чтоб писать. как сделать чтоб для vip было 20 секунд а не 40?


if(strcmp(cmd, "/o", true) == 0)
{
if(Player[playerid][pLevel] == 0)return send(playerid,COLOR_RED,""vError"Писать в общий чат можно только c 1 уровня.");
if(Player[playerid][pJailed] >= true)return send(playerid, COLOR_RED,""vError"Ты не можешь писать в общий чат в тюрьме.");
if(Player[playerid][pMuteTime] != 0)
{
f(string,"Ты не можешь говорить. Оставшееся время: %s",ConvertSeconds(Player[playerid][pMuteTime]));
send(playerid,COLOR_WHITE,string);
return 1;
}
if((!OOC) && Player[playerid][pAdmin] == 0)return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Общий чат был отключен администрацией!");
if(sscanf(params, "s[64]", params[0])) return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}(/o)oc [текст].");
if(OOCChat[playerid] > 0 && Player[playerid][pMuteTime] == 0 && AdminDuty[playerid] == 0)
{
f(string,"[ОШИБКА] {FFFFFF}Ты не можешь писать сообщения в общий чат так часто. Попробуй через %d секунд.",OOCChat[playerid]);
send(playerid,COLOR_RED,string);
return 1;
}
new ip[MAX_PLAYER_NAME];
GetPlayerIp(playerid, ip, sizeof(ip));
if(strfind( params[0] , ".tk" , true ) != -1 || strfind( params[0] , ".com" , true ) != -1 || strfind( params[0] , "3dn.ru" , true ) != -1 || strfind( params[0] , ".ru" , true ) != -1 || strfind( params[0] , ".net" , true ) != -1
|| strfind( params[0] , ":78" , true ) != -1 || strfind( params[0] , "*ru" , true ) != -1 || strfind( params[0] , "172." , true ) != -1 || strfind( params[0] , "^77" , true ) != -1
|| strfind( params[0] , ":77" , true ) != -1 || strfind( params[0] , ":55" , true ) != -1 || strfind( params[0] , ":44" , true ) != -1 || strfind( params[0] , "samp-stories" , true ) != -1
|| strfind( params[0] , ":7777" , true ) != -1 || strfind( params[0] , ": 7777" , true ) != -1 || strfind( params[0] , "_ 7777" , true ) != -1 || strfind( params[0] , ". ru" , true ) != -1
|| strfind( params[0] , ". ru" , true ) != -1 || strfind( params[0] , ". ru" , true ) != -1 || strfind( params[0] , "(точка)" , true ) != -1 || strfind( params[0] , "_ ru" , true ) != -1
|| strfind( params[0] , "новый сервер" , true ) != -1 || strfind( params[0] , "_77" , true ) != -1 || strfind( params[0] , "(пробел)" , true ) != -1)
{
f(string, "[Анти-реклама]:(IP:%s)%s[%d]: %s",ip,sendername(playerid),playerid,params[0]);
ABroadCast(COLOR_YELLOW,string,1);
return 1;
}
if(Player[playerid][pAdmin] !=0 && AdminDuty[playerid] == 1)
{
f(string,"{FF0000}» {FFFFFF}%s[%d]: %s",sendername(playerid),playerid,params[0]);
}
else if(Player[playerid][pVip])
{
f(string,"{FFFF00}» {FFFFFF}%s[%d]: %s",sendername(playerid),playerid,params[0]);
OOCChat[playerid] = 20;
}
else f(string,"{FFFFFF}» %s[%d]: %s",sendername(playerid),playerid,params[0]);
SendClientMessageToAll(COLOR_WHITE,string);
OOCChat[playerid] = 40;
return 1;
}

Dimon_Fanat
16.12.2014, 21:09
Поможет кто-то?

Dimon_Fanat
17.12.2014, 09:12
Что не кто не знает.?

Dima_Tushin
17.12.2014, 18:15
ко всем new


new TimeAdmin[MAX_PLAYERS];//Таймер на Администрацию
new VipTime[MAX_PLAYERS];//Таймер для VIP
в таймеры раз в 1 сек



public Fresh()//мой таймер
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(TimeAdmin[i] > 0)//Таймер для Администрации
{
TimeAdmin[i]--;
if(TimeAdmin[i] == 0) TimeAdmin[i] = 0;
}
if(VipTime[i] > 0)//Таймер для VIP
{
VipTime[i]--;
if(VipTime[i] == 0) VipTime[i] = 0;
}
}
return 1;
}

в команды



if(strcmp(cmd, "/o", true) == 0)
{
if(Player[playerid][pLevel] == 1) return SendClientMessage(playerid, COLOR_RED, "Писать в общий чат можно только c 1 уровня.");
if(Player[playerid][pJailed] >= true) return SendClientMessage(playerid, COLOR_RED, "Ты не можешь писать в общий чат в тюрьме.");
if((!OOC) && Player[playerid][pAdmin] == 0) return SendClientMessage(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Общий чат был отключен администрацией!");
if(sscanf(params, "s[64]", params[0])) return SendClientMessage(playerid, COLOR_COMAND, "[КОМАНДЫ] {FFFFFF}(/o)oc [текст].");
new strings[90];//Установили значение на 90 символов в чате
if(Player[playerid][pAdmin] > 1 && AdminDuty[playerid] == 1)
{
format(string, sizeof(strings), "{FF0000}» {FFFFFF}%s[%d]: %s",sendername(playerid),playerid,params[0]);
SendClientMessageToAll(COLOR_WHITE,string);
if(TimeAdmin[i] > 1) return SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: вы не можете использовать общий чат так часто");
TimeAdmin[i] = 30;//Установили таймер на 30 секунд
}
else if(Player[playerid][pVip])
{
format(string, sizeof(strings), "{FFFF00}»VIP{FFFF00}» {FFFFFF}%s[%d]: %s",sendername(playerid),playerid,params[0]);
SendClientMessageToAll(COLOR_WHITE, string);
if(VipTime[i] > 1) return SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: вы не можете использовать общий чат так часто");
VipTime[i] = 30;//Установили таймер на 30 секунд
}
return 1;
}

Mazzilla
18.12.2014, 19:00
else f(string,"{FFFFFF}» %s[%d]: %s",sendername(playerid),playerid,params[0]);
SendClientMessageToAll(COLOR_WHITE,string);
OOCChat[playerid] = 40;

else
{
f(string,"{FFFFFF}» %s[%d]: %s",sendername(playerid),playerid,params[0]);
OOCChat[playerid] = 40;
}
SendClientMessageToAll(COLOR_WHITE,string);

I'm Cobra
18.12.2014, 19:05
Для чего ты используешь else в обоих случаях? это означает "ИЛИ"
Пример:

if(PlayerInfo[playerid][pAdmin] > 1)
{
}
else // ИЛИ, то есть если pAdmin НЕ > 1
{
}
Поэтому попробуй использовать без "else"

Dimon_Fanat
19.12.2014, 17:18
Для чего ты используешь else в обоих случаях? это означает "ИЛИ"
Пример:

if(PlayerInfo[playerid][pAdmin] > 1)
{
}
else // ИЛИ, то есть если pAdmin НЕ > 1
{
}
Поэтому попробуй использовать без "else"

хорошо попробую.