Skripta koju koristim: BMW edit
Detaljan opis problema: Stavio sam i definiro timer ali on i dalje ne radi, Isti je problem i sa /new
Dio skripte:if(strcmp(cmd, "/report", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GetPlayerName(playerid, sendername, sizeof(sendername));
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(!strlen(result))
{
SendClientMessage(playerid, COLOR_DGOLD, "Koristite: /Report [text]");
return 1;
}
format(string, sizeof(string), "REPORT (ID:%d) %s: %s", playerid, sendername, (result));
ABroadCast(TEAM_BLUE_COLOR,string,1);
SendClientMessage(playerid, COLOR_GOLD, "Vas report je poslan svim Virje Gamer's online Adminima.");
SetTimerEx("ReportReset", 3000, false, "i", playerid);
}
return 1;
}
Neke slike/video za lakse dobivanje pomoci(neobavezno):
evo ti primjer kako bi radilo...
ali ovo je za minutu pa ti sebi podesavaj..
ovo ide u komandu..
Timer[playerid] = 1;
SetTimerEx("Report", 60000, false, "%d", playerid);
ovo mozes i nemoras..isto u komandu..
if(Timer[playerid] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Izmedu dva reporta mora proc 1 minuta");
i ovo na kraj skripte...
forward Report(playerid);
public Report(playerid)
{
Timer[playerid] = 0;
}
Jesi skuzio???
Hm ne bas.. Sad mi izbaci 3 errora za ovaj dio
Timer[playerid] = 1;
Errori:C:\Documents and Settings\Administrator\Desktop\Virje Gamer's NEDIRAM\gamemodes\BMWRolePlay.pwn(19368) : error 017: undefined symbol "Timer"
C:\Documents and Settings\Administrator\Desktop\Virje Gamer's NEDIRAM\gamemodes\BMWRolePlay.pwn(19368) : error 001: expected token: ";", but found "]"
C:\Documents and Settings\Administrator\Desktop\Virje Gamer's NEDIRAM\gamemodes\BMWRolePlay.pwn(19368) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Administrator\Desktop\Virje Gamer's NEDIRAM\gamemodes\BMWRolePlay.pwn(19368) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Stavi :
new Timer;
Ne..
Nego new Timer[MAX_PLAYERS];
Sada nema errora ali i dalje se moze spamat :S
Citat: ScHaLe poslato Jul 26, 2011, 16:56:33 POSLE PODNE
Sada nema errora ali i dalje se moze spamat :S
evo komanda
if(strcmp(cmd, "/report", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GetPlayerName(playerid, sendername, sizeof(sendername));
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(!strlen(result))
{
SendClientMessage(playerid, COLOR_DGOLD, "Koristite: /Report [text]");
return 1;
}
if(Timer[playerid] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Izmedu dva reporta mora proc 1 minuta");
format(string, sizeof(string), "REPORT (ID:%d) %s: %s", playerid, sendername, (result));
ABroadCast(TEAM_BLUE_COLOR,string,1);
SendClientMessage(playerid, COLOR_GOLD, "Vas report je poslan svim Virje Gamer's online Adminima.");
Timer[playerid] = 1;
SetTimerEx("Report", 60000, false, "%d", playerid);
}
return 1;
}
i ovo na kraj skripte...
forward Report(playerid);
public Report(playerid)
{
Timer[playerid] = 0;
}
Hvala na pomoci....
LOCK :)
InaÄe to je loÅ¡ naÄin jer neka ti se prikljuÄi npr. 50 igraÄa na server i recimo da svih igraÄa bar jedanput koriste /report to ti je 50 novih timera to je poÄetak crasha servera. Koristi jedan LOCAL timer i sa varijablama se spoji na njega pogotovo za ovakve bizarne stvari kao report komanda. Eto ti primjer
SetTimer("local",1000,true); // NAÄI NEKI SLIÄŒNI TIMER U SVOM MODU
public local()
{
foreach(Player, i)
{
if(bankaTimer[i] >= 1)
{
bankaTimer[i] -= 1;
if(bankaTimer[i] == 0)
{
bankaTimer[i] = 0;
}
}
}
return true;
}
// komanda
if(strcmp(cmd, "/report", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GetPlayerName(playerid, sendername, sizeof(sendername));
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(!strlen(result))
{
SendClientMessage(playerid, COLOR_DGOLD, "Koristite: /Report [text]");
return 1;
}
if(bankaTimer[playerid] >= 1) return SendClientMessage(playerid, COLOR_GRAD1, "Izmedu dva reporta mora proc 1 minuta");
else
{
format(string, sizeof(string), "REPORT (ID:%d) %s: %s", playerid, sendername, (result));
ABroadCast(TEAM_BLUE_COLOR,string,1);
SendClientMessage(playerid, COLOR_GOLD, "Vas report je poslan svim Virje Gamer's online Adminima.");
bankaTimer[playerid] = Min(1); // 1 minutu neÄete moći koristiti /report
}
}
return 1;
}
Nadam se da si shvatio šta sam ti htio reći a za ovo šta sam ti stavio Min(1); to možeš naći u ovom topicu: http://balkan-samp.com/forum/index.php?topic=4245.90
Ubuduće svima savjetujem da se spajaju na lokalne timere varijablama