hi ho leute ich brauche ein einfachen /kick Cmd
wo mit ich andere user vom server kicken kann
PS:bitte nicht aus den GF
brauch ein einfachen
hi ho leute ich brauche ein einfachen /kick Cmd
wo mit ich andere user vom server kicken kann
PS:bitte nicht aus den GF
brauch ein einfachen
if(strcmp(cmd, "/kick", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1) //Ab welchem Admin Level
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
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_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]"); //Text der kommen soll
return 1;
}
new year, month,day;
getdate(year, month, day);
format(string, sizeof(string), "AdmCmd: %s wurde von %s gekickt, Grund: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year); //Text der kommen soll
KickLog(string);
Kick(giveplayerid);
format(string, sizeof(string), "AdmCmd: %s wurde von %s gekickt, Grund: %s", giveplayer, //Text der kommen sollsendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
return 1;
}
}
}
ich brauche an besten ein einfachen
new
idx,
cmd[128];
cmd=strtok(cmdtext,idx);
if(!strcmp(cmd,"/kick",true,5)) {
new
sID[128],
pID;
sID=strtok(cmdtext,idx);
if(!strlen(sID)) {
return SendClientMessage(playerid,COLOR_RED,"USAGE: /kick [playerid]");
}
pID=strval(sID);
if(!IsPlayerConnected(pID)) {
return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
}
Kick(pID);
SendClientMessage(playerid,COLOR_YELLOW,"Erfolgreich Spieler vom Server gekickt!");
}
Man muss halt nurnoch einfügen , dass es nur für die Admin's gilt.
Wenn ich /kick mache wird man selber gekickt
kannse nicht lesen
Ist nicht aus einem Godfather...
Der ist sehr Simple ...
#include <a_samp>
#include <dutils>
#pragma unused ret_memcpy
#define rot 0xFF0000AA
public OnPlayerCommandText(playerid,cmdtext[])
{
new cmd[256],idx;
cmd = strtok(cmdtext,idx);
if(strcmp(cmd,"/kick",true)==0)
{
new tmp[256];
tmp = strtok(cmdtext,idx);
if(strlen(tmp)==0) return SendClientMessage(playerid,rot,"USAGE: /kick [playerid]");
new ID = strval(tmp);
Kick(ID);
return 1;
}
return 0;
}
Kleiner Tipp:
Da du den Parameter ab der ersten Ziffer überprüfst kannste es statt ne Funktion auch so machen:
if(!tmp[0]) return SendClientMessage(playerid,rot,"USAGE: /kick [playerid]");
Ist schneller als ne Funktion.
Statt strval würde ich auch noch ReturnUser empfehlen da man dann auch Teile vom Namen eingeben kann und die ID.
MFG RFT
ok danke ..
aber wie muss ich ReturnUser definieren ?
bei mir kommt da ein Error: error 017: undefined symbol "ReturnUser"...
ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
new pos = 0;
while (text[pos] < 0x21) // Strip out leading spaces
{
if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
pos++;
}
new userid = INVALID_PLAYER_ID;
if (IsNumeric(text[pos])) // Check whole passed string
{
// If they have a numeric name you have a problem (although names are checked on id failure)
userid = strval(text[pos]);
if (userid >=0 && userid < MAX_PLAYERS)
{
if(!IsPlayerConnected(userid))
{
/*if (playerid != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0xFF0000AA, "User not connected");
}*/
userid = INVALID_PLAYER_ID;
}
else
{
return userid; // A player was found
}
}
/*else
{
if (playerid != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
}
userid = INVALID_PLAYER_ID;
}
return userid;*/
// Removed for fallthrough code
}
// They entered [part of] a name or the id search failed (check names just incase)
new len = strlen(text[pos]);
new count = 0;
new name[MAX_PLAYER_NAME];
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
GetPlayerName(i, name, sizeof (name));
if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
{
if (len == strlen(name)) // Exact match
{
return i; // Return the exact player on an exact match
// Otherwise if there are two players:
// Me and MeYou any time you entered Me it would find both
// And never be able to return just Me's id
}
else // Partial match
{
count++;
userid = i;
}
}
}
}
if (count != 1)
{
if (playerid != INVALID_PLAYER_ID)
{
if (count)
{
SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
}
else
{
SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
}
}
userid = INVALID_PLAYER_ID;
}
return userid; // INVALID_USER_ID for bad return
}
IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
MFG RFT
danke =)
Hol dir ein Admin system einfach
Ich hab das selbe Problem mit Return User wo muss der Code von RFT eingefügt werden ?
Kannst du bei den stock's einfügen.
Mfg