Доступ к архиву

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

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

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

Работа по чекпоинтам

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

Limaks

Изучающий
Пользователь
Регистрация
9 Июл 2011
Сообщения
204
Лучшие ответы
0
Репутация
121
Решил написать как делать работу по чекпоинтам, типо как на MyGame, сорри если такая тема уже есть.
Эти работы полезны новичкам, можно заработать немного. Сделаем работу "Перевозчик".
Начнем

1. Добавляем new

PHP:
new Per1[MAX_PLAYERS];//
Per1 - можете поменять на свое, только придется потом менять в команде.

2. Находим public OnPlayerConnect(playerid)
и добавляем:
PHP:
Per1[playerid] = 0;
Это чтобы когда игрок заходил на сервер работа была выключена.

3. Находим public OnPlayerEnterCheckpoint(playerid)
И Вот уже здесь нам будут нужны координаты чекпоинтов.
Координаты вы можете поменять на свои, добавляем:

PHP:
else if(Per1[playerid]==1)
	{
        new newcar = GetPlayerVehicleID(playerid);
        if(newcar == per_[0] || newcar == per_[1] || newcar >= per_[2] && newcar <= per_[3])//машины на которых будем работать
        {
	    if(PlayerToPoint(4,playerid,-2085.1606,-2562.6553,30.6906))//Если наехали на 1 чекпоинт.(он будет в команде)
	    {
	        DisablePlayerCheckpoint(playerid);
            SendClientMessage(playerid, COLOR_YELLOW, "[Диллер]: Слезай со своего драндулета, бери грузовик и вези пушки.");//после того как мы наезжаем на 1 чекпоинт появляется текст
			SetPlayerCheckpoint(playerid,-2016.2191,-2500.9663,32.6959,4.0);//2 чекпоинт появился
	    }
	    else if(PlayerToPoint(4,playerid,-2016.2191,-2500.9663,32.6959))Если мы наехали на 2 чекпоинт появляется следующий.
    	{
            DisablePlayerCheckpoint(playerid);//после того как наехали удаляет чекпоинт и появляется следующий
	        SetPlayerCheckpoint(playerid,-1917.0990,-2435.6841,30.6175,4.0);
	    }
    	else if(PlayerToPoint(4,playerid,-1917.0990,-2435.6841,30.6175))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1762.2949,-2311.3877,43.1182,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1762.2949,-2311.3877,43.1182))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1684.7728,-2253.8816,37.9066,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1684.7728,-2253.8816,37.9066))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1507.5942,-2156.5483,2.3617,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1507.5942,-2156.5483,2.3617))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1293.6171,-2216.1965,22.3500,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1293.6171,-2216.1965,22.3500))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1197.3005,-2352.2869,18.4956,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1197.3005,-2352.2869,18.4956))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1002.6347,-2371.8411,64.4744,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1002.6347,-2371.8411,64.4744))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-959.1919,-2315.1907,58.6605,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-959.1919,-2315.1907,58.6605))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-899.9105,-2184.0835,30.3098,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-899.9105,-2184.0835,30.3098))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-784.9277,-2132.7161,25.4791,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-784.9277,-2132.7161,25.4791))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-751.6136,-2128.7585,25.1774,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-751.6136,-2128.7585,25.1774))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-617.3354,-2033.3344,36.7837,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-617.3354,-2033.3344,36.7837))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-497.2985,-2026.8340,50.1807,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-497.2985,-2026.8340,50.1807))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-405.7028,-1922.3386,6.9367,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-405.7028,-1922.3386,6.9367))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-247.8871,-2077.4221,36.4288,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-247.8871,-2077.4221,36.4288))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-259.2059,-2181.5681,29.0083,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-259.2059,-2181.5681,29.0083))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SendClientMessage(playerid, COLOR_YELLOW, "[Диллер]: Отлично, орудие разгружено, возьмем деньги и возвращаемся в деревню.");//наезжаем на чекпоинт появляется текст
	         SendClientMessage(playerid, COLOR_RED, "***Фермер достал деньги и передал их Диллеру***");
	         SetPlayerCheckpoint(playerid,-411.2212,-2262.9612,48.1845,4.0);//
	    }
	    else if(PlayerToPoint(4,playerid,-411.2212,-2262.9612,48.1845))//
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-654.2556,-2480.6492,34.7358,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-654.2556,-2480.6492,34.7358))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-735.8536,-2651.9043,83.6829,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-735.8536,-2651.9043,83.6829))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-840.5416,-2680.2444,96.7009,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-840.5416,-2680.2444,96.7009))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1052.3419,-2678.2585,41.1369,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1052.3419,-2678.2585,41.1369))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1164.3860,-2639.0437,11.7479,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1164.3860,-2639.0437,11.7479))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1393.0970,-2631.9333,32.3107,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1393.0970,-2631.9333,32.3107))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1770.9169,-2496.7207,9.8719,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1770.9169,-2496.7207,9.8719))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1917.1509,-2438.9282,30.6174,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1917.1509,-2438.9282,30.6174))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-1977.6746,-2478.7478,30.7554,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-1977.6746,-2478.7478,30.7554))
    	{
	         DisablePlayerCheckpoint(playerid);
	         SetPlayerCheckpoint(playerid,-2078.9619,-2548.1968,30.6073,4.0);
	    }
	    else if(PlayerToPoint(4,playerid,-2078.9619,-2548.1968,30.6073))
    	{
		{
 	         DisablePlayerCheckpoint(playerid);//удаляется чекпоинт
	         Per1[playerid] = 0;//закнчивается работа
	         GivePlayerMoney(playerid, 15000);//выдача денег за работу
	         SetVehicleToRespawn(GetPlayerVehicleID(playerid));//машина на котрой работал спавнится на место
	         SendClientMessage(playerid, COLOR_YELLOW, "[Диллер]: *Спасибо за работу. Держи свою долю $15 000.");//текст на завершении работы
	         }
	     }
	}
	}
4. Теперь надо добавить команду. Находим public OnPlayerCommandText(playerid, cmdtext[])
И добавляем:
PHP:
if(strcmp(cmd, "/per", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
		{
			new newcar = GetPlayerVehicleID(playerid);
			if(PlayerToPoint(50.0, playerid, -1703.9105,15.6887,3.5547))//место, откуда можно начать работу.
			{
				if(newcar == per_[0] || newcar == per_[1] || newcar >= per_[2] && newcar <= per_[3])//машины на которых можно работать.
				{
					SendClientMessage(playerid, COLOR_YELLOW, "[Незнакомец]: Езжай в деревню и загрузи орудие.");
					SendClientMessage(playerid, COLOR_LIGHTRED, "[Незнакомец]: Я на карте отметил как ехать(красные маяки)");//прописали команду, появляется текст и 1 чекпоинт
					SetPlayerCheckpoint(playerid,-2085.1606,-2562.6553,30.6906,4.0);//1 чекпоинт
					Per1[playerid] = 1;//начинается работа
				}
			}
		}
		printf("Использовалась команда %s",cmd);//если использовалась эта команда.(не обязательно)
		return 1;
	}
Вот и все готово, работа есть. Теперь для работы нужны машины, у каждого они по разному сделаны, но у меня так.

к new добавляем:
PHP:
new per_[4];
Находим public OnPlayerStateChange(playerid, newstate, oldstate)
и добавляем:

PHP:
if(newcar == per_[0] || newcar == per_[1] || newcar >= per_[2] && newcar <= per_[3])//сами машины
		{
		    if(PlayerInfo[playerid][pLevel] > 2)//Если уровень игрока больше 2, выкидывает из машины(я делал работу только для новичков)
		    {
		        ShowPlayerDialog(playerid,3000,DIALOG_STYLE_MSGBOX,"Сообщение:","Эта работа только для 1-2 лвл!"," Ок"," ОК ");//если игрок больше 2 лвл вылезает это диалоговое окно.
		        RemovePlayerFromVehicle(playerid);//выкинуло из машины.
		    }
		}
И последнее, добавляем сами машины.
В public OnGameModeInit добавляем:
PHP:
per_[0] = AddStaticVehicle(459,-1718.3655,12.8253,3.7342,312.0233,0,0); 
per_[1] = AddStaticVehicle(459,-1714.9069,8.8416,3.7759,312.5128,0,0); 
per_[2] = AddStaticVehicle(478,-2086.1196,-2570.8796,31.5845,319.3761,1,3); 
AddStaticVehicle(478,-2082.5498,-2574.0730,31.4674,319.4086,1,3); 
per_[3] = AddStaticVehicle(478,-2079.2261,-2577.0295,31.3384,317.8540,1,3);
Ну машины можете добавить свои.

Вот и все. Спасибо за внимание:)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу