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

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

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

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

Мануал Бесплатное такси со скилами

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

sanek_kulikov

Умник
Привет всем в этом мануале я покажу вам как сделать бесплатное такси с скилами(как на самп рп). Автор Plakapenk@. И так приступим.
Поставьте префикс
ко всем new добавляем
PHP:
new bool:taxipasashir[MAX_PLAYERS];
new taxiexpp[MAX_PLAYERS];
в enum pInfo
PHP:
ptaxiexp,
ptaxilvl,
в public OnPlayerConnect(playerid)
PHP:
PlayerInfo[playerid][ptaxiexp] = 0;
PlayerInfo[playerid][ptaxilvl] = 1;
в public OnPlayerExitVehicle(playerid, vehicleid)
PHP:
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) // TAXI
	{
		new name[24];
		GetPlayerName(playerid, name, sizeof(name));
		for(new i=0;i<MAX_PLAYERS;i++)
		{
			if(IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == 2 && TransportDuty[i] == 1)
			{
				SendClientMessage(i, 0x6495EDFF, "Пассажир вышел из вашего Такси. Деньги и опыт будут зачислены во время зарплаты");
			    if(taxipasashir[playerid] != true)
			    {
					new taxizp = 50+Random(1, 50);
					PlayerInfo[i][pPayCheck] += taxizp*PlayerInfo[i][ptaxilvl];
					taxipasashir[playerid] = true;
					taxiexpp[i]+=1;
					SetPVarInt(playerid, "Taxist", i);
					SPD(playerid, 165, DIALOG_STYLE_MSGBOX, "Такси","Как вас обслужили?","Хорошо","Плохо");
				}
			}
			return true;
		}
	}
ищем if(newstate == PLAYER_STATE_PASSENGER) // TAXI & BUSSES
и заменяем на
PHP:
if(newstate == PLAYER_STATE_PASSENGER// TAXI & BUSSES 
	{
		new name[MAX_PLAYER_NAME];
		GetPlayerName(playerid, name, sizeof(name));
		new vehicleid = GetPlayerVehicleID(playerid);
		for(new i = 0; i < MAX_PLAYERS; i++)
		{
					if(IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == 2 && AutoBusJob[i] > 0)
					{
						if(PlayerInfo[playerid][pCash] < AutoBusMoney[i])
						{
							format(string, sizeof(string), "Вы необходимо %d вирт, для того чтобы сесть.", AutoBusMoney[i]);
							SendClientMessage(playerid, 0x6495EDFF, string);
							RemovePlayerFromVehicle(playerid);
							return true;  ;
						}
						else
						{
							if(AutoBusJob[i] >= 1)
							{
								format(string, sizeof(string), "Вы заплатили %d вирт Водителю автобуса.", AutoBusMoney[i]);
								SendClientMessage(playerid, 0x6495EDFF, string);
								format(string, sizeof(string), "Пассажир %s вошел в ваш автобус. %d вирт прибавлено к вашей Зарплате. ", name,AutoBusMoney[i]);
								SendClientMessage(i, 0x6495EDFF, string);
							}
							PlayerInfo[playerid][pCash] -= AutoBusMoney[i];
							PlayerInfo[i][pCash] += GetPlayerMoney(i) + AutoBusCheck[i] * (32 + random(2));
						}
						PlayerInfo[playerid][pCash] -=TransportValue[i];
						TransportMoney[i] += TransportValue[i];
					  }
					 }
					}
и сразу после этого втавляем
PHP:
if(newstate == PLAYER_STATE_PASSENGER) // TAXI
	 {
		new name[24];
		GetPlayerName(playerid, name, sizeof(name));
		new vehicleid = GetPlayerVehicleID(playerid);
		for(new i=0;i<MAX_PLAYERS;i++)
		{
			if(IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == 2 && TransportDuty[i] == 1)
			{
			    format(string, sizeof(string), "Пассажир %s сел в ваше Такси. Довезите его и государство заплатит вам", name);
				SendClientMessage(i, 0x6495EDFF, string);
			}
			return true;
		}
	}
ко всем диалогам в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) добавим
PHP:
case 165:
		{
			if(response)
			{
				taxiexpp[GetPVarInt(playerid, "Taxist")] ++;
				DeletePVar(playerid, "Taxist");
			}
			else
			{
			    taxiexpp[GetPVarInt(playerid, "Taxist")] -1;
			    DeletePVar(playerid, "Taxist");
			}
		}
в public PayDay() ищем примерно такое
PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
		new house = PlayerInfo[i][pPhousekey];
		if(IsPlayerConnected(i))
		{
			if(PlayerInfo[i][pLevel] > 0)
			{
и сразу после этого добавляем
PHP:
PlayerInfo[i][ptaxiexp] +=taxiexpp[i];
чуть ниже ищем
PHP:
if(exp == expamount)
				{
					PlayerInfo[i][pLevel] += 1;
					PlayerInfo[i][pExp] = 0;
				}
и сразу после этого вставляем
PHP:
if(PlayerInfo[i][ptaxiexp] == PlayerInfo[i][ptaxilvl]+1*levelexp)
			    {
				PlayerInfo[i][ptaxilvl] += 1;
				PlayerInfo[i][ptaxiexp] = 0;
			    }
в public OnPlayerRegister(playerid, password[])
PHP:
ini_setInteger(File,"TaxiExp",PlayerInfo[playerid][ptaxiexp]);
			ini_setInteger(File,"TaxiLvl",PlayerInfo[playerid][ptaxilvl]);
в public OnPlayerUpdateRL(playerid)
PHP:
ini_setInteger(File,"TaxiExp",PlayerInfo[playerid][ptaxiexp]);
		ini_setInteger(File,"TaxiLvl",PlayerInfo[playerid][ptaxilvl]);
в public OnPlayerLogin(playerid,password[])
PHP:
ini_getInteger(File,"TaxiExp",PlayerInfo[playerid][ptaxiexp]);
		ini_getInteger(File,"TaxiLvl",PlayerInfo[playerid][ptaxilvl]);
дальше вставляем команды если есть то заменяем в public OnPlayerCommandText(playerid, cmdtext[])
PHP:
if(strcmp(cmd,"/fare",true)==0)
	{
		new Veh = GetPlayerVehicleID(playerid);
		if(PlayerInfo[playerid][pJob] == 4)
		{
			 if(TransportDuty[playerid] == 1)
			 {
				TaxiDrivers -= 1;
				Delete3DTextLabel(taxi3d[Veh]);
				TransportDuty[playerid] = 0;
				SendClientMessage(playerid, 0x6495EDFF, "Вы закончили рабочий день.");
				return true;
			}
			if(Veh >= taxicar[0] && Veh <= taxicar[39])
			{
				if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
				{
					Delete3DTextLabel(taxi3d[Veh]);
					TaxiDrivers += 1;
					TransportDuty[playerid] = 1;
					SendClientMessage(playerid, 0x6495EDFF, "Вы начали рабочий день.");
					format(string, sizeof(string), "<< Бесплатное такси >>");
					taxi3d[Veh] = Create3DTextLabel(string, COLOR_YELLOW, 9999.0, 9999.0, 9999.0, 30.0, 0, 1);
					Attach3DTextLabelToVehicle(taxi3d[Veh], Veh, 0, 0, 1.5);
				}
				else return SendClientMessage(playerid, COLOR_GREY, "Вы не таксист");
			}
			else SendClientMessage(playerid, COLOR_GREY, "Вы не на службе!");
		}
		else return SendClientMessage(playerid, COLOR_GREY, "Вы не в машине!");
		return true;
	}
    if(strcmp(cmd, "/taxiskill", true) == 0)
	{
	    new nextlvl = PlayerInfo[playerid][ptaxilvl]+1;
	    new expamount = nextlvl*4;
	    format(string, sizeof(string), "Ваш уровень таксиста %d. До следующего осталось %d/%d exp",PlayerInfo[playerid][ptaxilvl], PlayerInfo[playerid][ptaxiexp], expamount);
	    SendClientMessage(playerid, COLOR_BLUE, string);
	    return true;
	}
Вроде бы не чего не забыл,будут ошибки пишите
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу