[Pomoc] KillTimerEx?

Započeo System32, Jun 30, 2011, 20:35:19 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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):
Uskoro novi stunt server iStunt. DoÄ'ite i zabavite se!




   
   




Dizajniram za $$$
Popis stvari koje radim:

Wallpaper √  Signature ×  Logo √  Dizajn stranice (Ne kodiranje) √  Baner √  Avatar √  Animacija √  Intro √

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
Poslednja Izmena: Jun 30, 2011, 22:32:42 POSLE PODNE od [H]265
Kristijan Stipić

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;
}

Uskoro novi stunt server iStunt. DoÄ'ite i zabavite se!




   
   




Dizajniram za $$$
Popis stvari koje radim:

Wallpaper √  Signature ×  Logo √  Dizajn stranice (Ne kodiranje) √  Baner √  Avatar √  Animacija √  Intro √

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.
Kristijan Stipić

ipak neće :S
Uskoro novi stunt server iStunt. DoÄ'ite i zabavite se!




   
   




Dizajniram za $$$
Popis stvari koje radim:

Wallpaper √  Signature ×  Logo √  Dizajn stranice (Ne kodiranje) √  Baner √  Avatar √  Animacija √  Intro √