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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 3 123 ПоследняяПоследняя
Показано с 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Глобальный массив:
    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;

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

    Широко известно, что идеи стоят 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от Trender Посмотреть сообщение
    Всё сделал так, но ужасно флудит в чат, что допустим погода в сф солнечная. ( каждую секунду. )
    Систему взял с г-и - g-i.ru/showthread.php?t=237868
    и когда я был в LS, мне выводился текст "Ошибка", так как переменная LS = 0 походу.
    Мой код флудить не должен. Это уже ты что-то там в реализации намудрил. Без кода ничем помочь не смогу
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

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

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

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

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

    Steve Pavlina

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

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

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

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

    Широко известно, что идеи стоят 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    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

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

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

    Steve Pavlina

 

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

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

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

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

Ваши права

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