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

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

    Проверка на броню

    Создал зону с действием.
    PHP код:
        if(IsPlayerInRangeOfPoint(playerid50.0, -2155.3828,-2314.1523,30.4765))
        {
            new 
    Float:PH;
            new 
    Float:armour;
            if (
    GetPlayerArmour(playeridarmour) <== //Если броня игрока меньше либо рова нулю, то
            
    {
            
    GetPlayerHealth(playeridPH); //Узнаём сколько хп на данный момент у игрока
            
    SetPlayerHealth(playeridPH-10); //Отнимаем 10 хп
            
    SetPlayerDrunkLevel (playerid3000);
            
    SendClientMessage(playerid0xAA3333AA"* Вы в радиоактивной зоне!");
            }
            
    false //Иначе (Если есть броня)
      
    [
            
    SetPlayerArmour(playeridarmour); //узнаём сколько брони на игроке
            
    SetPlayerArmour(playeridarmour-1);  // отнимаем 1 единицу брони
            
    SendClientMessage(playerid0xAA3333AA"* Вы в радиоактивной зоне!"); 


    Хочу сделать так:
    Если броня меньше либо рава нулю, то отнимается 10 ХП, даётся уровень опьянения 3000 и сообщение в чат
    Иначе отнимается 1 единица брони и сообщение в чат

    Однако выдаёт ошибки:
    PHP код:
    E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(524) : error 029invalid expressionassumed zero
    E
    :\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(524 -- 525) : error 029invalid expressionassumed zero
    E
    :\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(531 -- 532) : error 028invalid subscript (not an array or too many subscripts): "false"
    E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(536) : error 029invalid expressionassumed zero 

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

    Статус
    Оффлайн
    Регистрация
    22.12.2014
    Сообщений
    11
    Репутация:
    2 ±
    PHP код:
    if (GetPlayerArmour(playeridarmour) <== 
    - Ты во первых скобку не закрыл, и второе причем тут
    PHP код:
    false //Иначе (Если есть броня) 
    false значит лож, а иначе как я знаю обозначается так
    PHP код:
    else 
    И вообще в коде бред какой то:

    PHP код:
    if(IsPlayerInRangeOfPoint(playerid50.0, -2155.3828,-2314.1523,30.4765))
        {
            new 
    Float:PH;
            new 
    Float:armour;
            if (
    GetPlayerArmour(playeridarmour) <= 0//Если броня игрока меньше либо рова нулю, то
            
    {
            
    GetPlayerHealth(playeridPH); //Узнаём сколько хп на данный момент у игрока
            
    SetPlayerHealth(playeridPH-10); //Отнимаем 10 хп
            
    SetPlayerDrunkLevel (playerid3000);
            
    SendClientMessage(playerid0xAA3333AA"* Вы в радиоактивной зоне!");
            }
        else { 
    //Иначе (Если есть броня)
                    
    SetPlayerArmour(playeridarmour); //узнаём сколько брони на игроке
                    
    SetPlayerArmour(playeridarmour-1);  // отнимаем 1 единицу брони
                    
    SendClientMessage(playerid0xAA3333AA"* Вы в радиоактивной зоне!"); } 
    Табуляцию сам исправь если конечно у тебя pragma tabsize не стоит)
    Последний раз редактировалось Ban_Diaz; 29.12.2014 в 21:29. Причина: добавил

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

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    PHP код:
        if(IsPlayerInRangeOfPoint(playerid50.0, -2155.3828,-2314.1523,30.4765))
        {
            
            new 
    Float:armour;
            if (
    GetPlayerArmour(playeridarmour) <= 0//Åñëè áðîíÿ èãðîêà ìåíüøå ëèáî ðîâà íóëþ, òî
            
    {
            new 
    Float:PH;
            
    GetPlayerHealth(playeridPH); //Óçíà¸ì ñêîëüêî õï íà äàííûé ìîìåíò ó èãðîêà
            
    SetPlayerHealth(playeridPH-10); //Îòíèìàåì 10 õï
            
    SetPlayerDrunkLevel (playerid3000);
            
    SendClientMessage(playerid0xAA3333AA"* Âû â ðàäèîàêòèâíîé çîíå!");
            
    PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
            
    }
        else { 
    //Èíà÷å (Åñëè åñòü áðîíÿ)

                    
    GetPlayerArmour(playeridarmour); //óçíà¸ì ñêîëüêî áðîíè íà èãðîêå
                    
    SetPlayerArmour(playeridarmour-1);  // îòíèìàåì 1 åäèíèöó áðîíè
                    
    SendClientMessage(playerid0xAA3333AA"* Âû â ðàäèîàêòèâíîé çîíå!"); }
                    
    PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
        

    Когда нет брони при первом разе ничего не происходит, а на второй раз выдаётся броня (100 или больше). А должно если нет брони, то отниматься хп, а если есть броя, то хп не отниматься, а отниматься броня.

    Подскажите пожалуйста как исправить код?

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    GetPlayerArmour насколько я знаю void возвращает. Как вы собрались проверять значение функции?
    Сначала получите количество брони, а потом сравнивайте значение переменной с числом, а не значение функции с числом.

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

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Огромное спасибо. Вот рабочий код:

    PHP код:
        if(IsPlayerInRangeOfPoint(playerid50.0, -2155.3828,-2314.1523,30.4765))
        {
            
             new 
    Float:armour;
             new 
    Float:PH;
            
    GetPlayerArmour(playeridarmour);
             if (
    armour != 0//Åñëè áðîíÿ èãðîêà ìåíüøå ëèáî ðîâà íóëþ, òî
            
    {
                    
    GetPlayerArmour(playeridarmour); //óçíà¸ì ñêîëüêî áðîíè íà èãðîêå
                    
    SetPlayerArmour(playeridarmour -1);  // îòíèìàåì 1 åäèíèöó áðîíè
                    
    SendClientMessage(playerid0xAA3333AA"* Âû â ðàäèîàêòèâíîé çîíå!");
                    
    PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
            
    }
        else { 
    //Èíà÷å (Åñëè åñòü áðîíÿ)
              
            
    GetPlayerHealth(playeridPH); //Óçíà¸ì ñêîëüêî õï íà äàííûé ìîìåíò ó èãðîêà
            
    SetPlayerHealth(playeridPH -10); //Îòíèìàåì 10 õï
            
    SetPlayerDrunkLevel (playerid3000);
            
    SendClientMessage(playerid0xAA3333AA"* Âû â ðàäèîàêòèâíîé çîíå!");
            
    PlayAudioStreamForPlayer(playerid,"http://stalker-samp.ucoz.ru/Radiaciya.mp3"); //ON MUSIC
        
    }
        } 
    Проблема решена. Чтоб я без бас всех делал...
    Последний раз редактировалось Albert; 30.12.2014 в 18:49.

 

 

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

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

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

Ваши права

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