Как сделать запуск motd не из motd.txt

Тема в разделе "Программирование / Скриптинг", создана пользователем Черная вдова, 17 дек 2013.

  1. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    хотел сделать несколько motd окон что бы при подключении показывалось одно из них, как это можно сделать?
     
  2. Equality

    Equality

    Сообщения:
    53
    Симпатии:
    8
    Ты можешь создать файлы с содержимым своего motd-окна и закинуть их, к примеру, на хостинг сайта или еще куда-то. А затем в своем motd.txt прописать путь к ним, например: http://your-page.ru/motd/1.txt
    Если память не изменяет, то в motd.txt задается просто ссылка на внешний источник без всяких тегов.
     
  3. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    не забываем читать содержание темы а не ток заголовок
    [​IMG]
     
  4. Equality

    Equality

    Сообщения:
    53
    Симпатии:
    8
    Видимо, я не верно понял задачу. Тебе необходимо реализовать несколько motd-страниц? Опиши подробней задачу.
     
  5. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    игрок заходит на сервер, берем рандомное число пусть один из двух, если рандом = 1 создаем мотд на страницу сб, если 2 на стр hlstatsx
     
  6. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.977
    Черная вдова, ну в мотд как-то сделать рандомный выбор ссылки
     
  7. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    я не знаю как это будет делаться, а то сам бы уже сделал
     
  8. semjef

    semjef semjef.ru

    Сообщения:
    1.031
    Симпатии:
    473
    Черная вдова, таки можно сделать php скрипт с перенаправлением на сайте)
     
  9. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    напиши, я же сказал что сам не умею
     
  10. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
  11. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
  12. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Черная вдова
    Мда, маразм, тебе нужен готовый код? ну удачи тогда.
     
  13. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    да готовый пример random в php
     
  14. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    PHP:
    <?php
       $num 
    Rand (1,2); 
       switch (
    $num)
       {
          case 
    1:
             
    header("Location: http://google.ru/");
             exit;
             break;
          case 
    2:
             
    header("Location: http://yandex.ru/");
             exit;
             break;
       }
    ?>
     
    Черная вдова и Серый™ нравится это.
  15. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    The End Is Near...,
    я удачливый человек?
     
  16. (admiral)

    (admiral)

    Сообщения:
    69
    Симпатии:
    8
    KorDen нравится это.
  17. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.977
    Черная вдова, Ладно.. раскрою секрет...
    Берешь этот плагин
    Разбираешься с этим
    И просто подменяешь мотд на свое, которое рандомно выбирается плагином.
    Че сложного?

    Добавлено через 6 минут
    Черная вдова,

    PHP:
    #include <sourcemod>

    public OnPluginStart()
    {
        
    HookUserMessage(GetUserMessageId("VGUIMenu"), OnMsgVGUIMenutrue);
    }

    public 
    Action:OnMsgVGUIMenu(UserMsg:msg_idHandle:bf, const players[], playersNumbool:reliablebool:init)
    {
        
    decl String:buffer1[64];
        
    decl String:buffer2[256];
        
        
    BfReadString(bfbuffer1sizeof(buffer1));
        if (
    strcmp(buffer1"info") != 0)
            return 
    Plugin_Continue;
        
        if (
    BfReadByte(bf) != 1)
            return 
    Plugin_Continue;
        
        new 
    count BfReadByte(bf);

        if (
    count == 0)
            return 
    Plugin_Continue;
        
        new 
    Handle:kv CreateKeyValues("data");
        for (new 
    0counti++)
        {
            
    BfReadString(bfbuffer1sizeof(buffer1));
            
    BfReadString(bfbuffer2sizeof(buffer2));
            
            if (
    strcmp(buffer1"customsvr") == 0
                
    || (strcmp(buffer1"msg") == && strcmp(buffer2"motd") != 0)
                )
            {
                
    CloseHandle(kv);
                return 
    Plugin_Continue;
            }
            
            
    KvSetString(kvbuffer1buffer2);
        }
        
        new 
    Handle:pack;
        
    CreateDataTimer(0.001DoMOTDpackTIMER_FLAG_NO_MAPCHANGE);
        
    WritePackCell(packGetClientUserId(players[0]));
        
    WritePackCell(pack_:kv);
        
        return 
    Plugin_Handled;
    }

    public 
    Action:DoMOTD(Handle:hTimerHandle:pack)
    {
        
    ResetPack(pack);
        new 
    client GetClientOfUserId(ReadPackCell(pack));
        new 
    Handle:kv Handle:ReadPackCell(pack);
        
        if (
    client == 0)
        {
            
    CloseHandle(kv);
            return 
    Plugin_Stop;
        }
        
        if (
    g_bBIG)
        {
            
    KvSetNum(kv"customsvr"1);
            new 
    cmd;
            
    // tf2 doesn't send the cmd on the first one. it displays the mapinfo and team choice first, behind motd (so cmd is 0).
            // we can't rely on that since closing bigmotd clobbers all vgui panels, 
            
    if ((cmd KvGetNum(kv"cmd")) != Cmd_None)
            {
                
    PushArrayCell(g_cmdQueue[client], cmd);
                
    KvSetNum(kv"cmd"Cmd_ClosedHTMLPage);
            }
            else if (
    g_bIsTF && g_bFirstMOTDNext[client] == true)
            {
                
    PushArrayCell(g_cmdQueue[client], Cmd_ChangeTeam);
                
    KvSetNum(kv"cmd"Cmd_ClosedHTMLPage);
            }
        }
        
        
    KvSetNum(kv"type"MOTDPANEL_TYPE_URL);
        
        
    decl String:title[sizeof(g_szTitle)];
        
    strcopy(titlesizeof(title), g_szTitle);
        
        
    decl String:url[sizeof(g_szUrl)];
        
    strcopy(urlsizeof(url), g_szUrl);
        
        
    DoReplacements(clienttitleurl);
        
        if (
    title[0] != '\0')
        {
            
    KvSetString(kv"title"title);    
        }
        
        if (
    url[0] != '\0')
        {
            
    KvSetString(kv"msg"url);
        }
        
        
    g_bIgnoreNextVGUI true;
        
    ShowVGUIPanel(client"info"kvtrue);
        
        
    CloseHandle(kv);
        
        return 
    Plugin_Stop;
    }

    P.S.Особо не всматривался

    Но я бы сделал выбор html страницы через php
     
    Последнее редактирование: 18 дек 2013
  18. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    Если просто этот код вставляю у меня просто белый motd, что еще необходимо? И вообще можно ли использовать php в motd ?
     
  19. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Черная вдова, почему нет? выдается же обычный HTML, php обрабатывается на сервере... У меня этот код нормально работает. И да, проще:
    PHP:
    <?php
        header
    (Rand (0,1) ? "Location: http://google.ru/" "Location: http://yandex.ru/");
    ?>
    Хотя мне кажется ты это прямо в motd.txt Запихнул.. Это надо кидать на страницу, на которую ссылается motd.txt Хотя теоретически можно и в motd.txt через JS без всяких лишних страниц
     
    Черная вдова нравится это.
  20. Webman

    Webman Developer

    Сообщения:
    702
    Симпатии:
    182
    Возможно ли скачать файл в игру с сервера через motd?