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

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

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

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

Работа доярки от Botan (Оптимизированная)

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

Brain_Voker

Умник
Привет всем, решил поправить коды некоторых участников данного форума, и как мне кажется это будет лучше дабы не портить авторитет форума и не давать ложные советы новичкам.
Решил начать с Работы доярки от Botan'a ( http://pawno-info.ru/showthread.php?t=184219 )
Посмотрел данный код и ужаснулся, может сам и не про, но то жесть

Автор: Botan
Автор доработки: Brain_Voker(#Kalashnikov)
Место нахождения: Ферма 0.

Думаю начнем:
Ко всем #define:

PHP:
new format_string[144];
#define SendMes(%0,%1,%2,%3) format(format_string, format_string,sizeof(format_string), %2,%3), SendClientMessage(%0, %1, format_string)
#define publics:%0(%1) 			forward %0(%1); public %0(%1)
#define MONEY_DOIKI     3//3$ за литр + рандом до 20
Ко всем new:
PHP:
new Float:cDoikiJob[][3] = {
    {-284.0849,-1380.6089,10.0154},
    {-310.5776,-1411.9600,14.0516},
    {-216.8332,-1375.4652,6.8356},
    {-237.2563,-1339.7296,8.2130},
    {-251.1372,-1321.1127,9.7137},
    {-297.3181,-1349.6071,7.8895},
    {-261.3127,-1357.4972,8.8070},
    {-237.2100,-1399.8905,9.1191},
    {-205.1850,-1401.7838,6.0466},
    {-215.7505,-1323.4077,10.2098}
};

new
Text3D:MilkSklad,//Текст Склада
DoikiPick[2],//Пикапы Устройства/Инфа
milk = 0;//Склад молока(Может сделать себе сохранения)
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
PHP:
case 12:
        {
            if(!response) return true;
        	if(!GetPVarInt(playerid,"JobDoiki"))
         	{
          		DelGun(playerid);//Если у Вас мод RLS То вам это подойдет, дабы обнулить оружие
          		SetPVarInt(playerid,"JobDoiki",1);
          		SetPVarInt(playerid,"ProgressDoiki",0);
          		SetPVarInt(playerid,"JobDoikiKG",0);
            	switch(PlayerInfo[playerid][pSex])//Здесь поменяйте если у Вас не так ПОЛ
	 			{
					case 1: { new job_skin[2] = {94, 95}; SetPlayerSkin(playerid, job_skin[random(2)]); } //Мужские скины
					case 2: SetPlayerSkin(playerid, 56);//Женские скины
				}
              	SendClientMessage(playerid, 0x33CCFFAA, "Вы начали работу Доярки! На вашей карте отмечен Чекпоинт.");
               	ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,1,1,1,1,0);
                ClearAnimations(playerid);//Очистка анимации
                new P = random(sizeof(cDoikiJob));
			   	SetPlayerCheckpoint(playerid,cDoikiJob[P][0],cDoikiJob[P][1],cDoikiJob[P][2],1.0);
            }
            else
            {
                //Возвращаем игроку скин
                if(!PlayerInfo[playerid][pPlayerMember]) SetPlayerSkin(playerid, PlayerInfo[playerid][pChar]);//Если он не во фракции
				else SetPlayerSkin(playerid, PlayerInfo[playerid][pModel]);//Если во фракции
				//
                DisablePlayerCheckpoint(playerid);//Удаляем чекпоинт
                GiveMoney(playerid,GetPVarInt(playerid,"JobDoikiKG")*MONEY_DOIKI);//Выдача денег
                SendMes(playerid, 0x33CCFFAA, "Вы заработали %d$. Приходите ещё!",GetPVarInt(playerid,"JobDoikiKG")*MONEY_DOIKI);
                DeletePVar(playerid,"ProgressDoiki");
                DeletePVar(playerid,"JobDoiki");
                DeletePVar(playerid,"JobDoikiKG");
            }
            return true;
        }
В public OnPlayerPickUpPickup(playerid, pickupid):
PHP:
if(pickupid == DoikiPick[0])
    {
        if(!GetPVarInt(playerid,"JobDoiki")) ShowPlayerDialog(playerid, 12, 0,"{ffcc00}Работа доярки","{FFFFFF}Вы хотите начать работу доярки ?","Начать","Отмена");
        else ShowPlayerDialog(playerid, 12, 0,"{ffcc00}Работа доярки","{FFFFFF}Вы хотите покинуть работу доярки ?","Покинуть","Отмена");
    }
	if(pickupid == DoikiPick[1])
    {
        ShowPlayerDialog(playerid, 9999, 0, "Информация о работе","Здесь вы можете поработать Дояркой. \nЧтобы приступить к сбору молока, вам надо переодеться,\nдля этого подойдите к Раздевалке и нажмите 'Начать'.\nЧтобы закончить работу 'Покинуть'. Удачного вам заработка!", "Спасибо", "");
    }
В public OnPlayerEnterCheckpoint(playerid):

PHP:
if(GetPVarInt(playerid,"JobDoiki"))
	{
	    if(PlayerToPoint(1.0, playerid,-284.0849,-1380.6089,10.0154) || PlayerToPoint(1.0, playerid,-310.5776,-1411.9600,14.0516) || PlayerToPoint(1.0, playerid,-216.8332,-1375.4652,6.8356)
		|| PlayerToPoint(1.0, playerid,-237.2563,-1339.7296,8.2130) || PlayerToPoint(1.0, playerid,-251.1372,-1321.1127,9.7137) || PlayerToPoint(1.0, playerid,-297.3181,-1349.6071,7.8895)
		|| PlayerToPoint(1.0, playerid,-261.3127,-1357.4972,8.8070) || PlayerToPoint(1.0, playerid,-237.2100,-1399.8905,9.1191) || PlayerToPoint(1.0, playerid,-205.1850,-1401.7838,6.0466)
		|| PlayerToPoint(1.0, playerid,-215.7505,-1323.4077,10.2098)) // 1 ???????
	    {
	        SetPVarInt(playerid,"ProgressDoiki",1);
	        ClearAnimations(playerid);
	        DisablePlayerCheckpoint(playerid);
	        ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,1,1,1,1,0);
	        SetTimerEx("TimerJob",4000+random(4000),false,"d",playerid);//Процес - 4 секунды стандарт + Рандом до 4 сек
	        return true;
	    }
	    else if(PlayerToPoint(2.0, playerid,-365.5118,-1429.0254,25.7266))
	    {
	        if(IsPlayerAttachedObjectSlotUsed(playerid,3)) RemovePlayerAttachedObject(playerid,3);
	        SetPVarInt(playerid,"ProgressDoiki",0);
	        new MilkKG = 3+random(20);
	        SetPVarInt(playerid,"JobDoikiKG", GetPVarInt(playerid,"JobDoikiKG")+MilkKG);
	        SendMes(playerid, 0x33CCFFAA, "Вы принесли %d литров молока. Заработано: %d$",MilkKG,GetPVarInt(playerid,"JobDoikiKG")*MONEY_DOIKI);
	        milk+=MilkKG;
	        UpdateMilkSklad();
	        ApplyAnimation(playerid,"PED","IDLE_tired",4.1,1,0,0,0,2500);
	        new P = random(sizeof(cDoikiJob));
	   		SetPlayerCheckpoint(playerid,cDoikiJob[P][0],cDoikiJob[P][1],cDoikiJob[P][2],1.0);
	   		format(string,sizeof(string),"На складе {ffffff}%d литров {FFFF00}молока",milk);
    		UpdateDynamic3DTextLabelText(MilkSklad,0xFFFF00FF,string);
	        return true;
	    }
	}
Ко всем public:
PHP:
publics: TimerJob(playerid)
{
    if(GetPVarInt(playerid,"ProgressDoiki"))
    {
        SetPlayerAttachedObject(playerid, 3, 1668, 6, 0.003288, 0.105444, 0.187527, 1.000000,1.000000,1.000000,1.000000,1.000000);
        SetPlayerCheckpoint(playerid,-365.5118,-1429.0254,25.7266,2.0);
        ClearAnimations(playerid);
    }
    return true;
}
В public OnGameModeInit():

PHP:
//Пикапы
DoikiPick[0] = CreatePickup(1275, 23,-382.7202,-1426.2949,26.2546);
DoikiPick[1] = CreatePickup(1239, 23,-382.7521,-1438.9415,26.2520);
//3D Text
new string[64];
format(string,sizeof(string),"На складе {ffffff}%d литров {FFFF00}молока",milk);
MilkSklad = CreateDynamic3DTextLabel(string,0xFFFF00FF,-365.5118,-1429.0254,25.7266,45.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
//Объекты коров
CreateDynamicObject(16442,-214.5406,-1324.3490,10.1783,0.00000000,0.00000000,0.00000000);
CreateDynamicObject(16442,-250.9313,-1319.5408,9.9085,0.00000000,0.00000000,50.00000000);
CreateDynamicObject(16442,-269.5100,-1334.9557,7.6010,0.00000000,0.00000000,9.99877930);
CreateDynamicObject(16442,-261.1975,-1356.0355,8.6382,0.00000000,0.00000000,49.99755859);
CreateDynamicObject(16442,-216.6282,-1373.8949,6.7746,0.00000000,0.00000000,49.99328613);
CreateDynamicObject(16442,-177.3974,-1386.1050,4.0533,0.00000000,0.00000000,289.99328613);
CreateDynamicObject(16442,-204.7996,-1403.2201,5.7875,0.00000000,0.00000000,249.98962402);
CreateDynamicObject(16442,-238.7021,-1400.0217,9.2586,0.00000000,0.00000000,149.98840332);
CreateDynamicObject(16442,-266.7166,-1410.2797,10.2336,0.00000000,0.00000000,219.98535156);
CreateDynamicObject(16442,-284.4882,-1382.0657,10.0488,0.00000000,0.00000000,219.98474121);
CreateDynamicObject(16442,-297.7948,-1351.1189,7.9629,0.00000000,0.00000000,219.98474121);
CreateDynamicObject(16442,-291.0052,-1320.3877,8.8163,0.00000000,0.00000000,219.98535156);
CreateDynamicObject(16442,-249.4786,-1372.2765,10.3827,0.00000000,0.00000000,249.98962402);
CreateDynamicObject(16442,-237.1099,-1338.2253,8.4105,0.00000000,0.00000000,49.99755859);
CreateDynamicObject(16442,-309.3080,-1411.1079,14.0147,0.00000000,0.00000000,0.00000000);
P.S: Saibot, iWors оставили полезные комментарии, если вы новичок прочитайте.
Поправил string в SendMes

Если полезно ставь +​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу