Beiträge von Jiren

    Eben doch, du setzt die Bann-Variable bei jeder Speicherung auf 1:

    Änder das, und dein Problem sollte sich in Luft auflösen ;)

    Vielen Dank, es funkioniert wieder! :D

    Das ist der Fehler.
    Schreib da mal:


    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));

    Omg, hab das die ganze Zeit nicht gesehen..trotzdem vielen Dank auch von mir.

    Interessant wäre die Funktion SpielerSpeichern mal zu sehen :)
    Und wie du den Spieler lädst.


    und du solltest mal crashdetect laden um zu schauen, ob es zu Fehlern kommt.

    So speicher er alles halt:


    stock SpielerSpeichern(playerid)
    {


    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    new pfad[128];
    dini_Exists(pfad);
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Baned",1);
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Auto",GetPVarInt(playerid,"Auto"));
    return 1;
    }


    Und wie gesagt, es hat alles super funktioniert bis das mit dem Ban kam..der Ban Befehle funzt an sich auch.

    Nein, das brauch er nicht. pVars setzen sich beim Disconnect alle automatisch auf 0.

    Dann ist nur halt die Frage, warum der Wert bei "Baned" von 0 auf 1 automatisch gesetzt wird. Ich habe eigentlich nix auffälliges drin, was dazu führen könnte.

    Was du da im Bahnbefehl versuchen willst kann garnicht funktionieren. pVars setzen sich beim Disconnect automatisch zurück auf 0.
    Zeig Mal OnPlayerConnect.
    Welche Nachricht kriegst du denn beim connecten? Die SA:MP Nachricht "You are banned from this server." ?

    Nope. Beim connecten, wenn der Server den Wert auf 1 stellt nur "Server closed the connection".


    public OnPlayerConnect(playerid)
    {
    new welcome[128];
    format(welcome,sizeof(welcome),"Willkommen %d auf dem Server von Reallife German");
    SendClientMessage(playerid,COLOR_WHITE,welcome);


    new message[128];
    format(message,sizeof(message),"Mit /befehle kannst Du alle Befehle nachsehen",playerid);
    SendClientMessage(playerid,COLOR_YELLOW,message);
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Registrieren","Bitte gib dein gewünschtes Passwort ein","Registrieren","Abbrechen");


    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,4,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib dein Passwort bitte ein","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"Registrieren","Bitte gib dein gewünschtes Passwort ein","Registrieren","Abbrechen");
    }

    Das ist OnPlayerDisconnect:


    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }


    Und das die Ban Funktion:


    ocmd:ban(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel") >= 5)
    {
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,0xFD4B00FF,"/ban [id] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0xFD4B00FF,string);
    SetPVarInt(playerid,"Baned",1);
    Kick(pID);
    return 1;
    }
    return 1;


    }


    Es hat schon mal funktioniert wie gewollt, aber dann ab einem Punkt kam das beschriebene Problem.

    Hi Leute,


    ich bin seit 2 Wochen wieder dabei mir das scripten beizubringen. Alles funktioniert bisher ganz gut, nur eine Sache ist wirklich nervig. Jedes mal, wenn ich vom meinem Server mit /q disconnecte, werde ich automatisch vom Server gebannt und muss das immer manuell im Account umändern und mich entbannen.


    Weiß jemand, woran das liegen könnte?

    Zb
    . saveCarToDB(playerid,carid){new query[128];Format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f,'%f','%f')",PlayerInfo[playerid][id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]); //2043mysql_function,query(dbhandle,query,false,"",""); //2044Return 1;}

    Das sollte die Funktion sein. Ist dort etwas auffälliges?

    Also heißt das, dass da was fehlt, richtig? :)




    Code
    saveCarToDB(playerid,carid)
    {
    	new query[128];
    	format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    	mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
    	return 1;
    }

    Dann poste den befehl und alles was dazu gehört

    1. Das gehört mit dazu:


    createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]!=0)continue;
    cInfo[i][besitzer]=sInfo[playerid][db_id];
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][model]=modelid;
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
    new string[128];
    format(string,sizeof(string),"Das Auto cInfo[%i] wurde erstellt.",i);
    SendClientMessageToAll(ROT,string);
    saveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }


    2. Das ist der Befehl:


    ocmd:createcar(playerid,params[])
    {
    if(!isAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Dein Adminrang ist zu niedrig.");
    new mID,pID;
    if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,ROT,"INFO: /createcar [playerid] [model]");
    if(mID<400||mID>611)return SendClientMessage(playerid,ROT,"Ungültiges Model.");
    new Float:xc,Float:yc,Float:zc,Float:rc;
    GetPlayerPos(pID,xc,yc,zc);
    GetPlayerFacingAngle(pID,rc);
    createPlayerCar(pID,mID,xc,yc,zc,rc);
    return 1;
    }




    Edit:



    loadPlayerCars(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
    return 1;
    }



    Das ist alles was ich finden konnte.

    wie spawnst du die autos ? Mit einem fs?


    Am besten spawnst du sie stellst ab wo du willst machst /save und gibst die coords manuell ein.


    Du meintest die spawnen aufeinander und jetzt schreibste das die dort spawnen wo du die erstellt hast xd

    Okay sorry, war ziemlich doof formuliert.


    Ich spawne die Autos mit dem Befehle "/createcar [playerid [modelid]. Wobei ich eher lieber "/veh model farbe farbe" hätte, aber gut.
    Mit dem /save ist eigentlich sehr gut, aber es ist auf Dauer dann irgendwann ziemlich Lästig, die Koordis manuell einzutragen.


    Aber ja, ich spawne Beispielweise ein Auto am BSN. Mach restart und es spawnt halt dort. Wenn ich mehrere erstelle, spawnen die ALLE am BSN, wo ich das ERSTE Auto erstellt habe.

    Huhu Liebe Menschen,


    ich versuche seit kurzem mir das scripten beizubringen, da ich so gern die Erfahrung sammeln möchte, einen eigenen Server zu erstellen. Ich habe mir auf Youtube Tutorials angeschaut, und dadurch habe ich ein eigenes Script schon mal. Es gibt schon einiges...nur ein Problem gibt es bei dem spawnen von Autos. Wenn ich mir ein Auto spawne, dann klappt das auch sehr gut, nur wenn ich mehrere spawne und den Server neustarte, dann sehe ich, dass sich alle gespawnten Fahrzeuge aufeinander legen und durch jedes Fahrzeug geht, und es dadurch zu Frame-Drop führt. In der Datenbank werden alle Autos nach dem schließen oder neustart des Servers auf der selben Koordinate gesetzt.


    Hat jemand da eine Lösung?