Wie der Titel schon sagt bei mir funktioniert nicht ein Befehl mehr nur noch die Rcon Befehle.
Hilfe kein Befehl geht mehr
- [MrM]Florian
- 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
-
-
Hast du irgendwas ins Script eingebaut, was die Befehle stören könnte?
-
Schreib mal den command
-
Schau ob bei OnPlayerCommand, das hier richtig ist:
// Deine Commands
return 1;
}
return 0;
}
War bei mir auch mal der Fehler,wo ich erst Scripten gelernt habe. Hatte nur return 1; oder return 0;
Und war voll buggy -
Das Thema ist zwar schon alt allerdings hat mein Problem etwas damit zu tun undzwar hatte ich erst das Problem wie oben beschrieben und kaum das gelöst habe ich ein neues Problem.
Und wenn ich nun ein Befehl zweimal eingebe geht wieder nix. Sprich einmal geht der Befehl wenn ich den dann nochmal eingebe geht garkein Befehl mehr -
verscheinlich haste nach jeden befehl return 0; oder so.. das heißt, OnCommandText wird irgentwie abgestellt.
du musst das haben:
OnPlayerCommandText(...)
{
//hier command
{
//was passieren soll
}
//hier andere commands
{
}
//und so weiter
{
}
return 1;
} -
[...] oder so.. das heißt, OnCommandText wird irgentwie abgestellt. [...]
Es wird nicht irgendwie abgestellt, es bewirkt lediglich, dass der Server "SERVER : Unknown Command." sendet. Das Command wird trotzdem ausgeführt.OnPlayerCommandText(...)
{
//hier command
{
//was passieren soll
}
//hier andere commands
{
}
//und so weiter
{
}
return 1;
}Der von dir gepostete Code ist ebenso falsch. Er bewirkt nur, dass jedes eingegebene Command als gültig erkannt wird.
So ist es richtig :OnPlayerCommandText(...)
{
// Abfrage nach einem Command
{
// Aktionreturn 1;
}
return 0;
} -
also das ist mein letzter Befehl und der klammer die OnPlayerCommand zu macht
if(strcmp(cmd, "/contract", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /contract [spielerid/teildesnamens] [betrag]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /contract [spielerid/teildesnamens] [betrag]");
return 1;
}
moneys = strval(tmp);
if(moneys < 1500 || moneys > 1000000) { SendClientMessage(playerid, COLOR_GREY, "Der Betrag kann nicht unter 10000$ und über 100000$ sein"); return 1; }
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(gTeam[giveplayerid] == 2 && moneys != 100000)
{
SendClientMessage(playerid, COLOR_GREY, "Ein Auftragskill an einem Polizisten kostet 100000$!");
return 1;
}
if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selbst wählen!"); return 1; }
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys)
{
GivePlayerMoney(playerid, (0 - moneys));
PlayerInfo[giveplayerid][pHeadValue]+=moneys;
format(string, sizeof(string), "%s hat einen Auftragskill für %s für %d$ in die Wege geleitet.",sendername, giveplayer, moneys);
SendFamilyMessage(8, COLOR_YELLOW, string);
format(string, sizeof(string), "* Du hast einen Auftragskill für %s für %d$ eingeleitet.",giveplayer, moneys);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Ungültiger Betrag.");
}
}
}
else
{
format(string, sizeof(string), "%d ist kein aktiver Spieler.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
dcmd(tban,4,cmdtext);
return 0;
}muss ich bei dem letzten return eine 1 hinschreiben ?
-
soweit ich weis muss beim letzten return 1; stehen
-
meine ich auch...
-
so jetzt Funktionieren einige Befehle und andere sind immer noch kaputt und wenn ich einen der kaputten eingebe geht kein Befehl mehr
/edit
Und wenn ich einen Befehl eingebe der Funktioniert steht da immer Server Unknow Comment oder so ähnlich -
Ich hatte auch schon oft Probleme mit Befehlen. Der Grund war das ich DCMD und normale Befehle gleichzeitig verwendet habe... Versuch mal alle normalen in DCMD oder andersrum umzuschreiben oder kommentier alle die mit DCMD gemacht wurden aus...
-
ich habe mein dcmd Befehl mal rausgenommen es ist imemr noch das selbe.
Wnn ich ganz unten bei OnPlayerCommand ein return 1; schreibe was muss ich dann ans ende der Befehle schreibenich habe mal alle Warnings in eine txt kopiert (siehe anhang)
/edit2
jetzt habe ich es geschaft das sich nur noch eine Person einloggen kann und wenn sich der 2. einloggen will geht garkein Befehl mehr
das selbe auch bei /register einmal benutzt geht beim zweiten mal geht garnix mehr
if (strcmp(cmd, "/login", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
new tmppass[64];
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /login [passwort]");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
Encrypt(tmppass);
OnPlayerLogin(playerid,tmppass);
}
return 0;
}
if (strcmp(cmd, "/register", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s.ini", sendername);
new File: hFile = fopen(string, io_read);
if (hFile)
{
SendClientMessage(playerid, COLOR_YELLOW, "Dieser Name ist schon vergeben! Bitte benutze einen anderen.");
fclose(hFile);
return 1;
}
new tmppass[64];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /register [passwort]");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
Encrypt(tmppass);
OnPlayerRegister(playerid,tmppass);
}
return 1;
}
egal ob so oder so
if (strcmp(cmd, "/login", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
new tmppass[64];
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /login [passwort]");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
Encrypt(tmppass);
OnPlayerLogin(playerid,tmppass);
}
return 1;
}
if (strcmp(cmd, "/register", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s.ini", sendername);
new File: hFile = fopen(string, io_read);
if (hFile)
{
SendClientMessage(playerid, COLOR_YELLOW, "Dieser Name ist schon vergeben! Bitte benutze einen anderen.");
fclose(hFile);
return 1;
}
new tmppass[64];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /register [passwort]");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
Encrypt(tmppass);
OnPlayerRegister(playerid,tmppass);
}
return 0;
} -
breadfish.de
Hat das Thema geschlossen.