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

Тема: Проверка

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

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

    Проверка

    Не работает данная проверка:
    PHP код:
    if(!(<= listitem <= 5))
                {
                    new 
    string[46 31 +1];
                    
    format(stringsizeof(string), "Вас назначили руководить организацией %s."GetFracNames[pInfo[giveplayerid][pName]]);
                    
    SendClientMessage(giveplayerid, -1string);

                    
    pInfo[giveplayerid][pFracSkin] = GetLeaderSkin[pInfo[giveplayerid][pGender]][pInfo[giveplayerid][pMember]];
                    
    AccWriteInt(pInfo[giveplayerid][pName], "FracSkin"pInfo[giveplayerid][pFracSkin]);
                    
    SetPlayerSkin(giveplayeridpInfo[giveplayerid][pFracSkin]);
                    
    //SetPlayerColor(giveplayerid, GetPlayerToTeamColor[pInfo[giveplayerid][pMember]]);
                

    отвечает за то что если игрок выбрал пункт диалога от 0 до 5 (case 0..5), то выдается определенное сообщение и ф-ии.

    P.S. Подскажите как еще можно лучше усовершенствовать код.
    Полный код :
    PHP код:
        case DIALOG_MAKELEADER:
            {
                if(!
    response) return 1;
                new
                    
    giveplayerid GetPVarInt(playerid,"PlayerLeader"),
                    
    frac;
                    
                switch(
    listitem)
                    {
                    case 
    0frac FGOVERMENT//Департамент
                    
    case 1frac FARMY//Армия
                    
    case 2frac FARMY//Здравохранение
                    
    case 3frac FSMI//СМИ
                    
    case 4frac FSMI//Полиция
                    
    case 5frac FFBI//FBI
                    
    case 6:
                        {
                            
    SetPVarInt(playerid,"section_makeleader"4);
                            
    ShowPlayerDialog(playerid14DIALOG_STYLE_LIST"Мафии:""\
                            1. Русская Мафия.\n\
                            2. La Cosa Nostra.\n\
                            3. Yakuza."
    "Назначить""Отмена");
                        }
                    case 
    7:
                        {
                            
    SetPVarInt(playerid,"section_makeleader"5);
                            
    ShowPlayerDialog(playerid14DIALOG_STYLE_LIST"Банды:""\
                            1. Grove Street.\n\
                            2. The Ballas.\n\
                            3. The Rifa.\n\
                            4. Varios Los Aztecas.\n\
                            5. Los-Santos Vagos."
    "Назначить""Отмена");
                    }
                }
                if(!(
    <= listitem <= 5))
                {
                    new 
    string[46 31 +1];
                    
    format(stringsizeof(string), "Вас назначили руководить организацией %s."GetFracNames[pInfo[giveplayerid][pName]]);
                    
    SendClientMessage(giveplayerid, -1string);

                    
    pInfo[giveplayerid][pFracSkin] = GetLeaderSkin[pInfo[giveplayerid][pGender]][pInfo[giveplayerid][pMember]];
                    
    AccWriteInt(pInfo[giveplayerid][pName], "FracSkin"pInfo[giveplayerid][pFracSkin]);
                    
    SetPlayerSkin(giveplayeridpInfo[giveplayerid][pFracSkin]);
                    
    //SetPlayerColor(giveplayerid, GetPlayerToTeamColor[pInfo[giveplayerid][pMember]]);
                
    }
                
    pInfo[giveplayerid][pLeader] = fracAccWriteInt(pInfo[giveplayerid][pName], "Leader"frac);
                return 
    pInfo[giveplayerid][pMember] = fracAccWriteInt(pInfo[giveplayerid][pName], "Member"frac);
            } 
    Последний раз редактировалось #Johnson; 13.03.2019 в 12:47.

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

    Статус
    Оффлайн
    Регистрация
    20.01.2018
    Сообщений
    52
    Репутация:
    7 ±
    Условие
    PHP код:
    if(!(<= listitem <= 5)) 
    сработает, если listitem будет либо больше 5, либо меньше 0.

    Чтобы получилось как ты хочешь, следует убрать оттуда унарный не (!)
    PHP код:
    if(<= listitem <= 5

  3. Пользователь сказал cпасибо:
    #Johnson (13.03.2019)
  4. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    if(!(<= listitem <= 5)) 
    на
    PHP код:
    if(<= listitem <= 5

    Ну разве что как-то так
    1. case DIALOG_MAKELEADER:
    2. {
    3. if(!response) return 1;
    4. new
    5. giveplayerid = GetPVarInt(playerid,"PlayerLeader"),
    6. frac,
    7. player_name[MAX_PLAYER_NAME];
    8.  
    9. strcat(player_name, pInfo[giveplayerid][pName]);
    10.  
    11.  
    12. switch(listitem)
    13. {
    14. case 0..5:
    15. {
    16. static const frac_list[] =
    17. {
    18. FGOVERMENT,
    19. FARMY,
    20. FARMY,
    21. FSMI,
    22. FSMI,
    23. FFBI
    24. };
    25. frac = frac_list[listitem];
    26. new string[46 + 31 + 2 +1];
    27. format(string, sizeof(string), "Вас назначили руководить организацией %s.", GetFracNames[player_name]);
    28. SendClientMessage(giveplayerid, -1, string);
    29.  
    30. new skin = pInfo[giveplayerid][pFracSkin] = GetLeaderSkin[pInfo[giveplayerid][pGender]][pInfo[giveplayerid][pMember]];
    31. AccWriteInt(player_name, "FracSkin", skin);
    32. SetPlayerSkin(giveplayerid, skin);
    33. }
    34. case 6:
    35. {
    36. SetPVarInt(playerid, "section_makeleader", 4);
    37. ShowPlayerDialog(playerid, 14, DIALOG_STYLE_LIST, "Мафии:", "\
    38. 1. Русская Мафия.\n\
    39. 2. La Cosa Nostra.\n\
    40. 3. Yakuza.", "Назначить", "Отмена");
    41. }
    42. case 7:
    43. {
    44. SetPVarInt(playerid, "section_makeleader", 5);
    45. ShowPlayerDialog(playerid, 14, DIALOG_STYLE_LIST, "Банды:", "\
    46. 1. Grove Street.\n\
    47. 2. The Ballas.\n\
    48. 3. The Rifa.\n\
    49. 4. Varios Los Aztecas.\n\
    50. 5. Los-Santos Vagos.", "Назначить", "Отмена");
    51. }
    52. }
    53. AccWriteInt(player_name, "Leader", (pInfo[giveplayerid][pLeader] = frac));
    54. AccWriteInt(player_name, "Member", (pInfo[giveplayerid][pMember] = frac));
    55. return 1;
    56. }

    Хотя это больше визуальные исправления. Код и без того вполне нормальный
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. Пользователь сказал cпасибо:
    #Johnson (13.03.2019)
  6. #4
    Аватар для #Johnson
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.05.2016
    Сообщений
    34
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    if(!(<= listitem <= 5)) 
    на
    PHP код:
    if(<= listitem <= 5

    Ну разве что как-то так
    1. case DIALOG_MAKELEADER:
    2. {
    3. if(!response) return 1;
    4. new
    5. giveplayerid = GetPVarInt(playerid,"PlayerLeader"),
    6. frac,
    7. player_name[MAX_PLAYER_NAME];
    8.  
    9. strcat(player_name, pInfo[giveplayerid][pName]);
    10.  
    11.  
    12. switch(listitem)
    13. {
    14. case 0..5:
    15. {
    16. static const frac_list[] =
    17. {
    18. FGOVERMENT,
    19. FARMY,
    20. FARMY,
    21. FSMI,
    22. FSMI,
    23. FFBI
    24. };
    25. frac = frac_list[listitem];
    26. new string[46 + 31 + 2 +1];
    27. format(string, sizeof(string), "Вас назначили руководить организацией %s.", GetFracNames[player_name]);
    28. SendClientMessage(giveplayerid, -1, string);
    29.  
    30. new skin = pInfo[giveplayerid][pFracSkin] = GetLeaderSkin[pInfo[giveplayerid][pGender]][pInfo[giveplayerid][pMember]];
    31. AccWriteInt(player_name, "FracSkin", skin);
    32. SetPlayerSkin(giveplayerid, skin);
    33. }
    34. case 6:
    35. {
    36. SetPVarInt(playerid, "section_makeleader", 4);
    37. ShowPlayerDialog(playerid, 14, DIALOG_STYLE_LIST, "Мафии:", "\
    38. 1. Русская Мафия.\n\
    39. 2. La Cosa Nostra.\n\
    40. 3. Yakuza.", "Назначить", "Отмена");
    41. }
    42. case 7:
    43. {
    44. SetPVarInt(playerid, "section_makeleader", 5);
    45. ShowPlayerDialog(playerid, 14, DIALOG_STYLE_LIST, "Банды:", "\
    46. 1. Grove Street.\n\
    47. 2. The Ballas.\n\
    48. 3. The Rifa.\n\
    49. 4. Varios Los Aztecas.\n\
    50. 5. Los-Santos Vagos.", "Назначить", "Отмена");
    51. }
    52. }
    53. AccWriteInt(player_name, "Leader", (pInfo[giveplayerid][pLeader] = frac));
    54. AccWriteInt(player_name, "Member", (pInfo[giveplayerid][pMember] = frac));
    55. return 1;
    56. }

    Хотя это больше визуальные исправления. Код и без того вполне нормальный
    Спасибо.
    Была ошибка: GetFracNames[player_name]);, исправил GetFracNames[strlen(player_name)]);

  7. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от #Johnson Посмотреть сообщение
    Была ошибка: GetFracNames[player_name]);, исправил GetFracNames[strlen(player_name)]);
    Эмм, покажи массив GetFracNames. Что-то тут не так.
    Если там перечислены названия фракций, то должно было быть так изначально:
    PHP код:
    GetFracNames[frac
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    15.05.2016
    Сообщений
    34
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, покажи массив GetFracNames. Что-то тут не так.
    Если там перечислены названия фракций, то должно было быть так изначально:
    PHP код:
    GetFracNames[frac
    Мой косяк, там должно быть не pName, а pMember. Ошибся когда писал.
    Только есть 1 проблема.
    PHP код:
    static const GetFracNames[14][] =
    {
        
    "Администрация президента",
        
    "Управление Министерством Обороны",
        
    "Министерство Здравоохранения",
        
    "Средство Массовой Информации",
        
    "Управление Внутренних Дел",
        
    "Федеральное Бюро Расследований",
        
    "Русская Мафия",
        
    "La Cosa Nostra",
        
    "Yakuza",
        
    "Grove Street",
        
    "The Ballas",
        
    "The Rifa",
        
    "Varios Los Aztecas",
        
    "Los-Santos Vagos"
    }; 
    При назначении на любую организацию, пишет что назначил в 1 орг (Администрация президента )

  9. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    frac frac_list[listitem]; 
    должна быть выше
    PHP код:
    GetFracNames[frac
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  10. Пользователь сказал cпасибо:
    #Johnson (14.03.2019)
  11. #8
    Аватар для #Johnson
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.05.2016
    Сообщений
    34
    Репутация:
    0 ±
    спасибо. закройте тему

 

 

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

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

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

Ваши права

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