Üdv!
Ez az elsõ scriptem.Ez csak próba képpen raktam fel.
2 Admin parancs Rconnak: /Ban,/Kick
És egy /Pm parancs.
Warnok:0
Code:
//3Parancs teljesen lemagyarítva.Ez az elsõ sikeres hibamentes scriptem.
//Kick,Ban,és /Pm Parancsok vannak benne.
//Felhasználható,publikálható,AZ ENGEDÉLYEMMEL!
// Csak Rcon Admin tudja használni,a /Ban,/Kick parancsot.
//A /Pm-et mindenki tudja használni.
//Amit Akarsz Átírhatsz..Nem zavar.:D
//Sok sikert a mûködéshez!
//Warnok:0
//Szükséges eszközök:Ami az alap SAMP Serverrel eggyüt jön le.
#include <a_samp>
#include \"../include/gl_common.inc\"
#define ADMINFS_MESSAGE_COLOR 0x0000FFAA
#define PM_INCOMING_COLOR 0xAA3333AA
#define PM_OUTGOING_COLOR 0xFFCC2299
#define COLOR_HIBA 0xAA3333AA
//------------------------------------------------
public OnFilterScriptInit()
{
print(\"\\n--Base FS loaded.\\n\");
return 1;
}
//------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new tmp[256];
new Message[256];
new gMessage[256];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
new idx;
cmd = strtok(cmdtext, idx);
// Pm parancs: Privátot írsz egy play-ernek:(Pl: /pm 1 Szia
if(strcmp(\"/pm\", cmd, true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"Használat: /pm (id) (üzenet)\");
return 1;
}
new id = strval(tmp);
gMessage = strrest(cmdtext,idx);
if(!strlen(gMessage)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"Használat: /pm (id) (üzenet)\");
return 1;
}
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_HIBA,\"HIBA:Rossz ID!\");
return 1;
}
if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(Message,sizeof(Message),\">> %s(%d): %s\",iName,id,gMessage);
SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
format(Message,sizeof(Message),\"** %s(%d): %s\",pName,playerid,gMessage);
SendClientMessage(id,PM_INCOMING_COLOR,Message);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf(\"PM: %s\",Message);
}
else {
SendClientMessage(playerid,COLOR_HIBA,\"HIBA:Magadnak nem küldhetsz Pm-et!\");
}
return 1;
}
//Kick parancs:Ki Dobsz vele egy játékost. (Pl: /kick 1 káromkodás
if(strcmp(\"/kick\", cmd, true) == 0)
{
if(IsPlayerAdmin(playerid)) {
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"HASZNÁLAT: /kick [id] [ok]\");
}
new id = strval(tmp);
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_HIBA,\"HIBA:Rossz ID!\");
return 1;
}
gMessage = strrest(cmdtext,idx);
GetPlayerName(id,iName,sizeof(iName));
SendClientMessage(id,COLOR_HIBA,\"Kickelve lettél a szerverrõl!.\");
if(strlen(gMessage) > 0) {
format(Message,sizeof(Message),\"Reason: %s\",gMessage);
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
}
format(Message,sizeof(Message),\">> %s(%d) Kickelve lett a szerverrõl.\",iName,id);
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
Kick(id);
return 1;
} else {
SendClientMessage(playerid,COLOR_HIBA,\"HIBA:Te nem vagy Admin,vagy nincs meg a szinted a parancshoz!\");
return 1;
}
}
//Ban parancs:Kitílthatsz vele egy játékost.(Pl: /ban 1 admin szídás
if(strcmp(\"/ban\", cmd, true) == 0)
{
if(IsPlayerAdmin(playerid)) {
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"Használat: /ban [id] [ok]\");
}
new id = strval(tmp);
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_HIBA,\"HIBA:Rossz ID!\");
return 1;
}
gMessage = strrest(cmdtext,idx);
GetPlayerName(id,iName,sizeof(iName));
SendClientMessage(id,COLOR_HIBA,\"Bannolva lettél a szerverrõl.\");
if(strlen(gMessage) > 0) {
format(Message,sizeof(Message),\"Reason: %s\",gMessage);
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
}
format(Message,sizeof(Message),\">> %s(%d) Bannolva lett a szerverrõl..\",iName,id);
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
Ban(id);
return 1;
} else {
SendClientMessage(playerid,COLOR_HIBA,\"HIBA:Te nem vagy Admin,vagy nincs meg a szinted a parancshoz!\");
return 1;
}
}
return 0;
}
Letöltés: Pawn: http://www.solidfiles.com/d/d126f51158/
Gondolom mindenki tud Amx-et csinálni.Aki meg nem az így járt!:D
A megoldás szerintem elég elavult. Használj zcmd-t + sscanf.ot. ;) Ja és ctrl+c, ctrl+v gyanús.
KHM. Ezt a base filterscriptbõl szerezte, eredeti code:
//
// Base FS
// Contains /pm /kick /ban commands.
//
#include <a_samp>
#include \"../include/gl_common.inc\"
#define ADMINFS_MESSAGE_COLOR 0xFF444499
#define PM_INCOMING_COLOR 0xFFFF22AA
#define PM_OUTGOING_COLOR 0xFFCC2299
//------------------------------------------------
public OnFilterScriptInit()
{
print(\"\\n--Base FS loaded.\\n\");
return 1;
}
//------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new tmp[256];
new Message[256];
new gMessage[256];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
new idx;
cmd = strtok(cmdtext, idx);
// PM Command
if(strcmp(\"/pm\", cmd, true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"Usage: /pm (id) (message)\");
return 1;
}
new id = strval(tmp);
gMessage = strrest(cmdtext,idx);
if(!strlen(gMessage)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"Usage: /pm (id) (message)\");
return 1;
}
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"/pm : Bad player ID\");
return 1;
}
if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(Message,sizeof(Message),\">> %s(%d): %s\",iName,id,gMessage);
SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
format(Message,sizeof(Message),\"** %s(%d): %s\",pName,playerid,gMessage);
SendClientMessage(id,PM_INCOMING_COLOR,Message);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf(\"PM: %s\",Message);
}
else {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"You cannot PM yourself\");
}
return 1;
}
//Kick Command
if(strcmp(\"/kick\", cmd, true) == 0)
{
if(IsPlayerAdmin(playerid)) {
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"Usage: /kick (id) [reason]\");
}
new id = strval(tmp);
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"/kick : Bad player ID\");
return 1;
}
gMessage = strrest(cmdtext,idx);
GetPlayerName(id,iName,sizeof(iName));
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,\"-- You have been kicked from the server.\");
if(strlen(gMessage) > 0) {
format(Message,sizeof(Message),\"Reason: %s\",gMessage);
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
}
format(Message,sizeof(Message),\">> %s(%d) has been kicked.\",iName,id);
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
Kick(id);
return 1;
} else {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"/kick : You are not an admin\");
return 1;
}
}
//Ban Command
if(strcmp(\"/ban\", cmd, true) == 0)
{
if(IsPlayerAdmin(playerid)) {
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"Usage: /ban (id) [reason]\");
}
new id = strval(tmp);
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"/ban : Bad player ID\");
return 1;
}
gMessage = strrest(cmdtext,idx);
GetPlayerName(id,iName,sizeof(iName));
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,\"-- You have been banned from the server.\");
if(strlen(gMessage) > 0) {
format(Message,sizeof(Message),\"Reason: %s\",gMessage);
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
}
format(Message,sizeof(Message),\">> %s(%d) has been banned.\",iName,id);
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
Ban(id);
return 1;
} else {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,\"/ban : You are not an admin\");
return 1;
}
}
return 0;
}