Hallöle
Ich habe mir ein ganz kleines Script zusm gebastelt für das es unnötig wäre ein ganzes ADm. System zu basteln (bzw. ich cheks einfach nich :O). So nun wollte ich gerne einen Befehl machen den aber nur ein Rcon Admin ausführen kann. als z.b /kick player.
Jetzt wollte ich kurz fragen wie ich das am blödsten anstelle
Und da ich schon nen fred öffne wollt ich auch noch fragen wie ein kick befehl aussieht und funktioniert.
Ich freue mich auf eure antworten.
MfG
Niklas
Wie frage ich folgendes ab?
- Spider
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Hi Spider,
du fragst ab, ob der Player als Rcon-Admin eingeloggt ist mit
IsPlayerAdmin(playerid)Kicken tust du mit
Kick(playerid)MfG tapete
-
-
Hat er doch garnicht Die Funktion heißt nunmal IsPlayerAdmin(playerid).
-
Wer hat jemals gefragt ob er wissen will wie die Funktion heißt, wo man Anfragt ob man ein "Admin" ist?
Die Funktion heißt: IsPlayerAdmin
Die Abfrage: if(IsPlayerAdmin(playerid)) -
Entschuldigung aber ich dachte das if(...) kann man sich selber denken, wenn man weiß das es ne Abfrage ist.
MfG tapete
-
Mein befehl sieht nun so aus:
if(strcmp(cmdtext, "/aod", true, 10) ==0)
{
IsPlayerAdmin(playerid);
SetPlayerColor(playerid, COLOR_RED);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du bist kein Admin!");
return 1;
}
return 0;
So nun habe ich aber das problem das wenn ich /aod eingebe kommt Server:Unknown Comand brauche eure hilfe, und danke für alle bisherigen antworten -
if IsPlayerAdmin(playerid))
if(strcmp(cmdtext, "/aod", true, 10) ==0)
{
if(IsPlayerAdmin(playerid)) SetPlayerColor(playerid, COLOR_RED);
else SendClientMessageToAll(playerid, COLOR_RED, "Du bist kein Admin");
return 1;
}
edit: Text.
edit: Frage, wozu ein Semikolon nach IsPlayerAdmin ? -
Ich dachte halt hinter jede funktion muss zum abschluss ein ";"
CodeC:\Users\Niklas\Documents\SA-Mp Server\gamemodes\Niklas.pwn(461) : error 035: argument type mismatch (argument 2) Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 1 Error.
Kommt jetzt dabei raus
edit: habe das agument missmatch jetzt beheben können.HAbe jetzt aber ein weiteres Problem:
CodeC:\Users\Niklas\Documents\SA-Mp Server\gamemodes\Niklas.pwn(470) : error 010: invalid function or declaration Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 1 Error.
in zeile 470 steht lediglich return 0;
-
Bei If Abfragen nicht, bei allem anderen schon...
(Als Anfänger solltest Klammern nutzen und nicht so zusammgengeschachtelt wie Shukaz)
if(strcmp(cmdtext, "/aod", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerColor(playerid, COLOR_RED);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du bist kein Admin");
}
return 1;
} -
Wow danke
Ich verstehe nun das mit dem kiken noch nicht so ganz. Also wenn ich den Befehl /kick anlege und in ihn dann reinschreibe kick(playerid) kicke ich mich ja logischer weise selbst, das ist aber natürlich nicht sinn der sache Also wie kann ich es so machen das ich hinter /kick die zu kickende id eingeben muss? -
Zitat
Bei If Abfragen nicht, bei allem anderen schon...
Bei Switch-Anweisungen auch nichtedit: Bei einem Befehl gibt es auch noch den Text der nach dem Befehl eingegeben wird. Dieser wird bei OnPlayerCommandText in der Variable cmdtext gespeichert. Am leichtesten (finde ich) geht das mit DCMD + sscanf. Such mal hier im Forum nach Command mit Parametern
-
Kurz in DCMD.
Da ich finde, das für Neulinge ein "System" mit strcmp + Parameter etwas Brainfucked ist.dcmd_kick(playerid,params[])
{
new Reason[256], pID;
if(IsPlayerAdmin)) SendClientMessage(playerid,grau,"Kein Admin");
if(sscanf(params,"us",pID,Reason)) return SendClientMessage(playerid,grau,"USAGE: /kick [playerid] [Grund]");
new name[MAX_PLAYER_NAME], string[256];
GetPlayerName(pID,name,sizeof(name));
new Aname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Aname,sizeof(Aname));
format(string,sizeof(string)," %s hat %s gekickt, Grund: %s",Aname,name,Reason);
SendClientMessageToAll(farbe,string);
Kick(pID);
return 1;
}Tut mir leid wenn was Falsch ist, es ist spät^^
/edit: Quelltext -
Jup Danke, doch sehr verwirrend ich werd jetzt ausschlafen und mich morgen damit beschäftigen, danke für eure schnellen Antworten ihr seid Spitze!
-
Zitat
new Reason[256],
ressourcenfressend Im Chat können eh nur 128 Zeichen geschrieben werden und der Befehl /kick hat mir Leerzeichen schon 6 Dann wären es noch 122 (wenn ich richtig gerechnet habe ist schon ein bisschen spät).
-
breadfish.de
Hat das Thema geschlossen.