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}
};
PHP:
forward ShowPlayerPizzaBikeTexts(playerid);
forward HidePlayerPizzaBikeTexts(playerid);
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);
}
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");
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);
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;
}
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;
}
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}!");
}
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;
}
Последнее редактирование:
