Skripta koju koristim: iStunt
Detaljan opis problema: izvukao sam iz nekog bAdmina chat log, i sve to meni lijepo, nema errora warninga itd. ali chat log ne radi, ja pisem u chatu on ne radi
Dio skripte:
stock ChatLog(playerid, string[])
{
new File: logfile, logtext[128];
new fyear, fmonth, fday, fhour, fminute, fsecond;
getdate(fyear, fmonth, fday);
gettime(fhour, fminute, fsecond);
logfile = fopen("Logs/Chat.txt", io_append);
format(logtext, sizeof(logtext),"[%02d/%02d/%04d %02d:%02d:%02d] %s: %s \r\n", fday, fmonth, fyear, fhour, fminute, fsecond, PlayerName(playerid), string);
fwrite(logfile, logtext);
fclose (logfile);
}
pod OnPlayerText
ChatLog(playerid, text);
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Pa jesi napravio u scriptfiles folder Logs sa Chat.txt?
Moguce je da ga nemas kao ni taj folder posto nije napravljena funkcija da kreira ako ne postoji!
Citat: [AG] eXtreme poslato Jun 03, 2011, 12:44:59 POSLE PODNE
Pa jesi napravio u scriptfiles folder Logs sa Chat.txt?
Moguce je da ga nemas kao ni taj folder posto nije napravljena funkcija da kreira ako ne postoji!
napravio sam, folder i Chat.txt ali kad otvorim fajl nema nicega
forward ChatLog(playerid, string[]);
public ChatLog(playerid, string[])
{
new File: logfile, logtext[128];
new fyear, fmonth, fday, fhour, fminute, fsecond;
getdate(fyear, fmonth, fday);
gettime(fhour, fminute, fsecond);
logfile = fopen("Logs/Chat.txt", io_append);
format(logtext, sizeof(logtext),"[%02d/%02d/%04d %02d:%02d:%02d] %s: %s \r\n", fday, fmonth, fyear, fhour, fminute, fsecond, PlayerName(playerid), string);
fwrite(logfile, logtext);
fclose (logfile);
}
a jesi li mozda forward Chatlog (string[]); ??
Haha dok je Extreme piso i ja sam xD
Citat: _eXtreme_ poslato Jun 03, 2011, 13:03:16 POSLE PODNE
forward ChatLog(playerid, string[]);
public ChatLog(playerid, string[])
{
new File: logfile, logtext[128];
new fyear, fmonth, fday, fhour, fminute, fsecond;
getdate(fyear, fmonth, fday);
gettime(fhour, fminute, fsecond);
logfile = fopen("Logs/Chat.txt", io_append);
format(logtext, sizeof(logtext),"[%02d/%02d/%04d %02d:%02d:%02d] %s: %s \r\n", fday, fmonth, fyear, fhour, fminute, fsecond, PlayerName(playerid), string);
fwrite(logfile, logtext);
fclose (logfile);
}
ne radi
formatiraj si tekst koji upisujes u log prije otvaranja filea i zatvaranja...
znaci:
forward ChatLog(playerid, string[]);
public ChatLog(playerid, string[])
{
new File: logfile, logtext[128];
new fyear, fmonth, fday, fhour, fminute, fsecond;
getdate(fyear, fmonth, fday);
gettime(fhour, fminute, fsecond);
format(logtext, sizeof(logtext),"[%02d/%02d/%04d %02d:%02d:%02d] %s: %s \r\n", fday, fmonth, fyear, fhour, fminute, fsecond, PlayerName(playerid), string);
logfile = fopen("Logs/Chat.txt", io_append);
fwrite(logfile, logtext);
fclose (logfile);
}
Citat: Dude poslato Jun 03, 2011, 19:45:01 POSLE PODNE
formatiraj si tekst koji upisujes u log prije otvaranja filea i zatvaranja...
znaci:
forward ChatLog(playerid, string[]);
public ChatLog(playerid, string[])
{
new File: logfile, logtext[128];
new fyear, fmonth, fday, fhour, fminute, fsecond;
getdate(fyear, fmonth, fday);
gettime(fhour, fminute, fsecond);
format(logtext, sizeof(logtext),"[%02d/%02d/%04d %02d:%02d:%02d] %s: %s \r\n", fday, fmonth, fyear, fhour, fminute, fsecond, PlayerName(playerid), string);
logfile = fopen("Logs/Chat.txt", io_append);
fwrite(logfile, logtext);
fclose (logfile);
}
nažalost nece
forward ChatLog(playerid, string[]);
public ChatLog(playerid, string[])
{
print("1");
new File: logfile, logtext[128];
new fyear, fmonth, fday, fhour, fminute, fsecond;
print("2");
getdate(fyear, fmonth, fday);
print("3");
gettime(fhour, fminute, fsecond);
print("4");
format(logtext, sizeof(logtext),"[%02d/%02d/%04d %02d:%02d:%02d] %s: %s \r\n", fday, fmonth, fyear, fhour, fminute, fsecond, PlayerName(playerid), string);
print("5");
logfile = fopen("Logs/Chat.txt", io_append);
print("6");
fwrite(logfile, logtext);
print("7");
fclose (logfile);
print("8");
}
ubaci to i napisi do kojeg ti je broja stiglo u konzolu
Ovako meni radi i zoranova i moja vidi pod onplayertext return ako je return 0; ti stavi return 1;
ahh neznam, evo ti moj cijeli OnPlayerText
nesto od toga radi nesto ne, chat log ne radi, Spam Kick ne radi, caps lock radi i mute radi, nego da pitam, koristim ZCMD, jel on mozda ima drugi public kao sto koristi OnPlayerCommandPreformed tako i ovo?
public OnPlayerText(playerid, text[])
{
for(new i=0; i<MAX_WORDS; i++)
{
if(IsPlayerConnected(i))
{
while (text[++i])
{
if ('A' <= text[i] <= 'Z') text[i] |= 0x20;
}
}
}
{
if(PlayerMuted[playerid] == 1)
{
SendClientMessage(playerid, COLOR_YELLOW, "Nemozete pricati, usutkani ste!");
return 0;
}
}
/*if(IsChatOnOrOff == 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "Chat je ugašen!");
return 0;
}*/
{
if((strlen(text) < 3) || (text[0] == '/') || (text[0] == '#') || (text[0] == '!')) return 1;
{
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;
}
}
}
}
{
new TCount, name[24], string[100];
TCount = GetPVarInt(playerid, "TextSpamCount");
TCount++;
SetPVarInt(playerid, "TextSpamCount", TCount);
if(TCount == 2)
{
SendClientMessage(playerid, COLOR_KRED, "JoÅ¡ jedna poruka i biti ćete izbaÄeni!");
}
else if(TCount == 3)
{
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "iStunt: Server je izbacio %s zbog spamanja!", name);
SendClientMessageToAll(COLOR_KRED, string);
print(name);
Kick(playerid);
TogglePlayerControllable(playerid, 0);
}
SetTimerEx("ResetCount", SpamLimit, false, "i", playerid);
}
SetPlayerChatBubble(playerid, text, 0xFF0000FF, 100.0, 5000);
ChatLog(playerid, text);
return 1;
}
jel tebi uopce dodje komanda do ChatLog u onplayertext? stavi prije ChatLog linije ovo: printf("prije chat loga");
pogledaj zatim u konzolu jel ti printa to pod navodnicima kad upises neki tekst...
evo ja stavio ovo prije ChatLog u OnPlayerText
printf("%s: %s", playerid, text);
i nema ga u konzoli, mislim, samo kad pise onda bude [chat] [System32]: a (a je ono sto sam kucao)
public OnPlayerText(playerid, text[])
{
for(new i=0; i<MAX_WORDS; i++)
{
if(IsPlayerConnected(i))
{
while (text[++i])
{
if ('A' <= text<i> <= 'Z') text<i> |= 0x20;
}
}
}
ChatLog(playerid, text);
/*if(IsChatOnOrOff == 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "Chat je ugašen!");
return 0;
}*/
{
if((strlen(text) < 3) || (text[0] == '/') || (text[0] == '#') || (text[0] == '!')) return 1;
{
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;
}
}
}
}
{
new TCount, name[24], string[100];
TCount = GetPVarInt(playerid, "TextSpamCount");
TCount++;
SetPVarInt(playerid, "TextSpamCount", TCount);
if(TCount == 2)
{
SendClientMessage(playerid, COLOR_KRED, "JoÅ¡ jedna poruka i biti ćete izbaÄeni!");
}
else if(TCount == 3)
{
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "iStunt: Server je izbacio %s zbog spamanja!", name);
SendClientMessageToAll(COLOR_KRED, string);
print(name);
Kick(playerid);
TogglePlayerControllable(playerid, 0);
}
SetTimerEx("ResetCount", SpamLimit, false, "i", playerid);
}
SetPlayerChatBubble(playerid, text, 0xFF0000FF, 100.0, 5000);
if(PlayerMuted[playerid] == 1)
{
SendClientMessage(playerid, COLOR_YELLOW, "Nemozete pricati, usutkani ste!");
return 0;
}
}
return 1;
}
nekuzim sat fali??
D:\Private\Server\gamemodes\iStunt.pwn(920) : error 033: array must be indexed (variable "text")
D:\Private\Server\gamemodes\iStunt.pwn(920) : warning 215: expression has no effect
D:\Private\Server\gamemodes\iStunt.pwn(920) : error 001: expected token: ";", but found ")"
D:\Private\Server\gamemodes\iStunt.pwn(920) : error 029: invalid expression, assumed zero
D:\Private\Server\gamemodes\iStunt.pwn(920) : 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.
linija
if ('A' <= text <= 'Z') text |= 0x20;
>
Citat: [AG] System32 poslato Jun 03, 2011, 21:18:40 POSLE PODNE
evo ja stavio ovo prije ChatLog u OnPlayerText
printf("%s: %s", playerid, text);
i nema ga u konzoli, mislim, samo kad pise onda bude [chat] [System32]: a (a je ono sto sam kucao)
znaci da ne dodje do loga, problem nije u logu vec do onplayertext callbacka...
Verovatno zbog return 0; Tu prekine svaku radnju dalje...
umm, a da satvim ovo pMuted samo u jednu liniju?
Probaj ovo:
public OnPlayerText(playerid, text[])
{
for(new i=0; i < MAX_WORDS; i++)
{
if(IsPlayerConnected(i))
{
while (text[++i])
{
if ('A' <= text<i> <= 'Z') text<i> |= 0x20;
}
}
}
if(PlayerMuted[playerid] == 1)
{
SendClientMessage(playerid, COLOR_YELLOW, "Nemozete pricati, usutkani ste!");
return 0;
}
/*if(IsChatOnOrOff == 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "Chat je ugašen!");
return 0;
}*/
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;
}
}
}
new TCount, name[24], string[100];
TCount = GetPVarInt(playerid, "TextSpamCount");
TCount++;
SetPVarInt(playerid, "TextSpamCount", TCount);
if(TCount == 2) SendClientMessage(playerid, COLOR_KRED, "Još jedna poruka i biti c'ete izbac(eni!");
else if(TCount == 3)
{
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "iStunt: Server je izbacio %s zbog spamanja!", name);
SendClientMessageToAll(COLOR_KRED, string);
print(name);
Kick(playerid);
TogglePlayerControllable(playerid, 0);
}
SetTimerEx("ResetCount", SpamLimit, false, "i", playerid);
SetPlayerChatBubble(playerid, text, 0xFF0000FF, 100.0, 5000);
ChatLog(playerid, text);
return 1;
}
Nije testirano tako da ne znam, ali probaj pa reci.
nece, dodu mi isti errori i warninzi!
pokusao sam i PlayerMuted staviti u jednu liniju ali onda /mute ne radi i svejedno ne radi log :SS
mozes li postaviti cijeli OnPlayerText?
Postavi ga na Pastebin i stavi ovdje link
nisi trebao refreshati, paradox mi je napravio :D Hvala svima, lock