Дмитрий |
Дата: Воскресенье, 18.11.2012, 00:28 | Сообщение # 1 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
| Доброго времени суток, уважаемые форумчане! На многих серверах установлена система конопли/кустов, но не везде ее можно найти. Недавно ковырялся в моде VC:RP, нашел систему конопли/кустов и решил вырезать, выложив его сюда! Ну приступим...
Открываем поиск(CTRL + F), находим pInfo. Нашли? Отлично! Добавляем туда:
Далее.. Перед pInfo добавляем систему: Code enum nInfo { nId, Float:nX, Float:nY, Float:nZ, nVoda, nRost, nModel, nSor, }; new NarkoInfo[MAX_KUST][nInfo];
Добавили? Хорошо.. Идем дальше!.. Code 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; }
Команды мы записали.. Далее мы добавляем в конец мода паблики: Code 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; }
Ко всем forward's добавляем: Code forward LoadKust(); forward SaveKust(); forward LoadNarko(); forward VodaKust(); forward RostKust(); forward Advertising();
Форварды мы добавили.. Ищем public OnGameModeInit()
Добавим таймеры и пикап: Code SetTimer("Advertising",365000,1); SetTimer("RostKust", 900000, 1); narko10 = CreatePickup(1254,2, 1929.8159,-1089.3829,24.7380);
Чуть ниже добавляем: Code LoadNarko(); LoadKust();
Ищем public OnPlayerPickUpPickup(playerid, pickupid) и добавляем: Code 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, "Вы не нашли диллера!"); } }
Находим public LoadStuff() и добавляем: Code NARKOKUST = strval(arrCoords[13]);
И в public SaveStuff() добавляем: Code format(coordsstring, sizeof(coordsstring), "%d|%d|%d|%d.", Jackpot,Tax,TaxValue,Security,NARKOKUST,OWNABLECARS);
Находим public OnPlayerConnect(playerid) и добавляем туда: Code PlayerInfo[playerid][pKust] = 0;
Осталось лишь сделать сохранение и загрузку кустов.
Добавляем в public OnPlayerRegister(playerid, password[]): Code format(var, 64, "Kust=%d\n",PlayerInfo[playerid][pKust]);fwrite(hFile, var);
Дальше ищем public OnPlayerLogin(playerid,password[]) и добавляем: Code if( strcmp( key , "Kust" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKust] = strval( val ); }
И последний штрих, добавляем ко всем new: Code new NARKOKUST; new NarkoGotovo; new narko10; new NarkoKusts[2000000];
[admin]Вот собственно и конец мануала! Вырезано из мода VC:RP. С вами был я, Frank_Walker, удачи! [/admin]
From Russia With Love!
|
|
|
|