Beiträge von Ace'X

    Es wird schon richtig 'geprintet'.


    Zitat

    [18:44:12] 0 / 1 / 2


    Es wird zuerst überprüft ob der Spieler in der Nähe vom ersten Punkt ist. Es wird 0 zurückgegeben, also ist er nicht in der Nähe.
    Dann wird die Nähe zum zweiten Punkt überprüft. Es wird 1 zurückgegeben, also ist er in der Nähe.
    Und zum Schluß, in welcher Fraktion der Spieler ist. Es wird 2 zurückgegeben, also FBI.


    Sollte eigentlich funktionieren.. :huh:


    mfg
    Ace'X

    Hallo liebe Community,


    MySQL macht erneut Probleme..



    [19:13:09] [ERROR] CMySQLQuery::Execute[CarSavedToDB] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''268.9042' at line 1
    [19:14:57] [ERROR] CMySQLQuery::Execute - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET x='1062.766723', y='-1760.815429', z='13.182973', r='90.395103' WHERE id='0'' at line 1



    SaveCarToDB:

    public SaveCarToDB(playerid, carid)
    {
    new query[128];
    format(query, sizeof(query), "INSERT INTO cars (owner, model, x, y, z, r, color1, color2) VALUES ('%i','%i','%f','%f','%f','%f','%i','%i')", UserInfo[playerid][uID],CarInfo[carid][cModelID], CarInfo[carid][c_x], CarInfo[carid][c_y], CarInfo[carid][c_z], CarInfo[carid][c_r], CarInfo[carid][cFarbe1], CarInfo[carid][cFarbe2]);
    mysql_tquery(sqlHandle,query,"CarSavedToDB","i",carid);
    return 1;
    }



    CarSavedToDB:

    public CarSavedToDB(carid)
    {
    CarInfo[carid][dbID] = cache_insert_id(sqlHandle);
    return 1;
    }


    Ich finde keine Syntax-Fehler, aber vielleicht einer von euch..


    mfg
    Ace'X

    Sollte eigentlich "mysql_query" sein..
    Wenn ich es mit einem Callback mache, habe ich ja wieder das Anfangsproblem.
    Aber mit mysql_query funktioniert es super.


    Vielen vielen Dank. :D
    Dann können wir endlich das Thema beenden.


    mfg
    Ace'X

    Hab ich schon drin. :S



    mysql_escape_string(inputtext, passwort, sqlHandle);
    format(query, sizeof(query), "INSERT INTO user (username, password) VALUES ('%s','%s')",UserName(playerid), passwort);
    mysql_tquery(sqlHandle,query);
    UserInfo[playerid][uID] = cache_insert_id(sqlHandle);
    UserInfo[playerid][FirstTime] = 1;
    UserInfo[playerid][Eingeloggt] = 1;
    GivePlayerMoney(playerid, 50000);
    UserInfo[playerid][Geld] = 50000;
    SetPlayerSkin(playerid, 101);
    UserInfo[playerid][Skin] = 101;


    mfg
    Ace'X

    Klappt super. :)
    Danke. Doch noch etwas komisches..


    Wenn ich bei der Tabelle bei "id" auto-increment aktiviere dann wird der Spieler aus irgendeinem Grund nicht gespeichert.
    Aber wenn auto-increment deaktiviert ist, dann schon.


    Hier mal die Save Funktion:

    public SaveUser(playerid)
    {
    if(UserInfo[playerid][Eingeloggt] == 0) return 1;
    ///Speichern
    new query[128];
    format(query, sizeof(query),"UPDATE user SET level='%i', skin='%i', money='%i', adminlevel='%i', banned='%i' WHERE id='%i'", UserInfo[playerid][Level],UserInfo[playerid][Skin],UserInfo[playerid][Geld],UserInfo[playerid][Adminlevel],UserInfo[playerid][Banned],UserInfo[playerid][uID]);
    mysql_tquery(sqlHandle,query, "", "");
    return 1;
    }




    mfg
    Ace'X

    Ernsthaft..? Wenn du wüsstest wie kompliziert ich gedacht hab.. :D
    Naja, hat super geklappt. Danke dir.
    Nur jetzt muss ich ja alle mysql_tquery's ändern, oder?
    Weil wenn ich zum Beispiel beim Login das falsche Passwort eingebe, dann spawn ich trotzdem und ich werde erneut aufgefordert, das Passwort einzugeben. Aber man spawnt halt schon, wie gesagt.


    Ich überlege da echt wieder auf Dini umzusteigen..


    mfg
    Ace'X

    Danke erstmal für deine Mühe.


    Ich enttäusche dich echt ungern, aber ich glaube ich blicke bei MySQL noch nicht so ganz durch.
    Hab jetzt seit deiner Antwort versucht mit Hilfe von Tutorials dass umzuändern, aber leider ohne Erfolg.
    Da ich mit "mysql_tquery" gerarbeitet habe, versteh nicht wie man es mit "mysql_query" macht und das
    ohne einen Callback..


    Will dich auch nicht nach Lösungen fragen, muss es selbst mal lernen. Aber falls ich Probleme habe, komme ich auf diesen Thread
    darauf zurück.


    mfg
    Ace'X

    Hast du überhaupt schon mit dem Befehl angefangen? Wenn nicht, dann solltest du mal tun.
    Und wenn du dann auf Probleme stößt, kannst du gerne fragen.


    mfg
    Ace'X

    Nicht gestestet, aber sollte reichen um dir das Prinzip zu erklären.


    Irgendwo im Script. (Zum Beispiel bei einem Befehl, wie "/fausrüsten")

    ShowPlayerDialog(playerid, DIALOG_FRAKT, DIALOG_STYLE_LIST,"Ausrüsten","Waffen\nSkins","Okay","Abbrechen");



    Unter OnDialogResponse:

    if(dialogid == DIALOG_FRAKT){
    if(response){
    ////Wenn Spieler auf "Okay" klickt...
    switch(listitem){ //// Was der Spieler aus der Liste auswählt, "Waffen" oder "Skins"..
    case 0: ShowPlayerDialog(playerid, DIALOG_WAFFEN, DIALOG_STYLE_LIST, "Waffen", "Ak47\nM4\nUzi\nSniper", "Okay", "Abbrechen"); ///Wenn Spieler Waffen auswählt..
    case 1: ShowPlayerDialog(playerid, DIALOG_SKINS, DIALOG_STYLE_LIST, "Skins", "Skin: 101\nSkin: 102\nSkin: 103\nSkin: 104", "Okay", "Abbrechen"); ///Wenn Spieler Skins auswählt..
    }
    }else{
    ////Wenn Spieler auf "Abbrechen" klickt..
    }
    return 0;
    }



    Ich hoffe, dass ich dich richtig verstanden hab.


    mfg
    Ace'X

    Du musst das Geld in eine Variable und dann in einer Datenbank oder in einer Datei speichern.
    Dann schreibst du einen Command mit dem Namen "fkasse" und gibst ihm als Parameter einen string und einen Integer mit.


    Im Spiel sollte man es so eingeben: "/fkasse <auszahlen/einzahlen> <betrag>".
    Also musst im Script den String mit der Eingabe vergleichen. Gibt der Spieler "auszahlen" oder "einzahlen" ein.


    Fang am besten mal an zu scripten und wenn du Probleme hast, dann schreib einfach nochmal.


    Mit freundlichen Grüßen
    Ace'X

    Hallo liebe Community,


    ich habe bis jetzt mit Dini gearbeitet und hatte damit echt keine Probleme. Nun nach einer Weile wollte ich auf MySQL
    umsteigen, was auch prima geklappt hat.
    Dann bin ich doch auf ein Problem gestoßen. Und zwar geht es da drum, dass ich die Class Selection überspringen lassen hab.
    Mit Dini hat das ganze auch super funktioniert, doch seit ich mein Code verändert habe und auf MySQL umgestiegen bin,
    geht es nicht mehr. Weder nachdem Register-Vorgang, noch nach dem Login-Vorgang.


    Hier der Code:


    Mit Dini:

    public OnPlayerRequestClass(playerid, classid)
    {
    SpawnPlayer(playerid);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(UserInfo[playerid][Registriert] == 1){
    SetPlayerPos(playerid, 1109.3824,-1796.4907,16.5938);
    SetPlayerFacingAngle(playerid,87.3954);
    SetCameraBehindPlayer(playerid);
    return SetPlayerSkin(playerid, 101);
    }
    new Userfile[64];
    Userfile = UserPath(playerid);
    SetPlayerPos(playerid, 1109.3824,-1796.4907,16.5938);
    SetPlayerFacingAngle(playerid,87.3954);
    SetCameraBehindPlayer(playerid);
    GivePlayerWeapon(playerid,UserInfo[playerid][wPistol],UserInfo[playerid][pAmmu]);
    GivePlayerWeapon(playerid,UserInfo[playerid][wSMG],UserInfo[playerid][sAmmu]);
    SetPlayerSkin(playerid, dini_Int(Userfile, "Skin"));
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch( dialogid ){
    case DIA_REGISTER:{
    if(response){
    if(!strlen(inputtext)){
    new string[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    SendClientMessage(playerid,RED,"Du hast vergessen ein Passwort anzugeben. ");
    format(string,sizeof(string), "Hallo, %s. Du bist noch nicht registriert, trage dazu dein gewünschtes Passwort ein: ", name);
    ShowPlayerDialog(playerid,DIA_REGISTER,DIALOG_STYLE_INPUT,"Registrierung",string,"Registrieren","Abbrechen");
    }else{
    Register(playerid, inputtext);
    UserInfo[playerid][Registriert] = 1;
    }
    }else{
    SendClientMessage(playerid,RED,"Du wurdest gekickt. Ohne Registrierung geht es hier nicht weiter. ");
    Kick(playerid);

    }
    }
    case DIA_LOGIN:{
    if(response){
    if(!strlen(inputtext)){
    new string[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    SendClientMessage(playerid,RED,"Du hast vergessen ein Passwort anzugeben. ");
    format(string, sizeof(string), "Willkommen, %s. Bitte trage dein Passwort ein, um dich einzuloggen.", name);
    ShowPlayerDialog(playerid,DIA_LOGIN,DIALOG_STYLE_INPUT, "Login", string, "Einloggen", "Abbrechen");
    }else{
    Login(playerid, inputtext);
    }
    }else{
    SendClientMessage(playerid,RED,"Du wurdest gekickt. Ohne Login geht es hier nicht weiter. ");
    Kick(playerid);


    }
    }
    }
    return 1;
    }


    public Register(playerid, key[])
    {
    new Userfile[64];
    Userfile = UserPath(playerid);
    dini_Create(Userfile);
    dini_Set(Userfile, "Passwort", key);
    SetPlayerScore(playerid,0);
    GivePlayerMoney(playerid, 50000);
    SetSpawnInfo( playerid, 0, 101, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 );
    UserInfo[playerid][Konto] = 50000;
    SendClientMessage(playerid,GREEN,"Registrierung erfolgreich! Viel Spaß.");

    }


    public Login(playerid, key[])
    {
    new Userfile[64];
    Userfile = UserPath(playerid);
    if(!strcmp(key,dini_Get(Userfile, "Passwort"), true))
    {
    LoadUser(playerid);
    SendClientMessage(playerid,GREEN,"Login erfolgreich! Viel Spaß.");
    }else{
    new string[128], name[MAX_PLAYER_NAME];
    SendClientMessage(playerid, RED, "Dein Passwort ist falsch.");
    format(string, sizeof(string), "Willkommen, %s. Bitte trage dein Passwort ein, um dich einzuloggen.", name);
    ShowPlayerDialog(playerid,DIA_LOGIN,DIALOG_STYLE_INPUT, "Login", string, "Einloggen", "Abbrechen");
    }
    return 1;
    }


    public SaveUser(playerid)
    {
    new Userfile[64], Float:X, Float:Y, Float:Z, Float:R, Weap, Ammu;
    Userfile = UserPath(playerid);
    GetPlayerWeaponData(playerid, 2, Weap, Ammu);
    UserInfo[playerid][wPistol] = Weap; UserInfo[playerid][pAmmu] = Ammu;
    GetPlayerWeaponData(playerid, 4, Weap, Ammu);
    UserInfo[playerid][wSMG] = Weap; UserInfo[playerid][sAmmu] = Ammu;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, R);
    UserInfo[playerid][p_x] = X; UserInfo[playerid][p_y] = Y; UserInfo[playerid][p_z] = Z; UserInfo[playerid][p_r] = R;

    dini_IntSet(Userfile, "Level", GetPlayerScore(playerid));
    dini_IntSet(Userfile, "Geld", GetPlayerMoney(playerid));
    dini_IntSet(Userfile, "Skin", GetPlayerSkin(playerid));
    dini_IntSet(Userfile, "Konto", UserInfo[playerid][Konto]);
    dini_IntSet(Userfile, "Eingeloggt", UserInfo[playerid][Eingeloggt]);
    dini_FloatSet(Userfile, "PosX", UserInfo[playerid][p_x]);
    dini_FloatSet(Userfile, "PosY", UserInfo[playerid][p_y]);
    dini_FloatSet(Userfile, "PosZ", UserInfo[playerid][p_z]);
    dini_FloatSet(Userfile, "PosR", UserInfo[playerid][p_r]);
    dini_IntSet(Userfile, "Pistol", UserInfo[playerid][wPistol]);
    dini_IntSet(Userfile, "PistolAmmu", UserInfo[playerid][pAmmu]);
    dini_IntSet(Userfile, "SMG", UserInfo[playerid][wSMG]);
    dini_IntSet(Userfile, "SMGAmmu", UserInfo[playerid][sAmmu]);

    return 1;
    }


    public LoadUser(playerid)
    {
    new Userfile[64];
    Userfile = UserPath(playerid);
    UserInfo[playerid][p_x] = dini_Float(Userfile, "PosX");
    UserInfo[playerid][p_y] = dini_Float(Userfile, "PosY");
    UserInfo[playerid][p_z] = dini_Float(Userfile, "PosZ");
    UserInfo[playerid][p_r] = dini_Float(Userfile, "PosR");
    UserInfo[playerid][wPistol] = dini_Int(Userfile, "Pistol");
    UserInfo[playerid][pAmmu] = dini_Int(Userfile, "PistolAmmu");
    UserInfo[playerid][wSMG] = dini_Int(Userfile, "SMG");
    UserInfo[playerid][sAmmu] = dini_Int(Userfile, "SMGAmmu");
    SetPlayerScore(playerid, dini_Int(Userfile, "Level"));
    GivePlayerMoney(playerid, dini_Int(Userfile, "Geld"));
    UserInfo[playerid][Konto] = dini_Int(Userfile, "Konto");
    UserInfo[playerid][Eingeloggt] = dini_Int(Userfile, "Eingeloggt");
    SetSpawnInfo(playerid, 0,dini_Int(Userfile, "Skin"), UserInfo[playerid][p_x], UserInfo[playerid][p_y], UserInfo[playerid][p_z], UserInfo[playerid][p_r], UserInfo[playerid][wPistol], UserInfo[playerid][pAmmu], UserInfo[playerid][wSMG], UserInfo[playerid][sAmmu], 0, 0 );
    LoadCar(playerid);
    return 1;
    }


    stock ResetUser(playerid)
    {
    for(new i=0; i<sizeof(UserInfo[]); i++){
    UserInfo[playerid][pInfo:i] = 0;
    }
    return 1;
    }


    Und nun mit MySQL:

    public OnPlayerRequestClass(playerid, classid)
    {
    SpawnPlayer(playerid);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(UserInfo[playerid][Registriert] == 1){
    SetPlayerPos(playerid,1109.3824,-1796.4907,16.5938);
    SetPlayerFacingAngle(playerid,87.3954);
    SetCameraBehindPlayer(playerid);
    return SetPlayerSkin(playerid, 101);
    }
    SetPlayerPos(playerid, 1109.3824,-1796.4907,16.5938);
    SetPlayerFacingAngle(playerid,87.3954);
    SetCameraBehindPlayer(playerid);
    GivePlayerWeapon(playerid,UserInfo[playerid][Pistol],UserInfo[playerid][pAmmu]);
    GivePlayerWeapon(playerid,UserInfo[playerid][SMG],UserInfo[playerid][sAmmu]);
    SetPlayerSkin(playerid, UserInfo[playerid][Skin]);
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch( dialogid ){
    case DIA_REGISTER:{
    if(response){
    new string[128], query[128], passwort[40];
    if(strlen(inputtext)>3){
    ///Registrierung
    mysql_escape_string(inputtext, passwort, sqlHandle);
    format(query, sizeof(query), "INSERT INTO user (username, password) VALUES ('%s','%s')",UserName(playerid), passwort);
    mysql_tquery(sqlHandle,query,"OnUserRegister","i", playerid);
    }else{
    SendClientMessage(playerid,RED,"Das eingegebene Passwort war nicht lang genug. Mindestens 4 Zeichen lang. ");
    format(string,sizeof(string), "Hallo, %s. Du bist noch nicht registriert, trage dazu dein gewünschtes Passwort ein: ", UserName(playerid));
    ShowPlayerDialog(playerid,DIA_REGISTER,DIALOG_STYLE_INPUT,"Registrierung",string,"Registrieren","Abbrechen");
    }
    }else{
    SendClientMessage(playerid,RED,"Du wurdest gekickt. Ohne Registrierung geht es hier nicht weiter. ");
    Kick(playerid);


    }
    return 1;
    }
    case DIA_LOGIN:{
    if(response){
    new string[128], query[128], passwort[40];
    if(strlen(inputtext)>0){
    mysql_escape_string(inputtext,passwort,sqlHandle);
    format(query, sizeof(query),"SELECT * FROM user WHERE username='%s' AND password='%s'", UserName(playerid), passwort);
    mysql_tquery(sqlHandle,query,"OnPasswordResponse","i",playerid);
    }else{
    format(string, sizeof(string), "Willkommen, %s. Bitte trage dein Passwort ein, um dich einzuloggen.", UserName(playerid));
    ShowPlayerDialog(playerid,DIA_LOGIN,DIALOG_STYLE_PASSWORD, "Login", string, "Einloggen", "Abbrechen");
    }
    }else{
    SendClientMessage(playerid,RED,"Du wurdest gekickt. Ohne Login geht es hier nicht weiter. ");
    Kick(playerid);


    }
    return 1;
    }
    }
    return 1;
    }


    public OnUserCheck(playerid)
    {
    new num_rows, num_fields, string[128];
    cache_get_data(num_rows, num_fields, sqlHandle);
    if(num_rows == 0){
    ///Registrierung
    format(string, sizeof(string), "Hallo, %s. Du bist noch nicht registriert, trage dazu dein gewünschtes Passwort ein: ", UserName(playerid));
    ShowPlayerDialog(playerid,DIA_REGISTER,DIALOG_STYLE_INPUT,"Registrierung",string,"Registrieren","Abbrechen");
    }else{
    ///Login
    format(string, sizeof(string), "Willkommen, %s. Bitte trage dein Passwort ein, um dich einzuloggen.", UserName(playerid));
    ShowPlayerDialog(playerid,DIA_LOGIN,DIALOG_STYLE_PASSWORD, "Login", string, "Einloggen", "Abbrechen");
    }
    return 1;
    }


    public OnUserRegister(playerid)
    {
    UserInfo[playerid][uID] = cache_insert_id(sqlHandle);
    UserInfo[playerid][Registriert] = 1;
    UserInfo[playerid][Eingeloggt] = 1;
    GivePlayerMoney(playerid, 50000);
    SetSpawnInfo( playerid, 0, 101, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
    return 1;
    }


    public OnPasswordResponse(playerid)
    {
    new num_rows, num_fields,string[128];
    cache_get_data(num_rows,num_fields,sqlHandle);
    if(num_rows==1){
    UserInfo[playerid][uID] = cache_get_field_content_int(0,"id",sqlHandle);
    UserInfo[playerid][Eingeloggt] = 1;
    UserInfo[playerid][Level] = cache_get_field_content_int(0,"level",sqlHandle);
    SetPlayerScore(playerid, UserInfo[playerid][Level]);
    UserInfo[playerid][Skin] = cache_get_field_content_int(0,"skin",sqlHandle);
    UserInfo[playerid][Geld] = cache_get_field_content_int(0,"money",sqlHandle);
    SetPlayerMoney(playerid, UserInfo[playerid][Geld]);
    UserInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"adminlevel",sqlHandle);
    UserInfo[playerid][Banned] = cache_get_field_content_int(0,"banned",sqlHandle);
    SetSpawnInfo(playerid, 0, cache_get_field_content_int(0,"skin",sqlHandle),1109.3824,-1796.4907,16.5938, 87.3954 ,0,0,0,0,0,0);
    }else{
    SendClientMessage(playerid, RED, "Das eingegebene Passwort ist falsch!");
    format(string, sizeof(string), "Willkommen, %s. Bitte trage dein Passwort ein, um dich einzuloggen.", UserName(playerid));
    ShowPlayerDialog(playerid,DIA_LOGIN,DIALOG_STYLE_PASSWORD, "Login", string, "Einloggen", "Abbrechen");
    }
    return 1;
    }


    public SaveUser(playerid)
    {
    if(UserInfo[playerid][Eingeloggt] == 0) return 1;
    ///Speichern
    new query[128];
    format(query, sizeof(query),"UPDATE user SET level='%i', skin='%i', money='%i', adminlevel='%i', banned='%i' WHERE id='%s'", UserInfo[playerid][Level],UserInfo[playerid][Skin],UserInfo[playerid][Geld],UserInfo[playerid][Adminlevel],UserInfo[playerid][Banned],UserInfo[playerid][uID]);
    mysql_tquery(sqlHandle,query,"","");
    return 1;
    }


    public ResetUser(playerid)
    {
    for(new i=0; i<sizeof(UserInfo[]); i++){
    UserInfo[playerid][uInfo:i] = 0;
    }
    return 1;
    }


    Also meiner Meinung nach müsste es kein Unterschied machen, ob es in MySQL oder Dini ist..
    Ich habe auch schon SetSpawnInfo(); unter OnPlayerRequestClass geschrieben. Aber da spawnt der Spieler während dem Login- bzw. Register-Vorgang
    und das will ich eigentlich nicht. Beispiel wie ich es bestmöglichst sein sollte: Register-Dialog taucht auf -> Spieler gibt Passwort ein -> klickt auf "Registrieren" oder drückt Enter
    -> Spieler wird direkt gespawnt. Ohne vorher auf "Spawn" klicken zu müssen. Selbiges auch beim Login-Vorgang.


    Hoffe ihr könnt mir da helfen und sorry für so viel Code..


    Edit: Kann da keiner mal drüberschauen? Ich weiß, ist echt viel Code, aber trotz 2 Tage rumprobieren, komm ich nicht zum gewünschtem Ergebnis. :S


    Mit freundlichen Grüßen
    Ace'X

    Okay. Wäre es vielleicht nicht noch besser, ein AdminFS zu schreiben und dort eine eigene "Admindatei"
    erstellen zu lassen? Dann habe halt ein User.ini und einmal Admin.ini.
    Bei der Admin.ini wird nur das Level gespeichert.


    Wäre es so besser?

    Danke erstmal.


    Werde ich gleich mal ausprobieren. Aber ich glaube ich habe da noch ein Problem.
    Und zwar habe ich im FS eine Funktion, die das Adminlevel überprüft, nur das Adminlevel
    wird auch in der Spielerdatei gespeichert.


    Im Gamemode:

    enum pInfo{
    Registriert = 0,
    Level,
    Geld,
    Konto,
    Skin,
    Adminlevel
    }
    new UserInfo[MAX_PLAYERS][pInfo];


    das alles ist im GM und wird per dini in einer User.ini geschrieben.
    Wie sollte ich da am besten vorgehen?


    mfg
    Ace'X

    Hallo liebe Community,


    ich habe in meinem Gamemode das Login- und Registersystem, das auch alles in einer Datei speichert.
    Dabei werden die Werte in einem Enum gespeichert und beim Disconncect dann in die Datei.
    Nun will ich ein Filterscript für das Adminsystem schreiben. Meine Frage ist nun wie ich das denn machen kann, dass
    wenn ich z.B. im FS einen Befehl habe mit /setskin, dann will ich dass der neue Skin in der Spielerdatei abgespeichert wird,
    doch die Spielerdatei wird ja im Gamemode erstellt und ist dem FS ja unbekannt.


    Also wie könnte man sowas denn realisieren?


    Hoffe ihr versteht was ich meine.. :S


    mfg
    Ace'X