Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Mist
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.12.2015
    Сообщений
    14
    Репутация:
    0 ±

    Система спидометра бензина, мили

    Всем привет выкладываю свой спидометр копия Diamond, Автор Я Mist

    Переменные:
    PHP код:
    new Text:speedusebox[MAX_PLAYERS];
    new 
    Text:namevehicle[MAX_PLAYERS];
    new 
    Text:fuelvehicle[MAX_PLAYERS];
    new 
    Text:speedvehicle[MAX_PLAYERS];
    new 
    Text:millagevehicle[MAX_PLAYERS];
    new 
    Text:healthvehicle[MAX_PLAYERS];
    new 
    Text:statusengine[MAX_PLAYERS];
    new 
    Text:statuslock[MAX_PLAYERS];
    new 
    Text:statuslamp[MAX_PLAYERS];
    new 
    speedtimer[MAX_PLAYERS];

    enum TRANSPORT {
        
    Float:trFuel,
        
    Float:trMillage,
        
    Float:trExpense,
        
    Float:trHealth,
        
    Float:trPosX,
        
    Float:trPosY,
        
    Float:trPosZ
    };
    new 
    gTransport[MAX_VEHICLES][TRANSPORT]; 
    OnGameModeInit()

    PHP код:
    ManualVehicleEngineAndLights();
    for(new 
    veh 0veh MAX_VEHICLESveh++) {
       
    gTransport[veh][trFuel] = 50;
       
    gTransport[veh][trExpense] = 0.1;
       
    SetVehicleParamsEx(vehfalsefalsefalsefalsefalsefalsefalse);

    OnPlayerConnect(playerid)

    PHP код:
        speedusebox[playerid] = TextDrawCreate(606.000000357.625000"usebox");
        
    TextDrawLetterSize(speedusebox[playerid], 0.0000007.849999);
        
    TextDrawTextSize(speedusebox[playerid], 425.5000000.000000);
        
    TextDrawAlignment(speedusebox[playerid], 1);
        
    TextDrawColor(speedusebox[playerid], 0);
        
    TextDrawUseBox(speedusebox[playerid], true);
        
    TextDrawBoxColor(speedusebox[playerid], 102);
        
    TextDrawSetShadow(speedusebox[playerid], 0);
        
    TextDrawSetOutline(speedusebox[playerid], 0);
        
    TextDrawFont(speedusebox[playerid], 0);

        
    namevehicle[playerid] = TextDrawCreate(428.500000346.500000"Clower");
        
    TextDrawLetterSize(namevehicle[playerid], 0.4499991.600000);
        
    TextDrawAlignment(namevehicle[playerid], 1);
        
    TextDrawColor(namevehicle[playerid], -1);
        
    TextDrawSetShadow(namevehicle[playerid], 0);
        
    TextDrawSetOutline(namevehicle[playerid], 1);
        
    TextDrawBackgroundColor(namevehicle[playerid], 51);
        
    TextDrawFont(namevehicle[playerid], 0);
        
    TextDrawSetProportional(namevehicle[playerid], 1);

        
    fuelvehicle[playerid] = TextDrawCreate(467.000000362.250000"FUEL: 100L");
        
    TextDrawLetterSize(fuelvehicle[playerid], 0.3889990.956876);
        
    TextDrawAlignment(fuelvehicle[playerid], 1);
        
    TextDrawColor(fuelvehicle[playerid], -1);
        
    TextDrawSetShadow(fuelvehicle[playerid], 0);
        
    TextDrawSetOutline(fuelvehicle[playerid], 1);
        
    TextDrawBackgroundColor(fuelvehicle[playerid], 51);
        
    TextDrawFont(fuelvehicle[playerid], 2);
        
    TextDrawSetProportional(fuelvehicle[playerid], 1);

        
    speedvehicle[playerid] = TextDrawCreate(450.500000372.750000"SPEED: 170KM/H");
        
    TextDrawLetterSize(speedvehicle[playerid], 0.3889980.956875);
        
    TextDrawAlignment(speedvehicle[playerid], 1);
        
    TextDrawColor(speedvehicle[playerid], -1);
        
    TextDrawSetShadow(speedvehicle[playerid], 0);
        
    TextDrawSetOutline(speedvehicle[playerid], 1);
        
    TextDrawBackgroundColor(speedvehicle[playerid], 51);
        
    TextDrawFont(speedvehicle[playerid], 2);
        
    TextDrawSetProportional(speedvehicle[playerid], 1);

        
    millagevehicle[playerid] = TextDrawCreate(455.500000395.500000"MILLAGE: 0.00");
        
    TextDrawLetterSize(millagevehicle[playerid], 0.3889980.956875);
        
    TextDrawAlignment(millagevehicle[playerid], 1);
        
    TextDrawColor(millagevehicle[playerid], -1);
        
    TextDrawSetShadow(millagevehicle[playerid], 0);
        
    TextDrawSetOutline(millagevehicle[playerid], 1);
        
    TextDrawBackgroundColor(millagevehicle[playerid], 51);
        
    TextDrawFont(millagevehicle[playerid], 2);
        
    TextDrawSetProportional(millagevehicle[playerid], 1);

        
    healthvehicle[playerid] = TextDrawCreate(459.000000383.687500"HEALTH: 100");
        
    TextDrawLetterSize(healthvehicle[playerid], 0.3889980.956875);
        
    TextDrawAlignment(healthvehicle[playerid], 1);
        
    TextDrawColor(healthvehicle[playerid], -1);
        
    TextDrawSetShadow(healthvehicle[playerid], 0);
        
    TextDrawSetOutline(healthvehicle[playerid], 1);
        
    TextDrawBackgroundColor(healthvehicle[playerid], 51);
        
    TextDrawFont(healthvehicle[playerid], 2);
        
    TextDrawSetProportional(healthvehicle[playerid], 1);

        
    statusengine[playerid] = TextDrawCreate(433.000000409.500000"ENGINE");
        
    TextDrawLetterSize(statusengine[playerid], 0.4314991.490623);
        
    TextDrawAlignment(statusengine[playerid], 1);
        
    TextDrawColor(statusengine[playerid], -1979184897);
        
    TextDrawSetShadow(statusengine[playerid], 0);
        
    TextDrawSetOutline(statusengine[playerid], 1);
        
    TextDrawBackgroundColor(statusengine[playerid], 51);
        
    TextDrawFont(statusengine[playerid], 2);
        
    TextDrawSetProportional(statusengine[playerid], 1);

        
    statuslock[playerid] = TextDrawCreate(501.500000409.500000"LOCK");
        
    TextDrawLetterSize(statuslock[playerid], 0.4314991.490623);
        
    TextDrawAlignment(statuslock[playerid], 1);
        
    TextDrawColor(statuslock[playerid], -1979184897);
        
    TextDrawSetShadow(statuslock[playerid], 0);
        
    TextDrawSetOutline(statuslock[playerid], 1);
        
    TextDrawBackgroundColor(statuslock[playerid], 51);
        
    TextDrawFont(statuslock[playerid], 2);
        
    TextDrawSetProportional(statuslock[playerid], 1);

        
    statuslamp[playerid] = TextDrawCreate(552.000000409.500000"LAMP");
        
    TextDrawLetterSize(statuslamp[playerid], 0.4314991.490623);
        
    TextDrawAlignment(statuslamp[playerid], 1);
        
    TextDrawColor(statuslamp[playerid], -1979184897);
        
    TextDrawSetShadow(statuslamp[playerid], 0);
        
    TextDrawSetOutline(statuslamp[playerid], 1);
        
    TextDrawBackgroundColor(statuslamp[playerid], 51);
        
    TextDrawFont(statuslamp[playerid], 2);
        
    TextDrawSetProportional(statuslamp[playerid], 1); 
    OnPlayerStateChange(playerid, newstate, oldstate)

    PHP код:
        if(newstate == PLAYER_STATE_DRIVER) {
            if(!
    enginenone(GetPlayerVehicleID(playerid))) {
                new 
    veh GetPlayerVehicleID(playerid);
                
    GetPlayerPos(playeridgTransport[veh][trPosX], gTransport[veh][trPosY], gTransport[veh][trPosZ]);
                
    TextDrawShowForPlayer(playeridspeedusebox[playerid]);
                
    TextDrawShowForPlayer(playeridnamevehicle[playerid]);
                
    TextDrawShowForPlayer(playeridfuelvehicle[playerid]);
                
    TextDrawShowForPlayer(playeridspeedvehicle[playerid]);
                
    TextDrawShowForPlayer(playeridmillagevehicle[playerid]);
                
    TextDrawShowForPlayer(playeridhealthvehicle[playerid]);
                
    TextDrawShowForPlayer(playeridstatusengine[playerid]);
                
    TextDrawShowForPlayer(playeridstatuslock[playerid]);
                
    TextDrawShowForPlayer(playeridstatuslamp[playerid]);
                
    speedtimer[playerid] = SetTimerEx("TransportUpdate"300true"i"playerid);
            }
        }
        else if(
    newstate == PLAYER_STATE_ONFOOT) {
            
    TextDrawHideForPlayer(playeridspeedusebox[playerid]);
            
    TextDrawHideForPlayer(playeridnamevehicle[playerid]);
            
    TextDrawHideForPlayer(playeridfuelvehicle[playerid]);
            
    TextDrawHideForPlayer(playeridspeedvehicle[playerid]);
            
    TextDrawHideForPlayer(playeridmillagevehicle[playerid]);
            
    TextDrawHideForPlayer(playeridhealthvehicle[playerid]);
            
    TextDrawHideForPlayer(playeridstatusengine[playerid]);
            
    TextDrawHideForPlayer(playeridstatuslock[playerid]);
            
    TextDrawHideForPlayer(playeridstatuslamp[playerid]);
            
    KillTimer(speedtimer[playerid]);
        } 
    OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    PHP код:
        else if(newkeys 1) { // CTRL
            
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
                new 
    enginelightsalarmdoorsbonnetbootobjective;
                new 
    veh GetPlayerVehicleID(playerid);
                
    GetVehicleParamsEx(vehenginelightsalarmdoorsbonnetbootobjective);
                if(
    engine == 0) {
                    
    SetVehicleParamsEx(vehtruelightsalarmdoorsbonnetbootobjective);
                }
                else {
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                }
                if(
    gTransport[veh][trFuel] < 1.0) {
                    
    SendClientMessage(playerid, -1"{FFFF00}  [Информация] {FFFFFF}В вашем автомобиле нет бензина!");
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                }
                if(
    gTransport[veh][trHealth] <= 350) {
                    
    SendClientMessage(playerid, -1"{FFFF00}  [Информация] {FFFFFF}Двигатель заглох! Вызовите механика /call (611)");
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                }
            }
        }
        else if(
    newkeys 4) { // ALT
            
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
            new 
    enginelightsalarmdoorsbonnetbootobjective;
            new 
    veh GetPlayerVehicleID(playerid);
            
    GetVehicleParamsEx(vehenginelightsalarmdoorsbonnetbootobjective);
            if(
    lights == 0) {
                
    SetVehicleParamsEx(vehenginetruealarmdoorsbonnetbootobjective);
            }
            else {
                
    SetVehicleParamsEx(vehenginefalsealarmdoorsbonnetbootobjective);
            }
        }
        } 
    В конец мода

    PHP код:
    forward TransportUpdate(playerid);
    public 
    TransportUpdate(playerid) {
        new 
    veh GetPlayerVehicleID(playerid);
        new 
    str[256];
        
    GetVehicleHealth(vehgTransport[veh][trHealth]);
        
    format(strsizeof(str), "~w~SPEED: ~g~%d~w~KM/H"SpeedVehicle(playerid));
        
    TextDrawSetString(speedvehicle[playerid], str);
        
    format(strsizeof(str), "~w~FUEL: ~b~%d~w~L"floatround(gTransport[veh][trFuel]));
        
    TextDrawSetString(fuelvehicle[playerid], str);
        
    format(strsizeof(str), "~w~MILLAGE: ~y~%.1f~w~KM"gTransport[veh][trMillage]);
        
    TextDrawSetString(millagevehicle[playerid], str);
        
    format(strsizeof(str), "~w~HEALTH: ~p~%.0f~w~"gTransport[veh][trHealth]/10);
        
    TextDrawSetString(healthvehicle[playerid], str);
        new 
    enginelightsalarmdoorsbonnetbootobjective;
        
    GetVehicleParamsEx(vehenginelightsalarmdoorsbonnetbootobjective);
       
        if(
    engine == 0TextDrawSetString(statusengine[playerid], "~r~ENGINE");
        else 
    TextDrawSetString(statusengine[playerid], "~g~ENGINE");
        if(
    lights == 0TextDrawSetString(statuslamp[playerid], "~r~LAMP");
        else 
    TextDrawSetString(statuslamp[playerid], "~g~LAMP");
        if(
    doors == 0TextDrawSetString(statuslock[playerid], "~r~LOCK");
        else 
    TextDrawSetString(statuslock[playerid], "~g~LOCK");
       
        if(
    GetPlayerDistanceFromPoint(playeridgTransport[veh][trPosX], gTransport[veh][trPosY], gTransport[veh][trPosZ]) > 70.3) {
            
    gTransport[veh][trMillage] += 0.1;
            
    gTransport[veh][trFuel] -= gTransport[veh][trExpense];
            
    GetPlayerPos(playeridgTransport[veh][trPosX], gTransport[veh][trPosY], gTransport[veh][trPosZ]);
        }
        if(
    gTransport[veh][trFuel] < 1.0) {
            
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
        }
        if(
    gTransport[veh][trHealth] <= 350) {
            
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
        }
        
    /*
        new Text:speedusebox[MAX_PLAYERS];
        new Text:namevehicle[MAX_PLAYERS];
        new Text:fuelvehicle[MAX_PLAYERS];
        new Text:speedvehicle[MAX_PLAYERS];
        new Text:millagevehicle[MAX_PLAYERS];
        new Text:healthvehicle[MAX_PLAYERS];
        new Text:statusengine[MAX_PLAYERS];
        new Text:statuslock[MAX_PLAYERS];
        new Text:statuslamp[MAX_PLAYERS];
        */
        
    return 1;

    Скрин:
    Последний раз редактировалось Mist; 25.07.2016 в 21:21.

  2. #2
    Аватар для HarrWe
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.05.2016
    Сообщений
    144
    Репутация:
    11 ±
    Опять же как и во многих спидометрах бензин не будет отниматься когда в авто никого нету

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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Это не миля, а пробег.

    ИМХО: спидометр хороший только у дудванса и стаге.

  4. #4
    Аватар для Battista
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2016
    Адрес
    Улан-Удэ
    Сообщений
    27
    Репутация:
    1 ±
    TextDraw кривые

  5. #5
    Аватар для Mist
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.12.2015
    Сообщений
    14
    Репутация:
    0 ±
    Спасибо

  6. #6
    Аватар для Seviel
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2016
    Адрес
    Казахстан
    Сообщений
    148
    Репутация:
    26 ±
    Хотите чтобы бензин тратился даже когда машина стоит или в ней нет водителя, вот возможное решение
    Ко всем глобальным переменным:
    PHP код:
    new FuelFake[MAX_VEHICLES]; // - Называйте как хотите, а я так 
    Где заводится транспорт нужно добавить таймер
    PHP код:
    else if(newkeys 1) { // CTRL
            
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
                new 
    enginelightsalarmdoorsbonnetbootobjective;
                new 
    veh GetPlayerVehicleID(playerid);
                
    GetVehicleParamsEx(vehenginelightsalarmdoorsbonnetbootobjective);
                if(
    engine == 0) {
                    
    SetVehicleParamsEx(vehtruelightsalarmdoorsbonnetbootobjective);
                }
                else {
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                    
    KillTimer(FuelFuck[veh]);
                }
                if(
    gTransport[veh][trFuel] < 1.0) {
                    
    SendClientMessage(playerid, -1"{FFFF00}  [Информация] {FFFFFF}В вашем автомобиле нет бензина!");
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                    return 
    true;
                }
                if(
    gTransport[veh][trHealth] <= 350) {
                    
    SendClientMessage(playerid, -1"{FFFF00}  [Информация] {FFFFFF}Двигатель заглох! Вызовите механика /call (611)");
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                    return 
    true;
                }
                
    FuelFuck[veh] = SetTimerEx("FuelUpdate"60000true"i"veh); 
            }
        } 
    в OnVehicleDeath
    PHP код:
    KillTimer(FuelFuck[veh]); 
    и конец мода
    PHP код:
    forward TransportUpdate(playerid);
    public 
    TransportUpdate(playerid) {
        new 
    veh GetPlayerVehicleID(playerid);
        
    gTransport[veh][trFuel] -= gTransport[veh][trExpense];
        if(
    gTransport[veh][trFuel] < 1.0) {
            
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
            
    KillTimer(FuelFuck[veh]);
        }
        return 
    true;

    Последний раз редактировалось Seviel; 04.01.2017 в 01:02. Причина: Работает

  7. #7
    Аватар для Guldan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.11.2016
    Сообщений
    43
    Репутация:
    2 ±
    А не проще статус открыт/закрыт, вкл/выкл двигатель, сделать на кнопку

  8. #8
    Аватар для Mist
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.12.2015
    Сообщений
    14
    Репутация:
    0 ±
    Цитата Сообщение от Seviel Посмотреть сообщение
    Хотите чтобы бензин тратился даже когда машина стоит или в ней нет водителя, вот возможное решение
    Ко всем глобальным переменным:
    PHP код:
    new FuelFake[MAX_VEHICLES]; // - Называйте как хотите, а я так 
    Где заводится транспорт нужно добавить таймер
    PHP код:
    else if(newkeys 1) { // CTRL
            
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
                new 
    enginelightsalarmdoorsbonnetbootobjective;
                new 
    veh GetPlayerVehicleID(playerid);
                
    GetVehicleParamsEx(vehenginelightsalarmdoorsbonnetbootobjective);
                if(
    engine == 0) {
                    
    SetVehicleParamsEx(vehtruelightsalarmdoorsbonnetbootobjective);
                }
                else {
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                    
    KillTimer(FuelFuck[veh]);
                }
                if(
    gTransport[veh][trFuel] < 1.0) {
                    
    SendClientMessage(playerid, -1"{FFFF00}  [Информация] {FFFFFF}В вашем автомобиле нет бензина!");
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                    return 
    true;
                }
                if(
    gTransport[veh][trHealth] <= 350) {
                    
    SendClientMessage(playerid, -1"{FFFF00}  [Информация] {FFFFFF}Двигатель заглох! Вызовите механика /call (611)");
                    
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
                    return 
    true;
                }
                
    FuelFuck[veh] = SetTimerEx("FuelUpdate"60000true"i"veh); 
            }
        } 
    в OnVehicleDeath
    PHP код:
    KillTimer(FuelFuck[veh]); 
    и конец мода
    PHP код:
    forward TransportUpdate(playerid);
    public 
    TransportUpdate(playerid) {
        new 
    veh GetPlayerVehicleID(playerid);
        
    gTransport[veh][trFuel] -= gTransport[veh][trExpense];
        if(
    gTransport[veh][trFuel] < 1.0) {
            
    SetVehicleParamsEx(vehfalselightsalarmdoorsbonnetbootobjective);
            
    KillTimer(FuelFuck[veh]);
        }
        return 
    true;

    Спасибо

    - - - Добавлено - - -

    Цитата Сообщение от Guldan Посмотреть сообщение
    А не проще статус открыт/закрыт, вкл/выкл двигатель, сделать на кнопку
    Там есть вкл и выкл двигателя, а так можно и сделать открытие дверей

 

 

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

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

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

Ваши права

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