nur mit dem Laden kommt er nicht hinterher also es dauert etwas.... ist ja normal oder ?
Weiß jetzt nicht genau, was du meinst ![]()
nur mit dem Laden kommt er nicht hinterher also es dauert etwas.... ist ja normal oder ?
Weiß jetzt nicht genau, was du meinst ![]()
Ok gut, würde es sin machen CreateObject in CreateDynamicObject zu ändern ?
z.B, bei den Toren verwende ich CreateObject.
Ja,das würde sehr viel Sinn ergeben! ![]()
Wie gesagt, alles auf DynamicObjects, außer Böden ![]()
Dann weißt du jetzt, dass es nicht am Streamer (der Draw/Streamdistance) liegt und nicht an den Objekten selbst.
Es muss wohl etwas mit den anderen Maps zu tun haben.
Entweder du hast zu viele CreateObjects, oder einfach zu viele Objekte/Maps in der Nähe.
Evtl ist die Streamdistance zu groß von bestimmten Objekten.
Kannst du die Map eventuell auslagern und mal schauen, ob die auf einem Empty-Server funktioniert, wo es nur diese Map gibt?
Wieso wird mir dort nur S wiedergegeben?^^
Um ehrlich zu sein, keine Ahnung.
Bist du sicher, dass du dein Skript kompiliert hast und das wirklich 1:1 der Code ist?
Denn wenn ich das mache, wird das Richtige ausgegeben, also ich kann den Fehler nicht reproduzieren.
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 ![]()