Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 23
  1. #1
    Аватар для Trender
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.05.2014
    Сообщений
    117
    Репутация:
    -1 ±

    Как создать систему рандомной погоды в городах с оповещением?

    PHP код:

    new weather[3]; // Переменая где будет храниться ID города [0] - LS, [1] -SF, [2] -LV
    new weatherLS[] = {2,7,8,10,12,13,14,15}; //Номера погоды в LS (Можно сменить на свои)
    new weatherSF[] = {2,7,8,10,12,13,14,15}; //Номера погоды в SF (Можно сменить на свои)
    new weatherLV[] = {2,7,8,10,12,13,14,15}; //Номера погоды в LV (Можно сменить на свои) 

    forward ChangeWeather();
    public 
    ChangeWeather()
    {
        
    weather[0] = weatherLS[random(sizeof(weatherLS))]; // Присваиваем рандомную погоду LS
        
    weather[1] = weatherSF[random(sizeof(weatherSF))]; // Присваиваем рандомную погоду SF
        
    weather[2] = weatherLV[random(sizeof(weatherLV))]; // Присваиваем рандомную погоду LV
        
    return 1;


    new 
    newhour,newminute,newsecond;
        
    gettime(newhournewminutenewsecond); // Узнаём время сервера
        
    if(newminute == 15 && newsecond == 00// Если время сервера соответствует 15 минутам любого часа, то меняем погоду
        
    {
            
    ChangeWeather(); // Меняем погоду
        
    }
        if(
    newminute == 40 && newsecond == 00// Если время сервера соответствует 40 минутам любого часа, то меняем погоду
        
    {
            
    ChangeWeather(); // Меняем погоду
        


      new 
    Float:xFloat:yFloat:z;
        for(new 
    0MAX_PLAYERSi++)
        {
            if(
    IsPlayerConnected(i))
            {
                
    GetPlayerPos(ixyz);
                if((
    > -992.5172 && 4000.0000) && (528.0000 && > -4000.0000)) // Проверям по позиции игрока где он находиться. В данном случае мы в Los Santos
                
    {
                    
    SetPlayerWeather(iWeather[0]); // Присваиваем погоду игроку в LS
                
    }
                if((
    > -4000.0000 && x< -992.5172) && (4000.0000 && > -4000.0000)) // Проверям по позиции игрока где он находиться. В данном случае мы в  San Fierro
                
    {
                    
    SetPlayerWeather(iWeather[1]); // Присваиваем погоду игроку в SF
                
    }
                if((
    > -992.5172 && x4000.0000) && (4000.0000 && 528.0000)) // Проверям по позиции игрока где он находиться. В данном случае мы в Las Venturas
                
    {
                    
    SetPlayerWeather(iWeather[2]); // Присваиваем погоду игроку в LV
                
    }
            }
        } 
    Куда и как произвести, чтобы допустим игроку выводилось:
    - "В LS в данный момент солнце"
    - "В SF в данный момент дождь"
    - "В LV в данный момент пасмурно"
    Грубо говоря, чтобы SendClientMassenge считывал ид погоды и после выводил название погоды игроку.

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

    Кто поможет мне с двумя моими последними вопросами, то кину ещё денежек чуть-чуть. ( на WebMoney )
    Последний раз редактировалось DeimoS; 13.11.2014 в 02:53.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Глобальный массив:
    PHP код:
    new weather_name[][] =
    {
        
    "Ошибка",//Сообщение об ошибке, которое нам пригодится в дальнейшем
        
    "",// Название погоды с ID 2
        
    "",// Название погоды с ID 7
        
    "",// Название погоды с ID 8
        
    "",// Название погоды с ID 10
        
    "",// Название погоды с ID 12
        
    "",// Название погоды с ID 13
        
    "",// Название погоды с ID 14
        
    ""// Название погоды с ID 15
    }; 
    Новая функция:
    PHP код:
    stock ConvertWeatherIdInCell(weatherid)
    {
        switch(
    weatherid)
        {
            case 
    2: return 1;
            case 
    7: return 2;
            case 
    8: return 3;
            case 
    10: return 4;
            case 
    12: return 5;
            case 
    13: return 6;
            case 
    14: return 7;
            case 
    16: return 8;
        }
        return 
    0;// Вот тут и пригодилось сообщение об ошибке, которое мы сделали в массиве. Это нужно для того, чтоб если в функцию был указан неверный ID погоды, не случился выход за пределы массива


    Ну и теперь пример сообщений в виде команды:
    PHP код:
    if(!strcmp(cmdtext"/forecast"))
    {
        new 
    string[21+sizeof(weather_name)+1];
        
    format(stringsizeof(string), "В LS в данный момент %s"weather_name[ConvertWeatherIdInCell(weather[0])]);
        
    SendClientMessage(playerid, -1string);
        
    format(stringsizeof(string), "В SF в данный момент %s"weather_name[ConvertWeatherIdInCell(weather[1])]);
        
    SendClientMessage(playerid, -1string);
        
    format(stringsizeof(string), "В LV в данный момент %s"weather_name[ConvertWeatherIdInCell(weather[2])]);
        
    SendClientMessage(playerid, -1string);
        return 
    1;

    Можно ещё макрос сделать для удобства. Например:
    PHP код:
    #define GetWeatherName(%0) weather_name[ConvertWeatherIdInCell(weather[%0])] 
    И уже использовать так
    PHP код:
    if(!strcmp(cmdtext"/forecast"))
    {
        new 
    string[21+sizeof(weather_name)+1];
        
    format(stringsizeof(string), "В LS в данный момент %s"GetWeatherName(0));
        
    SendClientMessage(playerid, -1string);
        
    format(stringsizeof(string), "В SF в данный момент %s"GetWeatherName(1));
        
    SendClientMessage(playerid, -1string);
        
    format(stringsizeof(string), "В LV в данный момент %s"GetWeatherName(2));
        
    SendClientMessage(playerid, -1string);
        return 
    1;

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.05.2014
    Сообщений
    117
    Репутация:
    -1 ±
    Всё сделал так, но ужасно флудит в чат, что допустим погода в сф солнечная. ( каждую секунду. )
    Систему взял с г-и - g-i.ru/showthread.php?t=237868
    и когда я был в LS, мне выводился текст "Ошибка", так как переменная LS = 0 походу.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Trender Посмотреть сообщение
    Всё сделал так, но ужасно флудит в чат, что допустим погода в сф солнечная. ( каждую секунду. )
    Систему взял с г-и - g-i.ru/showthread.php?t=237868
    и когда я был в LS, мне выводился текст "Ошибка", так как переменная LS = 0 походу.
    Мой код флудить не должен. Это уже ты что-то там в реализации намудрил. Без кода ничем помочь не смогу
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.05.2014
    Сообщений
    117
    Репутация:
    -1 ±
    а в твоём коде будет в разных городах разная погода?
    и как не сделать, чтобы погода сама менялась рандомно допустим через каждые 30 мин?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Trender Посмотреть сообщение
    а в твоём коде будет в разных городах разная погода?
    и как не сделать, чтобы погода сама менялась рандомно допустим через каждые 30 мин?
    Где ты увидел в моём коде смену погоды?
    Таймер
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.05.2014
    Сообщений
    117
    Репутация:
    -1 ±
    так в твоей системе вроде бы вообще погода не изменяется, только текст выводит

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Trender Посмотреть сообщение
    так в твоей системе вроде бы вообще погода не изменяется, только текст выводит
    Ну да. Она берёт данные из той системы, что кинул ты и выводит сообщения. О каких городах речь, не пойму
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  9. #9
    Аватар для Trender
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.05.2014
    Сообщений
    117
    Репутация:
    -1 ±
    Херня какая то получилась.
    Я хочет лишь то, чтобы при смене погоды в городе, в котором ты находишся срабаывал Sendclienmassnge и писал, что в данном городе сейчас начался дождь.
    мануал сам - g-i.ru/showthread.php?t=237868
    там написанно

    Теперь нам нужно, чтобы 15 и 40 минут (Время можно сменить по желанию) каждого часа (13:15,14:15,15:40 и т.п) менялась погода.
    В паблик с секундным обновлением вставим следующее:

    в какой паблик это засунуть? public onplayerupdate чтоли?

    Теперь нам нужно создать проверку на координаты игрока, а затем установить погоду.
    Нам нужно вставить в паблик (Желательно с 2 и более секундами обновления) - а это в какой паблик не понимаю.
    Последний раз редактировалось Trender; 12.11.2014 в 20:17.

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

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

        
    weather[0] = weatherLS[random(sizeof(weatherLS))]; // Присваиваем рандомную погоду LS 
        
    weather[1] = weatherSF[random(sizeof(weatherSF))]; // Присваиваем рандомную погоду SF 
        
    weather[2] = weatherLV[random(sizeof(weatherLV))]; // Присваиваем рандомную погоду LV 
        
    new string[14+sizeof(weather_name)+1];
        
    format(stringsizeof(string), "В LS начался %s"GetWeatherName(0));
        
    SendClientMessage(playerid, -1string);
        
    format(stringsizeof(string), "В SF начался %s"GetWeatherName(1));
        
    SendClientMessage(playerid, -1string);
        
    format(stringsizeof(string), "В LV начался %s"GetWeatherName(2));
        
    SendClientMessage(playerid, -1string);
        return 
    1

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

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

    Steve Pavlina

 

 
Страница 1 из 3 1 2 3 ПоследняяПоследняя

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

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

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

Ваши права

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