Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Работа вора-домушника

Статус
В этой теме нельзя размещать новые ответы.

Lester

Специалист
В этом уроке я расскажу, как сделать работу вора-домушника для сервера, со взломом двери. Урок работы уже был, только я переделал его под себя и выкладываю сюда. Некоторые команды взяты из мода Country Roleplay.
1. Взлом двери.
Добавляем в public OnPlayerCommandText
PHP:
if(strcmp(cmd, "/door", true) == 0)
	{
        if(PlayerInfo[playerid][pJob] == 10) // Проверка на работу. ID работы вора - 10. Можете поменять на свой ID.
	    {
            for(new i = 0; i < sizeof(HouseInfo); i++)
	        {
				if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
				{
				    switch(random(6)) 
					{
					case 0..4:
						{
	                        SendClientMessage(playerid, COLOR_GREY, " Вам не удалось вскрыть дверь");
						}
					case 5:
						{
	                        PlayerEnterHouse(playerid,i); GameTextForPlayer(playerid, "~w~Door ~g~Open", 5000, 1);
							GetPlayerName(playerid, sendername, sizeof(sendername));
				    		format(string, sizeof(string), "* %s вскрыл дверь дома", sendername);
   							ProxDetector(15.0,playerid,string,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS); // Цвет можете поменять на свой
				    		SendClientMessage(playerid, COLOR_GREEN, " Вы вскрыли дверь дома!");
				   		    HouseInfo[i][hLock] = 0; // Дверь открылась
						}
					}
					return 1;
				}
			}
		}
		else
		{
		   SendClientMessage(playerid, COLOR_GREY, "ИНФО: Вы не вор!");
		}
	}
2. Выносим вещи из дома.
Добавляем ко всем new:
PHP:
new HouseRob[MAX_PLAYERS];
new HouseRob2[MAX_PLAYERS];
new HouseRob3[MAX_PLAYERS];
Затем добавляем команду кражи вещей в public OnPlayerCommandText:
PHP:
if(strcmp(cmd,"/houserob",true)==0)
	{
		for(new h = 0; h < sizeof(HouseInfo); h++)
    	{
			if(PlayerInfo[playerid][pJob] == 10) // Проверка на работу вора
			{
                if(HouseRob3[playerid] ==1) return SendClientMessage(playerid, COLOR_GREY, " Вы уже взяли вещь"); // Если игрок уже взял вещь
			    if(HouseRob[playerid] !=0) return SendClientMessage(playerid, COLOR_GREY, " Вы уже грабили дом в этом часу");
    			if(IsPlayerInRangeOfPoint(playerid,10,HouseInfo[h][hExitx], HouseInfo[h][hExity], HouseInfo[h][hExitz])) // Надо быть внутри дома
				{
				    switch(random(4))
					{
					case 0:
						{
	                        SendClientMessage(playerid, COLOR_GREEN, "Вы украли видеомагнитофон, погрузите награбленное в воровской грузовик: /loadrob"); 
							SetPlayerAttachedObject(playerid,1,1783,1,0.11,0.36,0.0,0.0,90.0); // Видеомагнитофон
							ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
							SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
							GetPlayerName(playerid, sendername, sizeof(sendername));
							HouseInfo[h][hTakings] -=150; // Деньги, которые были в доме - отнимаются
							SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
						}
					case 1:
						{
	                        SendClientMessage(playerid, COLOR_GREEN, "Вы украли телевизор, погрузите награбленное в воровской грузовик: /loadrob");
							SetPlayerAttachedObject(playerid,1,2648,1,0.11,0.36,0.0,0.0,90.0); // Теливизор
							ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
							SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
							GetPlayerName(playerid, sendername, sizeof(sendername));
							HouseInfo[h][hTakings] -=200;
							SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
						}
                    case 2:
						{
       						SendClientMessage(playerid, COLOR_GREEN, "Вы украли магнитофон, погрузите награбленное в воровской грузовик: /loadrob");
							SetPlayerAttachedObject(playerid,1,2102,1,0.11,0.36,0.0,0.0,90.0); // Магнитофон
							ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
							SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
							GetPlayerName(playerid, sendername, sizeof(sendername));
							HouseInfo[h][hTakings] -=50;
							SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
						}
					case 3:
						{
       						SendClientMessage(playerid, COLOR_GREEN, "Вы украли игровую приставку, погрузите награбленное в воровской грузовик: /loadrob");
							SetPlayerAttachedObject(playerid,1,2028,1,0.11,0.36,0.0,0.0,90.0); // Приставка
							ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
							SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
							GetPlayerName(playerid, sendername, sizeof(sendername));
							HouseInfo[h][hTakings] -=100;
							SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
						}
					}
					HouseRob3[playerid] = 1;
					HouseRob2[playerid] = 1;
					return 1;
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
			}
		}
		return 1;
	}
3. Погружаем награбленное в грузовик.
В pInfo добавляем: pRob. Это будет счетчиком награбленных вещей.
В stock OnPlayerRegister добавляем:
PHP:
format(var, 64, "Rob=%d\n",PlayerInfo[playerid][pRob]);fwrite(hFile, var);
В stock OnPlayerStatsUpdate добавляем:
PHP:
format(var, 32, "Rob=%d\n",PlayerInfo[playerid][pRob]);fwrite(hFile, var);
А в stock OnPlayerLogin добавляем:
PHP:
if( strcmp( key , "Rob" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pRob] = strval( val ); }
А теперь добавляем команду погрузки награбленного в public OnPlayerCommandText:
PHP:
if(strcmp(cmd, "/loadrob", true) == 0)
	{
       for(new i = 0; i < MAX_VEHICLES; i++)
       {
			if(PlayerInfo[playerid][pJob] == 10)
	        {
			   new Float:pos[3]; GetVehiclePos(i,pos[0],pos[1],pos[2]);
			   if(IsPlayerInRangeOfPoint(playerid,4,pos[0],pos[1],pos[2]))
			   {
			      if(GetVehicleModel(i) == 498) // Boxville - воровской грузовик, вы можете сменить ID
			      {
			      if(HouseRob2[playerid] !=1)  return SendClientMessage(playerid, COLOR_GREY, " Вы ничего не украли!");
			      if(PlayerInfo[playerid][pRob] == 10) return SendClientMessage(playerid, COLOR_GREY, " В грузовик больше не вмещаются краденные вещи!"); // Если уже в грузовике 10 предметов
			      PlayerInfo[playerid][pRob] += 1;
   			      RemovePlayerAttachedObject(playerid, 1); // Удаляем объект
				  ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
				  HouseRob3[playerid] = 0;
				  HouseRob2[playerid] = 0;
	        	  SendClientMessage(playerid, COLOR_GREEN, " Вы загрузили награбленное в грузовик.");
	        	  SendClientMessage(playerid, COLOR_GREY, " Выкрадите ещё что-нибудь из дома или везите грузовик на место сбыта краденого: /sellrob");
	              return 1;
	              }
			      else
				  {
			  		  SendClientMessage(playerid, COLOR_GREY, " ИНФО: Рядом нет воровского грузовика");
			          return 1;
			      }
	   		   }
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
			}
	   }
       return 1;
	}
4. Продаем награбленное.
PHP:
if(strcmp(cmd,"/sellrob",true)==0)
	{
	    for(new h = 0; h < sizeof(HouseInfo); h++)
    	{
			new tmpcar = GetPlayerVehicleID(playerid);
			if(PlayerInfo[playerid][pJob] == 10)
			{
				if(!IsPlayerInRangeOfPoint(playerid,10,365.29998779,-88.19999695,1.00000000)) return SendClientMessage(playerid, COLOR_GREY, " Вы не на месте сбыта краденого!"); // Смените координаты на свои.
				if(PlayerInfo[playerid][pRob] != 0) // Если у игрока есть краденная техника
					{
						GivePlayerMoney(playerid,PlayerInfo[playerid][pRob]*50); // По умолчанию за краденную вещь дают 50 баксов, вы можете сменить
						format(string,sizeof(string)," ИНФО: Вы заработали %d$ за украденные вещи",PlayerInfo[playerid][pRob]*50); // Тут тоже
						SendClientMessage(playerid,COLOR_WHITE,string);
						DisablePlayerCheckpoint(playerid); PlayerInfo[playerid][pRob] = 0;
						HouseRob2[playerid] = 0;
						HouseRob3[playerid] = 0;
						return 1;
					}
				else return SendClientMessage(playerid,COLOR_WHITE," Вы ничего не украли!");
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
			}
		}
		return 1;
	}
5. Если хотите, чтобы игрок ронял вещи, то добавьте в public OnPlayerKeyStateChange:
PHP:
if(newkeys & KEY_SPRINT && newkeys & KEY_JUMP)
	{
		if(HouseRob2[playerid] == 1)
		{
			RemovePlayerAttachedObject(playerid,1);
			SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
			DisablePlayerCheckpoint(playerid);
			HouseRob2[playerid] = 0;
			CP[playerid] = 0;
			ClearAnimations(playerid);
                        HouseRob3[playerid] = 0;
		}
	}
	if(newkeys == KEY_FIRE)
	{
		if(HouseRob2[playerid] == 1)
		{
			RemovePlayerAttachedObject(playerid,1);
			SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
			DisablePlayerCheckpoint(playerid);
			CP[playerid] = 0;
			HouseRob2[playerid] = 0;
			ClearAnimations(playerid);
                        HouseRob3[playerid] = 0;
		}
	}
	if(newkeys & KEY_SECONDARY_ATTACK || (newkeys & KEY_SUBMISSION && newkeys & KEY_SECONDARY_ATTACK ))
	{
		if(HouseRob2[playerid] == 1)
		{
			RemovePlayerAttachedObject(playerid,1);
			SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
			DisablePlayerCheckpoint(playerid);
			CP[playerid] = 0;
			HouseRob2[playerid] = 0;
			ClearAnimations(playerid);
                        HouseRob3[playerid] = 0;
		}
	}
Ну вот и все. Работа вора - готова. Будут вопросы - обращайтесь.

---------- Post added at 09:49 ---------- Previous post was at 09:43 ----------

Во второй версии - добавлю таймер. То есть вы украли телевизор, то вы можете в следующий раз, только через 3 минуты - использовать команду кражи.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу