kentosss
Дебютант
Есть скрипт грузчика , нужно убрать тут баг , баг заключается в том что игрок может читернуть себе денег с помощью телепорта , перемещаясь с одного маркера на другой.
Вот сам скрипт:
#include <a_samp>
#define DIALOG_RAZDEVALKA 5674
#define COLOR_LIGHTBLUE 0x33CCFFFF
new cash,clothes;
new bool:Works[MAX_PLAYERS];
new bool
rorab[MAX_PLAYERS];
new JobCP[MAX_PLAYERS];
new JobAmmount[MAX_PLAYERS];
new OldSkin[MAX_PLAYERS];
new JobOffer[MAX_PLAYERS];
new Employer[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Работа грузчика v_1.0 by denizx");
print("--------------------------------------\n");
cash = CreatePickup(1274, 23, 2127.5701,-2275.1938,20.6719, -1);
clothes = CreatePickup(1275, 23, 2137.9661,-2282.2017,20.6719, -1);
CreateObject(2060,2172.89526367,-2256.86108398,12.46142387,0.00000000,0.00000000,44.00000000);
CreateObject(2060,2172.89453125,-2256.86035156,12.46142387,0.00000000,0.00000000,43.99475098);
CreateObject(2060,2172.42309570,-2256.42822266,12.46099281,0.00000000,0.00000000,47.25003052);
CreateObject(2060,2173.31835938,-2257.36694336,12.46148300,0.00000000,0.00000000,43.75000000);
CreateObject(2060,2172.75854492,-2256.49853516,12.77687645,0.00000000,0.00000000,315.24987793);
CreateObject(2060,2172.41381836,-2256.85815430,12.77693558,0.00000000,0.00000000,316.25000000);
CreateObject(2060,2173.61865234,-2257.31201172,12.77693558,0.00000000,0.00000000,136.00000000);
CreateObject(2060,2173.29321289,-2257.70800781,12.77693558,0.00000000,0.00000000,134.00000000);
CreateObject(2060,2173.73193359,-2257.77856445,12.46504116,0.00000000,0.00000000,42.00000000);
CreateObject(2060,2172.61962891,-2256.63281250,13.09232903,0.00000000,0.00000000,0.00000000);
CreateObject(2060,2229.29809570,-2286.05883789,13.53178787,0.00000000,0.00000000,226.00000000);
CreateObject(2060,2229.61987305,-2286.45825195,13.53178787,0.00000000,0.00000000,45.00000000);
CreateObject(2060,2230.00610352,-2286.81738281,13.53178787,0.00000000,0.00000000,44.00000000);
CreateObject(2060,2230.39746094,-2287.23168945,13.53178787,0.00000000,0.00000000,44.00000000);
CreateObject(2060,2229.35400391,-2286.54858398,13.80724049,0.00000000,0.00000000,134.00000000);
CreateObject(2060,2230.20898438,-2286.95312500,13.82723999,0.00000000,0.00000000,102.00000000);
return 1;
}
public OnPlayerConnect(playerid)
{
Works[playerid] = false;
Prorab[playerid] = false;
JobCP[playerid] = 0;
JobAmmount[playerid] = 0;
OldSkin[playerid] = 0;
JobOffer[playerid] = 999;
Employer[playerid] = 999;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx,giveplayerid;
new cmd[64],tmp[128],string[128],point[128];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd,"/loader",true)==0)
{
point = strtok(cmdtext, idx);
if(!strlen(point))
{
SendClientMessage(playerid, 0xFFFFFFFF, "/loader [команда]");
SendClientMessage(playerid, 0xFFFFFFFF, "{008000}[ДОСТУПНО]{FFFFFF} contract - предложить контракт | payday - зарплата");
return 1;
}
if(strcmp(point,"contract",true) == 0)
{
if(Prorab[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Недостаточно прав для использования команды.");
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Чтобы использвать команду, необходимо выйти на работу.");
//if(!IsPlayerInRangeOfPoint(playerid,5.0,2127.5701,-2275.1938,20.6719)) SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid,0xFFFFFFFF,"/gcontract [id игрока].");
giveplayerid = strval(tmp);
if(giveplayerid == playerid) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не можешь заключть контракт с собой.");
if(Prorab[giveplayerid] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не можешь заключать контракт с прорабом.");
if(Works[giveplayerid] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок уже работает.");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не в сети.");
if(!ProxDetectorS(5.0, playerid, giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
if(JobOffer[giveplayerid] == playerid) return SendClientMessage(playerid,0xFFFFFFFF,"Ты уже предложил игроку контракт.");
JobOffer[giveplayerid] = playerid;
new giveplayer[40],sendername[40];
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Ты предложил контакт %s.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Прораб %s предлагает тебе контракт.", sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
SendClientMessage(giveplayerid,0xFFFFFFFF,"/givecontract - подписать контракт (преимущества: $50 за мешок).");
}
if(strcmp(point,"accept",true) == 0)
{
if(JobOffer[playerid] == 999) return SendClientMessage(playerid,0xFFFFFFFF,"Никто не предлагал тебе контракт.");
if(Employer[playerid] != 999) return SendClientMessage(playerid,0xFFFFFFFF,"Ты уже заключал контракт.");
if(Prorab[JobOffer[playerid]] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не прораб.");
if(Works[JobOffer[playerid]] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не на работе.");
//if(!IsPlayerInRangeOfPoint(playerid,5.0,2127.5701,-2275.1938,20.6719)) SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
if(!IsPlayerConnected(JobOffer[playerid])) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не в сети.");
if(!ProxDetectorS(5.0, playerid, JobOffer[playerid])) return SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
new giveplayer[40],sendername[40];
GetPlayerName(JobOffer[playerid], giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
Employer[playerid] = JobOffer[playerid]; JobOffer[playerid] = 0;
format(string, sizeof(string), "* Ты заключил контакт с %s.", Employer[playerid]);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* %s заключил с тобой контракт.", sendername);
SendClientMessage(Employer[playerid], COLOR_LIGHTBLUE, string);
SendClientMessage(Employer[playerid],0xFFFFFFFF,"/gpayday - выдать зарплату.");
}
if(strcmp(point,"payday",true) == 0)
{
if(Prorab[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Недостаточно прав для использования команды.");
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Чтобы использвать команду, необходимо выйти на работу.");
if(!IsPlayerInRangeOfPoint(playerid,5.0,2127.5701,-2275.1938,20.6719))return SendClientMessage(playerid,0xFFFFFFFF,"Зарплату выдавать можно только в офисе.");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid,0xFFFFFFFF,"/gpayday [id игрока].");
giveplayerid = strval(tmp);
if(Employer[giveplayerid] != playerid) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не работает на тебя.");
if(Works[giveplayerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не на работе.");
if(JobAmmount[giveplayerid] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не перенес ни одного мешка.");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не в сети.");
if(!ProxDetectorS(5.0, playerid, giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
new giveplayer[40];
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GivePlayerMoney(playerid,JobAmmount[playerid]*50);
format(string,sizeof(string)," Ты получил {228B22}$%d{FFFFFF} за свою работу. Приходи еще.",JobAmmount[playerid]*50);
SendClientMessage(playerid,0xFFFFFFFF,string);
GivePlayerMoney(giveplayerid,JobAmmount[playerid]*25);
format(string,sizeof(string)," Ты получил {228B22}$%d{FFFFFF} от работы %s.",JobAmmount[playerid]*25, giveplayer);
SendClientMessage(giveplayerid,0xFFFFFFFF,string);
JobAmmount[playerid] = 0;
}
return 1;
}
if(strcmp(cmd,"/prorab",true) == 0)
{
Prorab[playerid] = true;
return 1;
}
return 0;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(Works[playerid])
{
if(JobCP[playerid] == 1 && IsPlayerInRangeOfPoint(playerid,2.0,2230.3528,-2286.1353,14.3751))
{
SendClientMessage(playerid,0xFFFFFFFF," Ты взял мешок. Неси его на склад.");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,2172.4146,-2255.5405,13.3041,1.5);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerAttachedObject(playerid, 1 , 2060, 1,0.11,0.36,0.0,0.0,90.0);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
JobCP[playerid] = 2;
}
if(JobCP[playerid] == 2 && IsPlayerInRangeOfPoint(playerid,2.0,2172.4146,-2255.5405,13.3041))
{
new string[64];
SendClientMessage(playerid,0xFFFFFFFF," Ты отнес мешок на склад. Отправляйся за следующим.");
JobAmmount[playerid] ++;
format(string,sizeof(string)," Перенесено мешков: {228B22}%d",JobAmmount[playerid]);
SendClientMessage(playerid,0xFFFFFFFF,string);
DisablePlayerCheckpoint(playerid);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
JobCP[playerid] = 1;
}
}
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
new string[128];
if(pickupid == clothes)
{
if(Prorab[playerid] == true)
{
ShowPlayerDialog(playerid,DIALOG_RAZDEVALKA,DIALOG_STYLE_LIST,"\
FreePlay: Работа прорабом","Надеть рабочую форму\nНадеть повседневную одежду\nЗакрыть","Выбрать","");
}
else
{
ShowPlayerDialog(playerid,DIALOG_RAZDEVALKA,DIALOG_STYLE_LIST,"\
FreePlay: Работа грузчиком","Надеть рабочую форму\nНадеть повседневную одежду\nЗакрыть","Выбрать","");
}
}
if(pickupid == cash)
{
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не брал работу.");
if(JobAmmount[playerid] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"Ты еще ничего не заработал.");
GivePlayerMoney(playerid,JobAmmount[playerid]*25);
format(string,sizeof(string)," Ты получил {228B22}$%d{FFFFFF} за свою работу. Приходи еще.",JobAmmount[playerid]*25);
SendClientMessage(playerid,0xFFFFFFFF,string);
JobAmmount[playerid] = 0;
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_FIRE)
{
if(Works[playerid] == true && JobCP[playerid] == 2)
{
if(IsPlayerInRangeOfPoint(playerid,2.0,2230.3528,-2286.1353,14.3751)) return 1;
SendClientMessage(playerid,0xFFFFFFFF,"Ты уронил мешок.");
DisablePlayerCheckpoint(playerid);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
JobCP[playerid] = 1;
}
}
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
if(Works[playerid] == true && JobCP[playerid] == 2)
{
if(IsPlayerApplyAnimation(playerid, "FALL_back") ||
IsPlayerApplyAnimation(playerid, "FALL_collapse") ||
IsPlayerApplyAnimation(playerid, "FALL_fall") ||
IsPlayerApplyAnimation(playerid, "FALL_front") ||
IsPlayerApplyAnimation(playerid, "FALL_glide") ||
IsPlayerApplyAnimation(playerid, "FALL_land") ||
IsPlayerApplyAnimation(playerid, "FALL_skyDive") ||
IsPlayerApplyAnimation(playerid, "JUMP_glide") ||
IsPlayerApplyAnimation(playerid, "JUMP_land") ||
IsPlayerApplyAnimation(playerid, "JUMP_launch") ||
IsPlayerApplyAnimation(playerid, "JUMP_launch_R"))
{
if(IsPlayerInRangeOfPoint(playerid,2.0,2230.3528,-2286.1353,14.3751)) return 1;
SendClientMessage(playerid,0xFFFFFFFF,"Ты уронил мешок.");
DisablePlayerCheckpoint(playerid);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
JobCP[playerid] = 1;
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_RAZDEVALKA)
{
if(listitem == 0)
{
if(Works[playerid] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Ты уже взял работу. Чтобы взять мешок, иди на красную метку на радаре.");
OldSkin[playerid] = GetPlayerSkin(playerid);
Works[playerid] = true; JobAmmount[playerid] = 0; JobCP[playerid] = 1;
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
if(Prorab[playerid] == true)
{
SetPlayerSkin(playerid,27);
SendClientMessage(playerid,0xFFFFFFFF," Ты можешь давать контракты на погрузку и самостоятельно носить мешки.");
SendClientMessage(playerid,0xFFFFFFFF,"/gcontract - выдать контракт /gpayday - выдать заработную плату.");
}
else
{
new skin = random(2);
if(skin == 1) SetPlayerSkin(playerid,260);
else SetPlayerSkin(playerid,16);
SendClientMessage(playerid,0xFFFFFFFF," Чтобы взять мешок, иди на красную метку на радаре.");
}
}
else if(listitem == 1)
{
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не брал работу.");
if(JobAmmount[playerid] != 0) return SendClientMessage(playerid,0xFFFFFFFF," Сначала ты должен получить зарплату в офисе.");
SendClientMessage(playerid,0xFFFFFFFF," Ты завершил работу грузчиком.");
Works[playerid] = false; JobAmmount[playerid] = 0; JobCP[playerid] = 0; Employer[playerid] = 999;
SetPlayerSkin(playerid,OldSkin[playerid]);
DisablePlayerCheckpoint(playerid);
}
else return 1;
}
return 1;
}
stock IsPlayerApplyAnimation(playerid, animation[])
{
if(!GetPlayerAnimationIndex(playerid)) return 0;
else
{
new animlib[32], animname[32];
GetAnimationName(GetPlayerAnimationIndex(playerid), animlib, sizeof(animlib), animname, sizeof(animname));
if(!strcmp(animname, animation, true)) return 1;
}
return 0;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
forward ProxDetectorS(Float:radi, playerid, targetid);
public ProxDetectorS(Float:radi, playerid, targetid)
{
if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
{
new Float
osx, Float
osy, Float
osz;
new Float
ldposx, Float
ldposy, Float
ldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
//radi = 2.0; //Trigger Radius
GetPlayerPos(targetid, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}
ОЧ ПРОШУ ПОМОГИТЕ !!!
Вот сам скрипт:
#include <a_samp>
#define DIALOG_RAZDEVALKA 5674
#define COLOR_LIGHTBLUE 0x33CCFFFF
new cash,clothes;
new bool:Works[MAX_PLAYERS];
new bool
new JobCP[MAX_PLAYERS];
new JobAmmount[MAX_PLAYERS];
new OldSkin[MAX_PLAYERS];
new JobOffer[MAX_PLAYERS];
new Employer[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Работа грузчика v_1.0 by denizx");
print("--------------------------------------\n");
cash = CreatePickup(1274, 23, 2127.5701,-2275.1938,20.6719, -1);
clothes = CreatePickup(1275, 23, 2137.9661,-2282.2017,20.6719, -1);
CreateObject(2060,2172.89526367,-2256.86108398,12.46142387,0.00000000,0.00000000,44.00000000);
CreateObject(2060,2172.89453125,-2256.86035156,12.46142387,0.00000000,0.00000000,43.99475098);
CreateObject(2060,2172.42309570,-2256.42822266,12.46099281,0.00000000,0.00000000,47.25003052);
CreateObject(2060,2173.31835938,-2257.36694336,12.46148300,0.00000000,0.00000000,43.75000000);
CreateObject(2060,2172.75854492,-2256.49853516,12.77687645,0.00000000,0.00000000,315.24987793);
CreateObject(2060,2172.41381836,-2256.85815430,12.77693558,0.00000000,0.00000000,316.25000000);
CreateObject(2060,2173.61865234,-2257.31201172,12.77693558,0.00000000,0.00000000,136.00000000);
CreateObject(2060,2173.29321289,-2257.70800781,12.77693558,0.00000000,0.00000000,134.00000000);
CreateObject(2060,2173.73193359,-2257.77856445,12.46504116,0.00000000,0.00000000,42.00000000);
CreateObject(2060,2172.61962891,-2256.63281250,13.09232903,0.00000000,0.00000000,0.00000000);
CreateObject(2060,2229.29809570,-2286.05883789,13.53178787,0.00000000,0.00000000,226.00000000);
CreateObject(2060,2229.61987305,-2286.45825195,13.53178787,0.00000000,0.00000000,45.00000000);
CreateObject(2060,2230.00610352,-2286.81738281,13.53178787,0.00000000,0.00000000,44.00000000);
CreateObject(2060,2230.39746094,-2287.23168945,13.53178787,0.00000000,0.00000000,44.00000000);
CreateObject(2060,2229.35400391,-2286.54858398,13.80724049,0.00000000,0.00000000,134.00000000);
CreateObject(2060,2230.20898438,-2286.95312500,13.82723999,0.00000000,0.00000000,102.00000000);
return 1;
}
public OnPlayerConnect(playerid)
{
Works[playerid] = false;
Prorab[playerid] = false;
JobCP[playerid] = 0;
JobAmmount[playerid] = 0;
OldSkin[playerid] = 0;
JobOffer[playerid] = 999;
Employer[playerid] = 999;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx,giveplayerid;
new cmd[64],tmp[128],string[128],point[128];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd,"/loader",true)==0)
{
point = strtok(cmdtext, idx);
if(!strlen(point))
{
SendClientMessage(playerid, 0xFFFFFFFF, "/loader [команда]");
SendClientMessage(playerid, 0xFFFFFFFF, "{008000}[ДОСТУПНО]{FFFFFF} contract - предложить контракт | payday - зарплата");
return 1;
}
if(strcmp(point,"contract",true) == 0)
{
if(Prorab[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Недостаточно прав для использования команды.");
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Чтобы использвать команду, необходимо выйти на работу.");
//if(!IsPlayerInRangeOfPoint(playerid,5.0,2127.5701,-2275.1938,20.6719)) SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid,0xFFFFFFFF,"/gcontract [id игрока].");
giveplayerid = strval(tmp);
if(giveplayerid == playerid) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не можешь заключть контракт с собой.");
if(Prorab[giveplayerid] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не можешь заключать контракт с прорабом.");
if(Works[giveplayerid] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок уже работает.");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не в сети.");
if(!ProxDetectorS(5.0, playerid, giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
if(JobOffer[giveplayerid] == playerid) return SendClientMessage(playerid,0xFFFFFFFF,"Ты уже предложил игроку контракт.");
JobOffer[giveplayerid] = playerid;
new giveplayer[40],sendername[40];
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Ты предложил контакт %s.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Прораб %s предлагает тебе контракт.", sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
SendClientMessage(giveplayerid,0xFFFFFFFF,"/givecontract - подписать контракт (преимущества: $50 за мешок).");
}
if(strcmp(point,"accept",true) == 0)
{
if(JobOffer[playerid] == 999) return SendClientMessage(playerid,0xFFFFFFFF,"Никто не предлагал тебе контракт.");
if(Employer[playerid] != 999) return SendClientMessage(playerid,0xFFFFFFFF,"Ты уже заключал контракт.");
if(Prorab[JobOffer[playerid]] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не прораб.");
if(Works[JobOffer[playerid]] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не на работе.");
//if(!IsPlayerInRangeOfPoint(playerid,5.0,2127.5701,-2275.1938,20.6719)) SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
if(!IsPlayerConnected(JobOffer[playerid])) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не в сети.");
if(!ProxDetectorS(5.0, playerid, JobOffer[playerid])) return SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
new giveplayer[40],sendername[40];
GetPlayerName(JobOffer[playerid], giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
Employer[playerid] = JobOffer[playerid]; JobOffer[playerid] = 0;
format(string, sizeof(string), "* Ты заключил контакт с %s.", Employer[playerid]);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* %s заключил с тобой контракт.", sendername);
SendClientMessage(Employer[playerid], COLOR_LIGHTBLUE, string);
SendClientMessage(Employer[playerid],0xFFFFFFFF,"/gpayday - выдать зарплату.");
}
if(strcmp(point,"payday",true) == 0)
{
if(Prorab[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Недостаточно прав для использования команды.");
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Чтобы использвать команду, необходимо выйти на работу.");
if(!IsPlayerInRangeOfPoint(playerid,5.0,2127.5701,-2275.1938,20.6719))return SendClientMessage(playerid,0xFFFFFFFF,"Зарплату выдавать можно только в офисе.");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid,0xFFFFFFFF,"/gpayday [id игрока].");
giveplayerid = strval(tmp);
if(Employer[giveplayerid] != playerid) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не работает на тебя.");
if(Works[giveplayerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не на работе.");
if(JobAmmount[giveplayerid] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не перенес ни одного мешка.");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Этот игрок не в сети.");
if(!ProxDetectorS(5.0, playerid, giveplayerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Игрок не возле тебя.");
new giveplayer[40];
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GivePlayerMoney(playerid,JobAmmount[playerid]*50);
format(string,sizeof(string)," Ты получил {228B22}$%d{FFFFFF} за свою работу. Приходи еще.",JobAmmount[playerid]*50);
SendClientMessage(playerid,0xFFFFFFFF,string);
GivePlayerMoney(giveplayerid,JobAmmount[playerid]*25);
format(string,sizeof(string)," Ты получил {228B22}$%d{FFFFFF} от работы %s.",JobAmmount[playerid]*25, giveplayer);
SendClientMessage(giveplayerid,0xFFFFFFFF,string);
JobAmmount[playerid] = 0;
}
return 1;
}
if(strcmp(cmd,"/prorab",true) == 0)
{
Prorab[playerid] = true;
return 1;
}
return 0;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(Works[playerid])
{
if(JobCP[playerid] == 1 && IsPlayerInRangeOfPoint(playerid,2.0,2230.3528,-2286.1353,14.3751))
{
SendClientMessage(playerid,0xFFFFFFFF," Ты взял мешок. Неси его на склад.");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,2172.4146,-2255.5405,13.3041,1.5);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
SetPlayerAttachedObject(playerid, 1 , 2060, 1,0.11,0.36,0.0,0.0,90.0);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
JobCP[playerid] = 2;
}
if(JobCP[playerid] == 2 && IsPlayerInRangeOfPoint(playerid,2.0,2172.4146,-2255.5405,13.3041))
{
new string[64];
SendClientMessage(playerid,0xFFFFFFFF," Ты отнес мешок на склад. Отправляйся за следующим.");
JobAmmount[playerid] ++;
format(string,sizeof(string)," Перенесено мешков: {228B22}%d",JobAmmount[playerid]);
SendClientMessage(playerid,0xFFFFFFFF,string);
DisablePlayerCheckpoint(playerid);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
JobCP[playerid] = 1;
}
}
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
new string[128];
if(pickupid == clothes)
{
if(Prorab[playerid] == true)
{
ShowPlayerDialog(playerid,DIALOG_RAZDEVALKA,DIALOG_STYLE_LIST,"\
FreePlay: Работа прорабом","Надеть рабочую форму\nНадеть повседневную одежду\nЗакрыть","Выбрать","");
}
else
{
ShowPlayerDialog(playerid,DIALOG_RAZDEVALKA,DIALOG_STYLE_LIST,"\
FreePlay: Работа грузчиком","Надеть рабочую форму\nНадеть повседневную одежду\nЗакрыть","Выбрать","");
}
}
if(pickupid == cash)
{
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не брал работу.");
if(JobAmmount[playerid] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"Ты еще ничего не заработал.");
GivePlayerMoney(playerid,JobAmmount[playerid]*25);
format(string,sizeof(string)," Ты получил {228B22}$%d{FFFFFF} за свою работу. Приходи еще.",JobAmmount[playerid]*25);
SendClientMessage(playerid,0xFFFFFFFF,string);
JobAmmount[playerid] = 0;
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_FIRE)
{
if(Works[playerid] == true && JobCP[playerid] == 2)
{
if(IsPlayerInRangeOfPoint(playerid,2.0,2230.3528,-2286.1353,14.3751)) return 1;
SendClientMessage(playerid,0xFFFFFFFF,"Ты уронил мешок.");
DisablePlayerCheckpoint(playerid);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
JobCP[playerid] = 1;
}
}
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
if(Works[playerid] == true && JobCP[playerid] == 2)
{
if(IsPlayerApplyAnimation(playerid, "FALL_back") ||
IsPlayerApplyAnimation(playerid, "FALL_collapse") ||
IsPlayerApplyAnimation(playerid, "FALL_fall") ||
IsPlayerApplyAnimation(playerid, "FALL_front") ||
IsPlayerApplyAnimation(playerid, "FALL_glide") ||
IsPlayerApplyAnimation(playerid, "FALL_land") ||
IsPlayerApplyAnimation(playerid, "FALL_skyDive") ||
IsPlayerApplyAnimation(playerid, "JUMP_glide") ||
IsPlayerApplyAnimation(playerid, "JUMP_land") ||
IsPlayerApplyAnimation(playerid, "JUMP_launch") ||
IsPlayerApplyAnimation(playerid, "JUMP_launch_R"))
{
if(IsPlayerInRangeOfPoint(playerid,2.0,2230.3528,-2286.1353,14.3751)) return 1;
SendClientMessage(playerid,0xFFFFFFFF,"Ты уронил мешок.");
DisablePlayerCheckpoint(playerid);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,1,0);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
JobCP[playerid] = 1;
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_RAZDEVALKA)
{
if(listitem == 0)
{
if(Works[playerid] == true) return SendClientMessage(playerid,0xFFFFFFFF,"Ты уже взял работу. Чтобы взять мешок, иди на красную метку на радаре.");
OldSkin[playerid] = GetPlayerSkin(playerid);
Works[playerid] = true; JobAmmount[playerid] = 0; JobCP[playerid] = 1;
SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
if(Prorab[playerid] == true)
{
SetPlayerSkin(playerid,27);
SendClientMessage(playerid,0xFFFFFFFF," Ты можешь давать контракты на погрузку и самостоятельно носить мешки.");
SendClientMessage(playerid,0xFFFFFFFF,"/gcontract - выдать контракт /gpayday - выдать заработную плату.");
}
else
{
new skin = random(2);
if(skin == 1) SetPlayerSkin(playerid,260);
else SetPlayerSkin(playerid,16);
SendClientMessage(playerid,0xFFFFFFFF," Чтобы взять мешок, иди на красную метку на радаре.");
}
}
else if(listitem == 1)
{
if(Works[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Ты не брал работу.");
if(JobAmmount[playerid] != 0) return SendClientMessage(playerid,0xFFFFFFFF," Сначала ты должен получить зарплату в офисе.");
SendClientMessage(playerid,0xFFFFFFFF," Ты завершил работу грузчиком.");
Works[playerid] = false; JobAmmount[playerid] = 0; JobCP[playerid] = 0; Employer[playerid] = 999;
SetPlayerSkin(playerid,OldSkin[playerid]);
DisablePlayerCheckpoint(playerid);
}
else return 1;
}
return 1;
}
stock IsPlayerApplyAnimation(playerid, animation[])
{
if(!GetPlayerAnimationIndex(playerid)) return 0;
else
{
new animlib[32], animname[32];
GetAnimationName(GetPlayerAnimationIndex(playerid), animlib, sizeof(animlib), animname, sizeof(animname));
if(!strcmp(animname, animation, true)) return 1;
}
return 0;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
forward ProxDetectorS(Float:radi, playerid, targetid);
public ProxDetectorS(Float:radi, playerid, targetid)
{
if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
{
new Float
new Float
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
//radi = 2.0; //Trigger Radius
GetPlayerPos(targetid, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}
ОЧ ПРОШУ ПОМОГИТЕ !!!
