Skripta koju koristim: iStunt
Detaljan opis problema: ma napravio onu komandu za /mute s timerom ali ima problemcic, ako kucam na recimo 3 minute i odsutkam igraca sa /unmute onda mi se timer nece "ubiti"
Dio skripte:
CMD:mute(playerid, params[])
{
new id, time, string[128], string2[128];
if(IsPlayerAdmin(playerid) || GetPVarInt(playerid, "Admin") >= 1)
{
if(sscanf(params, "ud", id, time)) return SendClientMessage(playerid, COLOR_WHITE, "Korištenje: /mute [ID] [Vrijeme]");
else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_WHITE, "Pogrešan ID");
else
if(PlayerMuted[id] == 0)
{
PlayerMuted[id] = 1;
SetTimerEx("UnMute",time*1000*60,0,"i", id);
format(string, sizeof(string), "Ušutkali ste %s!", GetName(id));
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string2, sizeof(string2), "Ušutkani ste od administratora %s!", GetName(playerid));
SendClientMessage(id, COLOR_LIME, string2);
}
else SendClientMessage(playerid, COLOR_WHITE, "IgraÄ je već uÅ¡utkan!");
}
else SendClientMessage(playerid, COLOR_KRED, "Niste autorizirani za korištenje ove komande!");
return 1;
}
CMD:unmute(playerid, params[])
{
new id, string[128], string2[128];
if(IsPlayerAdmin(playerid) || GetPVarInt(playerid, "Admin") >= 1)
{
if(sscanf(params, "u", id)) return SendClientMessage(playerid, COLOR_WHITE, "Korištenje: /unmute [ID]");
else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_WHITE, "Pogrešan ID");
else
if(PlayerMuted[id] == 1)
{
PlayerMuted[id] = 0;
format(string, sizeof(string), "Odšutkali ste %s!", GetName(id));
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string2, sizeof(string2), "Odšutkani ste od administratora %s!", GetName(playerid));
SendClientMessage(id, COLOR_LIME, string2);
}
else SendClientMessage(playerid, COLOR_KRED, "IgraÄ nije uÅ¡utkan!");
}
else SendClientMessage(playerid, COLOR_KRED, "Niste autorizirani za korištenje ove komande!");
return 1;
}
forward UnMute(id);
public UnMute(id)
{
PlayerMuted[id] = 0;
SendClientMessage(id, COLOR_LIME, "Odšutkani ste!");
return 1;
}
Neke slike/video za lakse dobivanje pomoci(neobavezno):
new timerubistva[MAX_PLAYERS];
timerubistva[playerid] = SetTimerEx("TvojaFunkcija", 2000, true, "i", playerid);
KillTimer(timerubistva[playerid]);
Trebao bi znati gdje sta ide... Promeni ovo playerid ako treba u nesta drugo itd...
Ovo ti je samo primer..
heh opet ti i mute... nemoj koristit timerex, zasto ne koristis jedan globalni u kojem ces loop kroz igrace i gledat jesu mute, ako jesu samo smanji varijablu za vec koliko zelis... razlog tome: pa recimo da mute 30 igraca, previse timera...
Citat: Dude poslato Jun 30, 2011, 20:57:30 POSLE PODNE
heh opet ti i mute... nemoj koristit timerex, zasto ne koristis jedan globalni u kojem ces loop kroz igrace i gledat jesu mute, ako jesu samo smanji varijablu za vec koliko zelis... razlog tome: pa recimo da mute 30 igraca, previse timera...
Mislim da neće razumjeti šta mu hoćeš objasniti, ali recimo da koristi varijablu
npr.
new timerCounter[MAX_PLAYERS];
LocalTimer() // recimo da je namjesten na 1000 milisekundi odnosno na 1 sekundu
{
foreach(Player, i)
{
timerCounter[i] ++;
if(timerCounter[i] == 10) // 10 sekundi
{
// efekt
}
}
return true;
}
Još jedna napomena, ne trebaš koristiti new string2[] jer to sve možeš napraviti sa jednim 'string' - om
hvala aleksandar
dude - ama brate ne otvaram ja CroHerzu pa da cu imat 200 online igraca, ak obudem imao 10 bit ce dobro -.-
hvala i tebi [H]265 ali lakse mi ej ovako
no aj jos zeru pomozite da ne otvaram temu
sad kad muta igraca onda on moze pricati, dodao sam i u OnPlayertext ali nece, evo OnPlayerText
public OnPlayerText(playerid, text[])
{
ChatLog(playerid, text);
if((strlen(text) < 3) || (text[0] == '/') || (text[0] == '#') || (text[0] == '!')) return 1;
else
{
new offset;
new len;
for(new i = 0; i < MAX_WORDS; i++)
{
offset = strfind(text, swear[i], true);
if(offset > -1)
{
len = strlen(swear[i]);
if(len < 3) break;
for(new y=0; y<len; y++)
{
text[offset+y] = '*';
}
swearCount[playerid]++;
new string[64];
format(string, sizeof(string), "Zabranjeno je psovati i vrijeÄ'ati, upozorenje %d/%d", swearCount[playerid], MAX_SWEARCOUNT);
SendClientMessage(playerid, COLOR_KRED, string);
if(swearCount[playerid] >= MAX_SWEARCOUNT)
{
new name[24];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "iStunt: Server je izbacio %s zbog psovanja i vrijeÄ'anja!", name);
SendClientMessageToAll(COLOR_KRED, string);
TogglePlayerControllable(playerid, 0);
Kick(playerid);
break;
}
break;
}
}
}
if(PlayerMuted[playerid] == 1)
{
SendClientMessage(playerid, COLOR_YELLOW, "Nemožete priÄati, uÅ¡utkani ste!");
return 0;
}
return 1;
}
Zato jer ti je na kraju return 1; znaÄi ipak je ishod toÄan odnosno izvede se, stavi zadnji return na false i ja mislim da bi onda trebalo raditi.
ipak neće :S