F[a]ust
Умник
Для начала добавим маппинг в порту:
Ко всем new добавим склонения числительных и актера:
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
В public OnGameModeInit()
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
В конец мода
А так же добавить в public OnPlayerConnect(playerid)
Вот видео
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)
PHP:
new PortedName[3][32] = {"коробок", "коробки", "коробку"};
new ChiefPorter;
new bool:ActorHandsup[MAX_ACTORS];
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);
}
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);
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;
}
PHP:
EnablePlayerCameraTarget(playerid, 1);
Последнее редактирование:
