Меню сайта
  • Страница 1 из 1
  • 1
Модератор форума: [CM]OlegEhtler, Getbackthere, Phoenixxx_Czar  
Форум » Pawno программирование SAMP » Скрипты | FilterScripts » [Red] Работа электрика (Предложение по улучшению отвечайте в теме)
[Red] Работа электрика
MaksxxRed Дата: Понедельник, 18.03.2019, 22:01 | Сообщение # 1
Новичок
Сообщений: 2
Статус: Offline
Приветствую всех читателей Cheat Master
Автор скрипта: #Red | Максимус Стаменков

Помогаю бесплатно людям . Обращение: vk.com/maks.stamen


Подробнее о работе:Созданы несколько банкоматов, которые приходится чинить каждую минуту (можете поменять).
| после починки банкомата искрение пропадает. Вы можете узнать местонахождение банкоматов командой /ms.
| В команде уже встроенная команда, которая вычисляет сколько от Вас и до сломанного банкомата нужно добежать / доехать.


Код
#include <Pawn.CMD>
#include <streamer>
#include <foreach>

Обязательные инклуды
Код
enum Job
{
    Float:cobjX,Float:cobjY,Float:cobjZ,
  bool:is_cobj, sobj
}
new c_Obj[8][Job] =
{
    {1919.324096, -1765.918701, 12.156874, true},
    {2228.668945, -1716.418945, 12.239444,true},
    {1496.197753, -1750.146240, 13.945310,true},
    {1358.804321, -1759.618652, 11.862051,true},
    {1171.856811, -1328.025024, 13.612185,true},
    {773.661315, -1036.325073, 22.682752,true},
    {457.765747, -1489.541870, 29.502471,true},
    {1564.572387, -1331.018066, 15.204374,true}
};

Объекты для их использование
Код
public OnGameModeInit()
{
    SetTimer(!"Jobtimer",500,true); // Упрощенный таймер для многочисленного использование
    SetTimer(!"Jobs",1000,true); // Таймер по обновлению объектов
    CreateDynamicObject(2754, 1919.235229, -1765.750000, 13.342815, 0.000000, 0.000000, -90.000000, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 2228.554931, -1716.476440, 13.248940, 0.000000, 0.000000, 0.000000, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 1496.247680, -1749.992553, 15.125315, 0.000000, 0.000000, -91.199951, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 1358.931518, -1759.687011, 13.211816, 0.000000, 0.000000, -90.300025, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 1171.814819, -1328.014770, 15.105312, 0.000000, 0.000000, -177.900039, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 1367.075927, -1275.063354, 13.356878, 0.000000, 0.000000, 0.000000, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 773.660644, -1036.112426, 23.840311, 0.000000, 0.000000, 99.400001, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 457.768493, -1489.536132, 30.891502, 0.000000, 0.000000, 15.800003, -1, -1, -1, 300.00, 300.00);
    CreateDynamicObject(2754, 1564.548706, -1330.991699, 16.176691, 0.000000, 0.000000, -90.399993, -1, -1, -1, 300.00, 300.00);
    for(new i; i!=8; i++) c_Obj[i][sobj] = CreateDynamicObject(18718, c_Obj[i][cobjX],c_Obj[i][cobjY],c_Obj[i][cobjZ], 0.000000, 0.000000, 0.000000, -1, -1, -1, 300.00, 300.00);
    AddPlayerClass(25, 1363.64,-1271.45,13.55, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
}

Комментарии указаны
Код
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    switch(newkeys)
    {
     case KEY_WALK:
     {
   for(new i; i!=8;i++)
   {
    if IsPlayerInRangeOfPoint(playerid,2, c_Obj[i][cobjX],c_Obj[i][cobjY],c_Obj[i][cobjZ]) *then
    {
        if !c_Obj[i][is_cobj] *then continue; SetPVarInt(playerid, !"job", gettime()+6);
        SendClientMessage(playerid, -1, "Вы начали устранять искрение банкомата");
        ApplyAnimation(playerid,"OTB","BETSLP_LOOP",4.1,1,0,0,0,0,1);
    }
   }
     }
    }
    return 1;
}

Когда вы находитесь возле сломанного банкомата, вы нажимаете l.alt и начинаете чинить банкомат
Код
CMD:ms(playerid)
{
    new str[600],serv[600];
    for(new i; i<8; i++)
    {
  if c_Obj[i][is_cobj] == false *then continue;
  format(str,sizeof(str),"[Поломка]:\t\t%0.2f метров\n",
   GetPlayerDistanceFromPoint(playerid,c_Obj[i][cobjX],c_Obj[i][cobjY],c_Obj[i][cobjZ]));
  strcat(serv,str);
    }
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Список поломок", serv, "Закрыть", "");
    return 1;
}

Команда, чтобы узнать сколько метров от Вас до поломанного банкомата
Код
forward Jobs();
public Jobs()
{
    for(new i; i!=8; i++)
    {
     if c_Obj[i][is_cobj]*then continue;
     switch(random(i))
     {
         case 0..7: c_Obj[i][sobj] = CreateDynamicObject(18718, c_Obj[i][cobjX],c_Obj[i][cobjY],c_Obj[i][cobjZ],
    0.000000, 0.000000, 0.000000, -1, -1, -1,300.00, 300.00), c_Obj[i][is_cobj] = true;
    default: continue;
     }
    }
    return 1;
}
forward Jobtimer();
public Jobtimer()
{
    foreach(new h:Player)
    {
  if GetPVarInt(h, !"job") <= gettime() && GetPVarInt(h, !"job") != 0 *then
  {
   for(new i; i!=8; i++)
   {
       if IsPlayerInRangeOfPoint(h,2, c_Obj[i][cobjX],c_Obj[i][cobjY],c_Obj[i][cobjZ]) *then
       {
        if !c_Obj[i][is_cobj] *then continue; c_Obj[i][is_cobj] = false;
                    ClearAnimations(h); SendClientMessage(h, -1, "Вы устранили поломку.");
        DestroyDynamicObject(c_Obj[i][sobj]); SetPVarInt(h, !"job", 0);
       }
   }
  }
    }
    return 1;
}

Комментарии указывал в OnGameModeInit()



Сообщение отредактировал MaksxxRed - Вторник, 26.03.2019, 18:29
Форум » Pawno программирование SAMP » Скрипты | FilterScripts » [Red] Работа электрика (Предложение по улучшению отвечайте в теме)
  • Страница 1 из 1
  • 1
Поиск: