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

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

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

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

Мануал Система авторынка

JIEON_COJIORS

Умник
Здравствуйте, решил поучаствовать в конкурсе и написал первый мануал, надеюсь вам понравиться!
Система Авторынка - каждый игрок может выставить свой автомобиль на продажу, указать свою цену и причину продажи!
Если нужно будет выложу и FS.

Нету сохранения в БД

​
PHP:
#include <a_samp>

new bool:market_car[MAX_VEHICLES];
new playercar[MAX_PLAYERS];
new playercar_color[MAX_PLAYERS][2];

enum _players
{
	name[MAX_PLAYER_NAME],
	cash,
	car
}
new players[MAX_PLAYERS][_players];

#define MAX_MARKET_POS 6 //Количество автомобильных мест на рынке
static const Float:car_market[MAX_MARKET_POS][4] = {
	{1084.6906,-1754.9377,13.0899,268.9761},
	{1076.9752,-1754.9783,13.1013,89.9212},
	{1062.6750,-1754.9575,13.1344,89.9047},
	{1062.5985,-1748.9985,13.1541,90.8387},
	{1062.8168,-1743.2251,13.1667,89.3053},
	{1062.6552,-1737.3516,13.1845,89.6006}
};
enum _market
{
	model,
	owner[MAX_PLAYER_NAME],
	price,
	place,
	color[2],
Text3D:market_text,
	create_car,
	reason[60]
}
new market[MAX_MARKET_POS][_market];

new CarName[][] =
{
	"Landstalker", "Bra5vura", "Buffalo",  "Linerunner",   "Pereniel",   "Sentinel",   "Dumper",
	"Firetruck",   "Trashmaster",   "Stretch",   "Manana",   "Infernus",   "Voodoo",   "Pony",
	"Mule",   "Cheetah",   "Ambulance",   "Leviathan",   "Moonbeam",   "Esperanto",   "Taxi",
	"Washington",   "Bobcat",   "Mr Whoopee",   "BF Injection",   "Hunter",   "Premier",   "Enforcer",
	"Securicar",   "Banshee",   "Predator",   "Bus",   "Rhino",   "Barracks",   "Hotknife",
	"Trailer",   "Previon",   "Coach",   "Cabbie",   "Stallion",   "Rumpo",   "RC Bandit",
	"Romero",   "Packer",   "Monster Truck",   "Admiral",   "Squalo",   "Seasparrow",   "Pizzaboy",
	"Tram",   "Trailer",   "Turismo",   "Speeder",   "Reefer",   "Tropic",   "Flatbed",   "Yankee",
	"Caddy",   "Solair",   "Berkley's RC Van",   "Skimmer",   "PCJ-600",   "Faggio",   "Freeway",
	"RC Baron",   "RC Raider",   "Glendale",   "Oceanic",   "Sanchez",   "Sparrow",   "Patriot",
	"Quad",   "Coastguard",   "Dinghy",   "Hermes",   "Sabre",   "Rustler",   "ZR-350",   "Walton",
	"Regina",   "Comet",  "BMX",   "Burrito",  "Camper",   "Marquis",   "Baggage",   "Dozer",
	"Maverick",   "News Chopper",   "Rancher",   "FBI Rancher",   "Virgo",   "Greenwood",
	"Jetmax",   "Hotring",   "Sandking",   "Blista Compact",   "Police Maverick",   "Boxville",
	"Benson",   "Mesa",   "RC Goblin",   "Hotring Racer",   "Hotring Racer",   "Bloodring Banger",
	"Rancher",   "Super GT",   "Elegant",   "Journey",   "Bike",   "Mountain Bike",   "Beagle",
	"Cropdust",   "Stunt",   "Tanker",   "RoadTrain",   "Nebula",   "Majestic",   "Buccaneer",
	"Shamal",   "Hydra",   "FCR-900",   "NRG-500",   "HPV1000",   "Cement Truck",   "Tow Truck",
	"Fortune",   "Cadrona",   "FBI Truck",   "Willard",   "Forklift",   "Tractor",   "Combine",
	"Feltzer",   "Remington",   "Slamvan",   "Blade",   "Freight",   "Streak",   "Vortex",
	"Vincent",   "Bullet",   "Clover",   "Sadler",   "Firetruck",   "Hustler",   "Intruder",
	"Primo",   "Cargobob",   "Tampa",   "Sunrise",   "Merit",   "Utility",   "Nevada",
	"Yosemite",   "Windsor",   "Monster Truck",   "Monster Truck",   "Uranus",   "Jester",
	"Sultan",   "Stratum",   "Elegy",   "Raindance",   "RC Tiger",   "Flash",   "Tahoma",
	"Savanna",   "Bandito",   "Freight",   "Trailer",   "Kart",   "Mower",   "Duneride",   "Sweeper",
	"Broadway",   "Tornado",   "AT-400",   "DFT-30",   "Huntley",   "Stafford",   "BF-400",
	"Newsvan",   "Tug",   "Trailer",   "Emperor",   "Wayfarer",   "Euros",   "Hotdog",   "Club",
	"Trailer",   "Trailer",   "Andromada",   "Dodo",   "RC Cam",   "Launch",   "Police Car (LS)",
	"Police Car (SF)",   "Police Car (LV)",   "Police Ranger",   "Picador",   "S.W.A.T. Van",
	"Alpha",   "Phoenix",   "Glendale",   "Sadler",   "Luggage Trailer",   "Luggage Trailer",
	"Stair Trailer",   "Boxville",   "Farm Plow",   "Utility Trailer"
};
PHP:
public OnGameModeInit()
{
	Create3DTextLabel("{4582A1}Меню рынка\n{FFFFFF}Используйте \"ALT\"", 0xFFFFFFFF, 1104.4885,-1751.2487,13.5487, 5.0, 0);
 	AddStaticPickup(1239,23,1104.4885,-1751.2487,13.5487,0);

    // Exit here
	return 1;
}
PHP:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	if(market_car[vehicleid])
	{
		for(new i; i < MAX_MARKET_POS; i++)
		{
	        if(IsPlayerInRangeOfPoint(playerid,3.0,car_market[i][0],car_market[i][1],car_market[i][2]))
			{
		        if(!strcmp(market[i][owner],players[playerid][name],true)) ShowPlayerDialog(playerid,20006,DIALOG_STYLE_MSGBOX,"Рынок","Хотите снять автомобиль с продажи?","Снять","Отмена");
				else ShowPlayerDialog(playerid,20005,DIALOG_STYLE_MSGBOX,"Рынок","Вы хотите купить этот автомобиль?","Купить","Отмена");
				ClearAnimations(playerid);
				SetPVarInt(playerid,"CarPlace",i);
				SetPVarInt(playerid,"CarID",vehicleid);
				break;
			}
		}
	}
	return 1;
}
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
	    case 20000:
	    {
	        if(!response) return 1;
	        switch(listitem)
	        {
				case 0:
				{
				    new str[36+38*MAX_MARKET_POS] = "Модель\t\tПродавец\t\tСтоимость\n";
					for(new i; i < MAX_MARKET_POS; i++)
					{
						if(!market[i][model]) continue;
						format(str,sizeof(str),"%s{FFFFFF}%d\t\t%s\t\t{93C722}$%.2f\n",str,market[i][model],market[i][owner],float(market[i][price]));
					}
					if(strlen(str) < 40) return ShowPlayerDialog(playerid,0000,DIALOG_STYLE_MSGBOX,"Список автомобилей","Рынок автомобилей пуст","Закрыть","");
					ShowPlayerDialog(playerid,0000,DIALOG_STYLE_TABLIST_HEADERS,"Список автомобилей",str,"Закрыть","");
				}
				case 1:
				{
					if(!players[playerid][car]) return SendClientMessage(playerid,-1,"У вас нету автомобиля");
					ShowPlayerDialog(playerid,20001,DIALOG_STYLE_INPUT,"Выставка автомобиля","{FFFFFF}Введите сумму за которую хотите продать автомобиль","Выставить","Закрыть");
				}
	        }
	    }
	    case 20001:
	    {
	        if(!response) return 1;
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid,20001,DIALOG_STYLE_INPUT,"Выставка автомобиля","{FFFFFF}Введите сумму за которую хотите продать автомобиль","Выставить","Закрыть");
			SetPVarInt(playerid,"PriceCar",strval(inputtext));
			ShowPlayerDialog(playerid,20002,DIALOG_STYLE_INPUT,"Выставка автомобиля","{FFFFFF}Введите причину продажи автомобиля","Выставить","Закрыть");
		}
	    case 20002:
	    {
	        if(!response) return DeletePVar(playerid,"PriceCar");
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid,20002,DIALOG_STYLE_INPUT,"Выставка автомобиля","{FFFFFF}Введите причину продажи автомобиля","Выставить","Закрыть");
			new market_place = -1;
            for(new i; i < MAX_MARKET_POS; i++)
			{
				if(!market[i][model])
				{
				    market_place = i;
					//Создаем автомобиль на рынке
					market[i][place] = market_place;
					market[i][price] = GetPVarInt(playerid,"PriceCar");
					market[i][model] = players[playerid][car];
					market[i][color] = playercar_color[playerid];
					format(market[i][owner],MAX_PLAYER_NAME,players[playerid][name]);
					format(market[i][reason],60,inputtext);
					
					market[i][create_car] = CreateVehicle(market[i][model],car_market[i][0],car_market[i][1],car_market[i][2],car_market[i][3],market[i][color][0],market[i][color][1],-1);
					market_car[market[i][create_car]] = true;
					//Удаляем автомобиль игрока
					DestroyVehicle(playercar[playerid]);
					players[playerid][car] = 0;

					static const str_[] = "Модель: %s\nПродавец: %s\nСтоимость: {4582A1}$%.2f\n%s";
					new _str[sizeof(str_)+20+MAX_PLAYER_NAME+6+60];
					format(_str,sizeof(_str),str_,CarName[market[i][model]-400],market[i][owner],float(market[i][price]),market[i][reason]);
                    market[i][market_text] = Create3DTextLabel(_str, 0xFFFFFFFF, car_market[i][0],car_market[i][1],car_market[i][2], 15.0, 0);
                    
                    DeletePVar(playerid,"PriceCar");
                    
					SendClientMessage(playerid,-1,"Вы выставили свой автомобиль на продажу!");
					break;
				}
			}
			if(market_place == -1) return SendClientMessage(playerid,-1,"К сожалению, на рынке нету свободных мест!");
			
	    }
		case 20005:
		{
		    if(!response) return 1;
		    if(players[playerid][car]) return SendClientMessage(playerid,-1,"У вас уже есть автомобиль!");
			if(players[playerid][cash] < market[GetPVarInt(playerid,"CarPlace")][price]) return SendClientMessage(playerid,-1,"У вас недостаточно средств");
            players[playerid][cash] -= market[GetPVarInt(playerid,"CarPlace")][price];
			players[playerid][car] = market[GetPVarInt(playerid,"CarPlace")][model];
			playercar_color[playerid] = market[GetPVarInt(playerid,"CarPlace")][color];
			market[GetPVarInt(playerid,"CarPlace")][create_car] == 0;
			format(market[GetPVarInt(playerid,"CarPlace")][owner],MAX_PLAYER_NAME,"None");
			market[GetPVarInt(playerid,"CarPlace")][model] = 0;
			market_car[GetPVarInt(playerid,"CarID")] = false;
			Delete3DTextLabel(market[GetPVarInt(playerid,"CarPlace")][market_text]);
			playercar[playerid] = GetPVarInt(playerid,"CarID");
			
			DeletePVar(playerid,"CarID");
			DeletePVar(playerid,"CarPlace");
			SendClientMessage(playerid,-1,"Вы успешно приобрели автомобиль!");
		}
		case 20006:
		{
		    if(!response) return 1;
		    if(players[playerid][car]) return SendClientMessage(playerid,-1,"У вас уже есть автомобиль!");
			players[playerid][car] = market[GetPVarInt(playerid,"CarPlace")][model];
			playercar_color[playerid] = market[GetPVarInt(playerid,"CarPlace")][color];
			market[GetPVarInt(playerid,"CarPlace")][create_car] == 0;
			format(market[GetPVarInt(playerid,"CarPlace")][owner],MAX_PLAYER_NAME,"None");
			market[GetPVarInt(playerid,"CarPlace")][model] = 0;
			market_car[GetPVarInt(playerid,"CarID")] = false;
			playercar[playerid] = GetPVarInt(playerid,"CarID");
            Delete3DTextLabel(market[GetPVarInt(playerid,"CarPlace")][market_text]);
            
			DeletePVar(playerid,"CarID");
			DeletePVar(playerid,"CarPlace");
			
			SendClientMessage(playerid,-1,"Вы сняли свой автомобиль с продажи!");
		}
	}
	return 0;
}
PHP:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	switch(newkeys)
	{
	    case KEY_WALK:
	    {
	        if(IsPlayerInRangeOfPoint(playerid,3.0,1104.4885,-1751.2487,13.5487))
	        {
	            ShowPlayerDialog(playerid,20000,DIALOG_STYLE_LIST,"Рынок автомобилей","1. Список автомобилей на рынке\n2. Выставить автомобиль на продажу","Выбрать","Отмена");
	        }
	    }
	}
	return 1;
}
PHP:
public OnPlayerConnect(playerid)
{
	GetPlayerName(playerid, players[playerid][name],MAX_PLAYER_NAME);
	// Exit here

	return 1;
}



​
 
Последнее редактирование:
Сверху Снизу