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

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

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

    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
    Адрес
    Москва
    Возраст
    18
    Сообщений
    2,635
    Репутация
    272
    За особые успехи в Lua.Самый "безбашенный" пользователь портала

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

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

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

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

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

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

    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
    Адрес
    Минск, БССР
    Возраст
    27
    Сообщений
    2,409
    Репутация
    337
    За особые успехи в программировании на PHP.

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

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

  6. #6
    Аватар для FanHamMer
    МАМБА ХУЯМБА
    Регистрация
    27.03.2011
    Адрес
    Москва
    Возраст
    18
    Сообщений
    2,635
    Репутация
    272
    За особые успехи в Lua.Самый "безбашенный" пользователь портала

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

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

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

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

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

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

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

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

  9. #9

    Диванный критик
    Регистрация
    03.07.2011
    Адрес
    Вологда
    Возраст
    25
    Сообщений
    2,108
    Репутация
    269
    За особые успехи в Lua.За красивое оформление тем

    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
    Адрес
    Москва
    Возраст
    18
    Сообщений
    2,635
    Репутация
    272
    За особые успехи в Lua.Самый "безбашенный" пользователь портала

    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

Ваши права

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