Beiträge von mari0_DE


    Vorwort:


    Ich habe mir mal etwas Überlegt mit dem man das normale Abspeichern von Daten in .ini oder sonst irgendwelchen Datentypen zu erleichtern.
    Dabei ist etwas entstanden das sehr hilfreich ist und genauso schnell auf dem Server ist wie die Herkömmliche variante die zum Beispiel im GF verwendet wird.


    Die Funktionen:

    • Funktionen bei 0.2:

      native PwWrong(file[],Key[],&savepasswort[],passwort[]);//key = Key1
      native ClosePw();
      native ReadFilePw();
      native ..
      native WriteFile(file[]);
      native StopWrite();
      native ReadFile(file[]);
      native StopRead();
      native ..
      native Save(Key[],params);//key = Key2
      native SaveInt(Key[],initger);//key = Key1
      native SaveFloat(Key[],Float);//key = Key1
      native SaveString(Key[],string[]);//key = Key1
      native ..
      native LoadInt(Key[],&Int);//key = Key1
      native LoadFloat(Key[],&Float);//key = Key1
      native LoadString(Key[],&String[]);//key = Key1

      file[] = Fileadresse die man Öffnen will zB: "user/USERNAME.ini"
      Key1 = wie bei dini auch der Key zB: "Geld"
      Key2 = wie bei dem Herkömmlichen GF Speichersystem zB: "Geld=%d\n" oder "Passwort=%s\n" oder "Spawnx=%.1f\n"
      params[] = die variable die man einspeichern will.(aber immer mit der richtigen Key2 verwenden!!)
      &savepasswort[] = die variable in der man das Userpasswort speichern will.
      passwort[] = die variable die der User eingegeben hat um sich Einzuloggen.



    Anwendung Beispiele:

    • Beispiel Für OnPlayerLogin(playerid,password[]):
      Spoiler anzeigen

      public OnPlayerLogin(playerid,passwort[])
      {
      new file[60];
      format(file,60,"23.ini");
      PwWrong(file,"PW",PlayerInfo[playerid][pPasswort],passwort);
      {
      Kick(playerid);
      return 1;
      }
      ClosePw();
      ReadFile(file);
      {
      key = ini_GetKey(Data);//<------Wichtig!! (bei 0.3 KKKEEEYYY = ini_GetKey(DDDAAATTTAAA);)
      LoadString("PW",PlayerInfo[playerid][pPasswort]);
      LoadFloat("Spawnx",PlayerInfo[playerid][pSpawnx]);
      LoadInt("Level",PlayerInfo[playerid][pLevel]);
      }
      StopRead();
      return 1;
      }
      //zweite art:
      public OnPlayerLogin(playerid,passwort[])
      {
      new file[60];
      format(file,60,"23.ini");
      PwWrong(file,"PW",PlayerInfo[playerid][pPasswort],passwort);
      {
      Kick(playerid);
      return 1;
      }
      WriteFilePw();//<-------Wichtig
      {
      key = ini_GetKey(Data);//<------Wichtig!! (bei 0.3 KKKEEEYYY = ini_GetKey(DDDAAATTTAAA);)
      LoadString("PW",PlayerInfo[playerid][pPasswort]);
      LoadFloat("Spawnx",PlayerInfo[playerid][pSpawnx]);
      LoadInt("Level",PlayerInfo[playerid][pLevel]);
      }
      StopRead();
      return 1;
      }


    • Beispiel Für OnPlayerRegister(playerid,password[])oder auch PlayerUpdate(playerid):
      Spoiler anzeigen

      public PlayerUpdate(playerid)
      {
      new file[60];
      format(file,60,"23.ini");
      WriteFile(file);
      {
      SaveString("PW",PlayerInfo[playerid][pPasswort]);
      SaveFloat("Spawnx",PlayerInfo[playerid][pSpawnx]);
      SaveInt("Level",PlayerInfo[playerid][pLevel]);
      // oder:
      Save("PW=%s\n",PlayerInfo[playerid][pPasswort]);
      Save("Spawnx=%.1f\n",PlayerInfo[playerid][pSpawnx]);
      Save("Level=%d",PlayerInfo[playerid][pLevel]);
      //oder auch mixen ist egal
      }
      StopWrite();
      return 1;
      }



      Bitte beachtet das man nicht OnPlayerUpdate benutzt um Acc's zu Speichern!!
      Hier ein Post dazu: Godfather - onplayerupdate - massiv Performance steigern! unbedingt LESEN !



    easy_ini hat folgende vorteile:

    • easy_ini ist genauso schnell in der Ausführung wie das herkömmliche(GF) Speichern in ini
    • esay_ini ist einfach und schnell Einsetzbar.
    • esay_ini ist vielseitig nutzbar.


    easy_ini hat folgende nachteile: man hat die gleichen nachteile wie bei einem herkömlichen Speicher system(bei GF)

    • Man muss immer alle gleichzeitig einspeichern


    Changelog:


    Download:
    0.2:

    http://pastebin.com/nhz8JXke
    0.3 beta:


    Fragen Anregungen?? bitte per PN an mich.

    Das Hier:
    if(GetPlayerMoney(playerid) < CarDealershipInfo[d][cdVehicleCost][v])
    {
    SendClientMessage(playerid, COLOR_GRAD1, "ERROR: You don't have enough money to buy this.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }


    Mit:


    if(PlayerMoney[playerid]< CarDealershipInfo[d][cdVehicleCost][v])//Preis= das was du ihm abziehn willst
    {
    SendClientMessage(playerid, COLOR_GRAD1, "ERROR: You don't have enough money to buy this.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }


    Austauschen


    Und das:

    GivePlayerMoney(playerid, -CarDealershipInfo[d][cdVehicleCost][v]);


    MIt:

    GetsMoney[playerid] = 1;
    PlayerMoney[playerid] -= CarDealershipInfo[d][cdVehicleCost][v];//Preis= das was du ihm abziehn willst





    Also alles zusammen:
    else if(dialogid == DIALOG_CDBUY)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new v = GetCarDealershipVehicleId(vehicleid);
    new d = GetCarDealershipId(vehicleid);
    if(response)
    {
    if(PlayerMoney[playerid]< CarDealershipInfo[d][cdVehicleCost][v])//Preis= das was du ihm abziehn willst
    {
    SendClientMessage(playerid, COLOR_GRAD1, "ERROR: You don't have enough money to buy this.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    new playervehicleid = GetPlayerFreeVehicleId(playerid);
    if(playervehicleid == -1) return SendClientMessage(playerid, COLOR_GREY, "ERROR: You can't have more cars.");
    new randcolor1 = Random(0, 126);
    new randcolor2 = Random(0, 126);
    new car = CreatePlayerVehicle(playerid, playervehicleid, CarDealershipInfo[d][cdVehicleModel][v], CarDealershipInfo[d][cdVehicleSpawn][0], CarDealershipInfo[d][cdVehicleSpawn][1], CarDealershipInfo[d][cdVehicleSpawn][2], CarDealershipInfo[d][cdVehicleSpawn][3], randcolor1, randcolor2);
    if(car == INVALID_PLAYER_VEHICLE_ID)
    {
    SendClientMessage(playerid, COLOR_GREY, "ERROR: Something went wrong and the car didn't get created.");
    }
    else
    {
    format(string, sizeof(string), " Thank you for buying at %s.", CarDealershipInfo[d][cdMessage]);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    GetsMoney[playerid] = 1;
    PlayerMoney[playerid] -= CarDealershipInfo[d][cdVehicleCost][v];//Preis= das was du ihm abziehn willst
    CarDealershipInfo[d][cdTill] += ( CarDealershipInfo[d][cdVehicleCost][v] * 40 ) / ( 100 );
    PutPlayerInVehicle(playerid, car, 0);
    SavecDealership(editingcd[playerid]);
    }
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }















    Gute Nacht zusammen xD :sleeping:


    Edit jetzt müsste es gehen!!!!!!!!!!!!!!!!!!
    und jetzt gehe ich :sleeping::sleeping::sleeping::sleeping:


    das musst du in dein quell text einbauen da wo du GivePlayerMoney(playerid, -dein preis halt);



    Zitat

    ne wir brauchen dein OnPlayerDIalog ode rso ka bin müde du weis was ich mein??

    GetsMoney[playerid] = 1; PlayerMoney[playerid] = PlayerMoney[playerid] -= costlevel;


    damit zeihst du dein Geld ab
    mit
    GetsMoney[playerid] = 1 sagt man dem script ob der spieler jetzt geld bekommt/abgezogen bekommt
    mit PlayerMoney[playerid] -= Preis kannst du dem spieler dann Preis abzeihen
    mit PlayerMoney[playerid] += guthaben kannst du dem spieler dann guthaben Geben



    if(PlayerMoney[playerid]<Preis)//Preis= das was du ihm abziehn willst
    {
    SendClientMessage(playerid,color,"du hast nicht genug Geld"
    }
    else
    {
    GetsMoney[playerid] = 1;
    PlayerMoney[playerid] -= Preis;//Preis= das was du ihm abziehn willst
    }


    wenn du ihm Geld geben wilst:

    GetsMoney[playerid] = 1;
    PlayerMoney[playerid] += Geld;//Geld = das was du ihm Geben willst



    ne wir brauchen dein OnPlayerDIalog ode rso ka bin müde du weis was ich mein??

    GetsMoney[playerid] = 1; PlayerMoney[playerid] = PlayerMoney[playerid] -= costlevel;


    damit zeihst du dein Geld ab
    mit
    GetsMoney[playerid] = 1 sagt man dem script ob der spieler jetzt geld bekommt/abgezogen bekommt
    mit PlayerMoney[playerid] -= Preis kannst du dem spieler dann Preis abzeihen
    mit PlayerMoney[playerid] += guthaben kannst du dem spieler dann guthaben Geben