Beiträge von Opa_Schlumpf

    Was mich allerdings auch stört ist das der Rauch bei der Decke raus kommt..
    Und das Glas flimmert leicht beim gehen soweit ich es sehe bei den Screens (wo sich die Scheiben schneiden).
    Dies könnte man sehr leicht verhindern...

    Eine Frage:
    Was willst du damit erreichen?
    User wirst deswegen nicht bekommen da er kopiert ist...


    Naja Geld würde ich dafür nicht ausgeben aber ist ja deine sache.


    Vote 4 Close

    public OnPlayerDisconnect(playerid, reason)
    {
    DeletePVar(playerid,"Eingeloggt");

    KillTimer(KnastTimerx);
    SpielerInfo[playerid][pKnast] = 2;
    SpielerInfo[playerid][pDifferenzZeit] = SpielerInfo[playerid][pZeit] - SpielerInfo[playerid][pMinZeit];
    SpielerInfo[playerid][pZeit] = 0;
    SpielerInfo[playerid][pMinZeit]=0;
    SavePlayer(playerid);

    return 1;
    }
    Du speicherst die Variablen zu früh, da wo sie noch keinen Wert haben :)
    Versuch es so

    KillTimer(KnastTimerx);
    SpielerInfo[playerid][pKnast] = 2;
    SpielerInfo[playerid][pDifferenzZeit] = SpielerInfo[playerid][pZeit] - SpielerInfo[playerid][pMinZeit];
    SpielerInfo[playerid][pZeit] = 0;
    SpielerInfo[playerid][pMinZeit]=0;


    So sieht es schon besser aus.
    Denn die Variable pZeit wird ja nach dem löschen ja noch verwendet.. Logischer Fehler^^

    Wird garnichts angezeigt oder läuft einfach was falsch wenn ja was?
    Was bekommst angezeigt?
    Ok sehe da weitere Fehler:

    forward MinTimer(pID);
    public MinTimer(pID)
    {
    SpielerInfo[pID][pMinZeit] += 1;
    if(SpielerInfo[pID][pZeit] == SpielerInfo[pID][pMinZeit])
    {
    KillTimer(MinTimerx);
    }
    return 1;
    }
    Was wolltest du mit der Abfrage bewirken?
    Denn gettime gibt dir die aktuelle Zeit aus.
    Das bedeutet du würdest nur um 00:01 eine Minute dazu bekommen.
    Das heißt einmal am Tag :)


    if(SpielerInfo[playerid][pKnast] == 2)
    {
    SetPlayerPos(playerid, 215.4654,110.5644,999.0156 );
    SetPlayerInterior(playerid,10);
    SetTimerEx("KnastTimer2", SpielerInfo[playerid][pDifferenzZeit]*60*1000, false, "d",playerid);
    return 1;
    }
    Das hast du beim Spawn drinnen.
    Nur muss man bei einem Timer immer die Zeit in Millisekunden angeben und du hattest es in Minuten.
    Daher rechnen wir die Zeit * 60 um Sekunden zu erhalten und rechnen diesen Wert *1000 um auf Millisekunden zu kommen.


    mfg.
    Opa

    Wo gibts bitte eine Fahrzeug das noch nicht gespawnt ist aber doch existiert und auch noch eine CarID besitzt die man mit MAX_VEHICLES aufrufen kann.
    Also ich verstehe nicht was du gezielt willst^^
    Vill. denke ich auch zu kompliziert.

    Nein sonst passiert folgendes:
    Der Timer läuft weiter obwohl der User nicht mehr Online ist.
    Und es würden dann als pKnast die Zahl 1 gespeichert werden und nicht 2.
    Und die Zeit die er beim wieder einloggen absitzen muss wäre dann gleich 0.
    Weil die Variable "SpielerInfo[playerid][pDifferenzZeit]" dann keinen Wert hätte.


    Wichtig ist noch das du diese Zeilen vor dem Speichern ausführst.


    Hoffe es funktioniert^^

    Ja das hab ich auch bemerkt.
    Du verwendest die Variable pZeit nur zu dem Zeitpunkt wo er eingesperrt wird.
    Wenn er aber reloggt wird nur die Zeit benötigt die er noch absitzen muss.
    Daher wird die Gesamtzeit nicht mehr benötigt.
    Deswegen wird sie auch nicht gespeichert und gelöscht.
    Wenn er jetzt Connected wird die Zeit ausgelesen die er noch absitzen muss und wird in das Knast gesteckt und der Timer wird gestartet.


    Ich hoffe ich erklär es verständlich.

    Versuch es so:
    Hoffe ich habe nichts wesentliches übersehen, bin mit den Gedanken wo anders :)


    OnPlayerDisconnect(playerid)
    {
    SpielerInfo[playerid][pZeit]=0;
    return 1;
    }


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new Name[MAX_PLAYER_NAME],path[64];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    format(path, sizeof(path),"/Spieler/%s.ini", Name);
    SpielerInfo[playerid][pScore] = dini_Int(path, "Level");
    SpielerInfo[playerid][pAdmin] = dini_Int(path, "Admin");
    SpielerInfo[playerid][pKnast] = dini_Int(path, "Knast");
    SpielerInfo[playerid][pMinZeit] = dini_Int(path, "MinZeit");
    SpielerInfo[playerid][pZeit] = dini_Int(path, "Zeit");
    SpielerInfo[playerid][pDifferenzZeit] = dini_Int(path, "DifferenzZeit");
    SpielerInfo[playerid][pTutorial] = dini_Int(path, "Tutorial");
    SpielerInfo[playerid][pFraktion] = dini_Int(path, "Fraktion");
    SpielerInfo[playerid][pGeld] = dini_Int(path, "Geld");
    SpielerInfo[playerid][pLeader] = dini_Int(path, "Leader");
    SpielerInfo[playerid][pRang] = dini_Int(path, "Rang");
    SpielerInfo[playerid][pContract] = dini_Int(path, "Contract");
    SpielerInfo[playerid][pContractGeld] = dini_Int(path, "ContractGeld");
    SpielerInfo[playerid][pTazed] = dini_Int(path, "Tazed");
    SpielerInfo[playerid][pHaus] = dini_Int(path, "Haus");
    SpielerInfo[playerid][pKnast] = dini_Int(path, "Knaststatus");
    SpielerInfo[playerid][pDifferenzZeit] = dini_Int(path, "KnastDifferenzZeit");
    }
    return 1;
    }
    stock SavePlayer(playerid)
    {
    if(GetPVarInt(playerid, "Eingeloggt") == 1)
    {
    new Name[MAX_PLAYER_NAME],path[64];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    format(path, sizeof(path),"/Spieler/%s.ini", Name);
    dini_IntSet(path,"Level", SpielerInfo[playerid][pScore]);
    dini_IntSet(path,"Admin", SpielerInfo[playerid][pAdmin]);
    dini_IntSet(path,"Knast",SpielerInfo[playerid][pKnast]);
    dini_IntSet(path, "MinZeit", SpielerInfo[playerid][pMinZeit]);
    dini_IntSet(path, "Zeit", SpielerInfo[playerid][pZeit]);
    dini_IntSet(path, "DifferenzZeit", SpielerInfo[playerid][pDifferenzZeit]);
    dini_IntSet(path, "Tutorial", SpielerInfo[playerid][pTutorial]);
    dini_IntSet(path, "Fraktion",SpielerInfo[playerid][pFraktion]);
    dini_IntSet(path, "Contract", SpielerInfo[playerid][pContract]);
    dini_IntSet(path, "ContractGeld", SpielerInfo[playerid][pContractGeld]);
    dini_IntSet(path,"Geld", SpielerInfo[playerid][pGeld]);
    dini_IntSet(path,"Leader", SpielerInfo[playerid][pLeader]);
    dini_IntSet(path,"Rang", SpielerInfo[playerid][pRang]);
    dini_IntSet(path,"Tazed", SpielerInfo[playerid][pTazed]);
    dini_IntSet(path,"Haus", SpielerInfo[playerid][pHaus]);
    dini_IntSet(path,"Knaststatus", SpielerInfo[playerid][pKnast]);
    dini_IntSet(path,"KnastDifferenzZeit", SpielerInfo[playerid][pDifferenzZeit]);
    }
    return 1;
    }

    Ok schön und gut soweit.
    Nur was hat das für einen Sinn:
    SpielerInfo[playerid][pKnast] = 2;
    SpielerInfo[playerid][pDifferenzZeit] = SpielerInfo[playerid][pZeit] - SpielerInfo[playerid][pMinZeit];
    Ok wenn du dich reloggst ohne GMX und wieder die gleiche ID hast dann müsste es klappen aber im späteren Verlauf werden andere statt dir in den Knast kommen.
    Daher speicher beim Disconnecten die Variablen in die Spielerdatei ab und lade sie beim connecten wieder in die Variablen.
    Dann nicht vergessen das nach dem speichern die Variablen zu leeren sonst kommen andere Spieler statt dir in den Knast.
    Wenn du es nicht schaffst, dann schick mal die Codes wo der Acc gespeichert und geladen wird.

    wen du mir sagst für was kann ichse dir auf die domain umleiten


    Ich denke er will die Lizenz übertragen bekommen und nicht nur ein Forum das irgendwo installiert ist..
    Wenn du es hier kaufst rate ich dir einen Mittelmann damit es da keine Enttäuschung gibt.

    Das kanns nicht sein.
    Pass lieber auf wie du was formulierst denn höflicher geht es nicht mehr.
    Auch ich rate dir die Basics zu lernen.
    Auch ich hab so angefangen und es war die beste Entscheidung.
    Wenn man die Basics kann lernt man schnell dazu und das motiviert.


    Aber ich geh erstmal Offline.