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

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

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

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

Создание работы шахтера

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

qwe123

Умник
Всем привет я расскажу как создать работу "шахтера"
Это мой самый первый урок так что не судите строго =)

И так начнем
1. Вначале добавим ко всем new:


PHP:
new SahtJob[MAX_PLAYERS];
new SahtCheck[MAX_PLAYERS];
new SahtMoney[MAX_PLAYERS];
new sahtpic;
new pSaht[MAX_PLAYERS];
enum
{
CHECKPOINT_1,
CHECKPOINT_2,
}
2. После того как создали переменную, добавим в pInfo:
PHP:
psaht,


3. Потом в public OnPlayerConnect(playerid) добавим:

PHP:
SahtJob[playerid] = 0 ; SahtCheck[playerid] = 0; SahtMoney[playerid] = 0;


4. Теперь нам надо создать функцию для диалогового окна, значит ищем public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) и туда добавляем:

PHP:
case 3333: //// 3333-это id диалога можете заменить на свой
     {
     if(response)
  {
	    if(PlayerInfo[playerid][psaht] > 0) return SendClientMessage(playerid, COLOR_GRAD1,"Вы уже начали работу");
         Oldminerskin[playerid] = GetPlayerSkin(playerid);
         SetPlayerSkin(playerid,16);
         PlayerInfo[playerid][psaht] += 1;
         SendClientMessage(playerid, COLOR_WHITE, "Вы начали работу");
         SahtJob[playerid] = 1;
         				pSaht[playerid] = CHECKPOINT_1;
				SetPlayerRaceCheckpoint(playerid,0,-1868.3579,-1715.9572,21.7500,-1862.0334,-1652.2224,25.8105,1.0);
			    format(string, sizeof(string), "Перенесено км %d ",SahtCheck[playerid] * (25 + random(2)));
	            SendClientMessage(playerid,COLOR_GREEN,string);
  }
         else
         {
         if(PlayerInfo[playerid][psaht] < 1) return SendClientMessage(playerid, COLOR_GRAD1,"Вы еще не начинали работу");
         PlayerInfo[playerid][psaht] -= 1;
         SetPlayerSkin(playerid, Oldminerskin[playerid]);
         SendClientMessage(playerid, COLOR_WHITE, "Вы закончили работу");
         PlayerInfo[playerid][pCash] += SahtCheck[playerid] * (50 + random(2));
					format(string, sizeof(string), "Вами заработано: %d вирт.", SahtCheck[playerid] * (50 + random(2)));
					SendClientMessage(playerid, TEAM_BLUE_COLOR, string);
					Delete3DTextLabel(fare3dtext[playerid]);
					SahtJob[playerid] = 0;
					SahtCheck[playerid] = 0;
					SahtMoney[playerid] = 0;
					DisablePlayerRaceCheckpoint(playerid);
         }
	 }
5. Далее вставляем в public OnPlayerEnterRaceCheckpoint(playerid):

PHP:
if(SahtJob[playerid] == 1)
		{
	      switch(pSaht[playerid])
			{
				case CHECKPOINT_1:
				{
    if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
					SahtCheck[playerid]++;
			    format(string, sizeof(string), "Перенесено %d кг",SahtCheck[playerid] * (25 + random(2)));
			    SendClientMessage(playerid,COLOR_GREEN,string);
					pSaht[playerid] = CHECKPOINT_2;
					SetPlayerRaceCheckpoint(playerid, 0,-1862.0334,-1652.2224,25.8105,-1868.3579,-1715.9572,21.7500, 1.0);
				}
				case CHECKPOINT_2:
				{
                    if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
                    SetPlayerAttachedObject( playerid, 3, 0, 1, -0.073969, 0.349906, 0.065601, 331.510559, 271.870788, 321.750610, 0.831871, 1.000000, 0.748390 );
                    SendClientMessage(playerid,-1,"Вы начали добычу угля.");
	                ApplyAnimation(playerid,"SWORD","sword_4",4.1,1,1,1,0,0);
	                SetTimerEx("minertimer1",5000,0,"%d",playerid); //это секундомер сколько будет длится анимация стандартно 5сек
					pSaht[playerid] = CHECKPOINT_1;
					SetPlayerAttachedObject( playerid, 3, 18634, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000 );
					SetPlayerAttachedObject( playerid, 3, 5045, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000 );
					SetPlayerRaceCheckpoint(playerid, 0,-1868.3579,-1715.9572,21.7500,-1862.0334,-1652.2224,25.8105, 1.0);
				}
				}
				}
6.Теперь мы добавим функцию пикапа, это находится в public OnPlayerPickUpPickup(playerid, pickupid) и туда вставляем.:
PHP:
else if(pickupid == sahtpic) //
	{
    ShowPlayerDialog(playerid,3333,DIALOG_STYLE_MSGBOX,"Устройство на работу","Нажмите начать или завершить","Начать","Завершить");
	}
7.Теперь нужно добавить сам пикап где мы будем брать работу. Добавляем в public OnGameModeInit():

PHP:
sahtpic = CreatePickup(1314,23,-1863.6958,-1560.1963,21.7500);//
8. Далее добавляем ко всем forward:
PHP:
forward minertimer1(playerid);


9.потом кидаем в конец мода:
PHP:
public minertimer1(playerid)
{
    ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,0,1,1,1,1);
	SendClientMessage(playerid,-1,"Вы добыли уголь теперь отнесите его на переработку");
	return 1;
}
Ну вот и все работа сделана.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу