Affect_Bond
Умник
Всем привет сделал работу шахтера как на Advance похожую малясь на нее.
Приступим.
Ко всем new:
Добавим в public OnPlayerPickUpDynamicPickup(playerid, pickupid):
Добавим в public OnGameModeInit:
Добавим в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) :
Добавим в OnPlayerEnterCheckpoint:
Добавим в самый конец мода:
Добавим в public OnPlayerSpawn(playerid):
Добавим в public OnPlayerConnect(playerid) :
ко всем forward:
Скачать файл где храниться метал и тд.
Ну вот !!!
Почти похожие может как на Advance.
Пишите если что ни будь не получается помогу.
Автор: A_B
Приступим.
Ко всем new:
PHP:
new pickmine;
PHP:
new pickmetll;
PHP:
new ruda, perepl,metall;
new Text3D:druda;
new Text3D:dmetall;
new bool:startjob[MAX_PLAYERS];
new bool:PlayerMine[MAX_PLAYERS];
new Text3D:pereplav;
new MatsHolding[MAX_PLAYERS];
new kg[MAX_PLAYERS];
new Oldskin[MAX_PLAYERS];
PHP:
new randommine[][1] =
{
{25},
{27},
{29},
{28},
{33},
{30},
{35},
{32},
{37},
{41},
{36},
{42},
{47},
{52},
{39},
{40},
{53},
{54},
{43},
{44},
{45}
};
PHP:
if(pickupid == pickmine)
{
if(PlayerMine[playerid] == true)// тоже можно разными цветами
{
ShowPlayerDialog(playerid,116,DIALOG_STYLE_MSGBOX,"Работа шахтера","Вы действительно желаете закончить рабочий день?","Да","Нет");
}
else
{
ShowPlayerDialog(playerid,115,DIALOG_STYLE_MSGBOX,"Работа шахтера","Вы желаете начать добычу руды?","Да","Нет");
}
}
PHP:
if(pickupid == pickmetll)
{
ShowPlayerDialog(playerid,117,DIALOG_STYLE_INPUT,"Закупка металла","Здесь вы можете купить металл\n {bbbbbb}цена за 1кг - 30$ ","Купить","Нет");
}
PHP:
pickmine = CreateDynamicPickup(1275,23,-1864.6772,-1559.7124,21.7500);
PHP:
pickmetll = CreateDynamicPickup(19134,2,-1846.5625,-1623.3983,21.8673);
PHP:
format(texts,sizeof(texts),"{00ff00}Железная руда\n{ffffff}На складе:\n %dкг",ruda);
druda = CreateDynamic3DTextLabel(texts,COLOR_YELLOW3d,-1867.4611,-1612.5785,24.0039,30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
format(texts,sizeof(texts),"{ffffff}Металл\n{00b0ff}На складе:\n %dкг",metall);
dmetall = CreateDynamic3DTextLabel(texts,COLOR_YELLOW3d,-1845.5784,-1617.2751,24.0039,30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
format(texts,sizeof(texts),"{ffffff}Кузница\n{ffa500} %dкг руды\nНа переплавке",perepl);
pereplav = CreateDynamic3DTextLabel(texts,COLOR_YELLOW3d,-1857.2234,-1605.2432,25.2120,30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
PHP:
case 115:
{
if(response)
{
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
PlayerMine[playerid] = true;
Oldskin[playerid] = GetPlayerSkin(playerid);
SetPlayerSkin(playerid, 16);
SetPlayerCheckpoint(playerid,-1804.6999511719,-1650.0999755859,22.89999961853,6.0);
SetPlayerAttachedObject(playerid,1, 18634, 14, 0.333391, 0.000000, 0.042249, 358.219909, 268.014739, 170.032974, 2.003867, 1.764811, 1.579773);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы начали работу шахтер!");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "На вашей карте отмечен чекпоинт");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Идите к нему, Чтобы начать добычю руды");
ApplyAnimation(playerid,"BASEBALL","Bat_4",4.1,1,1,1,0,11000);// WEAPON_csawlo
ClearAnimations(playerid);
ClearAnimations(playerid);
ClearAnimations(playerid);
}
return 1;
}
case 116:
{
if(response)
{
PlayerMine[playerid] = false;
SetPlayerSkin(playerid,Oldskin[playerid]);
DisablePlayerCheckpoint(playerid);
GivePlayerMoneyNoCheat(playerid, kg[playerid]*2);
format(string, sizeof(string), "Вы заработали %d$ за добычю %dкг руды",kg[playerid]*2,kg[playerid]);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
kg[playerid] = 0;
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
if(IsPlayerAttachedObjectSlotUsed(playerid,2)) RemovePlayerAttachedObject(playerid,2);
if(IsPlayerAttachedObjectSlotUsed(playerid,3)) RemovePlayerAttachedObject(playerid,3);//забрал тачку
}
return 1;
}
case 117:
{
if(response)
{
if(strlen(inputtext))
{
new mats = strval(inputtext);
if(mats<1 || mats>21) return SendClientMessage(playerid,-1,"Нельзя купить больше 20 кг металла или меньше 1кг.");
if(mats>metall) return SendClientMessage(playerid,-1,"Такого количества металла на шахте нет.");
if(GetPlayerMoneyNoCheat(playerid) > mats*30)
{
GivePlayerMoneyNoCheat(playerid, - mats*30);
MatsHolding[playerid] += mats;
metall -= mats;
format(string,sizeof(string),"Вы приобрели %dкг металла за $%d",mats,mats*30);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
UpdateMine();
}
else
{
SendClientMessage(playerid,-1,"У вас нет денег");
return 1;
}
}
else
{
ShowPlayerDialog(playerid,117,DIALOG_STYLE_INPUT,"Закупка металла","Здесь вы можете купить метал\n {bbbbbb}Цена за 1кг $30","Купит","Нет");
}
}
}
PHP:
else if(PlayerToPoint(3.0, playerid,-1868,-1612.3000488281,20.700000762939) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
startjob[playerid] = false;
rands = random(sizeof(randommine));
kg[playerid] += randommine[rands][0];
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
if(IsPlayerAttachedObjectSlotUsed(playerid,2)) RemovePlayerAttachedObject(playerid,2);
if(IsPlayerAttachedObjectSlotUsed(playerid,3)) RemovePlayerAttachedObject(playerid,3);
SetPlayerAttachedObject(playerid,1, 18634, 14, 0.333391, 0.000000, 0.042249, 358.219909, 268.014739, 170.032974, 2.003867, 1.764811, 1.579773);
format(string, sizeof(string), "Общее количество добытой руды %dкг руды",kg[playerid]);
SendClientMessage(playerid, -1, string);
format(string, sizeof(string), "Вы добыли %кг руды",randommine[rands][0]);
SendClientMessage(playerid, -1, string);
ruda+=randommine[rands][0];
SetTimer("FuncsMetall",10000,0);
ApplyAnimation(playerid,"PED","IDLE_tired",4.1,1,0,0,0,2500);
SetPlayerCheckpoint(playerid,-1804.6999511719,-1650.0999755859,22.89999961853,6.0);
UpdateMine();
return 1;
}
PHP:
public FuncsMetall()
{
if(ruda > 150)
{
ruda-=randommine[rands][0];
perepl+=randommine[rands][0]/5;
SetTimer("UpdateMetall",5000,0);
SaveMine();
UpdateMine();
}
return 1;
}
//==============================================================================
public UpdateMetall()
{
new end;
if(perepl > 30)
{
end=perepl/5;
metall+=end;
perepl-=end*5;
SaveMine();
UpdateMine();
}
return 1;
}
PHP:
UpdateMine()
{
new string[256];
format(string,sizeof(string),"{00ff00}Железная руда\n{ffffff}На складе:\n %dкг",ruda);
UpdateDynamic3DTextLabelText(druda, COLOR_YELLOW3d, string);
format(string,sizeof(string),"{ffffff}Кузница\n{ffa500} %dкг руды\nНа переплавке",perepl);
UpdateDynamic3DTextLabelText(pereplav, COLOR_YELLOW3d, string);
format(string,sizeof(string),"{ffffff}Металл\n{00b0ff}На складе:\n %dкг",metall);
UpdateDynamic3DTextLabelText(dmetall, COLOR_YELLOW3d, string);
return 1;
}
PHP:
stock LoadMine()
{
new File = ini_openFile("mine.ini");
if(!File)
{
ini_getInteger(File,"Руда",ruda);
ini_getInteger(File,"Железо",metall);
ini_getInteger(File,"Переплав",perepl);
ini_closeFile(File);
}
return 1;
}
stock SaveMine()
{
new File = ini_openFile("mine.ini");
if(!File)
{
ini_setInteger(File,"Руда",ruda);
ini_setInteger(File,"Железо",metall);
ini_setInteger(File,"Переплав",perepl);
ini_closeFile(File);
}
return 1;
}
PHP:
PlayerMine[playerid] = false;
PHP:
MatsHolding[playerid] = 0; kg[playerid] = 0; Oldskin[playerid] = 0;
PHP:
forward FuncsMetall();
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Ну вот !!!
Почти похожие может как на Advance.
Пишите если что ни будь не получается помогу.
Автор: A_B
Последнее редактирование:
