Ändere
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
Zu
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp), 255);
Wenn es nicht geht poste nochmal den Print und wie du pKey im enum deklariert hast.
Ändere
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
Zu
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp), 255);
Wenn es nicht geht poste nochmal den Print und wie du pKey im enum deklariert hast.
Ok, dann ändere beim Login:
if(strcmp(PlayerInfo[playerid][pKey],password) == 0 )
zu:
printf("key: %s | pw: %s", PlayerInfo[playerid][pKey],password);
if(strcmp(PlayerInfo[playerid][pKey],password) == 0 )
Was steht dann im Log, wenn du dich einloggst?
Würdest du bitte nicht meinen kompletten Post mit allen Codes zitieren? Danke!
Dann poste bitte dein Login-Code sowie den Inhalt der Spieler-Datei.
1.)
Lösche das komplette OnPlayerUpdate!
2.)
OnGameModeInit:
SetTimer("SaveAll", 60000, true);
3.)
Ganz unten im GameMode:
forward SaveAll();
public SaveAll()
{
for(new i=0; i<MAX_PLAYERS; i++) SavePlayer(i);
return 1;
}
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid])
{
new string3[32];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), "/Accounts/%s.ini", playername3);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
new var[32];
format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
format(var, 32, "Level=%d\n",PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
format(var, 32, "AdminLevel=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
format(var, 32, "DonateRank=%d\n",PlayerInfo[playerid][pDonateRank]);fwrite(hFile, var);
format(var, 32, "UpgradePoints=%d\n",PlayerInfo[playerid][gPupgrade]);fwrite(hFile, var);
format(var, 32, "ConnectedTime=%d\n",PlayerInfo[playerid][pConnectTime]);fwrite(hFile, var);
format(var, 32, "Registered=%d\n",PlayerInfo[playerid][pReg]);fwrite(hFile, var);
format(var, 32, "Sex=%d\n",PlayerInfo[playerid][pSex]);fwrite(hFile, var);
format(var, 32, "Age=%d\n",PlayerInfo[playerid][pAge]);fwrite(hFile, var);
format(var, 32, "Origin=%d\n",PlayerInfo[playerid][pOrigin]);fwrite(hFile, var);
format(var, 32, "CK=%d\n",PlayerInfo[playerid][pCK]);fwrite(hFile, var);
format(var, 32, "Muted=%d\n",PlayerInfo[playerid][pMuted]);fwrite(hFile, var);
format(var, 32, "Respect=%d\n",PlayerInfo[playerid][pExp]);fwrite(hFile, var);
format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
format(var, 32, "Bank=%d\n",PlayerInfo[playerid][pAccount]);fwrite(hFile, var);
format(var, 32, "Crimes=%d\n",PlayerInfo[playerid][pCrimes]);fwrite(hFile, var);
format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
format(var, 32, "Arrested=%d\n",PlayerInfo[playerid][pArrested]);fwrite(hFile, var);
format(var, 32, "WantedDeaths=%d\n",PlayerInfo[playerid][pWantedDeaths]);fwrite(hFile, var);
format(var, 32, "Phonebook=%d\n",PlayerInfo[playerid][pPhoneBook]);fwrite(hFile, var);
format(var, 32, "LottoNr=%d\n",PlayerInfo[playerid][pLottoNr]);fwrite(hFile, var);
format(var, 32, "Fishes=%d\n",PlayerInfo[playerid][pFishes]);fwrite(hFile, var);
format(var, 32, "BiggestFish=%d\n",PlayerInfo[playerid][pBiggestFish]);fwrite(hFile, var);
format(var, 32, "Job=%d\n",PlayerInfo[playerid][pJob]);fwrite(hFile, var);
format(var, 32, "Paycheck=%d\n",PlayerInfo[playerid][pPayCheck]);fwrite(hFile, var);
format(var, 32, "HeadValue=%d\n",PlayerInfo[playerid][pHeadValue]);fwrite(hFile, var);
format(var, 32, "Jailed=%d\n",PlayerInfo[playerid][pJailed]);fwrite(hFile, var);
format(var, 32, "JailTime=%d\n",PlayerInfo[playerid][pJailTime]);fwrite(hFile, var);
format(var, 32, "Materials=%d\n",PlayerInfo[playerid][pMats]);fwrite(hFile, var);
format(var, 32, "Drugs=%d\n",PlayerInfo[playerid][pDrugs]);fwrite(hFile, var);
format(var, 32, "Leader=%d\n",PlayerInfo[playerid][pLeader]);fwrite(hFile, var);
format(var, 32, "Member=%d\n",PlayerInfo[playerid][pMember]);fwrite(hFile, var);
format(var, 32, "FMember=%d\n",PlayerInfo[playerid][pFMember]);fwrite(hFile, var);
format(var, 32, "Rank=%d\n",PlayerInfo[playerid][pRank]);fwrite(hFile, var);
format(var, 32, "Char=%d\n",PlayerInfo[playerid][pChar]);fwrite(hFile, var);
format(var, 32, "ContractTime=%d\n",PlayerInfo[playerid][pContractTime]);fwrite(hFile, var);
format(var, 32, "DetSkill=%d\n",PlayerInfo[playerid][pDetSkill]);fwrite(hFile, var);
format(var, 32, "SexSkill=%d\n",PlayerInfo[playerid][pSexSkill]);fwrite(hFile, var);
format(var, 32, "BoxSkill=%d\n",PlayerInfo[playerid][pBoxSkill]);fwrite(hFile, var);
format(var, 32, "LawSkill=%d\n",PlayerInfo[playerid][pLawSkill]);fwrite(hFile, var);
format(var, 32, "MechSkill=%d\n",PlayerInfo[playerid][pMechSkill]);fwrite(hFile, var);
format(var, 32, "JackSkill=%d\n",PlayerInfo[playerid][pJackSkill]);fwrite(hFile, var);
format(var, 32, "CarSkill=%d\n",PlayerInfo[playerid][pCarSkill]);fwrite(hFile, var);
format(var, 32, "NewsSkill=%d\n",PlayerInfo[playerid][pNewsSkill]);fwrite(hFile, var);
format(var, 32, "DrugsSkill=%d\n",PlayerInfo[playerid][pDrugsSkill]);fwrite(hFile, var);
format(var, 32, "CookSkill=%d\n",PlayerInfo[playerid][pCookSkill]);fwrite(hFile, var);
format(var, 32, "FishSkill=%d\n",PlayerInfo[playerid][pFishSkill]);fwrite(hFile, var);
format(var, 32, "pSHealth=%.1f\n",PlayerInfo[playerid][pSHealth]);fwrite(hFile, var);
GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);
format(var, 32, "pHealth=%.1f\n",PlayerInfo[playerid][pHealth]);fwrite(hFile, var);
format(var, 32, "Int=%d\n",PlayerInfo[playerid][pInt]);fwrite(hFile, var);
format(var, 32, "Local=%d\n",PlayerInfo[playerid][pLocal]);fwrite(hFile, var);
format(var, 32, "Perso=%d\n",PlayerInfo[playerid][pOwnPerso]);fwrite(hFile, var);
format(var, 32, "Team=%d\n",PlayerInfo[playerid][pTeam]);fwrite(hFile, var);
format(var, 32, "Model=%d\n",PlayerInfo[playerid][pModel]);fwrite(hFile, var);
format(var, 32, "PhoneNr=%d\n",PlayerInfo[playerid][pPnumber]);fwrite(hFile, var);
format(var, 32, "House=%d\n",PlayerInfo[playerid][pPhousekey]);fwrite(hFile, var);
format(var, 32, "Bizz=%d\n",PlayerInfo[playerid][pPbiskey]);fwrite(hFile, var);
if ((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
{
PlayerInfo[playerid][pPos_x] = 1684.9;
PlayerInfo[playerid][pPos_y] = -2244.5;
PlayerInfo[playerid][pPos_z] = 13.5;
}
if(Spectate[playerid] != 255)
{
PlayerInfo[playerid][pPos_x] = Unspec[playerid][sPx];
PlayerInfo[playerid][pPos_y] = Unspec[playerid][sPy];
PlayerInfo[playerid][pPos_z] = Unspec[playerid][sPz];
PlayerInfo[playerid][pInt] = Unspec[playerid][sPint];
PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal];
}
format(var, 32, "Pos_x=%.1f\n",PlayerInfo[playerid][pPos_x]);fwrite(hFile, var);
format(var, 32, "Pos_y=%.1f\n",PlayerInfo[playerid][pPos_y]);fwrite(hFile, var);
format(var, 32, "Pos_z=%.1f\n",PlayerInfo[playerid][pPos_z]);fwrite(hFile, var);
format(var, 32, "CarLic=%d\n",PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);
format(var, 32, "TruckLic=%d\n",PlayerInfo[playerid][pTruckLic]);fwrite(hFile, var);
format(var, 32, "BikeLic=%d\n",PlayerInfo[playerid][pBikeLic]);fwrite(hFile, var);
format(var, 32, "FlyLic=%d\n",PlayerInfo[playerid][pFlyLic]);fwrite(hFile, var);
format(var, 32, "BoatLic=%d\n",PlayerInfo[playerid][pBoatLic]);fwrite(hFile, var);
format(var, 32, "FishLic=%d\n",PlayerInfo[playerid][pFishLic]);fwrite(hFile, var);
format(var, 32, "GunLic=%d\n",PlayerInfo[playerid][pGunLic]);fwrite(hFile, var);
format(var, 32, "Gun1=%d\n",PlayerInfo[playerid][pGun1]);fwrite(hFile, var);
format(var, 32, "Gun2=%d\n",PlayerInfo[playerid][pGun2]);fwrite(hFile, var);
format(var, 32, "Gun3=%d\n",PlayerInfo[playerid][pGun3]);fwrite(hFile, var);
format(var, 32, "Gun4=%d\n",PlayerInfo[playerid][pGun4]);fwrite(hFile, var);
format(var, 32, "Ammo1=%d\n",PlayerInfo[playerid][pAmmo1]);fwrite(hFile, var);
format(var, 32, "Ammo2=%d\n",PlayerInfo[playerid][pAmmo2]);fwrite(hFile, var);
format(var, 32, "Ammo3=%d\n",PlayerInfo[playerid][pAmmo3]);fwrite(hFile, var);
format(var, 32, "Ammo4=%d\n",PlayerInfo[playerid][pAmmo4]);fwrite(hFile, var);
format(var, 32, "CarTime=%d\n",PlayerInfo[playerid][pCarTime]);fwrite(hFile, var);
format(var, 32, "PayDay=%d\n",PlayerInfo[playerid][pPayDay]);fwrite(hFile, var);
format(var, 32, "PayDayHad=%d\n",PlayerInfo[playerid][pPayDayHad]);fwrite(hFile, var);
format(var, 32, "CDPlayer=%d\n",PlayerInfo[playerid][pCDPlayer]);fwrite(hFile, var);
format(var, 32, "Wins=%d\n",PlayerInfo[playerid][pWins]);fwrite(hFile, var);
format(var, 32, "Loses=%d\n",PlayerInfo[playerid][pLoses]);fwrite(hFile, var);
format(var, 32, "AlcoholPerk=%d\n",PlayerInfo[playerid][pAlcoholPerk]);fwrite(hFile, var);
format(var, 32, "DrugPerk=%d\n",PlayerInfo[playerid][pDrugPerk]);fwrite(hFile, var);
format(var, 32, "MiserPerk=%d\n",PlayerInfo[playerid][pMiserPerk]);fwrite(hFile, var);
format(var, 32, "PainPerk=%d\n",PlayerInfo[playerid][pPainPerk]);fwrite(hFile, var);
format(var, 32, "TraderPerk=%d\n",PlayerInfo[playerid][pTraderPerk]);fwrite(hFile, var);
format(var, 32, "Tutorial=%d\n",PlayerInfo[playerid][pTut]);fwrite(hFile, var);
format(var, 32, "Mission=%d\n",PlayerInfo[playerid][pMissionNr]);fwrite(hFile, var);
format(var, 32, "Warnings=%d\n",PlayerInfo[playerid][pWarns]);fwrite(hFile, var);
format(var, 32, "Adjustable=%d\n",PlayerInfo[playerid][pAdjustable]);fwrite(hFile, var);
format(var, 32, "Fuel=%d\n",PlayerInfo[playerid][pFuel]);fwrite(hFile, var);
format(var, 32, "Married=%d\n",PlayerInfo[playerid][pMarried]);fwrite(hFile, var);
format(var, 32, "MarriedTo=%s\n",PlayerInfo[playerid][pMarriedTo]);fwrite(hFile, var);
fclose(hFile);
}
}
}
return 1;
}
4.)
Beim Register:
format(var, 32, "Schlüssel=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
zu:
format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
5.)
Bei OnPlayerDisconnect:
SavePlayer(playerid);
Wie sieht's dann aus?
Wie sieht dein RegisterPlayer und SavePlayer aus?
Dann wird es wohl leider so sein, dass du schon zu viele Objekte angezeigt bekommst.
Kannst dir ja mal per Timer das hier ausgeben lassen:
Streamer_GetVisibleItems(0);
Außer das Objekt mit CreateObject zu erstellen fällt mir leider nichts mehr ein, sorry.
Schreibe es mal so:
Achte auch darauf, dass ein Passwort in der Datei steht, wenn du dich einloggst.
Crocky: Du hast zwei mal
if (strcmp("/sup", cmdtext, true, 10) == 0)
Eins davon müsste doch sicher /closesup sein, oder?
Außerdem solltest du für solche langen Codes ein Thread aufmachen, das ist eigentlich keine "kleine Scripting Frage". ![]()
Dann weiß ich keine Möglichkeit mehr. Sind dann doch zu viele Objekte so wie es scheint.
Wenn du näher hin gehst siehst du es dann?
Hast du mal versucht die Wand mit CreateObject zu erstellen? Wenn es nur die eine Wand ist würde es ja nichts ausmachen.
Am Streamer selbst weiß ich keine Einstellung mehr, die das beheben könnte, tut mir Leid. Vielleicht weiß jemand anderes noch etwas.
Möglicherweise mit:
http://forum.sa-mp.com/showthread.php?t=102865
Streamer_SetVisibleItems(type, items);
type = 0
items = 800 (? oder mehr? mehr als 1000 bringt halt nichts)
Oder das eine Objekte mit CreateObject erstellen, aber das ist keine gute Lösung.
So wie das aussieht hast du zu viele Objekte in diesem Umkreis, sprich es werden nur die dir am nächsten Objekte gestreamt. Wenn du näher an die Wand hin läufst kommt sie, oder?
Wie viele Objekte hast du in diesem Bereich ca.?
Dann entferne die Objekte mal aus deinem Gamemode und nimm das hier als einzelnen Filterscript:
So habe ich es getestet, so geht es auch.
Also bei mir klappt es, wenn ich
for(new i;i<sizeof lspddecke;i++)
{
SetObjectMaterial(lspddecke[i], 0, 4981, "wiresetc2_las", "lasunion7", 0xFFFFFFFF);
}
nehme.
Vorher:
Nacher:
19377 bei SetObjectMaterial ist der falscher "materialindex" (2. Parameter).
Nimm da mal 0, 1 oder 2.
Du könntest das System ja kurz umschreiben, bei Saphire hat das geklappt mit dini dann. Er wollte sowieso dini verwenden, von daher war das genau passend.
dini ist zwar nicht das schnellste, aber um es wenigstens mal zum Laufen zu bringen tuts das.
Meinst du das bekommst du hin? Sollte nicht all zu lange dauern, ist ja nicht viel.
Siehe auch:
Nach jedem Login muss ich mich neu registrieren, aber warum ?
Laut Log wird alles korrekt gespeichert.
Möglicherweise musst du nur die Ansicht von NaviCat/phpMyAdmin/... aktualisieren, damit du die Daten siehst.
Wenn die Daten gespeichert werden, aber nicht geladen, dann poste den Log vom Laden.
GetPlayerSkin hat ja 0 zurück gegeben. Hattest du den Skin 0? Wenn nein, versuche mal das savePlayer(playerid) per Befehl aufzurufen, während der Spieler noch online ist, es kann sein, dass GetPlayerSkin bei OnPlayerDisconnect nicht mehr funktioniert.
Am sinnvollsten wäre es eine Area um die Flagge zu machen, eben eine ganz kleine.
Das geht mit dem Streamer Plugin ganz einfach.
http://forum.sa-mp.com/showthread.php?t=102865
Damit kannst du Areas erstellen. Abfragen, ob der Spieler eine Area betreten oder verlassen hat kannst du mit diesen zwei Callbacks:
public OnPlayerEnterDynamicArea(playerid, areaid);
public OnPlayerLeaveDynamicArea(playerid, areaid);
Beim betreten der Area kannst du dem Spieler die Flagge dann geben.
Eine andere Möglichkeit, allerdings nicht so elegant, wäre einen Checkpoint bzw ein Pickup an die Stelle der Flagge zu setzen.
PS:
Du musst nicht den ganzen Code nochmal dort hin setzen, du kannst einfach
OnPlayerCommandText(playerid, "/flagge");
schreiben. Das simuliert den Befehl dann.
Es bringt weder etwas das Textdraw vor dem GMX noch nach dem GMX anzuzeigen, da Textdraws beim Aufruf von GMX entfernt werden. ![]()
Wenn du direkt vor dem Neustart des Servers ein Textdraw anzeigen lassen willst, dann musst du den Server über die Konsole beenden, nachdem das Textdraw angezeigt wurde.
Oder jedem Spieler einen Dialog anzeigen, in dem die Informationen stehen.
Das geht mit dem Streamer Plugin ganz einfach.
http://forum.sa-mp.com/showthread.php?t=102865
Damit kannst du Areas erstellen. Abfragen, ob der Spieler eine Area betreten oder verlassen hat kannst du mit diesen zwei Callbacks:
public OnPlayerEnterDynamicArea(playerid, areaid);
public OnPlayerLeaveDynamicArea(playerid, areaid);
Du fügst es besser bei OnPlayerStateChange mit PLAYER_STATE_DRIVER ein.
Die VehicleID bekommst du dann mit GetPlayerVehicleID.
Dann sollte es klappen.
Wenn nicht, poste den Code nochmal, mit dem Teil wie du Engine abfragst.