PHP код:
#include <a_samp>
#include <streamer>
#include <var> // PVar от Владокс'а
new PickUp[10]; // Количество пикапов на карте
new bool: pDialog[MAX_PLAYERS];
#if defined ShowPlayerDialog SPD
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
SetPVarInt(playerid, "USEDIALOGID", dialogid);
pDialog[playerid] = true;
return true;
}
#endif
// Создаем массив, где будем хранить все данные о точках развозки продуктов или чего-то еще. Короче хз. Развозите все, что угодно душе.
#define MAX_POINTSDELIVERY 3 // Количество точек
enum sDelivery
{
pointId, // id точки ( хз, как обозвать )
pointName[50], // Название точки, т.е. как будем обзывать именно этот выбор
Float:costProd, // цена за единицу продукции при загрузке
pointCars[3], // id машины, которые разрешены для определенной из разгрузок
Float:pointLocationLoad[50], // координаты точки загрузки. для каждого из продуктов они разные
ToLocationsDP[50] // координаты точек разгрузки
}
new sADelivery[MAX_POINTSDELIVERY][sDelivery] =
{
{0,"Развозка продуктов 1", 10.00, {403, 514, 515}, {1958.3783, 1343.1572, 15.3746}}, // {403, 514, 515} - id грузовых трейлеров, как пример автомобиля
{1,"Развозка продуктов 2", 10.00, {403, 514, 515}, {1958.3783, 1343.1572, 15.3746}},
{2,"Развозка продуктов 3", 10.00, {403, 514, 515}, {1958.3783, 1343.1572, 15.3746}}
};
enum sDeliveryPoint
{
pointId, // id точки ( хз, как обозвать )
Float:pointLocationUnloadOne[50],
Float:pointLocationUnloadTwo[50],
Float:pointLocationUnloadThree[50],
Float:pointLocationUnloadFour[50],
Float:pointLocationUnloadFive[50]
}
new sDeliveryPoints[MAX_POINTSDELIVERY][sDeliveryPoint] = {
{0, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}},
{1, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}},
{2, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}, {1958.3783, 1343.1572, 15.3746}}
};
// Конец массива с данными о точках
public OnPlayerConnect(playerid)
{
ResetPlayerVars(playerid);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
ResetPlayerVars(playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnGameModeInit()
{
new sStr[256];
format(sStr, sizeof(sStr), "ID точки [%d]. Название точки [%s]. Координаты загрузки: [%f, %f, %f].", sADelivery[2][pointId], sADelivery[2][pointName], sADelivery[2][pointLocationLoad][0], sADelivery[2][pointLocationLoad][1], sADelivery[2][pointLocationLoad][2]);
format(sStr, sizeof(sStr), "%s Вторая точка разгрузки для точки с этим ID [%f, %f, %f].", sStr, sDeliveryPoints[2][pointLocationUnloadTwo][0], sDeliveryPoints[2][pointLocationUnloadTwo][1], sDeliveryPoints[2][pointLocationUnloadTwo][2]);
printf(sStr);
PickUp[0] = CreateDynamicPickup(1531, 23, 126.7697,-77.7008,1.5781, -1); // Создаем пикап, где будем выбирать точку для развоза груза ( этот как пример )
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
if(pickupid == PickUp[0]) // Встаем на пипап и получаем меню с выбором точки
{
new sDeliverySize[600];
for(new i = 0; i < MAX_POINTSDELIVERY; i++)
{
format(sDeliverySize, sizeof(sDeliverySize),"{FFFFFF}%s {00D900}%d{FFFFFF} \t [{00D900}%s{FFFFFF}]\n", sDeliverySize, sADelivery[i][pointId], sADelivery[i][pointName]);
}
SPD(playerid, 0,DIALOG_STYLE_LIST, "{FFFFFF}Выбор точки:", sDeliverySize, "Выбрать","Отмена");
}
return true;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch ( dialogid )
{
if(dialogid == 0 && response)
{
for(new i; i < 3; i ++)
{
if(listitem == i) SetPVarArrInt(playerid, "useDeliveryID", sADelivery[i][pointId] + 1, 0);
}
SendClientMessage(playerid, 0x88AA88AA, "Сядьте в машину.");
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
#define vehID GetPlayerVehicleID(playerid)
#define delID GetPVarArrInt(playerid, "useDeliveryID", 0)
if(delID >= 1 && (vehID == sADelivery[delID-1][pointCars][0] || vehID == sADelivery[delID-1][pointCars][1] || vehID == sADelivery[delID-1][pointCars][2]))
{
SendClientMessage(playerid,0x88AA88AA,"Cледуйте на точке загрузки.");
SetPlayerCheckpoint(playerid,sADelivery[delID-1][pointLocationLoad][0], sADelivery[delID-1][pointLocationLoad][1], sADelivery[delID-1][pointLocationLoad][2],5);
}
#undef vehID
#undef delID
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
DisablePlayerCheckpoint(playerid);
#define vehID GetPlayerVehicleID(playerid)
#define delID GetPVarArrInt(playerid, "useDeliveryID", 0)
if(delID >= 1 && (vehID == sADelivery[delID-1][pointCars][0] || vehID == sADelivery[delID-1][pointCars][1] || vehID == sADelivery[delID-1][pointCars][2]))
{
#define delPoint GetPVarArrInt(playerid, "useDeliveryPoint", 0)
if(delID == 1 && delPoint == 0)
{
SendClientMessage(playerid, -1, "{FFFFFF}Машина успешно загружена. Отвезте товар по месту назначения.");
SetPlayerCheckpoint(playerid, sDeliveryPoints[delID-1][pointLocationUnloadOne][0], sDeliveryPoints[delID-1][pointLocationUnloadOne][1], sDeliveryPoints[delID-1][pointLocationUnloadOne][2], 5);
SetPVarArrInt(playerid, "useDeliveryPoint", 2, 0);
}
if(delPoint == 2)
{
SendClientMessage(playerid, -1, "{FFFFFF}Отвезте товар по месту назначения.");
SetPlayerCheckpoint(playerid, sDeliveryPoints[delID-1][pointLocationUnloadTwo][0], sDeliveryPoints[delID-1][pointLocationUnloadTwo][1], sDeliveryPoints[delID-1][pointLocationUnloadTwo][2], 5);
SetPVarArrInt(playerid, "useDeliveryPoint", 3, 0);
}
if(delPoint == 3)
{
SendClientMessage(playerid, -1, "{FFFFFF}Отвезте товар по месту назначения.");
SetPlayerCheckpoint(playerid, sDeliveryPoints[delID-1][pointLocationUnloadThree][0], sDeliveryPoints[delID-1][pointLocationUnloadThree][1], sDeliveryPoints[delID-1][pointLocationUnloadThree][2], 5);
SetPVarArrInt(playerid, "useDeliveryPoint", 4, 0);
}
if(delPoint == 4)
{
SendClientMessage(playerid, -1, "{FFFFFF}Отвезте товар по месту назначения.");
SetPlayerCheckpoint(playerid, sDeliveryPoints[delID-1][pointLocationUnloadFour][0], sDeliveryPoints[delID-1][pointLocationUnloadFour][1], sDeliveryPoints[delID-1][pointLocationUnloadFour][2], 5);
SetPVarArrInt(playerid, "useDeliveryPoint", 5, 0);
}
if(delPoint == 5)
{
SendClientMessage(playerid, -1, "{FFFFFF}Отвезите товар по месту назначения.");
SetPlayerCheckpoint(playerid, sDeliveryPoints[delID-1][pointLocationUnloadFive][0], sDeliveryPoints[delID-1][pointLocationUnloadFive][1], sDeliveryPoints[delID-1][pointLocationUnloadFive][2], 5);
SetPVarArrInt(playerid, "useDeliveryPoint", 6, 0);
}
if(delPoint == 6)
{
SendClientMessage(playerid, -1, "{FFFFFF}Машина успешно разгружена.");
SetPVarArrInt(playerid, "useDeliveryID", 0, 0);
SetPVarArrInt(playerid, "useDeliveryPoint", 0, 0);
}
#undef delPoint
}
#undef vehID
#undef delID
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}