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... -
Lol ist das zuviel verlangt wenn man mehr Screens reinmachen soll???
Lese die Beiträge mal durch und nicht gleich beschweren -.-Finde nicht das dieses Gebäude als PD passt, ist Geschmackssache...
Daher mache ich auch keine Bewertung mit Punkten. -
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 -
Zeig mal das ganze OnPlayerDisconnect.
Denn ich glaub da gibts auch noch was zu verbessern... -
Und wo führst du diese Funktion aus?
SavePlayer(playerid) -
Ok...
Wird es auch abgespeichert?
Schau mal in der Datei bitte.
Habe beim drüberschauen keinen Fehler gesehen. -
Vom Code her ist es richtig zeig mal wo den Account speicherst und den stock von der Account speicherung
-
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^^ -
Schick am besten alle Codes was mit dem Knast zutun haben sonst kommt man da noch durcheinander und wie sie jetzt aussehen.
-
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 Tagif(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 -
Zeig mal den Public MinTimer und ist die DifferenzZeit auch richtig gespeichert worden in deinen Account?
-
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 andersOnPlayerDisconnect(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.