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

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

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

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

Работа добытчика гальки

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

Lester

Специалист

Здравствуйте, уважаемые пользователи Pawno-Info.ru. Сегодня я увидел эту карту. В голову пришла идея, сделать работу добытчика гальки. Суть работы собирать гальку в ящики и продавать её, 20 баксов за ящик. Работа отлично подходит для новичков. Итак, начнем.

1. Добавим счетчик ящиков.
В enum pInfo:
PHP:
pCollector,
В stock OnPlayerRegister:
PHP:
format(var, 64, "Collector=%d\n",PlayerInfo[playerid][pCollector]);fwrite(hFile, var);
В stock OnPlayerStatsUpdate:
PHP:
format(var, 32, "Collector=%d\n",PlayerInfo[playerid][pCollector]);fwrite(hFile, var);
В stock OnPlayerLogin:
PHP:
if( strcmp( key , "Collector" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCollector] = strval( val ); }
2. Добавим таймер сбора гальки.
Ко всем new:
PHP:
new IsCollecting[MAX_PLAYERS];
В public SetPlayerUnjail():
PHP:
                if(IsCollecting[i] > 0)
			{
				if(IsCollecting[i] == 1)
				{
				SendClientMessage(i,COLOR_WHITE," ИНФО: Несите ящик на склад");
				SetPlayerCheckpoint(i,6.6365,-1180.2585,5.7017,1.5);
				SetPlayerAttachedObject(i,0,2040,1,0.11,0.36,0.0,90.0,90.0,2,2,2);
				ClearAnimations(i);
				ApplyAnimation(i,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
				SetPVarInt(i,"collector_point",2);
				}
				if(IsCollecting[i] == 18)
				{
				         // new sendername[MAX_PLAYER_NAME];
					//GetPlayerName(i, sendername, sizeof(sendername));
					//format(string, sizeof(string), "* %s начал собирать гальку", sendername);
					//ProxDetector(20.0, i, string, COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS);
				        ClearAnimations(i);
				        DisablePlayerCheckpoint(i);
					ApplyAnimation(i, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
				}
				if(IsCollecting[i] == 17)
				{
					ApplyAnimation(i, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
				}
				if(IsCollecting[i] == 14)
				{
					ApplyAnimation(i, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
				}
				if(IsCollecting[i] == 11)
				{
					ApplyAnimation(i, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
				}
				if(IsCollecting[i] == 8)
				{
					ApplyAnimation(i, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
				}
				if(IsCollecting[i] == 5)
				{
					ApplyAnimation(i, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
				}
				if(IsCollecting[i] == 2)
				{
					ApplyAnimation(i, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
				}
			IsCollecting[i] -= 1;
			}
3. Добавляем саму работу.
Добавляем define:
PHP:
#define COLLECTOR_DIALOG_ID 2800
В public OnDialogResponse:
PHP:
if(dialogid == COLLECTOR_DIALOG_ID)
	{
		if(response)
		{
			new string[256];
			if(listitem == 0)
			{
				if(!IsPlayerInRangeOfPoint(playerid,5,30.3152,-1171.0383,6.4702)) return SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы не на карьере");
				if(GetPVarInt(playerid,"collector_use") == 0)
				{
					SetPlayerSkin(playerid,16);
					SetPVarInt(playerid,"collector_use",1);
					return SendClientMessage(playerid,COLOR_WHITE," ИНФО: Вы переоделись в рабочую одежду");
				}
				else
				{
					SetPlayerSkin(playerid, PlayerInfo[playerid][pModel]);
					SetPVarInt(playerid,"collector_use",0);
					return SendClientMessage(playerid,COLOR_WHITE," ИНФО: Вы переоделись в свою одежду");
				}
			}
			else if(listitem == 1)
			{
				if(!IsPlayerInRangeOfPoint(playerid,5,30.3152,-1171.0383,6.4702)) return SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы не на карьере");
				if(GetPVarInt(playerid,"collector_use") == 1)
				{
					SetPVarInt(playerid,"collector_point",1); SetPVarInt(playerid,"collector_job",1);
     				       SetPlayerCheckpoint(playerid,4.6764,-1122.9264,5.5098,10);
					return SendClientMessage(playerid,COLOR_WHITE," ИНФО: Вы начали работу добытчика гальки, идите собирать гальку");
				}
				else return SendClientMessage(playerid,COLOR_WHITE," ИНФО: Сначало нужно переодеться");
			}
			else if(listitem == 2)
			{
				if(GetPVarInt(playerid,"collector_job") == 1)
				{
					DisablePlayerCheckpoint(playerid); ClearAnimations(playerid); RemovePlayerAttachedObject(playerid,0);
					SetPVarInt(playerid,"collector_point",0); SetPVarInt(playerid,"collector_job",0);
					return SendClientMessage(playerid,COLOR_WHITE," ИНФО: Работа окончена");
				}
				else return SendClientMessage(playerid,COLOR_WHITE," ИНФО: Вы еще не начинали работать");
			}
			else if(listitem == 3)
			{
				if(!IsPlayerInRangeOfPoint(playerid,5,30.3152,-1171.0383,6.4702)) return SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы не на карьере");
				if(PlayerInfo[playerid][pCollector] != 0)
				{
					GivePlayerMoney(playerid,PlayerInfo[playerid][pCollector]*20); //20 - цена за ящик, вы можете поменять на свою цену
					format(string,sizeof(string)," ИНФО: Вы заработали %d$",PlayerInfo[playerid][pCollector]*20);
					SendClientMessage(playerid,COLOR_WHITE,string); PlayerInfo[playerid][pCollector] = 0;
					return 1;
				}
				else return SendClientMessage(playerid,COLOR_WHITE," ИНФО: Вы не принесли не одного ящика");
			}
		}
		return 1;
	}
В public SetPlayerUnjail():
PHP:
if(GetPVarInt(playerid,"collector_job") == 1)
	{
		if(GetPVarInt(playerid,"collector_point") == 1 && IsPlayerInRangeOfPoint(playerid,20,4.6764,-1122.9264,5.5098))
		{
			IsCollecting[playerid] = 18; // Таймер, не менять!
		}
		if(GetPVarInt(playerid,"collector_point") == 2 && IsPlayerInRangeOfPoint(playerid,2,6.6365,-1180.2585,5.7017))
		{
			new string[258];
			PlayerInfo[playerid][pCollector]+=1;
			//SBizzInfo[9][sbProducts]+=1; // продукты в склад (CRP)
			format(string,sizeof(string)," ИНФО: Вы принесли %d ящик(ов), несите следующий",PlayerInfo[playerid][pCollector]);
			SendClientMessage(playerid,COLOR_WHITE,string);
			ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
			DisablePlayerCheckpoint(playerid);
			if(IsPlayerAttachedObjectSlotUsed(playerid,0)) RemovePlayerAttachedObject(playerid,0);
			SetPlayerCheckpoint(playerid,2.6767,-1105.6285,4.3605,1.5);
			SetPVarInt(playerid,"collector_point",1);
		}
	}
В public OnPlayerCommandText добавляем команду вызова диалога:
PHP:
if(strcmp(cmd, "/collector", true) == 0)
	{
		ShowPlayerDialog(playerid,COLLECTOR_DIALOG_ID,DIALOG_STYLE_LIST,"Работа Добытчика","Переодеться\nНачать работу\nОкончить работу\nПолучить зарплату","Выбор","Отмена");
		return 1;
	}
В public OnGameModeInit добавляем пикап и карьер:
PHP:
 AddStaticPickup(1275, 2, 30.3152,-1171.0383,6.4702); // собиратель
// Добыча Гальки
	CreateDynamicObject(1297, -113.39, -1177.81, 4.93,   0.00, 0.00, -18.74);
	CreateDynamicObject(1297, -104.09, -1158.20, 4.93,   0.00, 0.00, -18.74);
	CreateDynamicObject(16301, 12.72, -1140.11, 10.68,   0.00, 0.00, -77.50);
	CreateDynamicObject(16314, 16.76, -1158.86, 13.59,   0.00, 0.00, 101.50);
	CreateDynamicObject(16314, 17.86, -1164.27, 13.59,   0.00, 0.00, -78.50);
	CreateDynamicObject(16301, 14.71, -1187.81, 12.96,   0.00, -2.00, -100.50);
	CreateDynamicObject(16302, 11.29, -1205.19, 11.16,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 20.90, -1189.18, 7.75,   0.00, 0.00, 0.00);
	CreateDynamicObject(1684, 26.8371, -1168.6466, 7.4915,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 10.60, -1135.60, 1.58,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 2.71, -1113.68, 2.81,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 21.37, -1200.34, 8.56,   0.00, 0.00, 0.00);
	CreateDynamicObject(12943, 3.53, -1173.54, 5.42,   0.00, 0.00, -200.00);
	CreateDynamicObject(1482, 0.12, -1178.54, 6.44,   0.00, 0.00, 70.00);
	CreateDynamicObject(16302, 7.46, -1174.82, 2.32,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 7.46, -1174.82, 2.32,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 5.87, -1173.87, 2.32,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 28.66, -1199.77, 12.20,   0.00, 0.00, 0.00);
	CreateDynamicObject(16302, 42.43, -1181.61, 11.34,   0.00, 0.00, 353.16);
	CreateDynamicObject(16302, -0.27, -1172.61, -38.80,   0.00, 0.00, 0.00);

И напоследок в public OnPlayerKeyStateChange:
PHP:
if(newkeys & KEY_SPRINT && newkeys & KEY_JUMP)
	{
        if(GetPVarInt(playerid,"collector_job") == 1 && GetPVarInt(playerid,"collector_point") == 2)
		{
			if(IsPlayerInRangeOfPoint(playerid,2,4.6764,-1122.9264,5.5098)) return 1;
			SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы рассыпали гальку, идите собирать заного");
			DisablePlayerCheckpoint(playerid);
			ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
			if(IsPlayerAttachedObjectSlotUsed(playerid,0)) RemovePlayerAttachedObject(playerid,0);
			SetPlayerCheckpoint(playerid,4.6764,-1122.9264,5.5098,10);
			SetPVarInt(playerid,"collector_point",1);
		}
	}
	if(newkeys == KEY_FIRE)
	{
		if(GetPVarInt(playerid,"collector_job") == 1 && GetPVarInt(playerid,"collector_point") == 2)
		{
			if(IsPlayerInRangeOfPoint(playerid,2,2152.5310,-2270.3342,13.3086)) return 1;
			SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы рассыпали гальку, идите собирать заного");
			DisablePlayerCheckpoint(playerid);
			ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
			if(IsPlayerAttachedObjectSlotUsed(playerid,0)) RemovePlayerAttachedObject(playerid,0);
			SetPlayerCheckpoint(playerid,4.6764,-1122.9264,5.5098,10);
			SetPVarInt(playerid,"collector_point",1);
		}
	}
	if(newkeys & KEY_SECONDARY_ATTACK || (newkeys & KEY_SUBMISSION && newkeys & KEY_SECONDARY_ATTACK ))
	{
		if(GetPVarInt(playerid,"collector_job") == 1 && GetPVarInt(playerid,"collector_point") == 2)
		{
			if(IsPlayerInRangeOfPoint(playerid,2,2152.5310,-2270.3342,13.3086)) return 1;
			SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы рассыпали гальку, идите собирать заного");
			DisablePlayerCheckpoint(playerid);
			ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
			if(IsPlayerAttachedObjectSlotUsed(playerid,0)) RemovePlayerAttachedObject(playerid,0);
			SetPlayerCheckpoint(playerid,4.6764,-1122.9264,5.5098,10);
			SetPVarInt(playerid,"collector_point",1);
		}
	}
Вот и все. Работа готова :)
Скриншоты (тестовая версия):


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