WintMax, для Пенсела forward ChatLog (string[]);
public ChatLog(string[])
{
new data[64];
new entry[256];
new hour,minute,second;
new year,month,day;
gettime(hour,minute,second);
getdate(year,month,day);
if (minute <= 9)
{
format(entry, sizeof(entry), "[%d.0%d.%d] - %s\n",hour,minute,second,string);
}
else
{
format(entry, sizeof(entry), "[%d.%d.%d] - %s\n",hour,minute,second,string);
}
new File:hFile;
format(data, sizeof(entry), "logs/[%d.%d.%d]-Chat.log",day,month,year);
hFile = fopen(data, io_append);
fwrite(hFile, entry);
fclose(hFile);
}
в public OnPlayerText
....
{
new string[256];
new pname[256];
new output[MAX_PLAYER_NAME+66];
GetPlayerName(playerid, pname, sizeof(pname));
strmid(string, text, 0, 65);
format(output, sizeof(output), " %s[%d]: %s", pname, playerid, string);
SendClientMessageToAll(0xFFFFFFAA, output);
ChatLog(output);
return 0;
}
для привата:
forward PMLog (string[]);
public PMLog(string[])
{
new data[64];
new entry[256];
new hour,minute,second;
new year,month,day;
gettime(hour,minute,second);
getdate(year,month,day);
if (minute <= 9)
{
format(entry, sizeof(entry), "[%d.0%d.%d] - %s\n",hour,minute,second,string);
}
else
{
format(entry, sizeof(entry), "[%d.%d.%d] - %s\n",hour,minute,second,string);
}
new File:hFile;
format(data, sizeof(entry), "logs/[%d.%d.%d]-PM.log",day,month,year);
hFile = fopen(data, io_append);
fwrite(hFile, entry);
fclose(hFile);
}
public OnPlayerPrivmsg(playerid, recieverid, text[])
{
new message[256],pln[24],pln1[24];
GetPlayerName(playerid,pln,sizeof(pln));
GetPlayerName(recieverid,pln1,sizeof(pln1));
format(message,sizeof(message)," [PM] [%s -> %s]: %s",pln,pln1,text);
PMLog(message);
return 1;
}
Добавлено (26.08.2008, 00:01)
---------------------------------------------
народ проблема:
используется для создания банд (мод Пенсел)
...банда создается...
игроку в акк нужно записать название банды в ТЕКСТОВОМ виде
записывается при создании банды так:
GetPlayerName(playerid, name, sizeof(name));
format(stringname, sizeof(stringname),"%s.Gang", name);
strmid(PlayerInfo[playerid][pNameGang], stringname, 0, strlen(stringname), 255);
если после создания банды выйти из игры, то в файле акка напротив строки pNameGang прописывается название банды, если зайти на серв опять и выйти, то все равно в файле все нормально прописывается... казалось бы все ок... но нифига ((( если сделать рестарт серва, то если зайти (с уже созданной бандой) на серв и выйти начинаются чудеса
для начала опишу как сохраняю и как загружаю данные из файла акка:
чтение два варианта пробовал
public OnPlayerLogin
1) fread(file, valtmp);PlayerInfo[playerid][pNameGang] = strval(valtmp);DelPrint(valtmp);
2) fread(file, valtmp); strmid(PlayerInfo[playerid][pNameGang], valtmp, 0, strlen(valtmp), 255);
сохранение
public OnPlayerUpdate(playerid)
format(var, 32, "%s pNameGang\n",PlayerInfo[playerid][pNameGang]);fwrite(hFile, var);
если в чтении использовать первый вариант, то инфа сохраняется только до рестарта серва, т.е. в файл записывается, но если сделать рест серва, то в файле уже остается только пустая строка pNameGang, без значения.
если в чтении использовать второй вариант, то инфа сохраняется, но если после рестарта зайти, после строки "значение" pNameGang (т.е. значение сохраняется) появляется еще одна строка pNameGang, но уже без значения! Т.е. уже имеется 2 строки pNameGang одна с именем банды, другая без имени
потом подумал может у меня все таки неправильно сохраняется всего лишь и попробовал в сохранении использовать
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string),"%s.Gang",playername);
format(var, 32, "%s pNameGang\n",strmid(PlayerInfo[playerid][pNameGang], string, 0, strlen(string4), 255));fwrite(hFile, var);
и значение сохраняется даже после рестарта... но не имя банды, а последее введеное игроком, например если войти в игру и сразу выйти, то в значении будет /login пароль
блин какже сохранить и загрузить данные правильно??????????????