Размер файла:
Автор: Iv@n
Описание:
FS - Новая работа - Вор домов.
Добавляет новую работу для RP сервера.
Суть работы - грабить дома. Некоторые части кода скопированы с мода - Country Roleplay
Добавляем в public OnPlayerCommandText
Code
if(strcmp(cmd, "/door", true) == 0)
{
if(PlayerInfo[playerid][pJob] == 10) // Проверка на работу. ID работы вора - 10. Можете поменять на свой ID.
{
for(new i = 0; i < sizeof(HouseInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
{
switch(random(6))
{
case 0..4:
{
SendClientMessage(playerid, COLOR_GREY, " Вам не удалось вскрыть дверь");
}
case 5:
{
PlayerEnterHouse(playerid,i); GameTextForPlayer(playerid, "~w~Door ~g~Open", 5000, 1);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s вскрыл дверь дома", sendername);
ProxDetector(15.0,playerid,string,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS); // Цвет можете поменять на свой
SendClientMessage(playerid, COLOR_GREEN, " Вы вскрыли дверь дома!");
HouseInfo[i][hLock] = 0; // Дверь открылась
}
}
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "ИНФО: Вы не вор!");
}
}
{
if(PlayerInfo[playerid][pJob] == 10) // Проверка на работу. ID работы вора - 10. Можете поменять на свой ID.
{
for(new i = 0; i < sizeof(HouseInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
{
switch(random(6))
{
case 0..4:
{
SendClientMessage(playerid, COLOR_GREY, " Вам не удалось вскрыть дверь");
}
case 5:
{
PlayerEnterHouse(playerid,i); GameTextForPlayer(playerid, "~w~Door ~g~Open", 5000, 1);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* %s вскрыл дверь дома", sendername);
ProxDetector(15.0,playerid,string,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS,COLOR_NEWS); // Цвет можете поменять на свой
SendClientMessage(playerid, COLOR_GREEN, " Вы вскрыли дверь дома!");
HouseInfo[i][hLock] = 0; // Дверь открылась
}
}
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "ИНФО: Вы не вор!");
}
}
Добавляем ко всем new:
Code
new HouseRob[MAX_PLAYERS];
new HouseRob2[MAX_PLAYERS];
new HouseRob3[MAX_PLAYERS];
new HouseRob2[MAX_PLAYERS];
new HouseRob3[MAX_PLAYERS];
В public OnPlayerCommandText:
Code
if(strcmp(cmd,"/houserob",true)==0)
{
for(new h = 0; h < sizeof(HouseInfo); h++)
{
if(PlayerInfo[playerid][pJob] == 10) // Проверка на работу вора
{
if(HouseRob3[playerid] ==1) return SendClientMessage(playerid, COLOR_GREY, " Вы уже взяли вещь"); // Если игрок уже взял вещь
if(HouseRob[playerid] !=0) return SendClientMessage(playerid, COLOR_GREY, " Вы уже грабили дом в этом часу");
if(IsPlayerInRangeOfPoint(playerid,10,HouseInfo[h][hExitx], HouseInfo[h][hExity], HouseInfo[h][hExitz])) // Надо быть внутри дома
{
switch(random(4))
{
case 0:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли видеомагнитофон, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,1783,1,0.11,0.36,0.0,0.0,90.0); // Видеомагнитофон
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=150; // Деньги, которые были в доме - отнимаются
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
case 1:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли телевизор, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,2648,1,0.11,0.36,0.0,0.0,90.0); // Теливизор
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=200;
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
case 2:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли магнитофон, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,2102,1,0.11,0.36,0.0,0.0,90.0); // Магнитофон
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=50;
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
case 3:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли игровую приставку, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,2028,1,0.11,0.36,0.0,0.0,90.0); // Приставка
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=100;
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
}
HouseRob3[playerid] = 1;
HouseRob2[playerid] = 1;
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
}
}
return 1;
}
{
for(new h = 0; h < sizeof(HouseInfo); h++)
{
if(PlayerInfo[playerid][pJob] == 10) // Проверка на работу вора
{
if(HouseRob3[playerid] ==1) return SendClientMessage(playerid, COLOR_GREY, " Вы уже взяли вещь"); // Если игрок уже взял вещь
if(HouseRob[playerid] !=0) return SendClientMessage(playerid, COLOR_GREY, " Вы уже грабили дом в этом часу");
if(IsPlayerInRangeOfPoint(playerid,10,HouseInfo[h][hExitx], HouseInfo[h][hExity], HouseInfo[h][hExitz])) // Надо быть внутри дома
{
switch(random(4))
{
case 0:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли видеомагнитофон, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,1783,1,0.11,0.36,0.0,0.0,90.0); // Видеомагнитофон
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=150; // Деньги, которые были в доме - отнимаются
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
case 1:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли телевизор, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,2648,1,0.11,0.36,0.0,0.0,90.0); // Теливизор
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=200;
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
case 2:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли магнитофон, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,2102,1,0.11,0.36,0.0,0.0,90.0); // Магнитофон
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=50;
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
case 3:
{
SendClientMessage(playerid, COLOR_GREEN, "Вы украли игровую приставку, погрузите награбленное в воровской грузовик: /loadrob");
SetPlayerAttachedObject(playerid,1,2028,1,0.11,0.36,0.0,0.0,90.0); // Приставка
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerCheckpoint(playerid,365.29998779,-88.19999695,1.00000000,4.0); // Место сбыта краденного, по умолчанию в Блуберри на стройки, но вы можете изменить
GetPlayerName(playerid, sendername, sizeof(sendername));
HouseInfo[h][hTakings] -=100;
SendClientMessage(playerid, COLOR_WHITE, "Место сбыта краденого помечено красной меткой");
}
}
HouseRob3[playerid] = 1;
HouseRob2[playerid] = 1;
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
}
}
return 1;
}
В pInfo добавляем: pRob. Это будет счетчиком награбленных вещей.
В stock OnPlayerRegister добавляем:
Code
format(var, 64, "Rob=%d\n",PlayerInfo[playerid][pRob]);fwrite(hFile, var);
В stock OnPlayerStatsUpdate добавляем:
Code
format(var, 32, "Rob=%d\n",PlayerInfo[playerid][pRob]);fwrite(hFile, var);
В stock OnPlayerLogin добавляем:
Code
if( strcmp( key , "Rob" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pRob] = strval( val ); }
В public OnPlayerCommandText:
Code
if(strcmp(cmd, "/loadrob", true) == 0)
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(PlayerInfo[playerid][pJob] == 10)
{
new Float:pos[3]; GetVehiclePos(i,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,4,pos[0],pos[1],pos[2]))
{
if(GetVehicleModel(i) == 498) // Boxville - воровской грузовик, вы можете сменить ID
{
if(HouseRob2[playerid] !=1) return SendClientMessage(playerid, COLOR_GREY, " Вы ничего не украли!");
if(PlayerInfo[playerid][pRob] == 10) return SendClientMessage(playerid, COLOR_GREY, " В грузовик больше не вмещаются краденные вещи!"); // Если уже в грузовике 10 предметов
PlayerInfo[playerid][pRob] += 1;
RemovePlayerAttachedObject(playerid, 1); // Удаляем объект
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
HouseRob3[playerid] = 0;
HouseRob2[playerid] = 0;
SendClientMessage(playerid, COLOR_GREEN, " Вы загрузили награбленное в грузовик.");
SendClientMessage(playerid, COLOR_GREY, " Выкрадите ещё что-нибудь из дома или везите грузовик на место сбыта краденого: /sellrob");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Рядом нет воровского грузовика");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
}
}
return 1;
}
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(PlayerInfo[playerid][pJob] == 10)
{
new Float:pos[3]; GetVehiclePos(i,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,4,pos[0],pos[1],pos[2]))
{
if(GetVehicleModel(i) == 498) // Boxville - воровской грузовик, вы можете сменить ID
{
if(HouseRob2[playerid] !=1) return SendClientMessage(playerid, COLOR_GREY, " Вы ничего не украли!");
if(PlayerInfo[playerid][pRob] == 10) return SendClientMessage(playerid, COLOR_GREY, " В грузовик больше не вмещаются краденные вещи!"); // Если уже в грузовике 10 предметов
PlayerInfo[playerid][pRob] += 1;
RemovePlayerAttachedObject(playerid, 1); // Удаляем объект
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
HouseRob3[playerid] = 0;
HouseRob2[playerid] = 0;
SendClientMessage(playerid, COLOR_GREEN, " Вы загрузили награбленное в грузовик.");
SendClientMessage(playerid, COLOR_GREY, " Выкрадите ещё что-нибудь из дома или везите грузовик на место сбыта краденого: /sellrob");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Рядом нет воровского грузовика");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
}
}
return 1;
}
Продаем награбленное.
Code
if(strcmp(cmd,"/sellrob",true)==0)
{
for(new h = 0; h < sizeof(HouseInfo); h++)
{
new tmpcar = GetPlayerVehicleID(playerid);
if(PlayerInfo[playerid][pJob] == 10)
{
if(!IsPlayerInRangeOfPoint(playerid,10,365.29998779,-88.19999695,1.00000000)) return SendClientMessage(playerid, COLOR_GREY, " Вы не на месте сбыта краденого!"); // Смените координаты на свои.
if(PlayerInfo[playerid][pRob] != 0) // Если у игрока есть краденная техника
{
GivePlayerMoney(playerid,PlayerInfo[playerid][pRob]*50); // По умолчанию за краденную вещь дают 50 баксов, вы можете сменить
format(string,sizeof(string)," ИНФО: Вы заработали %d$ за украденные вещи",PlayerInfo[playerid][pRob]*50); // Тут тоже
SendClientMessage(playerid,COLOR_WHITE,string);
DisablePlayerCheckpoint(playerid); PlayerInfo[playerid][pRob] = 0;
HouseRob2[playerid] = 0;
HouseRob3[playerid] = 0;
return 1;
}
else return SendClientMessage(playerid,COLOR_WHITE," Вы ничего не украли!");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
}
}
return 1;
}
{
for(new h = 0; h < sizeof(HouseInfo); h++)
{
new tmpcar = GetPlayerVehicleID(playerid);
if(PlayerInfo[playerid][pJob] == 10)
{
if(!IsPlayerInRangeOfPoint(playerid,10,365.29998779,-88.19999695,1.00000000)) return SendClientMessage(playerid, COLOR_GREY, " Вы не на месте сбыта краденого!"); // Смените координаты на свои.
if(PlayerInfo[playerid][pRob] != 0) // Если у игрока есть краденная техника
{
GivePlayerMoney(playerid,PlayerInfo[playerid][pRob]*50); // По умолчанию за краденную вещь дают 50 баксов, вы можете сменить
format(string,sizeof(string)," ИНФО: Вы заработали %d$ за украденные вещи",PlayerInfo[playerid][pRob]*50); // Тут тоже
SendClientMessage(playerid,COLOR_WHITE,string);
DisablePlayerCheckpoint(playerid); PlayerInfo[playerid][pRob] = 0;
HouseRob2[playerid] = 0;
HouseRob3[playerid] = 0;
return 1;
}
else return SendClientMessage(playerid,COLOR_WHITE," Вы ничего не украли!");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " ИНФО: Вы не вор!");
}
}
return 1;
}
Если хотите, чтобы игрок ронял вещи, то добавьте в public OnPlayerKeyStateChange:
Code
if(newkeys & KEY_SPRINT && newkeys & KEY_JUMP)
{
if(HouseRob2[playerid] == 1)
{
RemovePlayerAttachedObject(playerid,1);
SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
DisablePlayerCheckpoint(playerid);
HouseRob2[playerid] = 0;
CP[playerid] = 0;
ClearAnimations(playerid);
HouseRob3[playerid] = 0;
}
}
if(newkeys == KEY_FIRE)
{
if(HouseRob2[playerid] == 1)
{
RemovePlayerAttachedObject(playerid,1);
SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
DisablePlayerCheckpoint(playerid);
CP[playerid] = 0;
HouseRob2[playerid] = 0;
ClearAnimations(playerid);
HouseRob3[playerid] = 0;
}
}
if(newkeys & KEY_SECONDARY_ATTACK || (newkeys & KEY_SUBMISSION && newkeys & KEY_SECONDARY_ATTACK ))
{
if(HouseRob2[playerid] == 1)
{
RemovePlayerAttachedObject(playerid,1);
SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
DisablePlayerCheckpoint(playerid);
CP[playerid] = 0;
HouseRob2[playerid] = 0;
ClearAnimations(playerid);
HouseRob3[playerid] = 0;
}
}
{
if(HouseRob2[playerid] == 1)
{
RemovePlayerAttachedObject(playerid,1);
SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
DisablePlayerCheckpoint(playerid);
HouseRob2[playerid] = 0;
CP[playerid] = 0;
ClearAnimations(playerid);
HouseRob3[playerid] = 0;
}
}
if(newkeys == KEY_FIRE)
{
if(HouseRob2[playerid] == 1)
{
RemovePlayerAttachedObject(playerid,1);
SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
DisablePlayerCheckpoint(playerid);
CP[playerid] = 0;
HouseRob2[playerid] = 0;
ClearAnimations(playerid);
HouseRob3[playerid] = 0;
}
}
if(newkeys & KEY_SECONDARY_ATTACK || (newkeys & KEY_SUBMISSION && newkeys & KEY_SECONDARY_ATTACK ))
{
if(HouseRob2[playerid] == 1)
{
RemovePlayerAttachedObject(playerid,1);
SendClientMessage(playerid,COLOR_GREY," ИНФО: Вы уронили и разбили вещь!");
DisablePlayerCheckpoint(playerid);
CP[playerid] = 0;
HouseRob2[playerid] = 0;
ClearAnimations(playerid);
HouseRob3[playerid] = 0;
}
}