Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 29

Тема: ЭМИ. Моя версия скрипта.

  1. #1
    Джентльмен лжец Аватар для Fallen A.
    Регистрация
    03.09.2011
    Адрес
    Минск, БССР
    Возраст
    29
    Сообщений
    2,409
    Репутация: 337

    Звание: как роза среди колючек

    ЭМИ. Моя версия скрипта.

    Решил сделать свою версию данного скрипта. Ссылка на оригинальную тему ( кликабельно ).

    PHP код:
    #include <a_samp>
    #include <DC_CMD>
    #include <sscanf>

    new emiTimer[MAX_PLAYERS];
     
    CMD:emi(playeridparams[])
    {
            if(
    sscanf(params"d"params[0])) return SendClientMessage(playerid, -1"{3399FF}[Команды]{FFFFFF} /emi [ ID игрока ]");
            if(!
    IsPlayerConnected(params[0]))
                    return 
    SendClientMessage(playerid, -1"Ошибка. Игрока с таким ID нет на сервере.");
            if(
    GetPlayerState(playerid) != PLAYER_STATE_DRIVER// Возможно еще сюда добавить проверку на полицейские автомобили
                    
    return SendClientMessage(playerid, -1"Ошибка. Вы должны быть за рулём!");
            if(
    GetPlayerState(params[0]) != PLAYER_STATE_DRIVER)
                    return 
    SendClientMessage(playerid, -1"Ошибка. Игрок должен быть за рулём!");
            new 
    Floatpos[3];
            
    GetPlayerPos(params[0], pos[0], pos[1], pos[2]);
            new 
    Floatdist_ GetPlayerDistanceFromPoint(playeridpos[0], pos[1], pos[2]),
            new 
    str_[144];
            if(
    dist_ 30)
            {
                    
    format(str_sizeof str_"Ошибка. Между вами %0.2f метров. Использование ЭМИ невозможно."dist_);
                    return 
    true;
            }        
            
    format(str_sizeof str_"Между вами %0.2f метров. Преследуйте игрока 20 секунд, чтобы воспользоваться действием ЭМИ."dist_);
            
    SendClientMessage(playerid, -1str_);
            
    emiTimer[playerid] = SetTimerEx("emiTimerPlayer"1000true"dd"playeridparams[0]);
            return 
    true;
    }

    new 
    totalSec[MAX_PLAYERS] = 0;

    forward emiTimerPlayer(playeridtarget_ID);
    public 
    emiTimerPlayer(playeridtarget_ID)
    {
            
    GetPlayerPos(playeridSetPVarFloat(playerid"posX_emi"), SetPVarFloat(playerid"posY_emi"), SetPVarFloat(playerid"posZ_emi"));
            
    GetPlayerPos(target_IDSetPVarFloat(target_ID"posX_emi"), SetPVarFloat(target_ID"posY_emi"), SetPVarFloat(target_ID"posZ_emi"));
            new 
    meters DistancePointToPoint(GetPVarFloat(playerid"posX_emi"), GetPVarFloat(playerid"posY_emi"), GetPVarFloat(playerid"posZ_emi"), GetPVarFloat(target_ID"posX_emi"), GetPVarFloat(target_ID"posY_emi"), GetPVarFloat(target_ID"posZ_emi"));
            if(
    meters 30)
            {
                    
    DeletePVar(playerid"posX_emi"), DeletePVar(playerid"posY_emi"), DeletePVar(playerid"posZ_emi");
                    
    DeletePVar(target_ID"posX_emi"), DeletePVar(target_ID"posY_emi"), DeletePVar(target_ID"posZ_emi");
                    
    KillTimer(emiTimer[playerid]);
                    
    totalSec[playerid] = 0;
                    
    SendClientMessage(playerid, -1"Игрок далеко от вас. Зарядка ЭМИ остановлена. НЕобходимо начать заново.");
                    return 
    true;
            }
            
    totalSec[playerid]++;
            if(
    totalSec == 20)
            {
                    
    // Тут действие над целью
                    
    KillTimer(emiTimer[playerid]);
                    
    totalSec[playerid] = 0;
            }
            
    DeletePVar(playerid"posX_emi"), DeletePVar(playerid"posY_emi"), DeletePVar(playerid"posZ_emi");
            
    DeletePVar(target_ID"posX_emi"), DeletePVar(target_ID"posY_emi"), DeletePVar(target_ID"posZ_emi");
            return 
    true;
    }

    stock DistancePointToPoint(FloatxFloatyFloatzFloatfxFloat:fyFloatfz) return floatround(floatsqroot(floatpower(fx x2) + floatpower(fy y2) + floatpower(fz z2))); 
    Писалось на коленке, поэтому работоспособность не проверялась. Возможны баги и тем, кому нужно, доработают сами для себя.

  2. #2
    МАМБА ХУЯМБА Аватар для FanHamMer
    Регистрация
    27.03.2011
    Адрес
    Москва
    Возраст
    20
    Сообщений
    2,635
    Репутация: 272

    Звание: как роза среди колючек

    Re: ЭМИ. Моя версия скрипта.

    Жоржик-коржик, призываю!

  3. #3
    Джентльмен лжец Аватар для Fallen A.
    Регистрация
    03.09.2011
    Адрес
    Минск, БССР
    Возраст
    29
    Сообщений
    2,409
    Репутация: 337

    Звание: как роза среди колючек

    Re: ЭМИ. Моя версия скрипта.

    Цитата Сообщение от FanHamMer Посмотреть сообщение
    Жоржик-коржик, призываю!
    xD

  4. #4
    Проверенный Аватар для georJik
    Регистрация
    07.07.2013
    Сообщений
    1,370
    Репутация: 427

    Звание: - очень-очень хороший человек

    Re: ЭМИ. Моя версия скрипта.

    Как-то так:
    PHP код:
    #include <a_samp> 
    #include <DC_CMD> 
    #include <sscanf2> 
        
    enum _emi
    {
        
    e_TimertotalSecFloat:_exFloat:_eyFloat:_ez
    }

    new 
    emi[MAX_PLAYERS][_emi];

    #define    E<%0:%1>    emi[%0][%1]
      

    CMD:emi(playeridparams[]) 
    {
        
    extract params -> new targetid; else return SendClientMessage(playerid, -1"{3399FF}[Команды]{FFFFFF} /emi [ ID игрока ]"); 
        if(!
    IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1"Ошибка. Игрока с таким ID нет на сервере."); 
        if(
    GetPlayerState(playerid) != PLAYER_STATE_DRIVER || GetPlayerState(targetid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid
        -
    1"Ошибка. Вы и игрок должны быть за рулём!"); 
        
    GetPlayerPos(targetidE<targetid:_ex>, E<targetid:_ex>, E<targetid:_ex>); 
        new 
    Float:dist_ GetPlayerDistanceFromPoint(playeridE<targetid:_ex>, E<targetid:_ex>, E<targetid:_ex>), 
        
    str_[144]; 
        if(
    dist_ 30.0) return SendClientMessage(playerid, -1"Ошибка. Между вами больше 30 метров. Использование ЭМИ невозможно.");       
        
    format(str_sizeof str_"Между вами %0.2f метров. Преследуйте игрока 20 секунд, чтобы воспользоваться действием ЭМИ."dist_); 
        
    SendClientMessage(playerid, -1str_); 
        
    E<playerid:e_Timer> = SetTimerEx("emiTimerPlayer"1000true"ii"playeridtargetid); 
        return 
    true




    forward emiTimerPlayer(playeridtarget_ID); 
    public 
    emiTimerPlayer(playeridtarget_ID
    {
        
    GetPlayerPos(target_IDE<target_ID:_ex>, E<target_ID:_ey>, E<target_ID:_ez>); 
        if(
    GetPlayerDistanceFromPoint(playeridE<target_ID:_ex>, E<target_ID:_ey>, E<target_ID:_ez>) > 30.0
        {
            
    E<playerid:_ex> = E<playerid:_ey> = E<playerid:_ez> = E<target_ID:_ex> = E<target_ID:_ey> = E<target_ID:_ez> = E<playerid:totalSec> = 0
            
    KillTimer(E<playerid:e_Timer>); 
            return 
    SendClientMessage(playerid, -1"Игрок далеко от вас. Зарядка ЭМИ остановлена. НЕобходимо начать заново."); 
        } 
        
    E<playerid:totalSec>++; 
        if(
    E<playerid:totalSec> == 20
        { 
            
    // Тут действие над целью 
            
    KillTimer(E<playerid:e_Timer>);
            
    E<playerid:_ex> = E<playerid:_ey> = E<playerid:_ez> = E<target_ID:_ex> = E<target_ID:_ey> = E<target_ID:_ez> = E<playerid:totalSec> = 0
        } 
        return 
    true



    ________________ Сообщение добавлено в [16:22] ________ Предыдущее сообщение в [16:20] ________________

    p.s: SetPVarFloat требует 3х аргументов, поэтому ну никак его в GetPlayerPos не запихнуть без переменной.

  5. #5
    Джентльмен лжец Аватар для Fallen A.
    Регистрация
    03.09.2011
    Адрес
    Минск, БССР
    Возраст
    29
    Сообщений
    2,409
    Репутация: 337

    Звание: как роза среди колючек

    Re: ЭМИ. Моя версия скрипта.

    Про пвары я и забыл, xD. Писалось на коленке, а вот ты со своими битами задолбаешь же :ay:

  6. #6
    МАМБА ХУЯМБА Аватар для FanHamMer
    Регистрация
    27.03.2011
    Адрес
    Москва
    Возраст
    20
    Сообщений
    2,635
    Репутация: 272

    Звание: как роза среди колючек

    Re: ЭМИ. Моя версия скрипта.

    Цитата Сообщение от Fallen A. Посмотреть сообщение
    а вот ты со своими битами задолбаешь же :ay:
    Не одного значения чё-то не увидел в битах...

  7. #7
    Проверенный Аватар для georJik
    Регистрация
    07.07.2013
    Сообщений
    1,370
    Репутация: 427

    Звание: - очень-очень хороший человек

    Re: ЭМИ. Моя версия скрипта.

    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Про пвары я и забыл, xD. Писалось на коленке, а вот ты со своими битами задолбаешь же :ay:
    Бит тут нет.
    UPD: обновил команду.

  8. #8
    Джентльмен лжец Аватар для Fallen A.
    Регистрация
    03.09.2011
    Адрес
    Минск, БССР
    Возраст
    29
    Сообщений
    2,409
    Репутация: 337

    Звание: как роза среди колючек

    Re: ЭМИ. Моя версия скрипта.

    Цитата Сообщение от georJik Посмотреть сообщение
    Бит тут нет.
    UPD: обновил команду.
    Я пока к такому даже не подходил еще. Нет времени.

  9. #9
    Диванный критик
    Регистрация
    03.07.2011
    Адрес
    Вологда
    Возраст
    28
    Сообщений
    2,107
    Репутация: 269

    Звание: как роза среди колючек

    Re: ЭМИ. Моя версия скрипта.

    байтодебил)))
    Если не выходить за границу «объектно-ориентированных» методов, чтобы остаться в рамках «хорошего программирования и проектирования», то в итоге обязательно получается нечто, по большей части не имеющее смысла. (C) Bjarne Stroustrup


    http://www.lua.org/about.html
    Please do not write it as "LUA", which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write "Lua" right!

  10. 2 пользователей сказали cпасибо Disinterpreter за это полезное сообщение:

    georJik (20.08.2015), Kenny_Dalglish (16.10.2015)

  11. #10
    МАМБА ХУЯМБА Аватар для FanHamMer
    Регистрация
    27.03.2011
    Адрес
    Москва
    Возраст
    20
    Сообщений
    2,635
    Репутация: 272

    Звание: как роза среди колючек

    Re: ЭМИ. Моя версия скрипта.



  12. 1 пользователь сказал cпасибо FanHamMer за это полезное сообщение:

    georJik (20.08.2015)

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Зависание скрипта
    от BenStiven в разделе Вопросы по скриптингу
    Ответов: 1
    Последнее сообщение: 09.05.2014, 00:26
  2. Название скрипта
    от georJik в разделе Вопросы по скриптингу
    Ответов: 1
    Последнее сообщение: 19.01.2014, 18:19
  3. Создание FS скрипта (Магазин)
    от NiceATtacK в разделе Заказы
    Ответов: 8
    Последнее сообщение: 31.08.2013, 21:51
  4. Ищу два скрипта
    от ViperXXX в разделе Вопросы по скриптингу
    Ответов: 5
    Последнее сообщение: 20.06.2013, 14:31
  5. Защита мода\скрипта
    от Bob_Marley в разделе Античиты (AntiCheats)
    Ответов: 23
    Последнее сообщение: 12.03.2012, 10:33

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •