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

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

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

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

[Мануал]Создаем работу Добыча металла

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

MakkO

Умник
Ко всем #define
PHP:
#define COLOR_1 0xFE0000FF
Ко всем New
PHP:
new METALLJOB;
new gruz[MAX_PLAYERS];
new dobito[MAX_PLAYERS];
new Oldminerskin[MAX_PLAYERS];
Ищем public OnGameModeInit()
Туда вставляем :
PHP:
 CreateObject(12957,-2134.3999023438,173.60000610352,35.200000762939,0,0,0);
	METALLJOB = CreatePickup(1275, 23,-2111.3030,157.5763,35.0977,0);
Далее ищем public OnPlayerConnect(playerid)
Туда вставим:
PHP:
	SetPVarInt(playerid,"JOB",0);
	SetPVarInt(playerid,"INJOB",0);
Дальше ищем public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
Сунем туда:
PHP:
	if(GetPVarInt(playerid,"JOB") == 1)
		{
		if(newkeys == KEY_SECONDARY_ATTACK || newkeys == KEY_JUMP || newkeys == KEY_SECONDARY_ATTACK || newkeys == KEY_FIRE || newkeys == KEY_CROUCH)
		{
		ApplyAnimation(playerid,"MISC","plyr_shkhead",4.0,0,0,0,0,0,1);
        SendClientMessage(playerid,-1,"{FE0000}[x]Вы уронили деталь!");
	    if(IsPlayerAttachedObjectSlotUsed(playerid, 4)) RemovePlayerAttachedObject(playerid, 4);
	    SetPlayerAttachedObject( playerid, 3, 18634, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000 );
   		new MARKER = random(8);
        if(MARKER == 0) SetPlayerCheckpoint(playerid,-2124.6135,236.3543,37.0799,1.5);
        if(MARKER == 1) SetPlayerCheckpoint(playerid,-2094.3862,285.8413,35.2984,1.5);
        if(MARKER == 2) SetPlayerCheckpoint(playerid,-2086.6199,178.5034,35.0547,1.5);
        if(MARKER == 3) SetPlayerCheckpoint(playerid,-2059.8103,228.2938,35.6094,1.5);
        if(MARKER == 4) SetPlayerCheckpoint(playerid,-2052.7605,301.0519,35.7803,1.5);
        if(MARKER == 5) SetPlayerCheckpoint(playerid,-2130.9453,281.4724,35.2961,1.5);
        if(MARKER == 6) SetPlayerCheckpoint(playerid,-2107.9082,122.9779,35.2863,1.5);
        if(MARKER == 7) SetPlayerCheckpoint(playerid,2117.3018,219.8108,35.2564,1.5);
        SetPVarInt(playerid,"JOB",2);
		SetPVarInt(playerid,"INJOB",0);
        }
        }
Дальше ищем public OnPlayerPickUpPickup(playerid, pickupid)
Вставим:
PHP:
		if(pickupid ==  METALLJOB)
	{
		if(GetPVarInt(playerid,"JOB")==0)
		{
			return ShowPlayerDialog(playerid,12,DIALOG_STYLE_MSGBOX,"{00BFFF}Жестянщик","{FFFFFF}Вы собираетесь устроится на работу.","Начать","Отмена");
		}
		else
		{
		    return ShowPlayerDialog(playerid,13,DIALOG_STYLE_MSGBOX,"{00BFFF}Жестянщик","{FFFFFF}Вы собираетесь закончить работу.","Закончить","Отмена");
		}
	}
	}
Дальше найдем public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Вставим туда:
PHP:
if(dialogid == 12)
    {
        if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "{9ACD32}Вы отказались от работы!");
		SetPVarInt(playerid,"JOB",1);
		SetPVarInt(playerid,"INJOB",0);
		Oldminerskin[playerid] = GetPlayerSkin(playerid);
		SetPlayerSkin(playerid, 16);
		SetPlayerAttachedObject( playerid, 3, 18634, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000 );
		SendClientMessage(playerid,-1,"{FE0000}[x] {018BFC}Вы начали работу.Следуйте на {FE0000}[Красный маркер].");
   		new MARKER = random(8);
        if(MARKER == 0) SetPlayerCheckpoint(playerid,-2124.6135,236.3543,37.0799,1.5);
        if(MARKER == 1) SetPlayerCheckpoint(playerid,-2094.3862,285.8413,35.2984,1.5);
        if(MARKER == 2) SetPlayerCheckpoint(playerid,-2086.6199,178.5034,35.0547,1.5);
        if(MARKER == 3) SetPlayerCheckpoint(playerid,-2059.8103,228.2938,35.6094,1.5);
        if(MARKER == 4) SetPlayerCheckpoint(playerid,-2052.7605,301.0519,35.7803,1.5);
        if(MARKER == 5) SetPlayerCheckpoint(playerid,-2130.9453,281.4724,35.2961,1.5);
        if(MARKER == 6) SetPlayerCheckpoint(playerid,-2107.9082,122.9779,35.2863,1.5);
        if(MARKER == 7) SetPlayerCheckpoint(playerid,2117.3018,219.8108,35.2564,1.5);
        SetPVarInt(playerid,"JOB",2);
		SetPVarInt(playerid,"INJOB",0);
        return 1;
    }
    if(dialogid == 13)
    {
        if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "{9ACD32}Вы продолжили работать.");
		new te[100];
		SetPVarInt(playerid,"JOB",0);
		SetPVarInt(playerid,"INJOB",0);
		SetPlayerSkin(playerid, Oldminerskin[playerid]);
		GivePlayerMoney(playerid,dobito[playerid]*2);
		format(te,sizeof(te),"{FE0000}• {018BFC}Вы закончили работу. {FE0000}•Ваш заработок: %d.",dobito[playerid]*2);
        SendClientMessage(playerid,-1,te);
        DisablePlayerCheckpoint(playerid);
		gruz[playerid] = 0;
		dobito[playerid] = 0;
		if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
		if(IsPlayerAttachedObjectSlotUsed(playerid, 4)) RemovePlayerAttachedObject(playerid, 4);
        return 1;
    }
Дальше добавим в конец мода:
PHP:
forward jobtimer(playerid);
public jobtimer(playerid)
{
        RemovePlayerAttachedObject(playerid,3);
        ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);
        ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,0,1,1,1,1);
        new Metall = random(3);
        if(Metall == 0) SetPlayerAttachedObject(playerid,3,1327,1,0.2,0.407083,0.000000,1,97,90,0.3,0.3,0.3);
        if(Metall == 1) SetPlayerAttachedObject(playerid,3,1335,1,0.3,0.407083,0.000000,1.248928,97.393852,90,0.3,0.3,0.3);
        if(Metall == 2) SetPlayerAttachedObject(playerid,3,2937,1,0.075578,0.407083,0.000000,1.248928,97.393852,90,0.8,0.8,0.8);
        SetPVarInt(playerid,"JOB",1);
		SetPVarInt(playerid,"INJOB",1);
        SendClientMessage(playerid,  0xFFFFFFFF, "{FE0000}• {018BFC}Вы добыли металл.{FE0000}Отнесите его на склад");
        SetPlayerCheckpoint(playerid, -2134.3816,183.0723,36.4106, 1.5);
        return 1;
}
Теперь ищем public OnPlayerEnterCheckpoint(playerid)
Вставим:
PHP:
if(GetPVarInt(playerid, "JOB") == 2)
        {
        if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
        DisablePlayerCheckpoint(playerid);
        RemovePlayerAttachedObject(playerid,3);
        ClearAnimations(playerid);
        SetPlayerAttachedObject( playerid, 3, 18634, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000 );
	    ApplyAnimation(playerid,"SWORD","sword_4",4.1,1,1,1,0,0);
        SetPVarInt(playerid,"INJOB",1);
		SetTimerEx("jobtimer",5000,0,"%d",playerid);
        return 1;
        }
	    if(GetPVarInt(playerid,"INJOB") == 1)
	    {
	    DisablePlayerCheckpoint(playerid);
        gruz[playerid] = random(60);
        dobito[playerid] = dobito[playerid] + gruz[playerid];
	    new text[150];
	    format(text,sizeof(text),"{FE0000}• {018BFC}Вы принесли {FF0000}%d{018BFC} кг металла. {FF0000}Всего принесено %d кг металла.",gruz[playerid],dobito[playerid]);
	    SendClientMessage(playerid,-1,text);
	    gruz[playerid] = 0;
		ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);
	    if(IsPlayerAttachedObjectSlotUsed(playerid, 4)) RemovePlayerAttachedObject(playerid, 4);
	    SetPlayerAttachedObject( playerid, 3, 18634, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000 );
   		new MARKER = random(8);
        if(MARKER == 0) SetPlayerCheckpoint(playerid,-2124.6135,236.3543,37.0799,1.5);
        if(MARKER == 1) SetPlayerCheckpoint(playerid,-2094.3862,285.8413,35.2984,1.5);
        if(MARKER == 2) SetPlayerCheckpoint(playerid,-2086.6199,178.5034,35.0547,1.5);
        if(MARKER == 3) SetPlayerCheckpoint(playerid,-2059.8103,228.2938,35.6094,1.5);
        if(MARKER == 4) SetPlayerCheckpoint(playerid,-2052.7605,301.0519,35.7803,1.5);
        if(MARKER == 5) SetPlayerCheckpoint(playerid,-2130.9453,281.4724,35.2961,1.5);
        if(MARKER == 6) SetPlayerCheckpoint(playerid,-2107.9082,122.9779,35.2863,1.5);
        if(MARKER == 7) SetPlayerCheckpoint(playerid,2117.3018,219.8108,35.2564,1.5);
        SetPVarInt(playerid,"JOB",2);
		SetPVarInt(playerid,"INJOB",0);
		}
Дальше ищем public OnPlayerSpawn(playerid)
Засунем туда:
PHP:
ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);
        SetPVarInt(playerid,"INJOB",0);
	SetPVarInt(playerid,"JOB",0);
И наконец ищем public OnPlayerDisconnect(playerid, reason)
И вставляем туда:
PHP:
SetPVarInt(playerid,"INJOB",0);
	SetPVarInt(playerid,"JOB",0);
	gruz[playerid] = 0;
	dobito[playerid] = 0;
[HR]Важно
Нужно убедиться что использумые функции не повторяются в моде.
GivePlayerMoney заменить под свой мод.
ID"S диалогов >>Обязательно<< нужно заменить под свой мод.[/HR]

Объекты не очень ровно лежал в руках.
Не всегда с первого раза срабатывает анимация.
При нажатии [F|Shift|Enter|ЛКМ| Срабатывает анимация (facepalm :DD) отнимается объект , ставится маркер.
Если возникнут вопросы , оставляйте ответы ниже.
Если понравилась работа ставьте +ик
http://rghost.ru/40973100
Пароль : pawno-info
http://imgdepo.ru/show/1752475

© MakkO 2012 [Version 1]
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу