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

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

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

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

Работа грузчиком

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

Troy Lewis

Изучающий
Пользователь
Регистрация
22 Янв 2018
Сообщения
190
Лучшие ответы
0
Репутация
1
Всем привет! Сегодня я Вам покажу, как написать работу грузчика для вашего проекта!
Делается всё просто, без каких-либо усилий.
Приступим :bs:​

Ко всем #define, добавляем:
PHP:
#define MAX_UCHECK 2 // Чекпоинт куда несём груз 
#define MAX_PCHECK 5 // Чекпоинт где берём груз 
#define START_JOB 2 // Кол-во мест для начала работы 
#define JOB_CASH 10 // Бабки за 1 ящик
Ко всем new, добавляем вот это:
PHP:
new Float:ucheck[][3] = { // Чекпоинты где нужно брать вещи.. 
{2746.9546,-2436.0449,13.6432}, 
{2746.5940,-2427.4841,13.6380} 
}; 

new Float:pcheck[][3] = { // Чекпоинты куда нужно нести вещи... 
{2785.3604,-2409.4348,13.6343}, 
{2784.9187,-2424.8127,13.6344}, 
{2793.5256,-2410.3799,13.6323}, 
{2793.3657,-2425.0623,13.6323}, 
{2799.1807,-2409.9629,13.6309} 
}; 

new Float:start_job[START_JOB][3] = { // Места, где можно начать работу... 
{2798.4226,-2393.9375,13.9560}, 
{2749.2666,-2454.0779,13.8623} 
};
Если вы хотите добавить ещё одно место для начала работы, то вы добавляете в start_job, координаты x,y,z, заключённые в "{ }", а #define START_JOB 2, меняете на #define START_JOB 3. Тупо говоря, двойку меняете на тройку.

Далее в public OnGameModeInit, добавляем:
PHP:
	for(new gjob; gjob < START_JOB; gjob++)
	{
		CreatePickup(1275,23,start_job[gjob][0],start_job[gjob][1],start_job[gjob][2],-1);
 	}
Мы создали пикап, по заданным координатам в start_job.

В public OnPlayerUpdate добавляем:
PHP:
	for(new gjob; gjob < START_JOB; gjob++)
	{
		if(IsPlayerInRangeOfPoint(playerid,2,start_job[gjob][0],start_job[gjob][1],start_job[gjob][2])) GameTextForPlayer(playerid,"~g~PRESS KEY~r~ALT",5000,4);
	}
В public OnPlayerKeyStateChange добавляем:
PHP:
	if(newkeys == KEY_WALK)// Проверка на кнопку ALT
 	{
  		for(new gjob; gjob < START_JOB; gjob++)// Цикл количество мест в которых можно начать работу
    	{
   			if(IsPlayerInRangeOfPoint(playerid,2,start_job[gjob][0],start_job[gjob][1],start_job[gjob][2]))// Проверяем нахождение игрока в точках начала работы
   			{
      			if(GetPVarInt(playerid,"InJob") == 0) ShowPlayerDialog(playerid,30000,DIALOG_STYLE_MSGBOX,"{FF9E00}Раздевалка","{FFFFFF}Вы хотите начать работу строителем?","Начать","Отмена");
                           // Если игрок уже работает грузчиком, то выводим диалог окончания
         		else if(GetPVarInt(playerid,"InJob") == 1) ShowPlayerDialog(playerid,30001,DIALOG_STYLE_MSGBOX,"{FF9E00}Раздевалка","{FFFFFF}Вы хотите закончить работу строителем?","Конец","Отмена");
                      // Если игрок не работает грузчиком, то выводим диалог начала
           		}
             }
         }
   	if(GetPVarInt(playerid,"Job") == 2)
   	{
   		if(newkeys == KEY_SECONDARY_ATTACK || newkeys == KEY_JUMP || newkeys == KEY_SECONDARY_ATTACK || newkeys == KEY_FIRE || newkeys == KEY_CROUCH)
    	{
           		RemovePlayerAttachedObject(playerid,5);// Удаляем объект из рук
             	ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);// Обнуляем анимацию
              	SetPVarInt(playerid,"Job",1);// Устанавливаем момент работы игрока на 1..
               	new checkp = random(MAX_PCHECK);
               	SetPlayerCheckpoint(playerid,pcheck[checkp][0],pcheck[checkp][1],pcheck[checkp][2],1.5);// Создаём один из чекпоинтов
    	}
     }
	if(newkeys == KEY_WALK)// Проверка на кнопку ALT
	{
		for(new gjob; gjob < START_JOB; gjob++)// Цикл количество в которых можно начать работу
		{
       			if(IsPlayerInRangeOfPoint(playerid,2,start_job[gjob][0],start_job[gjob][1],start_job[gjob][2]))// Проверяем нахождение игрока в точках начала работы
          		{
          		if(GetPVarInt(playerid,"InJob") == 0) ShowPlayerDialog(playerid,30000,DIALOG_STYLE_MSGBOX,"{FF9E00}Раздевалка","{FFFFFF}Вы хотите начать работу строителем?","Начать","Отмена");
            	else if(GetPVarInt(playerid,"InJob") == 1) ShowPlayerDialog(playerid,30001,DIALOG_STYLE_MSGBOX,"{FF9E00}Раздевалка","{FFFFFF}Вы хотите закончить работу строителем?","Конец","Отмена");
             	}
 		}
   	}
   	if(GetPVarInt(playerid,"Job") == 2)
    {
    	if(newkeys == KEY_SECONDARY_ATTACK || newkeys == KEY_JUMP || newkeys == KEY_SECONDARY_ATTACK || newkeys == KEY_FIRE || newkeys == KEY_CROUCH)
     	{
           		RemovePlayerAttachedObject(playerid,5);// Удаляем объект из рук
             	ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);// Обнуляем анимацию
           		SetPVarInt(playerid,"Job",1);// Устанавливаем момент работы игрока на 1..
             	new checkp = random(MAX_PCHECK);
              	SetPlayerCheckpoint(playerid,pcheck[checkp][0],pcheck[checkp][1],pcheck[checkp][2],1.5);// Создаём один из чекпоинтов
      	}
    }
Затем в public OnDialogResponse вставляем:
PHP:
	case 30000:
 		{
   			if(!response) return 1;// Если нажал отмена
   			SendClientMessage(playerid,0xFFFFFFAA,"{FF9E00}[Информация] {FFFFFF}Вы начали работу строителем");// Выводим текст
      		SetPVarInt(playerid,"PSkin",GetPlayerSkin(playerid));// Сохраним скин игрока
        	SetPlayerSkin(playerid,27);// Установим игроку скин
         	SetPVarInt(playerid,"InJob",1);// Устанавливаем игроку работу.
          	SetPVarInt(playerid,"Job",1);// Устанавливаем момент работы, 1 - идём брать вещи. 2 - несём вещи.
           	new checkp = random(MAX_PCHECK);// Рандомно выдаём координаты где брать груз
            SetPlayerCheckpoint(playerid,pcheck[checkp][0],pcheck[checkp][1],pcheck[checkp][2],1.5);// Создаём один из чекпоинтов
        }
   	case 30001:
    	{
     		if(!response) return 1;
       		new str[128];
         	format(str,sizeof(str),"{FF9E00}[Информация] {FFFFFF}Вы завершили работу строителем. Вы получаете: {FF9E00}$%d",GetPVarInt(playerid,"JobY")*JOB_CASH);
          	SendClientMessage(playerid,0xFFFFFFAA,str);// Выводим текст
           	DisablePlayerCheckpoint(playerid);// Удаляем чекпоинт
           	ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);// Обнуляем анимацию
            RemovePlayerAttachedObject(playerid,5);// Удаляем объект из рук
            GivePlayerMoney(playerid,GetPVarInt(playerid,"JobY")*JOB_CASH);// Выдаём деньги
            SetPlayerSkin(playerid,GetPVarInt(playerid,"PSkin"));// Возвращаем скин
            DeletePVar(playerid,"Job");// Удаляем PVar с моментом работы
            DeletePVar(playerid,"InJob");// Удаляем PVar с работой
            DeletePVar(playerid,"JobY");// Удаляем PVar с количество вещей
            DeletePVar(playerid,"PSkin");// Удаляем PVar с одеждой
		}
Ну и наконец public OnPlayerEnterCheckpoint вставляем:
PHP:
	if(GetPVarInt(playerid,"Job") == 1)// Если момент работы игрока 1..
	{
		new checku = random(MAX_UCHECK);// Рандомно выдаём координаты куда нести груз
		SetPlayerCheckpoint(playerid,ucheck[checku][0],ucheck[checku][1],ucheck[checku][2],1.5);// Создаём один из чекпоинтов
		ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,0,1,1,1,1);// Анимация, типо что то несём..
		SetPVarInt(playerid,"Job",2);// Устанавливаем момент работы игрока на 2..
		new objectr = random(3);// Выдаём в руки объект
		if(objectr == 0) return SetPlayerAttachedObject(playerid,5,11708,1,0.135011,0.463495,-0.024351,357.460632,87.350753,88.068374,0.434164,0.491270,0.368655);
		if(objectr == 1) return SetPlayerAttachedObject(playerid,5,11708,1,0.000708,0.356461,0.000000,186.670364,87.529838,0.000000,1.000000,1.000000,1.000000);
		if(objectr == 2) return SetPlayerAttachedObject(playerid,5,11708,1,0.013829,0.131155,0.145773,185.651550,86.201354,345.922180,0.693442,0.873942,0.577291);
	}
	if(GetPVarInt(playerid,"Job") == 2)
	{
		RemovePlayerAttachedObject(playerid,5);// Удаляем объект из рук
		ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);// Обнуляем анимацию
		SetPVarInt(playerid,"Job",1);// Устанавливаем момент работы игрока на 1..
		SetPVarInt(playerid,"JobY",GetPVarInt(playerid,"JobY")+1);// Прибавим к вещам игрока 1
		new str[128],checkp = random(MAX_PCHECK);
		format(str,sizeof(str),"{FF9E00}[Информация] {FFFFFF}Мешков перетащено: {FF9E00}%d",GetPVarInt(playerid,"JobY"));
		SendClientMessage(playerid,0xFFFFFFAA,str);// Выведем сообщение
		SetPlayerCheckpoint(playerid,pcheck[checkp][0],pcheck[checkp][1],pcheck[checkp][2],1.5);// Создаём один из чекпоинтов
	}
Автор: Vovan228
Доработка: Troy Lewis
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу