Ищу L2OFF / c++ программиста

Lineage2Interlude

Свой человек
Участник
Сообщения
81
Розыгрыши
0
Репутация
0
Реакции
10
Баллы
560
Мне нужен кто-то, кто может решить проблему с Vanganth Exteder.
Кажется, это ограничено, когда я использую Comm Board.
Список предметов должен быть 8, а не 6 и ограничен.
////
I need someome who can fix the problem with Vanganth Exteder.
Seems its limited when i am using Comm board.
The completed list of items should be 8 not 6 and limited.

void User::ShowBoard(const WCHAR *wHtml)

af92emR.png
 

Это проблемы клиента игры, байтовое ограничение клиента, в клиенте интерлюд насколько помню Макс размер отправки html 8 или 12 байт точно не помню, от туда и проблема.
П.с визуально похоже на эту проблему.
П.п.с можешь сжать html от табуляции и пробелов. Сократит чутка размер.
 
ббс состоит с 3х пакетов по 8 или 16кб, потому размер одной страницы на иле может достигать 48кб грубо говоря

надо тестировать что не так и править за наличия исходников. на скорую руку можно попробовать изменить auction_show.htm
 
8кб на инте ограничение а на грации уже 16 кб, это уже обсуждалось, даже по моему Xeonc по данному приколу на адвекст. они писали что на их инте сейчас 16 кб потому что используют ядро птс от гф. Может он подскажет, так как они сталкивались с данной особенностью.
 
Для апа есть кнопка
ббс состоит с 3х пакетов по 8 или 16кб, потому размер одной страницы на иле может достигать 48кб грубо говоря

надо тестировать что не так и править за наличия исходников. на скорую руку можно попробовать изменить auction_show.htm

это не Java-сервер. у меня здесь только 1 функция Showboard

Код:
void User::ShowBoard(const WCHAR *wHtml)
{
    if(0)
    if(g_HtmlFilter.IsEnabled())
    {
        wstringstream dataStream;
        dataStream << L"bypass _auction_none" << endl << wHtml << endl;
        g_HtmlFilter.OnSendHtml(this, L"community_board.htm", dataStream.str().c_str(), 0);
    }

    pSocket->Send("ccSSSSSSSSS", 0x6E, 0x01, L"bypass _auction_none", L"bypass _auction_none", L"bypass _auction_none", L"bypass _auction_none", L"bypass _auction_none", L"bypass _auction_none", L"bypass _auction_none", L"bypass _auction_none", wHtml);

}

вверх
 
Последнее редактирование модератором:
Я никогда не имел дело с клиентом. извини но я не знаю где именно?

Код:
//================================================================================
// BoardWnd.
//================================================================================

class BoardWnd extends UIScript;

var bool m_bShow;
var bool m_bBtnLock;
var string m_Command[8];

function OnLoad ()
{
  RegisterEvent(1190);
  RegisterEvent(1200);
  m_bShow = False;
  m_bBtnLock = False;
}

function OnShow ()
{
  m_bShow = True;
}

function OnHide ()
{
  m_bShow = False;
}

function OnEvent (int Event_ID, string param)
{
  if ( Event_ID == 1190 )
  {
    HandleShowBBS(param);
  } else {
    if ( Event_ID == 1200 )
    {
      HandleShowBoardPacket(param);
    }
  }
}

function OnClickButton (string strID)
{
  switch (strID)
  {
    case "btnBookmark":
    OnClickBookmark();
    break;
    default:
  }
  if ( Left(strID,7) == "TabCtrl" )
  {
    strID = Mid(strID,7);
    if (  !Class'UIAPI_WINDOW'.IsMinimizedWindow("BoardWnd") )
    {
      ShowBBSTab(int(strID));
    }
  }
}

function Clear ()
{
}

function HandleShowBBS (string param)
{
  local int Index;
  local int Init;

  ParseInt(param,"Index",Index);
  ParseInt(param,"Init",Init);
  if ( Init > 0 )
  {
    if ( m_bShow )
    {
      PlayConsoleSound(6);
      Class'UIAPI_WINDOW'.HideWindow("BoardWnd");
      return;
    } else {
      if (  !Class'UIAPI_HTMLCTRL'.IsPageLock("BoardWnd.HtmlViewer") )
      {
        Class'UIAPI_HTMLCTRL'.SetPageLock("BoardWnd.HtmlViewer",True);
        Class'UIAPI_TABCTRL'.SetTopOrder("BoardWnd.TabCtrl",0,False);
        Class'UIAPI_HTMLCTRL'.Clear("BoardWnd.HtmlViewer");
        RequestBBSBoard();
      }
    }
  } else {
    Class'UIAPI_TABCTRL'.SetTopOrder("BoardWnd.TabCtrl",Index,False);
    Class'UIAPI_HTMLCTRL'.Clear("BoardWnd.HtmlViewer");
    ShowBBSTab(Index);
  }
}

function HandleShowBoardPacket (string param)
{
  local int idx;
  local int OK;
  local string Address;

  ParseInt(param,"OK",OK);
  if ( OK < 1 )
  {
    Class'UIAPI_WINDOW'.HideWindow("BoardWnd");
    return;
  }
JL0041:
  idx = 0;
  if ( idx < 8 )
  {
    m_Command[idx] = "";
    idx++;
    goto JL0041;
  }
  ParseString(param,"Command1",m_Command[0]);
  ParseString(param,"Command2",m_Command[1]);
  ParseString(param,"Command3",m_Command[2]);
  ParseString(param,"Command4",m_Command[3]);
  ParseString(param,"Command5",m_Command[4]);
  ParseString(param,"Command6",m_Command[5]);
  ParseString(param,"Command7",m_Command[6]);
  ParseString(param,"Command8",m_Command[7]);
  m_bBtnLock = False;
  ParseString(param,"Address",Address);
  Class'UIAPI_HTMLCTRL'.SetHtmlBuffData("BoardWnd.HtmlViewer",Address);
  if (  !m_bShow )
  {
    PlayConsoleSound(5);
    Class'UIAPI_WINDOW'.ShowWindow("BoardWnd");
    Class'UIAPI_WINDOW'.SetFocus("BoardWnd");
  }
}

function ShowBBSTab (int Index)
{
  local string strBypass;
  local EControlReturnType Ret;

  switch (Index)
  {
    case 0:
    strBypass = "bypass _bbshome";
    break;
    case 1:
    strBypass = "bypass _bbsgetfav";
    break;
    case 2:
    strBypass = "bypass _bbsloc";
    break;
    case 3:
    strBypass = "bypass _bbsclan";
    break;
    case 4:
    strBypass = "bypass _bbsmemo";
    break;
    case 5:
    strBypass = "bypass _maillist_0_1_0_";
    break;
    case 6:
    strBypass = "bypass _friendlist_0_";
    break;
    default:
  }
  if ( Len(strBypass) > 0 )
  {
    Ret = Class'UIAPI_HTMLCTRL'.ControllerExecution("BoardWnd.HtmlViewer",strBypass);
    if ( Ret == 1 )
    {
      m_bBtnLock = True;
    }
  }
}

function OnClickBookmark ()
{
  local EControlReturnType Ret;

  if ( (Len(m_Command[7]) > 0) &&  !m_bBtnLock )
  {
    Ret = Class'UIAPI_HTMLCTRL'.ControllerExecution("BoardWnd.HtmlViewer",m_Command[7]);
    if ( Ret == 1 )
    {
      m_bBtnLock = True;
    }
  }
}
 
Последнее редактирование модератором:
Код:
//================================================================================
// BoardWnd.
//================================================================================

class BoardWnd extends UIScript;

var bool m_bShow;
var bool m_bBtnLock;
var string m_Command[8];

function OnLoad ()
{
  RegisterEvent(1190);
  RegisterEvent(1200);
  m_bShow = False;
  m_bBtnLock = False;
}

function OnShow ()
{
  m_bShow = True;
}

function OnHide ()
{
  m_bShow = False;
}

function OnEvent (int Event_ID, string param)
{
  if ( Event_ID == 1190 )
  {
    HandleShowBBS(param);
  } else {
    if ( Event_ID == 1200 )
    {
      HandleShowBoardPacket(param);
    }
  }
}

function OnClickButton (string strID)
{
  switch (strID)
  {
    case "btnBookmark":
    OnClickBookmark();
    break;
    default:
  }
  if ( Left(strID,7) == "TabCtrl" )
  {
    strID = Mid(strID,7);
    if (  !Class'UIAPI_WINDOW'.IsMinimizedWindow("BoardWnd") )
    {
      ShowBBSTab(int(strID));
    }
  }
}

function Clear ()
{
}

function HandleShowBBS (string param)
{
  local int Index;
  local int Init;

  ParseInt(param,"Index",Index);
  ParseInt(param,"Init",Init);
  if ( Init > 0 )
  {
    if ( m_bShow )
    {
      PlayConsoleSound(6);
      Class'UIAPI_WINDOW'.HideWindow("BoardWnd");
      return;
    } else {
      if (  !Class'UIAPI_HTMLCTRL'.IsPageLock("BoardWnd.HtmlViewer") )
      {
        Class'UIAPI_HTMLCTRL'.SetPageLock("BoardWnd.HtmlViewer",True);
        Class'UIAPI_TABCTRL'.SetTopOrder("BoardWnd.TabCtrl",0,False);
        Class'UIAPI_HTMLCTRL'.Clear("BoardWnd.HtmlViewer");
        RequestBBSBoard();
      }
    }
  } else {
    Class'UIAPI_TABCTRL'.SetTopOrder("BoardWnd.TabCtrl",Index,False);
    Class'UIAPI_HTMLCTRL'.Clear("BoardWnd.HtmlViewer");
    ShowBBSTab(Index);
  }
}

function HandleShowBoardPacket (string param)
{
  local int idx;
  local int OK;
  local string Address;

  ParseInt(param,"OK",OK);
  if ( OK < 1 )
  {
    Class'UIAPI_WINDOW'.HideWindow("BoardWnd");
    return;
  }
JL0041:
  idx = 0;
  if ( idx < 8 )
  {
    m_Command[idx] = "";
    idx++;
    goto JL0041;
  }
  ParseString(param,"Command1",m_Command[0]);
  ParseString(param,"Command2",m_Command[1]);
  ParseString(param,"Command3",m_Command[2]);
  ParseString(param,"Command4",m_Command[3]);
  ParseString(param,"Command5",m_Command[4]);
  ParseString(param,"Command6",m_Command[5]);
  ParseString(param,"Command7",m_Command[6]);
  ParseString(param,"Command8",m_Command[7]);
  m_bBtnLock = False;
  ParseString(param,"Address",Address);
  Class'UIAPI_HTMLCTRL'.SetHtmlBuffData("BoardWnd.HtmlViewer",Address);
  if (  !m_bShow )
  {
    PlayConsoleSound(5);
    Class'UIAPI_WINDOW'.ShowWindow("BoardWnd");
    Class'UIAPI_WINDOW'.SetFocus("BoardWnd");
  }
}

function ShowBBSTab (int Index)
{
  local string strBypass;
  local EControlReturnType Ret;

  switch (Index)
  {
    case 0:
    strBypass = "bypass _bbshome";
    break;
    case 1:
    strBypass = "bypass _bbsgetfav";
    break;
    case 2:
    strBypass = "bypass _bbsloc";
    break;
    case 3:
    strBypass = "bypass _bbsclan";
    break;
    case 4:
    strBypass = "bypass _bbsmemo";
    break;
    case 5:
    strBypass = "bypass _maillist_0_1_0_";
    break;
    case 6:
    strBypass = "bypass _friendlist_0_";
    break;
    default:
  }
  if ( Len(strBypass) > 0 )
  {
    Ret = Class'UIAPI_HTMLCTRL'.ControllerExecution("BoardWnd.HtmlViewer",strBypass);
    if ( Ret == 1 )
    {
      m_bBtnLock = True;
    }
  }
}

function OnClickBookmark ()
{
  local EControlReturnType Ret;

  if ( (Len(m_Command[7]) > 0) &&  !m_bBtnLock )
  {
    Ret = Class'UIAPI_HTMLCTRL'.ControllerExecution("BoardWnd.HtmlViewer",m_Command[7]);
    if ( Ret == 1 )
    {
      m_bBtnLock = True;
    }
  }
}
ну, код 1 в 1 практически с тем же ХФ, попробуйте отправлять штмл 3 пакетами подряд частями, правда как такое на птс сделать я не представляю) в java HF сборках примерно такой вид:
Код:
            player.sendPacket(new ShowBoard(html.substring(0, 8180), "101", player));
            player.sendPacket(new ShowBoard(html.substring(8180, 8180 * 2), "102", player));
            player.sendPacket(new ShowBoard(html.substring(8180 * 2, html.length()), "103", player));
 
Назад
Сверху Снизу