Käsebrot. Ab mehreren Spielern wird der CMD buggen wie 999 Fahrzeuge auf der selben Stelle..
Soll ich es dir über TeamViewer machen?
Beiträge von YaBroo
-
-
Du musst die Variable da wo das Ticket ausgestellt wird dem Spieler zuweisen.
ticket[MAX_PLAYERS];
ticket[pID] = 1;// Unter deinem /ticket Befehl bzw. unter dessen sscanf abfrage
Und dann ohne new pID mit ticket[playerid] arbeiten für /acceptticket.
Ebendso das mit dem Preis in einem Spieler bezogenem String
new Kenn[MAX_PLAYERS][5];
Kenn[playerid] = unter deinem sscanf die variable zum geld ausstellen; -
1. Warum pID? pID ist in deinem Fall ID 0. Sprich, es wird immer ID 0 abgefragt.
2. Hast du dcmd auch korrekt unter OnPlayerCommandText eingetragen?
Ebenso hast du anscheinend eine globale € Variable. Der Befehl wird vorne und hinten nicht funktionieren. -
ocmd:makeadmin(playerid, params[])
{
new pID, adm, pname[MAX_PLAYERS], name[MAX_PLAYERS], string1[128], string2[128],rang[55];
if(Spieler[playerid][Admin] < 5)return SendClientMessage(playerid,Weiss,"{FF0000}Fehler {FFFFFF}Du bist kein Projektleier.");
if(sscanf(params,"ud",pID,adm))return SendClientMessage(playerid,Weiss,"{FF0000}Fehler: {FFFFFF}/makeadmin [ID] [Adminlevel]");
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(pID,pname,sizeof(pname));
switch(adm)
{
case 0:{rang = "Spieler";}
case 1:{rang = "Volunteer";}
case 2:{rang = "Supporter";}
case 3:{rang = "Administrator";}
case 4:{rang = "Head Administrator";}
case 5:{rang = "Projektleiter";}
}
format(string1,sizeof(string1),"Du hast %s zum %s gemacht.",pname,rang);
format(string2,sizeof(string2),"%s hat dich zum %s gemacht.",name,rang);
SendClientMessage(playerid,-1,string1);
SendClientMessage(pID,-1,string1);
return 1;
}Und noch den Adminrang in die Datei/DB/Variable setzen.
Wenn das nicht klappt schreib das switch in
if (adm == 1) { rang ="Spieler";}
else if(adm == 2){rang = "Volunteer";}
um//Edit ; vergessen
-
ehhh falsch? ER will das z.B.
Adminlvl 4 nicht 5 kicken kann
aber Admnilevel 5 4..Hier:
if(Spieler[playerid][Admin] > Spieler[pID][Admin])
Also wen Spieler der den CD ausführt (playerid) ein größeren Admlevel hat als die ID die eingegeben wird, (pID) soll er ausgeführt werden.Die Stelle hätte ich gerne zitiert wo das steht das er genau das will.
Und ehhh falsch? Gewiss nicht.
So wird vermieden das ein Admin gekickt werden kann.
Aber nein, dein Code mit selber erstellten Variablen ist natürlich viel besser..
//Edit
Er schreibt zudem das er nicht will das ein Admin gekickt werden kann da steht nicht explizit das er es so haben möchte wie Du es dir eingebildet hast.
Aber Hauptsache Comments sammeln -
if(IsPlayerAnAdmin(pID,1)) return SendClientMessage(playerid,-1,"Du kannst kein Admin kicken");
-
Ja, du wolltest es doch mit Grund oder kommt das auch wenn es richtig ausgefüllt hast.
Hast du die Zeile so im Script?
if(sscanf(params, "ss",name,Grund))
{
return SendClientMessage(playerid,COLOR_GREY,"Benutze: /offban [Korrekter Spielername][Grund]");
}Hab da eben nämlich noch was editiert.
-
dcmd_offban(playerid, params[])
{
new banFormat[128], name[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME],
string[128],string2[128],Grund[126];
if(!IstSpielerAdmin(playerid, 1))
{
return SendClientMessage(playerid,COLOR_RED,"Zugriff verweigert! Du benötigst mindestens den Adminrang: {FF0000}Head-Admin ");
}
if(sscanf(params, "ss",name,Grund))
{
return SendClientMessage(playerid,COLOR_GREY,"Benutze: /offban [Korrekter Spielername][Grund]");
}
format(banFormat,sizeof(banFormat),"Spieler/%s.txt",name);
if(fexist(banFormat))
{
dini_Set(banFormat,"Bangrund",Grund);
dini_IntSet(banFormat,"Banned",1);
new str[126],person[MAX_PLAYER_NAME];
GetPlayerName(playerid,aname,sizeof(aname));
format(str,sizeof(str),"/Spieler/%s.txt",name);
if(dini_Exists(str))
{
dini_Set(str,"Gebanntvon",aname);
}
format(string,sizeof(string),"[BAN]: Du hast %s offline gebannt!",name);
format(string2,sizeof(string2),"[BAN]: Admin %s hat %s offline gebannt!", aname, name);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(IstSpielerAdmin(playerid, 1))
{
SendClientMessage(i, ADMINFS_MESSAGE_COLOR, string2);
}
}
}
SendClientMessage(playerid, NGR, string);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Fehler! Account existiert nicht!");
}
return 1;
} -
Wofür der Timer und nein, bei dini gibt man den Pfad an und nicht den Spielernamen welchen man im String wiedergibt.
new Pfad[60];
format(Pfad,60,"/Spieler/%s.txt",IDName);
dini_Get(Pfad,"Bangrund")); -
Das machst du dann ganz einfach mit dini_Get(Spielerdatei,"Bangrund");
zBSendClientMessage(playerid,-1,dini_Get(Spielerdatei,"Bangrund"));
oder
new str[126];
format(str,sizeof(str),"Du wurdest mit dem Grund: %s von XYZ verwiesen",dini_Get(Spielerdatei,"Bangrund"));
SendClientMessage(playerid,-1,str); -
Dann zeig mal den Befehl.
Stock:
stock BanPlayer(id,Reason[])
{
new str[126],IDName[MAX_PLAYER_NAME];
GetPlayerName(id,IDName,sizeof(IDName));
format(str,sizeof(str),"/Spieler/%s.txt",IDName);
if(dini_Exists(str))
{
dini_Set(str,"Bangrund",Reason);
}
return 1;
}Verwendung:
BanPlayer(spielerid,string); -
Ich hab es bei mir mal eingefügt, weil ich es mir nicht vorstellen konnte.
Und nein, es kommt kein Fehler auf. -
dini_IntSet = dini_Set Da du kein Integer sondern ein String setzen möchtest.
stock BanPlayer(id,Reason[]) -
Warum sind die MTA Vorstellungen im Gegensatz zu den SAMP Vorstellungen aktuell immer der absolute Hammer?
Werde mal vorbei schauen.. -
-
Dazu verwende beide Funktionen.
new str[5];
new vehicleid = GetPlayerVehicleID(playerid);
format(str,sizeof(str),"%i",GetVehicleModel(vehicleid));ocmd:afixveh(playerid,params[])
{
if(!DarfSpielerAFixVehSNutzen(playerid))return SendClientMessage(playerid,ROT,"Du Bist Kein Admin!.");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, DUNKELROT, "Du bist in Keinen Fahrzeug");
if(GetPVarInt(playerid,"loggedin")==1)
{
new string[100];
new vehicleid = GetPlayerVehicleID(playerid);
RepairVehicle(vehicleid);
format(string,sizeof(string),"Du Repairst das Fahrzeug mit der [ID: %d]",GetVehicleModel(vehicleid));
SendClientMessage(playerid,GELB,string);
}
return 1;
} -
Siehe mein Beitrag oben, ich hab es so drin und sobald man /afixveh macht
Repairt er das Fahrzeug, aber bei der Message die ID angabe kommt da irgendwie 199 Raus aber müsste normalerweise 411 Sein..
GrüßeFahrzeugID != FahrzeugModelID.
Das eine ist die ID die vom Server zu geordnet wird 1+ Pro Fahrzeug und das andere die ModelID, spricht für sich. -
-
Kommt es mir nur so vor oder ist es ein komplett englischer Server , viele überflüssige Dialoge und für das Registersystem wurden nicht einmal welche verwendet.
Warum ist die ganze Einleitung auf Englisch? Bin ab dem Moment schon gequittet^^ -
nein bei der ocmd inc kommt keine fehlermeldung, da es als public gilt, es kommt einfach nur das es unused ist
Ja, aber auch das ocmd nicht deklariert ist!