Jump to content

[Tutoral/SA:MP] Creare depozit


Recommended Posts

Posted

Salutari tuturor pasionatilor de scripting. :D

 

Tutorialul consta in crearea propriului depozit la: -casa;

                                                                             -factiune;

                                                                             -banca.

 

Eu am folosit DINI + ZCMD(m-am invatat cu ele),sigur o sa ma criticati(poate unii)ca de ce nu ai folosit YNI,insfarsit.

 

Pasul 1 ==> reprezinta crearea unei enumeratoare care vor fi de folos salvarii intrucat incarcarii + variabilelor.

 

enum PlayerData

{

   pDeposit

}

new playerD[MAX_PLAYERS][PlayerData];

 

Pasul 2 ==> reprezinta incarcarea si salvarea fisierului unde va fi destinat depozitul unui jucator.

 

Inseram un stock.

 

stock loadPlayer(playerid)
{
   new files[128];
   format(files,sizeof(files),"/DepositPlayer/%s.txt",getPlayerName(playerid));
   playerD[playerid][pDeposit] = dini_Int(files,"Deposit");
   return 1;
}
 
stock savePlayer(playerid)
{
   new filess[128];
   format(filess,sizeof(filess),"/DepositPlayer/%s.txt",getPlayerName(playerid));
   dini_IntSet(filess, "Deposit", playerD[playerid][pDeposit]);
   return 1;
}
 
Gata si cu stockurile.
 
Pasul 3 ==> reprezinta implementarea stockurilor in 2 publicuri.
 
1.
public OnGameModeInit()
{
    for(new i=0;i<MAX_PLAYERS;i++)
    {
       loadPlayer(i);
    }
   return 1;
}
 
2.
public OnPlayerDisconnect(playerid)
{
   savePlayer(playerid);
   return 1;
}
 
Pasul 4 ==> reprezinta crearea folderului la conectarea jucatorului pe server.
 
public OnPlayerConnect(playerid)
{
   new file[128];
   format(file,sizeof(file),"/DepositPlayer/%s.txt",getPlayerName(playerid));
   if(dini_Exists(file))
   {
      dini_Create(file(playerid));
      dini_IntSet(file(playerid),"Deposit",0);
   }
   return 1;
}
 
Pasul 5 ==> reprezinta stockul de "getPlayerName" pe care la-ti vazut voi pana la acest pas.
 
stock getPlayerName(playerid)
{
   new name[MAX_PLAYER_NAME];
   GetPlayerName(playerid,name,sizeof(name));
   return name;
}
 
Pasul 6 ==> reprezinta o comanda la care veti afla cati bani aveti in depozit.
 
CMD:deposit(playerid, params[])
{
     new string[128];
     format(string,128,"Salut,in depozit ai %d$.",playerD[playerid][pDeposit]);
     SendClientMessage(playerid,-1,string);
     return 1;
}
 
Pasul 7 ==> reprezinta o alta comanda la care veti putea scoate bani din depozit.
 
CMD:withdraw(playerid, params[])
{
   new cash;
   if(sscanf(params,"i",cash)) return SendClientMessage(playerid,-1,"Foloseste: /withdraw <Suma>.");
   if(playerD[playerid][pDeposit] >= cash)
   {
       new string[128];
       format(string,128,"Felicitari,ai scos %d$ din depozit.",cash);
       SendClientMessage(playerid,-1,string);
       playerD[playerid][pDeposit] -= cash;
   }
   else
   {
        new string[128];
        format(string,128,"Insuficienti bani in depozit.Depozit curent %i$",playerD[playerid][pDeposit]);
        SendClientMessage(playerid,-1,string);
   }
   return 1;
}
 
Pasul 8 ==> reprezinta ultima comanda,adica cea de baga bani in depozit.
 
CMD:addcash(playerid, params[])
{
   new cash;
   if(sscanf(params,"i",cash)) return SendClientMessage(playerid,-1,"Foloseste: /addcash <Suma>.");
   if(GetPlayerMoney(playerid) >= cash)
   {
      new string[128];
      format(string,128,"Felicitari,ai bagat %i$ in depozit.",cash);
      SendClientMessage(playerid,-1,string);
   }
   else
   {
      SendClientMessage(playerid,-1,"Insuficienti bani pentru a baga in depozit.");
   }
   return 1;
}
 
Pasul 9 ==> reprezinta sfarsitul cu urmatorul mesaj.
 
Sper ca am fost de folos cu acest tutorial,comenzile se pot schimba  in orice doriti,la fel si mesajele.
Succes.
 
Tutorial realizat de HonciucGabriel!
 
 
 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...