Размер файла:
Автор: Iv@n
Описание:
FS - Новая работа - Добыча гальки - добавляет новую работу на ваш RP сервер.
Суть работы собирать гальку в ящики и продавать её, 20 баксов за ящик. Работа отлично подходит для новичков.
В enum pInfo:
Code
pCollector,
В stock OnPlayerRegister:
Code
format(var, 64, "Collector=%d\n",PlayerInfo[playerid][pCollector]);fwrite(hFile, var);
В stock OnPlayerStatsUpdate:
Code
format(var, 32, "Collector=%d\n",PlayerInfo[playerid][pCollector]);fwrite(hFile, var);
В stock OnPlayerLogin:
Code
if( strcmp( key , "Collector" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCollector] = strval( val ); }
В public SetPlayerUnjail():
Code
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;
}
{
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;
}
Добавляем define:
Code
#define COLLECTOR_DIALOG_ID 2800
В public OnDialogResponse:
Code
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;
}
{
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():
Code
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);
}
}
{
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 добавляем команду вызова диалога:
Code
if(strcmp(cmd, "/collector", true) == 0)
{
ShowPlayerDialog(playerid,COLLECTOR_DIALOG_ID,DIALOG_STYLE_LIST,"Работа Добытчика","Переодеться\nНачать работу\nОкончить работу\nПолучить зарплату","Выбор","Отмена");
return 1;
}
{
ShowPlayerDialog(playerid,COLLECTOR_DIALOG_ID,DIALOG_STYLE_LIST,"Работа Добытчика","Переодеться\nНачать работу\nОкончить работу\nПолучить зарплату","Выбор","Отмена");
return 1;
}
В public OnGameModeInit добавляем пикап и карьер:
Code
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);
// Добыча Гальки
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:
Code
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);
}
}
{
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);
}
}