SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 06/06/2011, 04:25 PM   #1
temka1993
Big Clucker
 
Join Date: Feb 2011
Posts: 62
Reputation: 0
Default Статусы в авто-меню

Привет всем. Помогите хоть здесь, третий день сообразить немогу, пишу авто-меню со "статусом" в диалоговом окне, получается какая то ересь.

Работает таким образом:

1. Садимся в машину и жмем субмиссию
2. Вылазит окно и там список чего открывать/закрывать т.е. капот/багажник и т.д.

Функционал есть, но вот статус "открыто" и "закрыто" ерундит. Кроме статуса двигателя. вот кодец:

PHP Code:
    new carid GetPlayerVehicleID(playerid);
    
GetVehicleParamsEx(caridenginelightsalarmdoorsbonnetbootobjective);
    
    new 
message[2][24] ={ "{00CC66}Завести","{CC0000}Заглушить"};
    new 
lightstat[2][24] ={ "{00CC66}Включить""{CC0000}Выключить"};
    new 
alarmstat[2][24] ={ "{00CC66}Включить""{CC0000}Выключить"};
    new 
bonnetstat[2][24]={ "{00CC66}Открыть""{CC0000}Закрыть"};
    new 
bootstats[2][24] ={ "{00CC66}Открыть""{CC0000}Закрыть"};
    new 
doorstats[2][24] ={ "{00CC66}Открыть""{CC0000}Закрыть"};

    if(
newkeys == 512)
    {
        
format(string,1024,
        
"{0099FF}**Случайный тюнинг\n\
        {0099FF}Двигатель   {FFFF00}| %s\n\
        {0099FF}Фары        {FFFF00}| %s\n\
        {0099FF}Аварийка    {FFFF00}| %s\n\
        {0099FF}Капот       {FFFF00}| %s\n\
        {0099FF}Багажник    {FFFF00}| %s\n\
        {0099FF}Двери       {FFFF00}| %s\n\
        {0099FF}Номер       {FFFF00}| {00CC66}%s\n\
        {0099FF}**Установить неон"
,(engine message[1] : message[0] ),(lights lightstat[0] : lightstat[1]),(alarm alarmstat[0] : alarmstat[1]),
        (
bonnet bonnetstat[0] : bonnetstat[1]),(boot bootstats[0] : bootstats[1]),(doors doorstats[0] : doorstats[1]),(GetVehicleNumberPlate(carid)) );
        
ShowPlayerDialog(playeridDIALOGCARDIALOG_STYLE_LIST"{00CCFF}Меню Функций над Машиной",string"..::|Ок|::.."".:|Отмена|:.");
        return 
true;
    } 
это вызов диалога....

а вот его действия:

PHP Code:
    if(dialogid == DIALOGCAR && response)
    {
        new 
carid GetPlayerVehicleID(playerid);
        switch(
listitem)
        {
            case 
0:{}
            case 
1:
            {
                
GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
                if(
engine == 0SetVehicleParamsEx(carid,1,lights,alarm,doors,bonnet,boot,objective);
                else 
SetVehicleParamsEx(carid,0,lights,alarm,doors,bonnet,boot,objective);
            }
            case 
2:
            {
                  
GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
                if(
lights == 0SetVehicleParamsEx(carid,engine,1,alarm,doors,bonnet,boot,objective);
                else 
SetVehicleParamsEx(carid,engine,0,alarm,doors,bonnet,boot,objective);
            }
            case 
3:
            {
                
GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
                if(
alarm == 1SetVehicleParamsEx(carid,engine,lights,0,doors,bonnet,boot,objective);
                else 
SetVehicleParamsEx(carid,engine,lights,1,doors,bonnet,boot,objective);
            }
            case 
4:
            {
                  
GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
                if(
bonnet == 1SetVehicleParamsEx(carid,engine,lights,alarm,doors,0,boot,objective);
                else 
SetVehicleParamsEx(carid,engine,lights,alarm,doors,1,boot,objective);
            }
            case 
5:
            {
                   
GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
                if(
boot == 1SetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,0,objective);
                else 
SetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,1,objective);
            }
            case 
6:
            {
                   
GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
                if(
doors == 0SetVehicleParamsEx(carid,engine,lights,alarm,1,bonnet,boot,objective);
                else 
SetVehicleParamsEx(carid,engine,lights,alarm,0,bonnet,boot,objective);
            }
            case 
7:
            {
                
ShowPlayerDialog(playerid,PLATEDIALOG,DIALOG_STYLE_INPUT,"Смена номера","Введите номера авто в окошко","Готово","Отмена");
            }
        }
        return 
true;
    } 
Подскажите, почему статус в диалоговом окне не соответствует действительности?...

т.е. включаем "сигнализацию" а статус на "выключить" не изменился...и статус изменяется не с первого раза...в чем может быть проблема?...

действительно ума не хватает
temka1993 is offline   Reply With Quote
Old 06/06/2011, 05:50 PM   #2
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,763
Reputation: 142
Default Re: Статусы в авто-меню

Для начала немного здравого смысла, ты не заметил что ты 5 раз повторил один и тодже код?
Может стоит делать его 1 раз:
pawn Code:
if(dialogid == DIALOGCAR && response)
{
    new carid = GetPlayerVehicleID(playerid);
    GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
    switch(listitem)
    {
        case 1:
        {
            engine = ((!engine) ? 1 : 0);
        }
        case 2:
        {
            lights = ((!lights) ? 1 : 0);
        }
        case 3:
        {
            alarm = ((!alarm) ? 1 : 0);
        }
        case 4:
        {
            bonnet = ((!bonnet) ? 1 : 0);
        }
        case 5:
        {
            boot = ((!boot) ? 1 : 0);
        }
        case 6:
        {
            doors = ((!doors) ? 1 : 0);
        }
        case 7:
        {
            ShowPlayerDialog(playerid,PLATEDIALOG,DIALOG_STYLE_INPUT,"Смена номера","Введите номера авто в окошко","Готово","Отмена");
            return 1;
        }
        SetVehicleParamsEx(carid,0,lights,alarm,doors,bonnet,boot,objective);
    }
    return 1;
}
Проблема в том что по умолчанию в функции стоит -1!
смени проверки на
pawn Code:
((!engine) ? message[0] : message[1])
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is online now   Reply With Quote
Old 06/06/2011, 06:26 PM   #3
temka1993
Big Clucker
 
Join Date: Feb 2011
Posts: 62
Reputation: 0
Default Re: Статусы в авто-меню

хм...теперь все с точностью да наоборот, не считая статуса двигателя - с ним впорядке было и раньше, и сейчас

теперь меняется статус, а вот функция срабатывает не сразу... сделал вот так:

PHP Code:
            case 3:
            {
                
alarm = ((!alarm) ? 0);
                  
SetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
            } 
temka1993 is offline   Reply With Quote
Old 06/06/2011, 06:56 PM   #4
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,763
Reputation: 142
Default Re: Статусы в авто-меню

сделай так:
pawn Code:
case 3:
        {
                alarm = ((!alarm) ? 1 : 0);
                break;
        }
и так в каждом, кроме case 7.

Ну и у меня там опечатка с двигателем
SetVehicleParamsEx(carid,0,lights,alarm,doors,bonnet,boot,objective);
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is online now   Reply With Quote
Old 07/06/2011, 05:52 AM   #5
temka1993
Big Clucker
 
Join Date: Feb 2011
Posts: 62
Reputation: 0
Default Re: Статусы в авто-меню

break;
так вообще компилировать отказывается...

я уже всяко перепробывал, ну не хочет и все, если изначально статус стоит -1, нужно его привести в 0, а затем включать и выключать...т.е. 1 и 0 соответственно, а вот привести в состояние 0 у меня и как раз не выходит
temka1993 is offline   Reply With Quote
Old 07/06/2011, 02:26 PM   #6
OKStyle
High-roller
 
OKStyle's Avatar
 
Join Date: May 2008
Location: Russia, Orenburg Money: GTA$ 999,999,999
Posts: 3,125
Reputation: 142
Default Re: Статусы в авто-меню

Ну всё, все поехали теперь плагиатить систему с моего мода )
__________________
O.K.Style™ Laboratory
Kalcor: "... it's makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."
OKStyle is offline   Reply With Quote
Old 07/06/2011, 02:29 PM   #7
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,763
Reputation: 142
Default Re: Статусы в авто-меню

pawn Code:
public OnVehicleSpawn(vehicleid)
{
    SetVehicleParamsEx(vehicleid,0,0,0,0,0,0,0);
    return 1;
}
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is online now   Reply With Quote
Old 07/06/2011, 02:47 PM   #8
temka1993
Big Clucker
 
Join Date: Feb 2011
Posts: 62
Reputation: 0
Default Re: Статусы в авто-меню

OKStyle ну а как же и не с Вашего мода. а с universal'а

Stepashka спасибо, это не помогло все же
вся проблема в том что теперь уже статус меняется а состояние машины нет...срабатывает со 2 раза только...блин я уже все мозги изьел)
temka1993 is offline   Reply With Quote
Old 07/06/2011, 04:41 PM   #9
OKStyle
High-roller
 
OKStyle's Avatar
 
Join Date: May 2008
Location: Russia, Orenburg Money: GTA$ 999,999,999
Posts: 3,125
Reputation: 142
Default Re: Статусы в авто-меню

Может быть идея и с Юнивёрсала, но код вырви-глаз как знаком...
__________________
O.K.Style™ Laboratory
Kalcor: "... it's makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."
OKStyle is offline   Reply With Quote
Old 07/06/2011, 04:43 PM   #10
temka1993
Big Clucker
 
Join Date: Feb 2011
Posts: 62
Reputation: 0
Default Re: Статусы в авто-меню

OKStyle я постил этот код не только здесь)...
temka1993 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Урон авто, без игрока Nikid Русский/Russian 2 21/05/2011 05:11 PM
авто рынок tisha8 Русский/Russian 5 02/03/2011 10:28 AM
покупка авто в диалоге Tailer Русский/Russian 1 29/12/2010 03:16 AM
Проблема с авто Geryy Русский/Russian 4 14/09/2010 11:56 AM
[Tutorial] Создаем меню BaRRyS3R Релизы/Releases 4 23/03/2010 09:57 PM


All times are GMT. The time now is 09:20 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.