Er schreibt mir den Satz weiterhin im vollen Stück ohne einen Umbruch.
Also die ~n~ werden korrekt in den Text gesetzt.
Kannst du mal zeigen, wie du es genau verwendest?
Er schreibt mir den Satz weiterhin im vollen Stück ohne einen Umbruch.
Also die ~n~ werden korrekt in den Text gesetzt.
Kannst du mal zeigen, wie du es genau verwendest?
USER_LEVEL_2_NAME
Wie hast n das definiert? :o
format(string,sizeof(string),"Spieler ist Adminrank: %d",GetAdminRank(pID));
Da hast du nicht richtig kopiert gehabt
Es muss lauten:
format(string,sizeof(string),"Spieler ist Adminrank: %s",GetAdminRank(pID));
%s für Strings
und %d bzw %i für Integer (also Zahlen)
Hier mal mein GetAdminRank:
Du zeigst die Funktion GetLevelRank
Aber was geht denn nicht?
Oder willst du nur einfach den Spielernamen mit anzeigen?
Okay, dann scheint wohl einfach die Draw/Streamdistance nicht hoch genug eingestellt zu sein von dem Objekt :o
Oder erscheint es gar nicht mehr?
lade passiert nix der löscht die png nicht
Ja, das sagtest du bereits.
Die Frage ist doch nun, wieso?
Printe dir doch den Dateinamen...stimmt der Pfad?
Schaue was gemacht wird...
Du solltest den Code auch erst dahin packen wo feststeht, dass die andere Datei erfolgreich hochgeladen wurde.
An was könnte es noch liegen ?
Drück mal F5 und mach davon einen Screen
Vermutlich verwendest du zu oft CreateObject, wobei du eigentlich nur CreateDynamicObject verwenden solltest (außer bei Böden)
Achso ja sorry
Schreib es so:
format(string,sizeof(string),"Spieler ist Adminrank: %s",GetAdminRank(pID));
Fragst ja den Adminrang da nochmal hab
Dachte du machst es direkt, mein Fehler
Danke für die Erklärung.
Leider wird mir der definierte Adminrang Ingame nicht Angezeigt.
Aktuell hast du ja auch nur 2 Ränge in der Funktion.
Vergibst du also Adminrang 3..kann dieser nicht angezeigt werden, da er noch nicht existiert
Musst die Funktion natürlich auf alle Adminränge ausweiten haha xD
Aber wieso Verwendest du jetzt 'admin' anstatt 'pAdmin'? Da ich 'pAdmin' im Enum stehen habe
Eben genau das ist der Punkt.
Das wird ja auch noch weiterhin verwendet:
PlayerInfo[pID][pAdmin] = admin;
Schauen wir uns das kurz genau an:
pID = Die Spielerid, bei der das Adminlevel gesetzt werden soll.
pAdmin = Gibt an, an welchem index in der Variable das geändert werden soll.
Im Endeffekt hast du hier ja ein Array:
new x[2];
x[0] = 1337;
x[1] = 23;
Hier ist jeweils 0 und 1 der Array Index.
Wenn du jetzt ein Enum verwendest, gibt es diese index auch, aber du benennst ihn halt:
Im Endeffekt machen beide Codes das Selbe!
Wenn du jetzt aber pAdmin auf 1337 setzten würdest, das macht ja keinen Sinn, es muss ja auf 0 bleiben, damit immer der richtige Index gesetzt wird.
Deshalb brauchst du eine weitere Variable, in diesem Fall admin die dann das Admin-Level (1337) beinhaltet.
Und es wird quasi:
x[pAdmin] = admin;
gemacht bzw:
x[0] = admin;
Also
x[0] = 1337;
Hoffe hast es nun etwas besser verstanden
Schreib das mal alles so:
Ich glaube du hast da was komisches mit den Variablen gemacht (du verwendest enum Platzhalter..anstatt neuen Variablen).
CMD:setadmin(playerid,params[])
{
if(!PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,0x00FF00, "[ ! ] Du besitzt keine Rechte um diesen Befehl auszuführen!"); // Keine Rechte
new string[128], pID, admin;
if(sscanf(params,"ui",pID ,admin))return SendClientMessage(playerid,0x00FF00,"[Info] /setadmin [playerid][adminlevel]");
PlayerInfo[pID][pAdmin] = admin;
format(string,sizeof(string),"Spieler ist Adminrank: %s",GetAdminRank(admin));
SendClientMessage(playerid, -1, string);
mysql_format(handle, string, sizeof(string), "UPDATE `users` SET `admin` = '%d' WHERE `id` = '%d'", admin, PlayerInfo[pID][p_id]);
mysql_pquery(handle, string);
return 1;
}
Alles anzeigen
Die Nachricht wurde auch nicht ausgegeben, da du SendClientMessage nicht verwendet hattest
PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]
Sehe gerade, du nutzt ja p_id.
Schreibe das mal so:
PlayerInfo[p_id][pAdmin], PlayerInfo[p_id][p_id]
Und zwar würde ich gerne die Adminränge mit in der Datenbank speicher lassen.
Wieso würdest du das wollen?
Es reicht doch, nur die ID in der Datenbank zu speichern und die Namen im Skript zu hinterlegen, so wie du es gemacht hast in deiner Funktion.
Und dann kannst du das einfach so nutzen:
format(string,sizeof(string), "Spieler ist Adminrank: %s", GetAdminRank(PlayerInfo[playerid][pAdmin]);
Also, hab den Dialog Ausgeklammert, er Crasht nun nicht mehr, der Print schaut wiefolgt aus:
Also das Problem ist, dass du das alles in eine Reihe ausgeben willst und das für den Dialog zu lang ist.
Du musst öfter Zeilenumbrüche machen mit \n.
Schreibe es mal so:
CMD:reports(playerid, params[])
{
if(!PlayerInfo[playerid][pEingeloggt])return SendClientMessage(playerid, -1, "{808080}[{FF3333}FEHLGESCHLAGEN{808080}]: Du bist nicht Eingeloggt!");
if(PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, -1, "{808080}[{FF3333}FEHLGESCHLAGEN{808080}]: Du hast nicht die benötige Rechte um diesen Befehl zu benutzen!");
new str[1024];
for(new i; i < MAX_SUP; i++){
if(SupportInfo[i][erstellt] == true){
if(SupportInfo[i][bearbeitung] == false){
format(str, sizeof(str), "%s{FFFFFF}%s | {B36B00}%s\n", str, SupportInfo[i][Name], SupportInfo[i][Ueberschrift]);
}
else{
format(str, sizeof(str), "%s{FFFFFF}%s | {B36B00}%s [In Bearbeitung]\n", str, SupportInfo[i][Name], SupportInfo[i][Ueberschrift]);
}
}else format(str, sizeof(str), "%s{808080}---\n", str);
}
ShowPlayerDialog(playerid, DIALOG_SUPPORT_LIST, DIALOG_STYLE_LIST, ""#TAG_SERVERKURZ" - Support Tickets:", str, "Auswählen", "Schließen");
return 1;
}
Alles anzeigen
//Edit:
Jaa ganz ruhig Leute xD
@PlayEasy
Verstehe dein Problem nicht, ja das ist doch schon die fertige Funktion?!
Die jetzt einfach nur verwenden
@ReborN
Denke das könntest du so einfach machen:
Kann ich generell die Mysql Funktionen in einem Befehl raus lassen, und es einfach bei einem Logout speichern lassen?
Und ich möchte gerne, anstatt das in der DB '1' steht das dort Steht: Supporter usw.
Kann ich das durch eine Case Funktion ermöglichen?
Ja, zu Allem
Ich würde das komplette MySQL Zeug da raus nehmen.
Schließlich reicht es doch, wenn beim Logout alles in der Datenbank erst gespeichert wird
Der Fehler den du gemacht ist, ist du gibst beim Query statisch 1 an und die ID soll das Adminlevel bei dir sein..das ja Käse..
mysql_format(handle, string, sizeof(string), "UPDATE `users` SET `admin` = '%d' WHERE `id` = %d", PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);
So müsstest du es machen
Wo Liegt der Fehler?
Du kannst nicht einfach hinter das WHERE noch mehr dran hängen, dass muss alles zwischen das SET und dem WHERE, nicht danach.
Musst es so anordnen:
UPDATE `users` SET `level` = '%d', `money` = '%d', `kills` = '%d', `deaths` = '%d', `ban` = '%d', `admin` = '%d' WHERE `id` = '%d'
Und kein Komma vor das WHERE
wenn ich es so mache geht es auch nicht
Was geht denn nicht?
printe dir das doch alles im Detail und schau, wieso es nicht geht.
In Zeile 10 das Semikolon ist übrigens kompletter Käse...das habe ich auch nicht so gemacht gehabt.
und das was du geschickt hast ist für
...das spielt keine Rolle, das gilt für ALLE Plugins.
alle auser den letzen link getestet ging tzd net. beim jetzten link kamm bei öffen der datei ein fehler
Du hast überall die x86 Version gedownloadet und ausgeführt?! :o
Wie sieht das denn aus mit deinen Redistributable, kannst du da auch einen screen machen, wo die alle aufgelistet sind?
socket.dll kann nicht geladen werden