Frank_Walker
Ученик
Доброго времени суток, уважаемые форумчане!
На многих серверах установлена система конопли/кустов, но не везде ее можно найти.
Недавно ковырялся в моде VC:RP, нашел систему конопли/кустов и решил вырезать, выложив его сюда!
Ну приступим...
На многих серверах установлена система конопли/кустов, но не везде ее можно найти.
Недавно ковырялся в моде VC:RP, нашел систему конопли/кустов и решил вырезать, выложив его сюда!
Ну приступим...
Открываем поиск(CTRL + F), находим pInfo. Нашли? Отлично!
Добавляем туда:
Код:
[COLOR="#000000"]pKust[/COLOR]
Код:
[COLOR="#000000"]
enum nInfo
{
nId,
Float:nX,
Float:nY,
Float:nZ,
nVoda,
nRost,
nModel,
nSor,
};
new NarkoInfo[MAX_KUST][nInfo];[/COLOR]
Код:
[COLOR="#000000"]
if(strcmp(cmd, "/датькуст", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new kusts;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, "Пиши: /датькуст [id/ЧастьИмени] [кол-во]");
return 1;
}
//giveplayerid = strval(tmp);
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, "Пиши: /датькуст [id/ЧастьИмени] [кол-во]");
return 1;
}
kusts = strval(tmp);
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(PlayerInfo[giveplayerid][pLocal] == 106)
{
SendClientMessage(playerid, COLOR_GREY, "Недопустимо в данной локации!");
return 1;
}
if (ProxDetectorS(5.0, playerid, giveplayerid))
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if (kusts > 0 && PlayerInfo[playerid][pKust] >= kusts)
{
PlayerInfo[giveplayerid][pKust] += kusts;
format(string, sizeof(string), "* %s достает пакетик с семенами и передает их %s.", sendername ,giveplayer);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
format(string, sizeof(string), " Вы передали %d кустов!", kusts);
SendClientMessage(playerid, COLOR_GREY, string);
format(string, sizeof(string), " Тебе передали %d кустов!", kusts);
SendClientMessage(giveplayerid, COLOR_GREY, string);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Вы указали неверное количество!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Вы слишком далеко!");
}
}//invalid id
}
else
{
format(string, sizeof(string), " %i неактивный игрок !", giveplayerid);
SendClientMessage(playerid, COLOR_GREY, string);
}
}
return 1;
}
if(strcmp(cmd, "/сорвать", true) == 0)
{
if(IsPlayerConnected(playerid))
{
for(new m = 0; m < NARKOKUST; m++ )
{
if (PlayerToPoint(3,playerid,NarkoInfo[m][nX],NarkoInfo[m][nY],NarkoInfo[m][nZ]))
{
NarkoInfo[m][nSor] = 1;
SendClientMessage(playerid, COLOR_WHITE, "Вы сорвали куст!");
if(NarkoInfo[m][nRost] >= 100)
{
PlayerInfo[playerid][pDrugs] += 50;
SendClientMessage(playerid, COLOR_WHITE, "Вы собрали 50 грамм наркотиков!");
}
SaveKust();
new sa = NarkoInfo[m][nId];
DestroyDynamicObject(NarkoKusts[sa]);
LoadKust();
PlayerInfo[playerid][pKust] += 1;
NARKOKUST -= 1;
SaveStuff();
}
}
}
return 1;
}
if(strcmp(cmd, "/полить", true) == 0)
{
if(IsPlayerConnected(playerid))
{
for(new m = 0; m < NARKOKUST; m++ )
{
if (PlayerToPoint(2,playerid,NarkoInfo[m][nX],NarkoInfo[m][nY],NarkoInfo[m][nZ]))
{
if(NarkoInfo[m][nVoda] > 50)
{
SendClientMessage(playerid, COLOR_WHITE, "Этот цветок уже поливали!");
return 1;
}
NarkoInfo[m][nVoda] = 100;
if(NarkoInfo[m][nRost] >= 100)
{
NarkoInfo[m][nModel] = 810;
SendClientMessage(playerid, COLOR_WHITE, "Вы полили цветок.");
SaveKust();
new sa = NarkoInfo[m][nId];
DestroyDynamicObject(NarkoKusts[sa]);
LoadKust();
return 1;
}
NarkoInfo[m][nModel] = 677;
SendClientMessage(playerid, COLOR_WHITE, "Вы посадили цветок.");
SaveKust();
new sa = NarkoInfo[m][nId];
DestroyDynamicObject(NarkoKusts[sa]);
LoadKust();
}
}
}
return 1;
}
if(strcmp(cmd, "/посадить", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pKust] < 1)
{
SendClientMessage(playerid, COLOR_WHITE, "У вас нет цветков !");
return 1;
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X,Y,Z);
NARKOKUST ++;
new NarkoID;
NarkoID = NARKOKUST-1;
NarkoInfo[NARKOKUST-1][nId] = NarkoID;
NarkoInfo[NARKOKUST-1][nX] = X;
NarkoInfo[NARKOKUST-1][nY] = Y;
NarkoInfo[NARKOKUST-1][nZ] = Z-1;
NarkoInfo[NARKOKUST-1][nVoda] = 100;
NarkoInfo[NARKOKUST-1][nRost] = 0;
NarkoInfo[NARKOKUST-1][nModel] = 677;
NarkoInfo[NARKOKUST-1][nSor] = 0;
SaveStuff();
SaveKust();
LoadKust();
format(string, sizeof(string), "* Вы посадили цветок.");
SendClientMessage(playerid, COLOR_GREY, string);
PlayerInfo[playerid][pKust] -= 1;
ClearAnimations(playerid);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
}
return 1;
}[/COLOR]
Далее мы добавляем в конец мода паблики:
Код:
[COLOR="#000000"]
public LoadKust()
{
new arrCoords[8][64];
new strFromFile2[256];
new File: file = fopen("Kust.cfg", io_read);
if (file)
{
new idx;
while (idx < NARKOKUST)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
NarkoInfo[idx][nId] = strval(arrCoords[0]);
NarkoInfo[idx][nX] = floatstr(arrCoords[1]);
NarkoInfo[idx][nY] = floatstr(arrCoords[2]);
NarkoInfo[idx][nZ] = floatstr(arrCoords[3]);
NarkoInfo[idx][nVoda] = strval(arrCoords[4]);
NarkoInfo[idx][nRost] = strval(arrCoords[5]);
NarkoInfo[idx][nModel] = strval(arrCoords[6]);
NarkoInfo[idx][nSor] = strval(arrCoords[7]);
if(NarkoInfo[idx][nSor] == 0)
{
new sa = NarkoInfo[idx][nId];
NarkoKusts[sa] = CreateDynamicObject(NarkoInfo[idx][nModel],NarkoInfo[idx][nX],NarkoInfo[idx][nY],NarkoInfo[idx][nZ],0,0,0);
}
idx++;
}
fclose(file);
}
return 1;
}
public VodaKust()
{
for(new ni = 0; ni != NARKOKUST; ni++)
{
NarkoInfo[ni][nVoda] -= 1;
if(NarkoInfo[ni][nVoda] < 1)
{
if(NarkoInfo[ni][nVoda] < -100)
{
NarkoInfo[ni][nSor] = 1;
SaveKust();
new sa = NarkoInfo[ni][nId];
DestroyDynamicObject(NarkoKusts[sa]);
LoadKust();
return 1;
}
NarkoInfo[ni][nModel] = 692;
SaveKust();
new sa = NarkoInfo[ni][nId];
DestroyDynamicObject(NarkoKusts[sa]);
LoadKust();
}
}
return 1;
}
public RostKust()
{
for(new ni = 0; ni != NARKOKUST; ni++)
{
NarkoInfo[ni][nRost] += 1;
if(NarkoInfo[ni][nRost] >= 100)
{
NarkoInfo[ni][nModel] = 810;
}
SaveKust();
new sa = NarkoInfo[ni][nId];
DestroyDynamicObject(NarkoKusts[sa]);
LoadKust();
}
return 1;
}
public SaveKust()
{
new idx;
new File: file2;
while (idx < NARKOKUST)
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d|%f|%f|%f|%d|%d|%d|%d\n",
NarkoInfo[idx][nId],
NarkoInfo[idx][nX],
NarkoInfo[idx][nY],
NarkoInfo[idx][nZ],
NarkoInfo[idx][nVoda],
NarkoInfo[idx][nRost],
NarkoInfo[idx][nModel],
NarkoInfo[idx][nSor]);
if(idx == 0)
{
file2 = fopen("Kust.cfg", io_write);
}
else
{
file2 = fopen("Kust.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}
public LoadNarko()
{
new arrCoords[1][64];
new strFromFile2[256];
new File: file = fopen("narko.cfg", io_read);
if (file)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
new narkos;
narkos = strval(arrCoords[0]);
NarkoGotovo = narkos;
}
}
public Advertising()
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
NarkoGotovo += 1;
VodaKust();
SaveKust();
LoadKust();
}
}
return 1;
}[/COLOR]
Код:
[COLOR="#000000"]forward LoadKust();
forward SaveKust();
forward LoadNarko();
forward VodaKust();
forward RostKust();
forward Advertising();[/COLOR]
Ищем public OnGameModeInit()
Добавим таймеры и пикап:
Код:
[COLOR="#000000"]SetTimer("Advertising",365000,1);
SetTimer("RostKust", 900000, 1);
narko10 = CreatePickup(1254,2, 1929.8159,-1089.3829,24.7380);[/COLOR]
Код:
[COLOR="#000000"]LoadNarko();
LoadKust();[/COLOR]
Код:
[COLOR="#000000"]if(pickupid == narko10)
{
if(PlayerInfo[playerid][pJob] == 19)
{
if(NarkoGotovo > 19)
{
PlayerInfo[playerid][pKust] += 2;
NarkoGotovo -= 20;
GivePlayerMoney(playerid, -1000);
SendClientMessage(playerid, COLOR_WHITE, "Вы купили цветок у диллера !");
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "У диллеров сейчас нет товара!");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Вы не нашли диллера!");
}
}[/COLOR]
Код:
[COLOR="#000000"]NARKOKUST = strval(arrCoords[13]);[/COLOR]
Код:
[COLOR="#000000"]format(coordsstring, sizeof(coordsstring), "%d|%d|%d|%d.", Jackpot,Tax,TaxValue,Security,NARKOKUST,OWNABLECARS);[/COLOR]
Код:
[COLOR="#000000"]PlayerInfo[playerid][pKust] = 0;[/COLOR]
Добавляем в public OnPlayerRegister(playerid, password[]):
Код:
[COLOR="#000000"]format(var, 64, "Kust=%d\n",PlayerInfo[playerid][pKust]);fwrite(hFile, var);[/COLOR]
Код:
[COLOR="#000000"]if( strcmp( key , "Kust" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKust] = strval( val ); }[/COLOR]
Код:
[COLOR="#008000"]new[/COLOR] NARKOKUST;
[COLOR="#008000"]new[/COLOR] NarkoGotovo;
[COLOR="#008000"]new[/COLOR] narko10;
[COLOR="#008000"]new[/COLOR] NarkoKusts[2000000];
Вот собственно и конец мануала!
Вырезано из мода VC:RP.
С вами был я, Frank_Walker, удачи!
Будут ошибки, помогу! :bf:
