Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3

Тема: FS veh radio

  1. #1
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±

    FS veh radio

    Ставил когда скрипт этот себе и заметил что всё хорошо кроме одного..
    Суть скрипта: Радио в авто, радио слышно кому то когда он стоит не далеко от кара в котором играет музыка
    Так вот когда уходишь в афк я заметил в чате время всё зацикливается и когда выходишь оно одинаковое
    допустим я ушёл в афк и у других в чате это так выглядит:

    00:01 Ушёл в афк
    00:02 На сервере что то случилось
    00:03 Ещё что то
    00:04 Вышел с афк


    А у меня это вот так выглядит:


    00:01 Ушёл в афк
    00:04 На сервере что то случилось
    00:04 Ещё что то
    00:04 Вышел с афк


    (Сам вопрос)>То есть зацикливается на одном времени, вот так и с радио этим пока ушёл в афк оно то подъехало то отъехало и радио включалось выключалось овер9000 раз, при том ещё глюк бывает что не проходит и музыка флудом в чате сто раз воспроизводит и приходится перезаходить на сервер...

    Вот сам FS этого радио:
      Открыть/закрыть

    PHP код:
    #include <a_samp>
    #define MAX_RAD_NAME (16) /// ìàêñ. èìÿ ðàäèî ( íå ññûëêà )
    #define MAX_RADIO (7) /// ìàêñ. ðàäèî
    #define L_DIAG (9200) /// èçïîëüçóåìûé äèàëîã
    #define TIME_UPDATE (1500) /// âðåìÿ îáíîâëåíèÿ òàéìåðà
    //-------------------------------------
    enum vehplayer {
        
    Float:Poos[3],
        
    SeeVehicle,
    } ;
    new 
    VPInfo MAX_PLAYERS ] [ vehplayer ] ;
    //------------------------------------------
    new RadioVeh MAX_VEHICLES ] = { -1, ... },
        
    MaxPlayers,
        
    timer
    ;
    new 
    Radio MAX_RADIO ] [ ] [ 288 ] = {
        { 
    "Track: Êàñòà""http://rghost.ru/download/75RxL2fgd/b871cb41a4012d04ada78975805c480217e150cf/Kasta.mp3" },
        { 
    "Track: ßðìàê""http://rghost.ru/download/7N5V72nwW/9fbedcbfa2e1b54627f2942808cacab7e2446e6c/Yarmak.mp3" },
        { 
    "Track: Ãàìîðà""http://ucontent.mobi/ucontent/u3048301/f1146233/52a1b3d8c43c36520ceaac86192bfff0/Gamora_-_YAd_128kbps.mp3" },
        { 
    "Radio: KaZanTip""http://live26.kiwi.kz:8000/radiokazantip" },
        { 
    "Radio: Rock""http://radio.zaycev.fm:9002/alternative/ZaycevFM(96)" },
        { 
    "Radio: Club""http://radio.zaycev.fm:9002/electronic/ZaycevFM(96)" },
        { 
    "Radio: RnB""http://radio.zaycev.fm:9002/rnb/ZaycevFM(96)" }
    } ;
    //==============================================================================
    public OnFilterScriptInit ( ) {
        
    MaxPlayers GetMaxPlayers() - 1;
        
    timer SetTimer("Global"trueTIME_UPDATE ) ;
        return 
    true ;
    }
    public 
    OnFilterScriptExit ( ) KillTimer timer ) ;

    public 
    OnPlayerConnect playerid ) {
        
    VPInfo [playerid] [SeeVehicle] = -1;
        return 
    true ;
    }
    public 
    OnPlayerCommandTextplayeridcmdtext[] )
    {
        if(!
    strcmp(cmdtext[1], "autoradio"true))
        {
            if(!
    IsPlayerInAnyVehicle(playerid) ) return true ;
            new 
    _str MAX_RADIO MAX_RAD_NAME 2] ;
            for( new 
    _r_r MAX_RADIO ; ++ _rstrcat_strRadio[_r][0] ), strcat_str,"\n" );
            
    strcat_str,"Вырубить\n" );
              
    ShowPlayerDialog(playeridL_DIAGDIALOG_STYLE_LIST"La1ghter"_str"КЛац""Офф");
              return 
    true ;
        }
        return 
    false ;
    }
    public 
    OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if( 
    dialogid == L_DIAG && response )
        {
            if ( 
    listitem MAX_RADIO )
            {
                
    RadioVeh[GetPlayerVehicleID(playerid)] = listitem;
                for (new 
    i<= MaxPlayers ; ++ i) {
                    if(!
    IsPlayerConnected(i) || GetPlayerVehicleID(i) != GetPlayerVehicleID(playerid)) continue;
                     
    PlayAudioStreamForPlayer(iRadio listitem ] [ ]);
                }
            }
            else if ( 
    listitem >= MAX_RADIO )
            {
                
    RadioVeh[GetPlayerVehicleID(playerid)] = -;
                for (new 
    i<= MaxPlayers ; ++ i) {
                     if(!
    IsPlayerConnected(i) || GetPlayerVehicleID(i) != GetPlayerVehicleID(playerid)) continue;
                     
    StopAudioStreamForPlayer(i) ;
                }
            }
            return 
    true ;
        }
        return 
    false;
    }
    public 
    OnPlayerExitVehicle playeridvehicleid ) {
        if ( 
    RadioVeh[vehicleid] != -StopAudioStreamForPlayer(playerid);
        return 
    true ;
    }
    public 
    OnPlayerStateChange(playeridnewstateoldstate)
    {
        if(
    newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) {
            if( 
    RadioVeh[GetPlayerVehicleID(playerid)] != -1) {
                
    StopAudioStreamForPlayer(playerid),
                
    VPInfo[playerid] [SeeVehicle] = -;
                
    PlayAudioStreamForPlayer(playeridRadio RadioVeh [GetPlayerVehicleID(playerid)] ] [ ] );
            }
        }
        return 
    true ;
    }
    Global() ;
    public Global ( )
    {
        new
             
    vehidboolfind falseFloatVe[3]
        ;
        for (new 
    playeridplayerid <= MaxPlayers ; ++ playerid)
        {
               if( !
    IsPlayerConnected(playerid) || IsPlayerInAnyVehicle(playerid) || GetPlayerInterior(playerid) || GetPlayerVirtualWorld(playerid) ) continue ;
            if( 
    VPInfo[playerid] [SeeVehicle] != -)
            {
                
    GetVehiclePos (VPInfo[playerid] [SeeVehicle], Ve[0],Ve[1],Ve[2] ) ;
                if( !
    IsPlayerInRangeOfPoint(playerid7.0VPInfo[playerid][Poos] [0],VPInfo[playerid][Poos][1],VPInfo[playerid][Poos][2]) || !IsPlayerInRangeOfPoint(playerid7.0Ve[0],Ve[1],Ve[2]) )
                {
                    
    StopAudioStreamForPlayer(playerid) ;
                    
    VPInfo[playerid] [SeeVehicle] = -;
                }
            }
            for( new 
    _v 1_v MAX_VEHICLES ; ++ _v ) {
                if ( 
    RadioVeh[_v] == -1  || !IsVehicleStreamedIn(_vplayerid) ) continue ;
                
    GetVehiclePos_vVe[0],Ve[1],Ve[2] ) ;
                if( !
    IsPlayerInRangeOfPoint(playerid7.0,Ve[0],Ve[1],Ve[2]) ) continue ;
                for (new 
    z!= 3; ++ zVPInfo[playerid] [Poos] [z] = Ve[z] ;
                  
    vehid _vfind true ;
                  break ;
            }
            if( 
    vehid != VPInfo[playerid] [SeeVehicle] && find && !IsPlayerInAnyVehicle(playerid) ) {
                 
    VPInfo[playerid] [SeeVehicle] = vehid ;
                
    PlayAudioStreamForPlayer(playeridRadio [RadioVeh[vehid]][1], VPInfo[playerid] [Poos] [0],VPInfo[playerid][Poos][1],VPInfo[playerid] [Poos][2],7.0,1);
            }
        }
        return 
    true ;


  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    1. Поставьте проверку на «AFK», после чего отключайте стрим потока.
    2. Используйте OnPlayerStreamIn, OnPlayerStreamOut, OnVehicleStreamIn, OnVehicleStreamOut, а не функцию IsVehicleStreamedIn в секундном таймере.
    3. Прочитайте темы по оптимизации, а также Мифы от Danial’a.
    4. Цикл (перебор всех игроков) в цикле (перебор всех машин) — не очень хорошая идея (Улучшить производительность: См. п. 2).
    5. Очень много не нужных переменных.
    Последний раз редактировалось VVWVV; 14.12.2015 в 17:52.

  3. #3
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Перечислю 50 рублей тому кто доведёт мне этот скрипт до ума
    Помогите по братски)

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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