Bun sa incepem!
Incepem punand pCigarettes la enum pInfo, daca nu il aveti puneti asa:
Code: [Select]
enum pInfo
{
pCigarettes,
};
new PlayerInfo[MAX_PLAYERS][pInfo];
Dar sunt sigur ca il aveti!
Dupa ne ducem la public OnPlayerConnect
Si punem la PlayerInfo
Code: [Select]
PlayerInfo[playerid][pCigarettes] = 0;
Acum ne ducem la public OnPlayerDisconnect si punem
Code: [Select]
if(IsSmoking[playerid] > 0)
{
if(IsSmoking[playerid] == 1)
{
new sendername[MAX_PLAYER_NAME];
new string[256];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pSex] == 1) { format(string, sizeof(string), "* %s finishes his cigarette.", sendername); }
else { format(string, sizeof(string), "* %s finishes her cigarette.", sendername); }
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
new Float:PlayerHealth;
GetPlayerHealth(playerid, PlayerHealth);
SetPlayerHealth(playerid, PlayerHealth+7);
ClearAnimations(playerid);
}
}
Pentru ca aceasta functie sa mearga!Punem la new...; new IsSmoking[MAX_PLAYERS];
Acum dam CTRL+F si cautam Fishes[playerid][pFishID] = 0; si adaugam IsSmoking[playerid] = 0;
Cam asa:
Code: [Select]
Fishes[playerid][pFishID] = 0; IsSmoking[playerid] = 0;
Mergem la new si adaugam new cig = PlayerInfo[targetid][pCigarettes];
Daca vreti sa va apara si la /stats tigarile pe care le aveti faceti asa:
CTRL+F si cautati Level:[%d](ca sa va fie mai usor de gasit)si dupa ultima adaugam Cigarettes:[%d]
Sa fie cam asa:
Code: [Select]
format(coordsstring, sizeof(coordsstring), "Level:[%d] Sex:[%s] Age:[%d] Origin:[%s] SpawnHealth:[%.1f] Cash:[$%d] Bank:[$%d] Ph:[%d] Cigarettes:[%d]", level,atext,age,otext,shealth+50, cash, account, pnumber, cig);
Acum mergem la public OnPlayerRegister
si inainte de fclose(hFile);(inainte cu o linie facem una noua) scriem:
Code: [Select]
format(var, 32, "Cigarettes=%d\n",PlayerInfo[playerid][pCigarettes]);fwrite(hFile, var);
Acum mergem la public OnPlayerUpdate si facem la fel ca la OnPlayerRegister!
Acum mergem la public OnPlayerLogin si punem asta:
Code: [Select]
if( strcmp( key , "Cigarettes" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCigarettes] = strval( val ); }
dar sa fie inainte de fclose adik inca intre parantezele{ }
Bun acum sa facem comenzile!
mergem sa zicem inainte la /healall si bagam asta:
Code: [Select]
if(!strcmp(cmdtext, "/dropcigar", true)) // By Roach
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " You need to login first !");
return 1;
}
if(IsSmoking[playerid] > 0)
{
IsSmoking[playerid] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pSex] == 1) { format(string, sizeof(string), "* %s takes a cigarette from his mouth and drops it on the ground.", sendername); }
else { format(string, sizeof(string), "* %s takes a cigarette from her mouth and drops it on the ground.", sendername); }
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
ClearAnimations(playerid);
}
else
{
SendClientMessage(playerid, COLOR_GREY, " You are not even smoking ! ");
return 1;
}
}
return 1;
}
if(!strcmp(cmdtext, "/smokecigar", true)) // By Roach
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " You need to login first !");
return 1;
}
if(IsSmoking[playerid] == 0)
{
if(PlayerInfo[playerid][pCigarettes] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " You don't have a cigarette to smoke ! ");
return 1;
}
new randsmoke = random(2)+1;
if(randsmoke == 1)
{
PlayerInfo[playerid][pCigarettes] -= 1;
IsSmoking[playerid] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pSex] == 1) { format(string, sizeof(string), "* %s takes out his lighter and cigarette and lights it up.", sendername); }
else { format(string, sizeof(string), "* %s takes out her lighter and cigarette and lights it up.", sendername); }
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_SMOKE_CIGGY); // this will give player a cigar
SendClientMessage(playerid, COLOR_WHITE, "TIP: Poti da /dropcigar ca sa arunci tigara si apesi tasta F sau ENTER.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " You are already smoking ! ");
return 1;
}
}
return 1;
}
Acum facem in asa fel incat sa cumparam tigarile!
mergem la /buysi dupa ultima chestie du cumparat ex:12.Frozzen Pizza.
punem 13.Cigarettes.
Acum sa facem asa:
Code: [Select]
else if (item == numarul itemului(adica 13 sa zicem) && GetPlayerCash(playerid) > 30)
{
if(PlayerInfo[playerid][pCigarettes] >= 30)
{
SendClientMessage(playerid, COLOR_GREY, " You have to many Cigarettes, smoke it !");
return 1;
}
if(PlayerInfo[playerid][pTraderPerk] > 0)
{
new skill = 30 / 10;
new price = (skill)*(PlayerInfo[playerid][pTraderPerk]);
new payout = 10 - price;
GivePlayerCash(playerid, - payout);
format(string, sizeof(string), "~r~-$%d", payout);
GameTextForPlayer(playerid, string, 5000, 1);
}
else
{
GivePlayerCash(playerid, - 30);
format(string, sizeof(string), "~r~-$%d", 10);
GameTextForPlayer(playerid, string, 5000, 1);
}
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
format(string, sizeof(string), "Cigarettes purchased.");
SendClientMessage(playerid, COLOR_GRAD4, string);
PlayerInfo[playerid][pCigarettes] += 10;
return 1;
}
A da si asta:
Code: [Select]
else
{
SendClientMessage(playerid, COLOR_WHITE, " You don't have the cash for that !");
}

Sursa: http://www.sa-mp.ro/forum/index.php/topic,6404.0.html