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

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

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

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

Мануал Работа грузчик в порту копия Trinity RPG 95%

F[a]ust

Умник
Для начала добавим маппинг в порту:
PHP:
AddStaticVehicleEx(510,2596.8999000,-2215.3000000,13.2000000,180.0000000,157,152,15); //Mountain Bike
AddStaticVehicleEx(510,2598.2000000,-2215.3000000,13.2000000,180.0000000,157,152,15); //Mountain Bike
AddStaticVehicleEx(510,2599.5000000,-2215.3999000,13.2000000,180.0000000,157,152,15); //Mountain Bike
AddStaticVehicleEx(510,2600.8999000,-2215.3999000,13.2000000,180.0000000,157,152,15); //Mountain Bike
AddStaticVehicleEx(510,2602.3000000,-2215.3999000,13.2000000,180.0000000,157,152,15); //Mountain Bike

CreateObject(10230,2681.6001000,-2262.7000000,8.0000000,0.0000000,0.0000000,0.0000000); //object(freighter_sfe) (2)
CreateObject(10229,2681.3999000,-2264.1001000,6.7000000,0.0000000,0.0000000,0.0000000); //object(freighter2b_sfe) (1)
CreateObject(10231,2680.7000000,-2264.3000000,9.0000000,0.0000000,0.0000000,0.0000000); //object(freightboxes) (1)
CreateObject(2669,2641.3999000,-2270.6001000,9.6000000,0.0000000,0.0000000,180.0000000); //object(cj_chris_crate) (1)
CreateObject(2969,2642.3000000,-2272.8000000,8.5000000,0.0000000,0.0000000,0.0000000); //object(level_ammobox) (1)
CreateObject(2969,2640.7002000,-2272.7998000,8.5000000,0.0000000,0.0000000,0.0000000); //object(level_ammobox) (2)
CreateObject(2969,2641.5000000,-2272.8000000,8.5000000,0.0000000,0.0000000,0.0000000); //object(level_ammobox) (4)
CreateObject(2969,2641.8000000,-2272.6001000,8.8000000,0.0000000,0.0000000,0.0000000); //object(level_ammobox) (5)
CreateObject(3624,2608.5000000,-2198.6001000,17.2000000,0.0000000,0.0000000,90.0000000); //object(nwwarhus) (1)
CreateObject(3626,2618.2000000,-2215.5000000,14.1000000,0.0000000,0.0000000,0.0000000); //object(dckwrkhut) (1)
CreateObject(3761,2602.2000000,-2203.7000000,14.5000000,0.0000000,0.0000000,90.0000000); //object(industshelves) (1)
CreateObject(3761,2615.3999000,-2205.8000000,14.5000000,0.0000000,0.0000000,90.0000000); //object(industshelves) (2)
CreateObject(3761,2614.8999000,-2196.2000000,14.5000000,0.0000000,0.0000000,90.0000000); //object(industshelves) (3)
CreateObject(3761,2602.5000000,-2195.5000000,14.5000000,0.0000000,0.0000000,90.0000000); //object(industshelves) (4)
CreateObject(1684,2602.2000000,-2241.5000000,14.1000000,0.0000000,0.0000000,90.0000000); //object(portakabin) (1)
CreateObject(1980,2583.3398400,-2233.7705100,0.2973300,0.0000000,0.0000000,0.0000000); //object(wilshire7dr1_law) (1)
CreateObject(3037,2639.6999500,-2254.8999000,10.1000000,28.0000000,90.0000000,0.0000000); //object(warehouse_door2b) (1)
CreateObject(1215,2637.6001000,-2250.3999000,13.1000000,0.0000000,0.0000000,0.0000000); //object(bollardlight) (2)
CreateObject(1215,2641.8000000,-2250.3999000,13.1000000,0.0000000,0.0000000,0.0000000); //object(bollardlight) (3)
CreateObject(2969,2621.8999000,-2213.8999000,13.0000000,0.0000000,0.0000000,90.0000000); //object(level_ammobox) (9)
CreateObject(2969,2621.8999000,-2214.7000000,13.0000000,0.0000000,0.0000000,90.0000000); //object(level_ammobox) (10)
CreateObject(2969,2621.8999000,-2215.5000000,13.0000000,0.0000000,0.0000000,90.0000000); //object(level_ammobox) (11)
CreateObject(2969,2621.8999000,-2216.3000000,13.0000000,0.0000000,0.0000000,90.0000000); //object(level_ammobox) (12)
CreateObject(2969,2621.8999000,-2214.5000000,13.3000000,0.0000000,0.0000000,90.0000000); //object(level_ammobox) (13)
CreateObject(2969,2621.8999000,-2215.3000000,13.3000000,0.0000000,0.0000000,90.0000000); //object(level_ammobox) (16)
CreateObject(2969,2621.8999000,-2216.1001000,13.3000000,0.0000000,0.0000000,90.0000000); //object(level_ammobox) (17)
CreateObject(2969,2622.0000000,-2214.1001000,13.4000000,0.0000000,35.0000000,90.0000000); //object(level_ammobox) (18)
CreateObject(2969,2621.5000000,-2216.6001000,13.0000000,0.0000000,40.0000000,215.0000000); //object(level_ammobox) (19)
CreateObject(996,2629.8999000,-2250.3000000,13.3000000,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (1)
CreateObject(996,2621.8000000,-2250.3000000,13.3000000,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (2)
CreateObject(996,2642.6001000,-2250.3999000,13.3000000,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (3)
CreateObject(996,2650.7000000,-2250.3000000,13.3000000,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (6)
Ко всем new добавим склонения числительных и актера:
PHP:
new PortedName[3][32] = {"коробок", "коробки", "коробку"};
new ChiefPorter;
new bool:ActorHandsup[MAX_ACTORS];
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP:
if(dialogid == 100)
	{
		if(!response) return SetCameraBehindPlayer(playerid),TogglePlayerControllable(playerid, 1);
		ShowPlayerDialog(playerid, 101, DIALOG_STYLE_LIST, "{FFFFFF}NPC {66CC33}Главный грузчик","Устроиться на работу\nУзнать о работе","Выбор", "Отмена");
	}
	if(dialogid == 101)
	{
		if(!response) return SetCameraBehindPlayer(playerid),TogglePlayerControllable(playerid, 1);
		if(listitem == 0)
		{
			InterpolateCameraPos(playerid, 2608.2410,-2244.6421,13.9999, 2605.9414,-2238.2476,13.5469, 1000,CAMERA_MOVE );
			InterpolateCameraLookAt(playerid, 2608.2410,-2244.6421,13.9999, 2604.6509,-2238.1387,13.5469, 1000, CAMERA_MOVE);
			ShowPlayerDialog(playerid, 102, DIALOG_STYLE_MSGBOX, "NPC {66CC33}Главный грузчик","\n{FFFFFF}Теперь переоденьтесь и приступите к разгрузке.\n\n{FFA500}Подсказка:{FFFFFF} для того чтобы воспользоваться раздевалкой нажмите {F5DEB3}'ALT' ", "X", "");
		}
		if(listitem == 1)
		{
			ShowPlayerDialog(playerid, 103, DIALOG_STYLE_MSGBOX, "NPC {66CC33}Главный грузчик","\n{FFFFFF}Нам требуются крепкие люди для помощи разгрузки судна.\nЗа каждую разгруженную коробку вы будите получать по 10$.", "X", "");
		}
	}

	if(dialogid == 102) {
		SetPVarInt(playerid,"porter",999);
		SetCameraBehindPlayer(playerid);
		TogglePlayerControllable(playerid, 1);
	}

	if(dialogid == 103) ShowPlayerDialog(playerid, 101, DIALOG_STYLE_LIST, "{FFFFFF}NPC {66CC33}Главный грузчик","Устроиться на работу\nУзнать о работе","Выбор", "Отмена");
	if(dialogid == 104)
	{
		if(!response) return 1;
		SetPlayerSkin(playerid,1);
		GivePlayerMoney(playerid, (GetPVarInt(playerid,"porter")-1)*10);
		DeletePVar(playerid, "porter");
		DisablePlayerCheckpoint(playerid);
	}
В public OnGameModeInit()

PHP:
ChiefPorter = CreateActor(27, 2606.2410,-2244.6421,13.5469,274.1312);
SetActorInvulnerable(ChiefPorter);
Create3DTextLabel("{FFFFFF}NPC {66CC33}Главный грузчик",0xFFFFFFFF,2606.2410,-2244.6421,13.5469+1.1, 15.0, 0, 0);
CreatePickup(1275, 23, 2604.6509,-2238.1387,13.5469, -1);
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP:
if(newkeys == 1024)
	{
		if(IsPlayerInRangeOfPoint(playerid,1.0,2604.6509,-2238.1387,13.5469) && GetPVarInt(playerid,"porter") == 999)
		{
			ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "Порт","\n-{66CC33}Главный грузчик: {FFFFFF} теперь отправляйся на судно и начинай его разгружать.\n\n{FFA500}Подсказка:{FFFFFF}чтобы взять коробку нажмите {F5DEB3}'Right click'","X", "");
			SetPlayerSkin(playerid,27);
			SetPlayerCheckpoint(playerid, 2641.3691,-2271.4368,9.3824, 3.0);
			SetPVarInt(playerid,"porter",1);
		}
	}

	if(newkeys == 128)
	{

		new playerTargetActor = GetPlayerCameraTargetActor(playerid);
		if(playerTargetActor != INVALID_ACTOR_ID)
		{
			new Float:x1, Float:y1, Float:z1,Float:x2,Float:y2,Float:z2;
			new b_msg[144];
			GetActorPos(playerTargetActor, x1, y1, z1);

			if(!ActorHandsup[playerTargetActor] && IsPlayerInRangeOfPoint(playerid,3.0,x1,y1,z1))
			{
				if(GetPVarInt(playerid,"BoxInHands")) return ShowPlayerDialog(playerid,999,DIALOG_STYLE_MSGBOX,"{FFFFFF}NPC {66CC33}Главный грузчик","\n- {66CC33}Главный грузчик: {FFFFFF}Если хочешь рассчитаться сначала отнеси коробку","Х","");
				if(GetPVarInt(playerid,"porter") >= 1 && GetPVarInt(playerid,"porter") !=999)
				{
					format(b_msg, 144, "\n- {66CC33}Главный грузчик: {FFFFFF}Ты помог нам разгрузить %d %s и заработал %d$.\nХочешь забрать свои деньги и закончить смену?\n", GetPVarInt(playerid,"porter")-1,PortedName[decline(GetPVarInt(playerid,"porter")-1)],(GetPVarInt(playerid,"porter")-1)*10);
					ShowPlayerDialog(playerid,104,DIALOG_STYLE_MSGBOX,"{FFFFFF}NPC {66CC33}Главный грузчик",b_msg,"Да","Нет");
				}else{
					GetPlayerPos(playerid,x2,y2,z2);
					InterpolateCameraPos(playerid, x2, y2, z2, 2608.2410,-2244.6421,13.9999, 1000,CAMERA_MOVE );
					InterpolateCameraLookAt(playerid, x2, y2, z2, 2606.2410,-2244.6421,13.5469, 1000, CAMERA_MOVE);
					TogglePlayerControllable(playerid, false);
					ShowPlayerDialog(playerid,100,DIALOG_STYLE_MSGBOX,"{FFFFFF}NPC {66CC33}Главный грузчик","\n- {66CC33}Главный грузчик: {FFFFFF}Привет, решил подзаработать?","Да","Нет");
				}
			}
		}

		if(IsPlayerInRangeOfPoint(playerid,3.0,2620.5974,-2215.2061,13.8841) || IsPlayerInRangeOfPoint(playerid,3.0,2641.3691,-2271.4368,9.3824))
		{
			if(GetPVarInt(playerid,"porter") == 999) return true;
			if(IsPlayerInRangeOfPoint(playerid,3.0,2620.5974,-2215.2061,13.8841) && !GetPVarInt(playerid,"BoxInHands")) return true;
			if(IsPlayerInRangeOfPoint(playerid,3.0,2641.3691,-2271.4368,9.3824) && GetPVarInt(playerid,"BoxInHands")) return true;
			if(GetPVarInt(playerid,"porter") >= 1){
				ApplyAnimation(playerid, "CARRY", "liftup", 4.0, 0, 1, 1, 1, 1, 1);
				SetTimerEx("climb",500,false,"i",playerid);
			}
		}
	}
В конец мода
PHP:
forward climb(playerid);
public climb(playerid)
{
	if(!GetPVarInt(playerid,"BoxInHands") && IsPlayerInRangeOfPoint(playerid,3.0,2641.3691,-2271.4368,9.3824))
	{
		SetPlayerAttachedObject(playerid, 0, 3052, 5, -0.013999, 0.090999, 0.169999, -83.699974, -8.700000, -73.000007, 1.000000, 1.000000, 1.000000, 0, 0);
		SetPlayerSpecialAction(playerid,SPECIAL_ACTION_CARRY);
		ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,0,1,1,1,1);
		DisablePlayerCheckpoint(playerid);
		SetPlayerCheckpoint(playerid, 2620.5974,-2215.2061,13.8841, 3.0);
		SetPVarInt(playerid,"BoxInHands",true);
	}
	if(GetPVarInt(playerid,"BoxInHands") && IsPlayerInRangeOfPoint(playerid,3.0,2620.5974,-2215.2061,13.8841))
	{
		new string[32];
		DisablePlayerCheckpoint(playerid);
		SetPVarInt(playerid,"porter",GetPVarInt(playerid,"porter")+1);
		format(string,sizeof(string),"Вы перенесли %d %s",GetPVarInt(playerid,"porter")-1,PortedName[decline(GetPVarInt(playerid,"porter")-1)]);
		SendClientMessage(playerid,0xFF9900AA,string);

		SetPlayerCheckpoint(playerid, 2641.3691,-2271.4368,9.3824, 3.0);
		RemovePlayerAttachedObject(playerid, 0);
		SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
		ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);
		SetPVarInt(playerid,"BoxInHands",false);
	}
}

stock decline(n)
{
	if(n == 0) return 0;
	n = n % 100;
	new n1 = n % 10;
	if (n > 10 && n < 20) return 0;
	if (n1 > 1 && n1 < 5) return 1;
	if (n1 == 1) return 2;
	return 0;
}
А так же добавить в public OnPlayerConnect(playerid)
PHP:
EnablePlayerCameraTarget(playerid, 1);
Вот видео
 
Последнее редактирование:
Сверху Снизу