Sign in to follow this  
Followers 0

Загружаем новости с сайта на сервер

1 post in this topic

Guest stibs
Новичок

Данная команда предназначена для загрузки и вывода новостей в диалог (например, у вас на сервере есть окно "Новости", куда вы записываете например, все обновления мода), но вот беда, к примеру, амх. файл вашего мода занимает 2мб, а вам нужно дописать мелкую новость в инфобокс, весьма проблематично дописать, скомпилировать, залить все это добро. Я предлагаю выход проще, заодно немного научимся пользоваться инклудом a_http для осуществления ниже написанного кода вам нужен: любой сайт с FTP, куда можно залить файл с новостями.

 

Ко всем #include добавляем:

#include <a_http>

Нужно создать огромный массив под текст новостей (это конечно затратно, но приходится)

Ко всем new:

new NewsText[2048 char];

Понимаю, что 2048 яйчеек это перебор, но по мере увеличения информации должен увеличиваться размер под нее.
Теперь, создайте файл с новостями (например News.txt) и залейте его к себе на хост (пример: http://myhost.ru/News.txt)
Теперь, нам нужно чтобы сервер за n-ный промежуток обновлял нашу стрингу с новостями файлом с хоста, для этого проделываем нехитрую операцию, создаем новый паблик, который будет обновлять наши новости:

forward CheckNews();
public CheckNews()
{
     HTTP(0,HTTP_GET,"http://myhost.ru/News.txt","","SetNewsString");
     return SetTimer("CheckNews",600000,false);
}

ПОЯСНЕНИЯ: 
HTTP(индекс = 0,тип запроса (HTTP_GET, HTTP_POST, HTTP_HEAD),адрес (URL),"",паблик ответа (Callback)); - пытаемся взять новости с сервера
SetTimer("CheckNews",600000,false); - через 10 минут делаем то же самое

В public OnGameModeInit добавляем:

CallLocalFunction("CheckNews","");

Теперь, нужно создать коллбэк, на который будет присылаться ответ от сервера:

forward SetNewsString(index, response_code, data[]);
public SetNewsString(index, response_code, data[])
{
    if(!data[0]) return print(!"[HTTP News]: Нет полученных данных!");
    strpack(NewsString,data);
    return 1;
}

В public OnPlayerCommandText

if(!strcmp(cmdtext,"/news",true))
{
    new tmp_news[2048];
    strunpack(tmp_news,NewsString);
    return ShowPlayerDialog(playerid,1500,"Новости",tmp_news,"Ок","Отмена");
}

Теперь, сервер каждые 10 минут будет записывать в массив NewsText текст который находится в файле News.txt на вашем сервере.

 

Автор: Владокс

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Pulbusha
      By Pulbusha
      В далеком 2017-2018 году сущестовал сервер GTA-RP (возможно он существует и сейчас) Появилась мысль о создании крмп сервера в стиле старых проектов тех годов (GTA-RP, Radmir RP, Amazing RP). Скажите, будет ли интерес к такому серверу и вообще интересно ли это а также кто хотел бы присоединиться к разработке?





    • Einzig
      By Einzig
      Проект Kornilov_RP для GTA: SA-MP — это сервер, находящийся на стадии альфа-тестирования. Особенность заключается в концепции «чистого взаимодействия», где акцент смещен с интерфейса и подсказок на живое общение между игроками.
      Статус разработки: Чистый мод , написанный полностью с нуля без использования готовых сборок.
      Полное отсутствие визуальных маркеров доступности недвижимости. На карте не отображаются свободные дома. Информацию о том, что здание выставлено на продажу, нельзя найти на мини-карте — её необходимо добывать физически («ногами»), лично обходя районы города. Это превращает поиск жилья в полноценное детективное приключение по изучению окрестностей.
      Экономика знаний: Поскольку никто из игроков заранее не знает, когда и где освободится дом, главной ценностью становится само знание территории и умение быстро ориентироваться в пространстве. Тот, кто лучше изучил город, получает преимущество при захвате ценной недвижимости.
       
      Весь игровой процесс будет на одном острове.
      Мод разрабатывается в одно лицо по вечерам.
      Любой желающий может вкинуть идею для реализации.
      Так же приветствуются тестеры\маперы. 
      IP: 178.206.226.14:7777
      Группа в ВК: vk.ru/kornilov_rp