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