-1 = zufällige Farbe.
cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
zu:
cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,cInfo[i][Color_1],cInfo[i][Color_2],-1);
-1 = zufällige Farbe.
cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
zu:
cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,cInfo[i][Color_1],cInfo[i][Color_2],-1);
ocmd:makeadmin(playerid,params[])
{
new plid, level;
new text[128];
new Adminname[64];
if(IsPlayerConnected(plid))
{
if(!istPlayerAdmin(playerid, 8))return SendClientMessage(playerid,drot,"* Du hast nicht die nötigen Rechte dazu.");
if(sscanf(params,"ui",plid,level))return SendClientMessage(playerid,grau,"Syntax: /makeadmin [ID/Name] [Adminlevel]");
if(GetPVarInt(plid,"Adminlevel") > GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,türkis,"* Du hast nicht die nötigen Rechte dazu.");
if(level<-1||level>1337)return SendClientMessage(playerid,drot,"* Kein gültiges Adminlevel");
new string[128];
PlayerSpeichern(plid);
switch(GetPVarInt(playerid,"Adminlevel"))
{
case -1:
{
Adminname="Ehrenmitglied";
}
case 0:
{
Adminname="Spieler";
}
case 1:
{
Adminname="Test-Supporter";
}
case 2:
{
Adminname="Junior-Supporter";
}
case 3:
{
Adminname="Senior-Supporter";
}
case 4:
{
Adminname="Moderator";
}
case 5:
{
Adminname="Administrator I";
}
case 6:
{
Adminname="Administrator II";
}
case 7:
{
Adminname="Community-Manager";
}
case 8:
{
Adminname="Projektleiter";
}
case 1337:
{
Adminname="Projektleiter";
}
}
format(text,sizeof(text),"[Teamverwaltung]* %s %s hat den Administrations-Rank von %s auf Admin-Rank %i gesetzt.",Adminname,PlayerName[playerid],PlayerName[plid],level);
for(new i=0;i<GetMaxPlayers();i++)
{
if(IsPlayerConnected(i))
{
if(istPlayerAdmin(i,2))
{
SendClientMessage(i,rosa,text);
if(GetPVarInt(playerid,"Adminlevel")==0) SendClientMessage(playerid,blau,"[SERVER] Error");
}
}
}
}
return 1;
}
Immer schön auf die Einrückung und die Klammern achten, dann vergisst du nichts. ![]()
Wie erstellst du die Fahrzeuge denn? Poste den Code dazu bitte.
Gibt es schon neues oder kommt das erst nächstes Jahr wie du oben geschrieben hast?
Ich habe es heute früh gemacht, ich muss es nur noch hochladen, das mache ich wenn ich zu Hause bin.
Tut mir wirklich leid, dass es so lange gedauert hat, aber ich war die letzten zwei Wochen unerwartet weg und konnte leider gar nichts machen.
EDIT:
Version 1.1:
Download
Viel Spaß damit! ![]()
Du musst die "Farb-IDs" angeben, also ändere alle "COLOR_WHITE" zu "1,1":
format(string, sizeof(string), "Cheater: 0", gVarCheater);
zu:
format(string, sizeof(string), "Cheater: %d", gVarCheater);
(Analog für die anderen)
Beim Anzeigen der Textdraws:
if(SpielerInfo[playerid][pAdminlevel] < 1)
zu:
if(SpielerInfo[playerid][pAdminlevel] > 1)
(Analog für die anderen)
Nächstes mal beschreibe bitte die auftretenden Probleme. ![]()
Schalte mal den MySQL-Debug Modus an und starte den Server, dann sage uns was im Log steht.
Wie du das machst steht hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)
Schau dir mal hier die ganzen Mirrors an, da solltest du es bestimmt finden:
MySQL Plugins R5
[MySQL] R5 von G-sTyLeZzZ (Linux)
Brauche Mysql R5 oder R6
wusste nur nicht ob es da nicht vielleicht einen Trick gibt, da die Variablen ja dynamisch sind
Nope, leider nicht. In einem Case dürfen nur Konstanten stehen.
Das ist auch der Grund warum ein switch auch bei dieser Art von Prüfung performanter ist, als ein if. ![]()
Du musst die Werte entweder mit einem #define deklarieren, oder direkt in den Case als Integer schreiben, also zum Beispiel
case 1:
Eine Variable darf dort nicht stehen.
Für Variablen nutze if.
Das könnte auf jeden Fall eine gute Erklärung für den Fehler sein. Aktualisiere deine Plugins, sodass diese Meldungen nicht mehr kommen, die weißen dich nämlich darauf hin, dass du eine falsche Version (bzw gar keine) des Plugins verwendest.
Bei dir sind das sscanf, mysql und so wie es scheint das Whirlpool Plugin. Diese Meldungen müssen weg sein, da diese Funktionen im Code stehen, aber nicht ausgeführt werden können, da sie in keinem deiner geladenen Plugins sind.
Möglicherweise wird der Timer nicht richtig gestartet. Wie startest du den Timer denn?
Hast du die Variablen mal mit printf ausgegeben, also debuggt? Vielleicht ist da auch ein Fehler drin, sind ja ziemlich viele Variablen die du hier verwendest.
http://forum.sa-mp.com/showthread.php?t=401701
http://forum.sa-mp.com/showthread.php?t=536838
Alternativ kannst du dir auch mal dieses Filterscript anschauen: http://forum.sa-mp.com/showthread.php?t=120724
Doch, das kannst du machen, aber nicht so wie du es vor hattest.
So:
SpielerInfo[playerid][sLevel] = 1;
dini_IntSet(data,"Admin",SpielerInfo[playerid][sLevel]);
SetPlayerScore(playerid, SpielerInfo[playerid][sLevel]);
Beim Registrieren.
Weder noch macht Sinn.
Am meisten Sinn macht es, wenn du einen Befehl erstellst, mit dem du dem Spieler das Level geben kannst, sonst würde es ja bei jedem Login/Spawn auf 1 gesetzt werden, und das macht ja wenig Sinn.
Oder du schreibst es direkt in die Datei und lädst es aus der Datei, mit dini_IntGet.
Das liegt daran, dass GetPlayerIp einen leeren String zurück gibt, das Beispiel im Wiki ist ziemlich schlecht, dort habe ich es kurz rauskopiert.
if(!strcmp(ip, pip, true))
zu:
if(IsPlayerConnected(i) && !strcmp(ip, pip, true))
Du könntest auch abfragen, ob
strlen(SpielerName(i)) > 0
ist, kommt aus das Gleiche raus.
Was hast du denn jetzt an dem MapIcon gemacht?
So muss es doch sein:
SetPlayerMapIcon(i,slot,FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2],20,COLOR_RED,1);
![]()
Wenn dann immer noch nicht alles richtig weg geht, poste den Code mit dem du es entfernst.
Sorry, war ein Denkfehler von mir. Ich habe es mit dem vorherigen Code verwechselt. Es muss natürlich "slot" heißen, und nicht "i". i steht ja für den Spieler. Mein Fehler.
Das klappt dann. ![]()
Nein. Die Variable ist ein Integer, du benötigst aber einen String ("Admin") als Angabe im zweiten Parameter.
dini_IntSet(data,"Admin",SpielerInfo[playerid][sLevel]);
SetPlayerScore(playerid, SpielerInfo[playerid][sLevel]);
So würde es gehen.
Das ist hier dasselbe Problem, du kannst pro Slot nur eines anzeigen lassen. Wenn du mehrere haben willst, nutze den Streamer, oder nutze "slot" als Slot:
SetPlayerMapIcon(i,slot,FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2],20,COLOR_RED,1);
Dann arbeitest du mit dem MapIcon über den Slot und die ID.