Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[Мануал] Работа шахтера Adva

Статус
В этой теме нельзя размещать новые ответы.

Affect_Bond

Умник
Всем привет сделал работу шахтера как на Advance похожую малясь на нее.
Приступим.
Ко всем 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}
};
Добавим в public OnPlayerPickUpDynamicPickup(playerid, pickupid):
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$	","Купить","Нет");
	}
Добавим в public OnGameModeInit:
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);
Добавим в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) :
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","Купит","Нет");
			}
		}
	}
Добавим в OnPlayerEnterCheckpoint:
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;
}
Добавим в public OnPlayerSpawn(playerid):
PHP:
PlayerMine[playerid] = false;
Добавим в public OnPlayerConnect(playerid) :
PHP:
MatsHolding[playerid] = 0; kg[playerid] = 0; Oldskin[playerid] = 0;
ко всем forward:
PHP:
forward FuncsMetall();
Скачать файл где храниться метал и тд.

Ну вот !!!
Почти похожие может как на Advance.
Пишите если что ни будь не получается помогу.
Автор: A_B
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу