Автор: St1muL
Суть скрипта:
Каждую(ые) %d минут(ы) на каждом кусте вырастает +1 грамм. Если забыли сорвать с куста, то он может перезреть и испортиться.
- Код
Code: Select all
/*
Автор: St1muL
Skype: mihan.45rus
*/
#include <a_samp>
#define MAX_KUST_GRAM 5 //Максимум грамм на кусте
#define MAX_KUST 7 //Максимальное число кустов
#define KEYKUST KEY_CROUCH // Кнопка для посадки/сбора
#define TimeGRAM 5 //Время добавления грамм (МИН)
forward KustUpdate();
enum Info
{
Float:Pos[3],
Gram,
Posad,
};
new K_Info[MAX_KUST][Info];
new Text3D: Kust3d[MAX_KUST];
new KustObject[MAX_KUST];
new Float:KustPos[MAX_KUST][3] =
{
{2467.9519,-1718.3346,13.4984},
{2468.8625,-1712.3462,13.4992},
{2462.8533,-1711.6302,13.5106},
{2461.9358,-1716.5924,13.5205},
{2456.7532,-1717.4873,13.5908},
{2455.2607,-1710.7610,13.6103},
{2451.0374,-1713.4070,13.6708}
};
public OnFilterScriptInit()
{
new string[214];
for(new ku; ku<MAX_KUST; ku++)
{
for(new i; i < 3; i++)
{
K_Info[ku][Pos][i] = KustPos[ku][i];
}
K_Info[ku][Gram] = 0;
K_Info[ku][Posad] = 1;
format(string,sizeof(string),"Куст {FFCB77}№%d\nСостояние: %d/%d грамм",ku,K_Info[ku][Gram],MAX_KUST_GRAM);
Kust3d[ku] = Create3DTextLabel(string,0x66ffaaFF, K_Info[ku][Pos][0], K_Info[ku][Pos][1], K_Info[ku][Pos][2], 20.0, 0, true);
KustObject[ku] = CreateObject(801,K_Info[ku][Pos][0], K_Info[ku][Pos][1], K_Info[ku][Pos][2]-1.0,0.0,0.0,0.0,100);
}
SetTimer("KustUpdate", TimeGRAM*60*1000, true);
return 1;
}
public KustUpdate()
{
for(new ku; ku<MAX_KUST; ku++)
{
new string[214];
switch(K_Info[ku][Gram])
{
case 0..MAX_KUST_GRAM-1:
{
K_Info[ku][Gram]++;
}
case MAX_KUST_GRAM:
{
K_Info[ku][Gram] = 0;
K_Info[ku][Posad] = 0;
DestroyObject(KustObject[ku]);
}
}
if(K_Info[ku][Gram] < MAX_KUST_GRAM) format(string,sizeof(string),"Куст {FFCB77}№%d\nСостояние: %d/%d грамм",ku,K_Info[ku][Gram],MAX_KUST_GRAM);
if(K_Info[ku][Gram] == MAX_KUST_GRAM) format(string,sizeof(string),"Куст {FFCB77}№%d\nСостояние: Семена созрели",ku);
if(K_Info[ku][Posad] == 0) format(string,sizeof(string),"Куст {FFCB77}№%d\nСостояние: Куст не посажен",ku);
Update3DTextLabelText(Kust3d[ku], 0x66ffaaFF,string);
}
}
public OnFilterScriptExit()
{
for(new ku; ku<MAX_KUST; ku++)
{
Delete3DTextLabel(Kust3d[ku]);
DestroyObject(KustObject[ku]);
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
new string[256];
if(newkeys == KEYKUST)
{
for(new ku; ku<MAX_KUST; ku++)
{
if(IsPlayerInRangeOfPoint(playerid,1,K_Info[ku][Pos][0], K_Info[ku][Pos][1], K_Info[ku][Pos][2]))
{
if(K_Info[ku][Posad] == 1)
{
K_Info[ku][Posad] = 0;
format(string,sizeof(string),"Вы сорвали с куста {FFCB77}№%d %d грамм{66ffaa}.",ku,K_Info[ku][Gram]);
SendClientMessage(playerid, 0x66ffaaAA, string);
format(string,sizeof(string),"Куст {FFCB77}№%d\nСостояние: Куст не посажен",ku);
Update3DTextLabelText(Kust3d[ku], 0x66ffaaFF,string);
format(string,sizeof(string), "%s собирает дурман-траву",GN(playerid));
DestroyObject(KustObject[ku]);
}
else
{
K_Info[ku][Posad] = 1;
format(string,sizeof(string),"Куст {FFCB77}№%d\nСостояние: %d/%d грамм",ku,K_Info[ku][Gram],MAX_KUST_GRAM);
Update3DTextLabelText(Kust3d[ku], 0x66ffaaFF,string);
format(string,sizeof(string), "%s садит дурман-траву",GN(playerid));
KustObject[ku] = CreateObject(801,K_Info[ku][Pos][0], K_Info[ku][Pos][1], K_Info[ku][Pos][2]-1.0,0.0,0.0,0.0,100);
}
ApplyAnimation(playerid, "COP_AMBIENT", "null", 0.0 ,0, 0, 0, 0, 0);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
SetPlayerChatBubble(playerid,string,0xC2A2DAAA,20.0,5*1000);
K_Info[ku][Gram] = 0;
}
}
}
return 1;
}
stock GN(playerid)
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof pName);
return pName;
}