Ich möchte dass man in meinem DM Server NUR Als RCon Kicken/Bannen kann..
Oh ich habe das "If(!IsPlayerAdmin(playerid)) return 1;" vergessen, dankeschön
Ich möchte dass man in meinem DM Server NUR Als RCon Kicken/Bannen kann..
Oh ich habe das "If(!IsPlayerAdmin(playerid)) return 1;" vergessen, dankeschön
if(strcmp(cmdtext,"/kick",true,5)==0)
{
if(cmdtext[5]!=' ') return 1;
new string[128];
new find=strfind(cmdtext," ",false,6);
strmid(string,cmdtext,6,find);
if(!IsNumeric(string)) return SendClientMessage(playerid,-1,"Fehler!");
if(cmdtext[find+1]==EOS) return SendClientMessage(playerid,-1,"Fehler!");
new pID=strval(string);
format(string,sizeof(string),"Du wurdest gekickt, Grund: %s",cmdtext[find]);
SendClientMessage(pID,-1,string);
SetTimerEx("KickPlayer",100,false,"i",pID);
return 1;
}
forward KickPlayer(playerid);
public KickPlayer(playerid)
{
Kick(playerid);
}
Mal recht einfach gemacht, ein /kick Befehl,
falls du Fragen hast oder etwas nicht verstehst,
frag einfach
new string[2];
Vorsicht:
ein string braucht am Ende einen NULL Character ('\0')
Also sollte der string 3 Zeichen lang sein.
new string[3];
Problem erklärt sich denke ich ziemlich leicht:
// OnGameModeInit
CheckStatusTimer=SetTimer("CheckStatus", 500, 1);
public CheckStatus()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(i))
{
new vvid=GetPlayerVehicleID(i);
new model=GetVehicleModel(vvid);
if(model<400||model>611)
{
printf("#CheckStatus ERROR 01: %s (%i) ist in (k)einem Fahrzeug (%i): ID (%i) Model (%i)",PlayerInfo[i][pName],i,IsPlayerInAnyVehicle(i),vvid,GetVehicleModel(vvid));
continue;
}
}
}
}
return 1;
}
Serverlog:
[22:36:36] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
[22:36:38] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
[22:36:39] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
[22:36:40] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
[22:36:41] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
[22:36:42] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
[22:36:43] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
Warum passiert sowas?
Guten Abend,
ich stehe vor folgender unlösbaren Aufgabe:
Ich möchte bei einer Funktion bei Fertigstellung eine eigene Funktion aufrufen,
die der Scripter angeben kann, mit allen Parametern die er möchte.
Beispiel: MySQL, BlueG, R7:
mysql_function_query(1,"SELECT * FROM Accounts WHERE Name = 'Pille'",false,"MyOwnFunction","iif",5,923,-2378.000
// -----> Sobald Query fertig ist wird MyOwnFunction aufgerufen, also:
forward MyOwnFunction(playerid,var,Float:fvar);
publi MyOwnFunction(playerid,var,Float:fvar)
{
print("Test");
return 1;
}
Wie scripte ich das, wenn ich nach Ausführen einer Funktion eine eigene Funktion aufrufe?
So habe ich es bereits probiert:
PlayerDoThat("OnPlayerDidThat","iii",playerid,GetPlayerMoney(playerid),GetPlayerWantedLevel(playerid));
stock PlayerDoThat(string[],format[], {Float,_}:...) // {Float,_}:... für unendliche Parameter
{
CallLocalFunction(string,format,/* Hier komm ich nicht weiter. Irgendwas mit getarg vlt.? */);
return 1;
}
forward OnPlayerDidThat(playerid,money,wanted);
public OnPlayerDidThat(playerid,money,wanted)
{
printf("Succesfull: %i with %i$ and Wantedlevel %i",playerid,money,wanted);
return 1;
}
Für Fragen stehe ich gerne bereit.
oamtcar[0]=SetVehicleNumberPlate(CreateVehicle(525,891.8258,-1206.0679,16.8505,180.0830,18,20,-1),"Ordnungsamt"); // oamt
oamtcar[1]=SetVehicleNumberPlate(CreateVehicle(525,896.3113,-1205.8975,16.8655,180.2625,36,43,-1),"Ordnungsamt"); // oamt
oamtcar[2]=SetVehicleNumberPlate(CreateVehicle(525,907.6694,-1206.1782,16.8532,179.5450,17,20,-1),"Ordnungsamt"); // oamt
oamtcar[3]=SetVehicleNumberPlate(CreateVehicle(525,911.5038,-1206.1317,16.8526,178.5295,52,54,-1),"Ordnungsamt"); // oamt
oamtcar[4]=SetVehicleNumberPlate(CreateVehicle(525,873.3668,-1206.2256,16.8632,182.1840,22,30,-1),"Ordnungsamt"); // oamt
oamtcar[5]=SetVehicleNumberPlate(CreateVehicle(525,877.4447,-1206.0367,16.8525,180.2811,44,51,-1),"Ordnungsamt"); // oamt
oamtcar[6]=SetVehicleNumberPlate(CreateVehicle(560,920.2418,-1235.3826,16.6823,358.6281,21,1,-1),"Ordnungsamt"); // oamt
oamtcar[7]=SetVehicleNumberPlate(CreateVehicle(560,906.1796,-1233.9564,16.2866,358.6272,37,0,-1),"Ordnungsamt"); // oamt
Ändern zu:
oamtcar[0]=CreateVehicle(525,891.8258,-1206.0679,16.8505,180.0830,18,20,-1);
oamtcar[1]=CreateVehicle(525,896.3113,-1205.8975,16.8655,180.2625,36,43,-1);
oamtcar[2]=CreateVehicle(525,907.6694,-1206.1782,16.8532,179.5450,17,20,-1);
oamtcar[3]=CreateVehicle(525,911.5038,-1206.1317,16.8526,178.5295,52,54,-1);
oamtcar[4]=CreateVehicle(525,873.3668,-1206.2256,16.8632,182.1840,22,30,-1);
oamtcar[5]=CreateVehicle(525,877.4447,-1206.0367,16.8525,180.2811,44,51,-1);
oamtcar[6]=CreateVehicle(560,920.2418,-1235.3826,16.6823,358.6281,21,1,-1);
oamtcar[7]=CreateVehicle(560,906.1796,-1233.9564,16.2866,358.6272,37,0,-1);
for(new i=0;i<8;i++) SetVehicleNumperPlate(oamtcar[i],"Ordnungsamt");
Du musst da mit strins arbeiten
Poste mal den Code, meistens steht die ID von dem Spieler im code
Oder du baust eine eigene Funktion.
Forschleife -> GetPlayerName (bei verbundenen Spieler) -> Stimmt der Name mit der eingegebenen Zeichnkette?
for(new i=0; i<MAX_PLAYERS; i++)
{
}
Das gehört da aber nicht rein
ZitatArbeite mit einem Stock Ist
einfach,flexibler,geht schneller
Falsch, geht nicht schneller.
Nur vom Arbeitsaufwand her ist es einfacher.
Zitatnew pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName,sizeof(pName));
format(string,sizeof(string),"Dein Name %s\n Dein Level %d\n Dein Geld %d\n Dein Beruf %s",SpielerName(playerid),sSpieler[playerid][Level],GetPlayerMoney(playerid),ftext);
Jetzt hast du pName erstellt, mit deinem Namen gefüllt, und benutzt ihn garnicht
Entweder du löscht das, oder du schreibst statt SpielerName(playerid) pName
Bei Interesse schreib mich per PN an.
Ich arbeite schnell, effizient, sauber und ressourcenschonend
if(string[0]=='/* Buchstabe */'&&string[1]=='-')
So etwa?
if(string[0]=='/* Hier Buchstabe einfügen*/')
{
// Ja
]
else
{
// Nein
}
Das einzige was du tun kannst ist...
#define MAX_STRING 128
new string[MAX_STRING];
Was ist daran bitte Falsch??
Deshalb sind wir ja hier um das rauszufinden, also versuch mal logisch zu denken
und dem o.G. Beispiel geistlich zu verfolgen, vielleicht kommst du dann selber drauf
Nein, quatsch, sonst wird das Objekt immer neu erstellt, sobald ein User den Server betritt.
playerid ist in dem Callback "OnGameModeInit" nicht verfügbar.
Du solltest den Code von RemoveBuildongForPlayer lieber bei OnPlayerConnect reinschreiben.
Ich habe nicht die Lösung geschrieben sondern einen Denkansatz,
der dir helfen soll selber auf die Lösung zu kommen.
Das &1 brauchst du übrigens nicht, das kannst du weglassen.
Du hast einen Denkfehler da drin, mach am besten mal mit einer Beispielsituation das ganze etwas veranschaulicher.
ID 3 kommt auf den Server. Er ist Leader in der Fraktion 5.
PlayerInfo[3][pMember] = 0;
PlayerInfo[3][pLeader] = 5;
Jetzt denk mal scharf nach:
Was stimmt daran nicht?
if(PlayerInfo[playerid][pLeader] != 3||PlayerInfo[playerid][pMember] != 3) return RemovePlayerFromVehicle(playerid),SendClientMessage(playerid, Rot, "Du hast keinen Schlüssel für dieses Auto.") & 1;
Übrigens, was macht das & 1 da?
So sollte es dann funktionieren... :
Probiers aus