[RD]Chez, короче вот полный код админки. Те строки которые ты мне написал их попросту нет. [pwn]
#include <a_samp>
#define CMD 0x999999AA
#define options 5
#define LogWriteCmd 0
#define LogWriteChat 1
#define LogWriteConnect 2
#define LogWriteDisconnect 3
#define LogWriteMoney 4
new File:f;
new File:Adm;
new Admin[MAX_PLAYERS];
new TimerLog;
forward banya();
forward peklo(playerid);
forward LogMoney();
new PlayerStatus[MAX_PLAYERS][2];
new Config[options];
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
strtok2(const string[], &index)
{
new length = strlen(string);
new result[20];
new idx;
while (index < length && (string[index] != '.'&&string[index]!=' '))
{
result[idx++] = string[index];
index++;
}
result[idx + 1] = EOS;
return result;
}
StrDate(const opt[])
{
new str[32];
if(!strlen(opt))
format(str,sizeof(str),"Error nax");
else if(strcmp(opt,"dt",false)==0)
{
new y,m,d;
new hh,mm,ss;
gettime(hh,mm,ss);
getdate(y,m,d);
format(str,sizeof(str),"[%d.%d.%d][%d:%d:%d]",d,m,y,hh,mm,ss);
}
else if(strcmp(opt,"d",false)==0)
{
new y,m,d;
getdate(y,m,d);
format(str,sizeof(str),"%d.%d.%d",d,m,y);
}
else if(strcmp(opt,"t",false)==0)
{
new hh,mm,ss;
gettime(hh,mm,ss);
format(str,sizeof(str),"%d:%d:%d",hh,mm,ss);
}
else
format(str,sizeof(str),"Error nax");
return str;
}
Log(playerid,const text[])
{
new name[24];
new string[256];
GetPlayerName(playerid,name,24);
format(string,sizeof(string),"[%s] %s:%s\n",StrDate("t"),name,text);
return string;
}
public OnFilterScriptInit()
{
print("____________________");
print(" ADM V1.4a");
print("Remastered by [Fenix]");
print("____________________");
new string[8];
Adm=fopen("AdmConfig.cfg");
for(new i=0;fread(Adm,string)&&i<options;i++)
{
Config[i]=strval(string);
printf("%s",string);
}
fclose(Adm);
if(Config[LogWriteMoney]==1)
TimerLog=SetTimer("LogMoney",600000,1);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);
//Запись в лог
if(Config[LogWriteCmd]==1)
{
new fileName[36];
format(fileName,sizeof(fileName),"AdmLogs/AdmCmdLog[%s].txt",StrDate("d"));
Adm=fopen(fileName,io_append);
new string[512];
string=Log(playerid,cmdtext);
fwrite(Adm,string);
fclose(Adm);
}
if(strcmp(cmd,"/adm", true)==0)
{
cmd = strtok(cmdtext, idx);
if(strlen(cmdtext)>4&&strcmp(cmd,"ban", true) == 0&&(IsPlayerAdmin(playerid)||Admin[playerid]==2))
{
new tmp[40];
new data[30];
tmp=strtok(cmdtext, idx);
data=strtok(cmdtext, idx);
new id=strval(tmp);
if(IsPlayerConnected(id))
{
new IP[20];
new name[24];
new String[256];
new nameAdmin[24];
GetPlayerName(playerid,nameAdmin,24);
GetPlayerIp(id,IP,sizeof(IP));
GetPlayerName(id,name,sizeof(name));
format(String,sizeof(String),"%s %s %s %s %s\n",IP,data,name,cmdtext[idx],nameAdmin);
f=fopen("banya.txt");
fwrite(f,String);
fclose(f);
format(String,sizeof(String),"***Игрок %s был забанен до %s",name,data);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
SendClientMessage(i,CMD,String);
}
format(String,sizeof(String)," Вы забанены администратором %s до %s! Причина: %s.",nameAdmin,data,cmdtext[idx]);
SendClientMessage(playerid,0xFF0000AA,String);
Kick(id);
}
return 1;
}
else if(strlen(cmdtext)>4&&strcmp(cmd,"kick", true) == 0&&(Admin[playerid]==1||IsPlayerAdmin(playerid)))
{
new tmp[40];
tmp=strtok(cmdtext,idx);
if(!strlen(tmp))
SendClientMessage(playerid,CMD," Нету ID игрока");
else
{
new id=strval(tmp);
new string[80];
new name[24],admname[24];
GetPlayerName(id,name,24);
GetPlayerName(playerid,admname,24);
format(string,sizeof(string),"***Игрок %s был кикнут администратором %s",name,admname);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
SendClientMessage(i,CMD,string);
}
format(string,sizeof(string)," Вы были кикнуты с сервера администратором %s",admname);
SendClientMessage(playerid,0xFF0000AA,string);
Kick(id);
}
return 1;
}
else if(strlen(cmdtext)>4&&strcmp(cmd,"cc", true) == 0&&(Admin[playerid]==1||IsPlayerAdmin(playerid)))
{
for (new a=1;a<=50;a++)
{
SendClientMessageToAll(0xAFAFAFAA,"\n");
}
{
new string [256];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
SetPlayerInterior(playerid, 0);
ResetPlayerWeapons(playerid);
format(string, sizeof(string), "***Админ %s почистил чат!", pName);
SendClientMessageToAll(0xAFAFAFAA, string);
}
return 1;
}
else if(strlen(cmdtext)>4&&strcmp(cmd,"slap", true) == 0&&(Admin[playerid]==1||IsPlayerAdmin(playerid)))
{
new tmp[40];
tmp=strtok(cmdtext,idx);
new id=strval(tmp);
if(!strlen(tmp))
SendClientMessage(playerid,CMD," Нету ID игрока");
else if(!IsPlayerConnected(id))
SendClientMessage(playerid,CMD," Игрока с таким ID нет на сервере");
else
{
new string[80];
new name[24],admname[24];
GetPlayerName(id,name,24);
GetPlayerName(playerid,admname,24);
format(string,sizeof(string),"***Игрок %s был ударен администратором %s",name,admname);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
SendClientMessage(i,CMD,string);
}
new Float:h;
new Float:X,Float:Y,Float:Z;
GetPlayerHealth(id,h);
SetPlayerHealth(id,h-10.0);
GetPlayerPos(id,X,Y,Z);
SetPlayerPos(id,X,Y,Z+5.0);
}
return 1;
}
else if(strlen(cmdtext)>4&&strcmp(cmd,"kill", true) == 0&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
{
new tmp[40];
tmp=strtok(cmdtext,idx);
new id=strval(tmp);
if(!strlen(tmp))
SendClientMessage(playerid,CMD," Нету ID игрока");
else if(!IsPlayerConnected(id))
SendClientMessage(playerid,CMD," Игрока с таким ID нет на сервере");
else
{
new string[80];
new name[24],admname[24];
GetPlayerName(id,name,24);
GetPlayerName(playerid,admname,24);
format(string,sizeof(string),"***Игрок %s был убит администратором %s",name,admname);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
SendClientMessage(i,CMD,string);
}
SetPlayerHealth(playerid,0.0);
}
return 1;
}
else if(strlen(cmdtext)>4&&strcmp(cmd,"mute", true) == 0&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
{
new tmp[40];
tmp=strtok(cmdtext,idx);
new id=strval(tmp);
if(!strlen(tmp))
SendClientMessage(playerid,CMD," Нету ID игрока");
else if(!IsPlayerConnected(id))
SendClientMessage(playerid,CMD," Игрока с таким ID нет на сервере");
else if(PlayerStatus[id][1]==1)
{
new string[80];
new name[24],admname[24];
GetPlayerName(id,name,24);
GetPlayerName(playerid,admname,24);
format(string,sizeof(string),"***Игрок %s был разоткнут администратором %s",name,admname);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
SendClientMessage(i,CMD,string);
}
PlayerStatus[id][1]=0;
}
else
{
new string[80];
new name[24],admname[24];
GetPlayerName(id,name,24);
GetPlayerName(playerid,admname,24);
format(string,sizeof(string),"***Игрок %s был заткнут администратором %s",name,admname);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&(Admin[playerid]>=1||IsPlayerAdmin(playerid)))
SendClientMessage(i,CMD,string);
}
PlayerStatus[id][1]=1;
}
return 1;
}
else if(strlen(cmdtext)>4&&strcmp(cmd,"config", true)==0&&(Admin[playerid]==2||IsPlayerAdmin(playerid)))
{
new tmp[40];
cmd=strtok(cmdtext,idx);
if(!strlen(cmd))
{
new string[128];
format(string,sizeof(string),"***Лог каманд:%d",Config[LogWriteCmd]);
SendClientMessage(playerid,CMD,string);
format(string,sizeof(string),"***Лог чата:%d",Config[LogWriteChat]);
SendClientMessage(playerid,CMD,string);
format(string,sizeof(string),"***Лог денег:%d",Config[LogWriteMoney]);
SendClientMessage(playerid,CMD,string);
}
else if(strcmp(cmd,"cmd",true)==0)
{
tmp=strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,CMD,"1 - включить лог камандной строки 0 -выключить");
}
else if(strcmp(tmp,"1",true)==0)
{
Config[LogWriteCmd]=1;
SendClientMessage(playerid,CMD,"Лог командной строки включен");
}
else if(strcmp(tmp,"0",true)==0)
{
Config[LogWriteCmd]=0;
SendClientMessage(playerid,CMD,"Лог командной строки выключен");
}
else
SendClientMessage(playerid,CMD,"1 - включить лог камандной строки 0 -выключить");
return 1;
}
else if(strcmp(cmd,"chat",true)==0)
{
tmp=strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,CMD,"1 - включить лог чата 0 -выключить");
}
else if(strcmp(tmp,"1",true)==0)
{
Config[LogWriteChat]=1;
SendClientMessage(playerid,CMD,"Лог чата включен");
}
else if(strcmp(tmp,"0",true)==0)
{
Config[LogWriteChat]=0;
SendClientMessage(playerid,CMD,"Лог чата выключен");
}
else
SendClientMessage(playerid,CMD,"1 - включить лог чата 0 -выключить");
return 1;
}
else if(strcmp(cmd,"money",true)==0)
{
tmp=strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,CMD,"1 - включить лог денег 0 -выключить");
}
else if(strcmp(tmp,"1",true)==0&&Config[LogWriteMoney]==0)
{
TimerLog=SetTimer("LogMoney",600000,1);
Config[LogWriteMoney]=1;
SendClientMessage(playerid,CMD,"Лог денег включен");
}
else if(strcmp(tmp,"0",true)==0&&Config[LogWriteMoney]==1)
{
KillTimer(TimerLog);
Config[LogWriteMoney]=0;
SendClientMessage(playerid,CMD,"Лог чата выключен");
}
else
SendClientMessage(playerid,CMD,"1 - включить лог денег 0 -выключить");
return 1;
}
}
SendClientMessage(playerid,CMD,"АДМИНКА: Либо вы не вошли под РКОН, либо ввели неправильно команду!");
return 1;
}
return 0;
}
public OnPlayerConnect(playerid)
{
new data1[30];
new IP[30];
new IPplayer[30];
new prichina[256];
GetPlayerIp(playerid,IPplayer,sizeof(IPplayer));
new string[128];
//print("Server: join");
f=fopen("banya.txt");
while(fread(f,string))
{
new idx;
IP=strtok(string,idx);
if(strcmp(IP,IPplayer,false,strlen(IPplayer))==0)
{
new year,month,day;
new year1,month1,day1;
new idx1;
data1=strtok(string,idx);
getdate(year,month,day);
day1=strval(strtok2(data1,idx1));
idx1++;
month1=strval(strtok2(data1,idx1));
idx1++;
year1=strval(strtok2(data1,idx1));
strtok(string,idx);
format(prichina,sizeof(prichina),"%s",string[idx]);
//print("Server: 1");
//printf("%d.%d.%d",day1,month1,year1);
if(year<year1||(year<=year1&&month<month1)||(year<=year1&&month<=month1&&day<day1))
{
new string2[256];
format(string2,sizeof(string2),"***Вы забанены до %d.%d.%d причина:%s",day1,month1,year1,prichina);
SendClientMessage(playerid,0xFF0000AA,string2);
Kick(playerid);
}
}
}
fclose(f);
if(Config[LogWriteConnect]==1)
{
new fileName[36];
format(fileName,sizeof(fileName),"AdmLogs/AdmConnectLog[%s].txt",StrDate("d"));
Adm=fopen(fileName,io_append);
new stringC[256];
new Ip[16];
GetPlayerIp(playerid,Ip,sizeof(Ip));
format(stringC,sizeof(stringC),"Connected %s",Ip);
stringC=Log(playerid,stringC);
fwrite(Adm,stringC);
fclose(Adm);
}
return 1;
}
public peklo(playerid)
{
new Float:h;
GetPlayerHealth(playerid,h);
SetPlayerHealth(playerid,h-0.5);
}
public OnPlayerText(playerid,text[])
{
if(Config[LogWriteChat]==1)
{
new fileName[36];
format(fileName,sizeof(fileName),"AdmLogs/AdmTextLog[%s].txt",StrDate("d"));
Adm=fopen(fileName,io_append);
new string[256];
string=Log(playerid,text);
fwrite(Adm,string);
fclose(Adm);
}
if(PlayerStatus[playerid][1]==1)
{
SendClientMessage(playerid,CMD,"***Вы заткнуты!");
return 0;
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
Admin[playerid]=0;
if(Config[LogWriteDisconnect]==1)
{
new fileName[46];
format(fileName,sizeof(fileName),"AdmLogs/AdmDisconnectLog[%s].txt",StrDate("d"));
Adm=fopen(fileName,io_append);
new string[256];
string=Log(playerid,"Disconnected");
fwrite(Adm,string);
fclose(Adm);
}
return 1;
}
public LogMoney()
{
new string[256];
new money;
new k;
for(new p=0;p<MAX_PLAYERS;p++)
{
if(IsPlayerConnected(p))
{
money=GetPlayerMoney(p);
format(string,sizeof(string),"Money:%d",money);
new fileName[36];
format(fileName,sizeof(fileName),"AdmLogs/AdmMoneyLog[%s].txt",StrDate("d"));
Adm=fopen(fileName,io_append);
string=Log(p,string);
fwrite(Adm,string);
fclose(Adm);
k=1;
}
}
if(k==1)
{
new fileName[48];
format(fileName,sizeof(fileName),"AdmLogs/AdmMoneyLog[%s].txt",StrDate("d"));
Adm=fopen(fileName,io_append);
fwrite(Adm,"\n");
fclose(Adm);
}
}
public OnPlayerPrivmsg(playerid, recieverid, text[])
{
new string[256];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
new rName[MAX_PLAYER_NAME];
GetPlayerName(recieverid, rName, sizeof(rName));
for (new a = 0; a < MAX_PLAYERS; a++)
{
if (IsPlayerConnected(a) && IsPlayerAdmin(a) && a != playerid && a != recieverid)
{
format(string, sizeof(string),"***PM от -> %s | Для -> %s: %s", pName, rName, text);
SendClientMessage(a, 0xFFFF00AA, string);
}
}
return 1;
}
[/pwn]
Добавлено (18.06.2009, 18:11)
---------------------------------------------
ZiGGi, есть, но там не всё так хорошо реализовано. Хочется получше. 