Salutari tuturor pasionatilor de scripting.
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.
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.