Доступ к готовым решениям

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

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

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

Урок Работа развозчик пицци by preskat

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

Preskat

Умник
Писал работу для своего проекта​

Прошу заранее не говорить мне, что так лучше - так лучше.​

Как я изначально сделал, Значит так должно быть.​

Ко всем define

PHP:
#define CHECKPOINTS            24 
#define PAY_PER_CHECKPOINT     10
#define MAX_TIP                20
#define CHECKPOINT_NONE        0 
#define PIZZA_CHECKPOINT       1 
#define PIZZA_INDEX            9
#define PRESSED(%0) \
	(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

Ко всем new

PHP:
new robpickup;
new restockpickup;
new Text3D:robtext;
new Text3D:restocktext;

new pizzabikes[5];
new PizzaBikesPizzas[MAX_VEHICLES];


new IsInRabota[MAX_PLAYERS];
new TipTime[MAX_PLAYERS];
new PlayerTutorialTime[MAX_PLAYERS];
new InfoTimer[MAX_PLAYERS];
new PlayerCustomer[MAX_PLAYERS];
new PlayerCheckpoint[MAX_PLAYERS];
new PlayerTips[MAX_PLAYERS];
new PlayerEarnings[MAX_PLAYERS];
new PlayerSkin[MAX_PLAYERS];


new PlayerText:PizzasText[MAX_PLAYERS];



new Float:Houses[CHECKPOINTS][4] = {
{2065.9780,-1703.4775,14.1484,90.8956},
{2068.2600,-1656.4601,13.5469,86.9378},
{2068.8579,-1643.8237,13.5469,90.3844},
{2068.7437,-1628.9187,13.8762,90.3844},
{2065.0508,-1583.8545,13.4814,92.2467},
{2003.0380,-1595.1025,13.5759,39.7419},
{2016.8215,-1629.8384,13.5469,270.7754},
{2015.4512,-1641.6316,13.7824,272.6556},
{2012.0426,-1656.4589,13.5547,268.4961},
{2017.1294,-1703.3452,14.2043,272.0217},
{2014.4487,-1732.6185,14.2353,271.6387},
{2139.1643,-1698.1489,15.0784,4.0066},
{2166.9363,-1672.0193,15.0749,46.6203},
{2244.2312,-1638.2906,15.9074,340.8198},
{2257.1416,-1644.8845,15.5164,353.3532},
{2282.2446,-1641.7231,15.8898,357.1133},
{2307.0203,-1678.1877,14.0012,180.0783},
{2328.2483,-1681.9125,14.8624,90.7775},
{2362.8362,-1644.1184,13.5332,0.849},
{2368.3418,-1674.5013,13.9063,179.1149},
{2393.2185,-1646.7593,13.6432,1.7900},
{2409.0159,-1673.8960,13.6045,180.0550},
{2413.9771,-1647.1270,14.0119,2.4167},
{2452.0852,-1642.3127,13.7357,1.4767}
};
Ко всем forward

PHP:
forward ShowPlayerPizzaBikeTexts(playerid);
forward HidePlayerPizzaBikeTexts(playerid);
В Public OnGameModeInit

PHP:
robpickup = CreatePickup(1275,1,2104.2502,-1806.3750,13.5547,0);
	restockpickup = CreatePickup(1275,1,2116.4973,-1788.3663,13.1152,0);

	pizzabikes[0] = CreateVehicle(448,2093.9578,-1812.5789,12.9786,89.6835,3,6,60000,0);
	pizzabikes[1] = CreateVehicle(448,2093.9387,-1814.8420,12.9820,91.6584,3,6,60000,0); 
	pizzabikes[2] = CreateVehicle(448,2094.1182,-1816.9015,12.9825,89.0844,3,6,60000,0);
	pizzabikes[3] = CreateVehicle(448,2094.1975,-1819.0215,12.9821,88.4043,3,6,60000,0); 
	pizzabikes[4] = CreateVehicle(448,2094.0500,-1821.4058,12.9817,90.0841,3,6,60000,0); 

	PizzaBikesPizzas[pizzabikes[0]]=5;
	PizzaBikesPizzas[pizzabikes[1]]=5;
	PizzaBikesPizzas[pizzabikes[2]]=5;
	PizzaBikesPizzas[pizzabikes[3]]=5;
	PizzaBikesPizzas[pizzabikes[4]]=5;

	robtext = Create3DTextLabel("{FF0000}Работа развозчик пицци\n{FFFFFF}Используйте {7FFF00}/startrob{FFFFFF}чтобы начать работу!",0x008080FF,2104.2502,-1806.3750,13.5547,30.0,0,1);
	restocktext = Create3DTextLabel("{FF0000}Точки пополнения\n{FFFFFF}Используйте{7FFF00}/vzat{FFFFFF} чтобы пополнить свой скутер пиццой",0x008080FF,2116.4973,-1788.3663,13.1152,30.0,0,1);

	DisableInteriorEnterExits();

В public OnGameModeExit

PHP:
Delete3DTextLabel(robtext);
	Delete3DTextLabel(restocktext);
	DestroyPickup(robpickup);
	DestroyPickup(restockpickup);
	DestroyVehicle(pizzabikes[0]);
	DestroyVehicle(pizzabikes[1]);
	DestroyVehicle(pizzabikes[2]);
	DestroyVehicle(pizzabikes[3]);
	DestroyVehicle(pizzabikes[4]);
В конец мода

PHP:
PreloadAnimLib(playerid, animlib[])
{
	ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
}
В Public OnPlayerConnect

PHP:
IsInRabota[playerid]=0;TipTime[playerid]=0;
    KillTimer(InfoTimer[playerid]);
	PlayerTutorialTime[playerid]=0;
	PlayerCheckpoint[playerid]=CHECKPOINT_NONE;
	PlayerTips[playerid]=0;
	PlayerEarnings[playerid]=0;
	PlayerSkin[playerid]=0;
	PreloadAnimLib(playerid,"DEALER");
	PreloadAnimLib(playerid,"CARRY");
В public OnPlayerDisconnect

PHP:
IsInRabota[playerid]=0;TipTime[playerid]=0;
    KillTimer(InfoTimer[playerid]);
	PlayerTutorialTime[playerid]=0;
	PlayerCheckpoint[playerid]=CHECKPOINT_NONE;
	PlayerTips[playerid]=0;
	PlayerEarnings[playerid]=0;
    if(IsValidActor(PlayerCustomer[playerid])) { DestroyActor(PlayerCustomer[playerid]); }
    PlayerSkin[playerid]=0;
	HidePlayerPizzaBikeTexts(playerid);
В public OnPlayerDeath

PHP:
if(IsInRabota[playerid] == 1)
	{
	    IsInRabota[playerid]=0;TipTime[playerid]=0;
	    KillTimer(InfoTimer[playerid]);
		PlayerTutorialTime[playerid]=0;
		PlayerCheckpoint[playerid]=CHECKPOINT_NONE;
		PlayerTips[playerid]=0;
		PlayerEarnings[playerid]=0;
	    if(IsValidActor(PlayerCustomer[playerid])) { DestroyActor(PlayerCustomer[playerid]); }
	    PlayerSkin[playerid]=0;
		HidePlayerPizzaBikeTexts(playerid);
		SendClientMessage(playerid,-1,"Вы погибли рабочий день закончен");
	}
Ко всем командам

PHP:
CMD:pizzahelp(playerid, params[])
{
	SendClientMessage(playerid,-1," Команды: /startrob, /unrabota, /vzat, /getpizza, /putbackpizza");
	return 1;
}

CMD:vzat(playerid, params[])
{
	if(IsPlayerInRangeOfPoint(playerid,3.0,2116.4973,-1788.3663,13.1152))
	{
	    if(IsInRabota[playerid] == 1)
	    {
	        if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	        {
	            if(PizzaBikesPizzas[GetPlayerVehicleID(playerid)] == 0)
	            {
	                new string[56];
	                PizzaBikesPizzas[GetPlayerVehicleID(playerid)]=5;
	                SendClientMessage(playerid,-1,"Вы взяли со склада {FF0000}5 {FFFFFF}Пицц!");

    				PlayerTextDrawHide(playerid,PizzasText[playerid]);
    				format(string,sizeof(string),"Pizza: ~r~%d~w~ /~g~ 5",PizzaBikesPizzas[GetPlayerVehicleID(playerid)]);
    				PlayerTextDrawSetString(playerid,PizzasText[playerid],string);
    				PlayerTextDrawShow(playerid,PizzasText[playerid]);
	            }
	            else return SendClientMessage(playerid,-1,"Вы уже взяли  5 пицц!");
	        }
	        else return SendClientMessage(playerid,-1," Вы должны быть на скуторе чтобы использовать команду!");
	    }
	    else return SendClientMessage(playerid,-1," Вы должны начать работу чтобы использовать эту команду!");
	}
	else return SendClientMessage(playerid,-1,"Скутер уже забит пиццой!");
	return 1;
}

CMD:putbackpizza(playerid, params[])
{
	if(IsInRabota[playerid] == 1)
	{
	    if(IsPlayerAttachedObjectSlotUsed(playerid,PIZZA_I  NDEX))
	    {
	        if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
	        {
			    new Float:X,Float:Y,Float:Z;
			    for(new j=0;j<5;j++)
			    {
					GetVehiclePos(pizzabikes[j],X,Y,Z);
					if(IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))
					{
					    if(PizzaBikesPizzas[pizzabikes[j]] < 5)
					    {
					    	PizzaBikesPizzas[pizzabikes[j]]++;
					    	ClearAnimations(playerid);
							RemovePlayerAttachedObject(playerid, PIZZA_INDEX);
							SendClientMessage(playerid,-1,"Пицца помещена обратно!");
							ApplyAnimation(playerid, "INT_HOUSE", "wash_up",4.1,0,0,0,0,0,1);
					    	return 1;
						}
						else
						{
						    SendClientMessage(playerid,-1,"У вас уже 5 пицц!");
						    return 1;
						}
					}
                }
			}
			else return SendClientMessage(playerid,-1,"Вы должны стоять что-бы использовать эту команду!");
		}
		else return SendClientMessage(playerid,-1,"У вас нету коробки с пиццой!");
	}
	return 1;
}

CMD:getpizza(playerid, params[])
{
	if(IsInRabota[playerid] == 1)
	{
	    if(!IsPlayerAttachedObjectSlotUsed(playerid,PIZZA_  INDEX))
	    {
	        if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
	        {
			    new Float:X,Float:Y,Float:Z;
			    for(new j=0;j<5;j++)
			    {
					GetVehiclePos(pizzabikes[j],X,Y,Z);
					if(IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))
					{
					    if(PizzaBikesPizzas[pizzabikes[j]] >= 1)
					    {
					    	PizzaBikesPizzas[pizzabikes[j]]--;
					    	ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,1,1,1,1,1,1);
							SetPlayerAttachedObject( playerid, PIZZA_INDEX, 1582, 1, 0.002953, 0.469660, -0.009797, 269.851104, 88.443557, 0.000000, 0.804894, 1.000000, 0.822361 );
					    	return 1;
						}
						else
						{
						    SendClientMessage(playerid,-1,"На складе нету пицц!");
						    return 1;
						}
					}
				}
			}
			else return SendClientMessage(playerid,-1,"Вы должны стоять что-бы использовать эту команду!");
		}
		else return SendClientMessage(playerid,-1,"Вы уже несете коробку с пиццой!");
	}
	return 1;
}

CMD:unrabota(playerid, params[])
{
	if(IsPlayerInRangeOfPoint(playerid,3.0,2104.2502,-1806.3750,13.5547))
	{
	    if(IsInRabota[playerid] == 1)
	    {
	        if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	        {
		        new string[128];
		        GivePlayerMoney(playerid,PlayerEarnings[playerid]+PlayerTips[playerid]);
				format(string,sizeof(string),"Вы заработали{7FFF00}%d$ {FFFFFF}!",PlayerEarnings[playerid]+PlayerTips[playerid]);
				SendClientMessage(playerid,-1,string);
				PlayerEarnings[playerid]=0;
				PlayerTips[playerid]=0;
				if(IsPlayerAttachedObjectSlotUsed(playerid,PIZZA_I  NDEX)) { RemovePlayerAttachedObject(playerid,PIZZA_INDEX); }
				PlayerCheckpoint[playerid]=CHECKPOINT_NONE;
				DisablePlayerCheckpoint(playerid);
				IsInRabota[playerid]=0;
				PlayerTutorialTime[playerid]=0;
				if(IsValidActor(PlayerCustomer[playerid])) { DestroyActor(PlayerCustomer[playerid]); }
				TipTime[playerid]=0;
				HidePlayerPizzaBikeTexts(playerid);
				PizzaBikesPizzas[GetPlayerVehicleID(playerid)]=5;
		        SetVehicleToRespawn(GetPlayerVehicleID(playerid));
		        RemovePlayerFromVehicle(playerid);
		        SetPlayerSkin(playerid,PlayerSkin[playerid]);
		        PlayerSkin[playerid]=0;
			}
			else return SendClientMessage(playerid,-1,"Вы должны быть на своем скутере чтобы закончить работу!");
	    }
	    else return SendClientMessage(playerid,-1,"Вы должны начать работу!");
	}
	return 1;
}

CMD:startrob(playerid, params[])
{
	if(IsPlayerInRangeOfPoint(playerid,3.0,2104.2502,-1806.3750,13.5547))
	{
	    if(IsInRabota[playerid] == 0)
	    {
			IsInRabota[playerid]=1;
			PlayerSkin[playerid]=GetPlayerSkin(playerid);
			SetPlayerSkin(playerid,155);
			SendClientMessage(playerid,-1,"Команды /pizzahelp");
	    }
	    else return SendClientMessage(playerid,-1,"Вы уже работаете!");
	}
	return 1;
}
В public OnPlayerStateChange

PHP:
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
	{
	    if(IsPlayerAttachedObjectSlotUsed(playerid,PIZZA_I  NDEX))
		{
	    	RemovePlayerFromVehicle(playerid);
			SetPlayerArmedWeapon(playerid,0);
			ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,1,1,1,1,1,1);
		}
		new vehid = GetPlayerVehicleID(playerid);
		if(vehid == pizzabikes[0] || vehid == pizzabikes[1] || vehid == pizzabikes[2] || vehid == pizzabikes[3] || vehid == pizzabikes[4])
		{
		    if(IsInRabota[playerid] == 1)
			{
		    	ShowPlayerPizzaBikeTexts(playerid);
		    	if(PlayerCheckpoint[playerid] == CHECKPOINT_NONE)
	    		{
					new rand = random(sizeof(Houses));
					new skin = random(311)+1;
					if(skin == 74) return skin=75;
					SetPlayerCheckpoint(playerid,Houses[rand][0],Houses[rand][1],Houses[rand][2],2.0);
					PlayerCustomer[playerid] = CreateActor(skin,Houses[rand][0],Houses[rand][1],Houses[rand][2]+0.5,Houses[rand][3]-180.0);
					ApplyActorAnimation(PlayerCustomer[playerid],"DEALER","DEALER_IDLE",4.1,1,0,0,0,0);
					PlayerCheckpoint[playerid]=PIZZA_CHECKPOINT;
					TipTime[playerid]=30;
			    }
			}
			else
			{
				SendClientMessage(playerid,-1,"Вы должны начать работу прежде чем сесть на скутер!");
				RemovePlayerFromVehicle(playerid);
			}
		}
	}
	else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER) { HidePlayerPizzaBikeTexts(playerid); }
	return 1;
}
В public OnPlayerEnterCheckpoint

PHP:
if(PlayerCheckpoint[playerid] == PIZZA_CHECKPOINT)
	{
	    if(IsPlayerAttachedObjectSlotUsed(playerid,PIZZA_I  NDEX))
	    {
	        new string[128];
			PlayerEarnings[playerid]+=PAY_PER_CHECKPOINT;
			format(string,sizeof(string)," Вы заработали {7FFF00}%d$",PAY_PER_CHECKPOINT);
			SendClientMessage(playerid,-1,string);
			RemovePlayerAttachedObject(playerid,PIZZA_INDEX);
			PlayerCheckpoint[playerid]=CHECKPOINT_NONE;
			DisablePlayerCheckpoint(playerid);
			DestroyActor(PlayerCustomer[playerid]);
			ClearAnimations(playerid);
			if(TipTime[playerid] > 0)
	        {
	            TipTime[playerid]=0;
	            new tip=random(MAX_TIP)+5;
	            PlayerTips[playerid]+=tip;
	            format(string,sizeof(string)," Вы заработали + еще за быструю доставку{7FFF00}%d$",tip);
	            SendClientMessage(playerid,-1,string);
	            PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
			}
	    }
	    else return SendClientMessage(playerid,-1,"Вы не взяли пиццу /getpizza{FFFFFF}!");
	}
В public OnPlayerKeyStateChange

PHP:
if(PRESSED(KEY_FIRE))
	{
	    if(IsPlayerAttachedObjectSlotUsed(playerid,PIZZA_I  NDEX))
		{
		    SetPlayerArmedWeapon(playerid,0);
		 	ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,1,1,1,1,1,1);
		}
	}
В конец мода

PHP:
public ShowPlayerPizzaBikeTexts(playerid)
{
	new string[56];
	format(string,sizeof(string),"Pizza: ~r~%d~w~ /~g~ 5",PizzaBikesPizzas[GetPlayerVehicleID(playerid)]);
    PizzasText[playerid] = CreatePlayerTextDraw(playerid,510.000000, 170.000000, string);
  	PlayerTextDrawBackgroundColor(playerid,PizzasText[playerid], 255);
  	PlayerTextDrawFont(playerid,PizzasText[playerid], 1);
  	PlayerTextDrawLetterSize(playerid,PizzasText[playerid], 0.300000, 1.000000);
  	PlayerTextDrawColor(playerid,PizzasText[playerid], -1);
  	PlayerTextDrawSetOutline(playerid,PizzasText[playerid], 1);
  	PlayerTextDrawSetProportional(playerid,PizzasText[playerid], 1);
  	PlayerTextDrawSetSelectable(playerid,PizzasText[playerid], 0);

  	PlayerTextDrawShow(playerid,PizzasText[playerid]);
	return 1;
}

public HidePlayerPizzaBikeTexts(playerid)
{
    PlayerTextDrawHide(playerid,PizzasText[playerid]);
	//
  	PlayerTextDrawDestroy(playerid,PizzasText[playerid]);
	return 1;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу