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

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

    2 разные проверки в одном паблике

    Вот создал паблик который работает на таймере 5 минут
    Код:
    public Eject()
    {
        if(weatherid == 700)
        {
            for(new i = GetMaxPlayers() - 1; i != -1; i--)
            {
                if(!IsPlayerConnected(i) || IsPlayerInAnyVehicle(i) || GetPlayerInterior(i) != 0)
                    continue;
                else
                    SetPlayerHealth(i, 0.0);
                    SetWeather(1);
                    SendClientMessageToAll(0xAA3333AA, "Выброс закончился!!!");
                    weatherid = 1;
    
            }
    
        } 
        
    	 if(pInfo[playerid][pInfect] >= 15)
    		{
    		  new Float:PH;
    		  SetPlayerHealth(playerid, PH-15);
    		  SendClientMessage(playerid, 0xAA3333AA, "* Вы заражены радиацией. Потеря 15 PH");
    		}
    
    }
    Исправно работает лишь первая часть. Захотел вставить вторую проверку которая не имеет ничего общего с первой (просто для пятиминутного таймера):
    Код:
    	 if(pInfo[playerid][pInfect] >= 15)
    		{
    		  new Float:PH;
    		  SetPlayerHealth(playerid, PH-15);
    		  SendClientMessage(playerid, 0xAA3333AA, "* Вы заражены радиацией. Потеря 15 PH");
    		}
    Начало выдавать 3 ошибки на эти новые строки:
    Код:
    E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1330) : error 017: undefined symbol "playerid"
    E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1333) : error 017: undefined symbol "playerid"
    E:\Program Files\Virtual Reality\SA-MP 0.3z Windows Server\gamemodes\S.T.A.L.K.E.R..pwn(1334) : error 017: undefined symbol "playerid"
    В чём может быть проблема? Может отдельный паблик создать? А как тогда к томуже привезать к таймеру?
    Не злитесь. Я всего лишь учусь скриптить

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Нужно вставлять в тот же цикл, но вместо playerid писать название переменной, к которой мы обращаемся, в данном случае это i.

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

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Мне надо чтобы это не зависело от if(weatherid == 700). Совсем новое условие. Сосем другая проверка. независемо от weatherid т. е. нужно так?:

    if(pInfo[i][pInfect] >= 15)
    {
    new Float:PH;
    SetPlayerHealth(i, PH-15);
    SendClientMessage(playerid, 0xAA3333AA, "* Вы заражены радиацией. Потеря 15 PH");
    }
    Не злитесь. Я всего лишь учусь скриптить

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    А сообщение будете снова отправлять неизвестной переменной playerid? Это всё относится к этому.

    Создавайте новый цикл. Только так:
    PHP код:
    if(weatherid == 700)
    {
        
    // цикл
    }
    else
    {
        
    // другой цикл, в котором будет Ваш новый код

    Пока что могу это предложить.

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

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    А сообщение будете снова отправлять неизвестной переменной playerid? Это всё относится к этому.

    Создавайте новый цикл. Только так:
    PHP код:
    if(weatherid == 700)
    {
        
    // цикл
    }
    else
    {
        
    // другой цикл, в котором будет Ваш новый код

    Пока что могу это предложить.

    всёравно ошибки
    Не злитесь. Я всего лишь учусь скриптить

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

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

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

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Проблемма решена. Должно было быть так:
      Открыть/закрыть

    Код:
    forward Eject();
    
    public Eject()
    {
        if(weatherid == 700)
        {
            for(new i = GetMaxPlayers() - 1; i != -1; i--)
            {
                if(!IsPlayerConnected(i) || IsPlayerInAnyVehicle(i) || GetPlayerInterior(i) != 0)
                    continue;
                else
                    SetPlayerHealth(i, 0.0);
                    SetWeather(1);
                    SendClientMessageToAll(0xAA3333AA, "Выброс закончился!!!");
                    weatherid = 1;
    
            }
    
    
        } 
    
    
            for(new i = GetMaxPlayers() - 1; i != -1; i--) // Потребности
            {
            pInfo[i][pInfect] += 1;
            pInfo[i][pHunger] += 1;
            
            
                if(pInfo[i][pInfect] >= 5)
    		{
              new Float:ph;
              GetPlayerHealth(i, ph);
    		  SetPlayerHealth(i, ph - 5);
    		  SendClientMessage(i, 0xAA3333AA, "* Вы заражены радиацией. Потеря 5 PH");
            }
            
            
            else  if(pInfo[i][pInfect] >= 15)
    		{
              new Float:ph;
              GetPlayerHealth(i, ph);
    		  SetPlayerHealth(i, ph - 15);
    		  SendClientMessage(i, 0xAA3333AA, "* Вы заражены радиацией. Потеря 15 PH");
            }
            else  if(pInfo[i][pInfect] >= 25)
    		{
              new Float:ph;
              GetPlayerHealth(i, ph);
    		  SetPlayerHealth(i, ph  - 25);
    		  SendClientMessage(i, 0xAA3333AA, "* Вы заражены радиацией. Потеря 25 PH");
    
    		}
    		
    		
                 if(pInfo[i][pHunger] >= 5)
    		{
              new Float:ph;
              GetPlayerHealth(i, ph);
    		  SetPlayerHealth(i, ph - 5);
    		  SendClientMessage(i, 0xAA3333AA, "* Вы голодны. Потеря 5 PH");
            }
    
    
            else  if(pInfo[i][pInfect] >= 15)
    		{
              new Float:ph;
              GetPlayerHealth(i, ph);
    		  SetPlayerHealth(i, ph - 15);
    		  SendClientMessage(i, 0xAA3333AA, "* Вы очень голодны. Потеря 15 PH");
            }
    		
    		
    		}
    		
    		
    		
    
    
    }
    Не злитесь. Я всего лишь учусь скриптить

 

 

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

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

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

Ваши права

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