Jump to content

Recommended Posts

Posted

I have a EU client of Grand Crusade with protocol 110. I have added russian locale, but adding necessary .dat files and Localization.ini file :

[LanguageSet]
Language=8
0=Korea
1=English
2=Japan
3=Taiwan
4=China
5=Thailand
6=Philippine
7=Indonesia
8=Russia
9=Europe
10=Germany
11=France
12=Poland
13=Turkey
EnableEngSelection=true

 

ANd now I able to run with urssian locale, but... I wish able to choose betwwen two of them 8(Russian) and 9(Europe), but now is accessible just one of them:

image.png.06cf5e8fb024d2a737ae0ce31339c797.png

 

I have tried also change L2.ini:
 

[LanguageSet]
Language=8,9

 

But same result:
image.png.aadda36f481f46622640a25cd23727f9.png

I also has read that some logic might be at OptionWnd class of my Interface.u package, but didn't found has it initialize, just :
 

class OptionWnd extends L2UIGFxScript;

const PARTY_MODIFY_REQUEST = 9;
const DIALOGID_proc1 = 10;
const DIALOGID_proc2 = 11;
const DIALOGID_proc3 = 12;
const DIALOGID_proc4 = 13;
const ID_CALL_DIALOG = 10;
const ID_EXEC_FUNCTION = 11;
const ID_OPENWINDOW = 12;

var bool m_bL2Shader;
var bool m_bDOF;
var bool m_bShaderWater;
var int m_AntiAliasing;
var int m_PostProc;
var bool m_bAutoPartyMatching;
var int g_CurrentMaxWidth;
var int g_CurrentMaxHeight;
var int nPixelShaderVersion;
var int nVertexShaderVersion;
var bool isGAMINGSTATE;
var DialogBox dScript;
var bool bPartyMember;
var bool bPartyMaster;
var FlightShipCtrlWnd scriptShip;
var FlightTransformCtrlWnd scriptTrans;
var array<string> m_datasheetKeyReplace;
var array<string> m_datasheetKeyReplaced;
var bool isOpenShortCut;
var WindowHandle m_hPartyMatchWnd;
var WindowHandle m_hUnionMatchWnd;
var bool preEnterChattingOption;

function OnRegisterEvent()
{
    RegisterEvent(9170);
    RegisterEvent(9175);
    RegisterEvent(1710);
    RegisterEvent(1720);
    RegisterEvent(3410);
    RegisterEvent(4910);
    RegisterEvent(4911);
    RegisterGFxEvent(5870);
    RegisterGFxEvent(3420);
    RegisterGFxEvent(3430);
    RegisterGFxEvent(510);
    RegisterEvent(520);
    RegisterEvent(4913);
    RegisterEvent(4916);
    RegisterEvent(4914);
    RegisterEvent(4915);
    RegisterEvent(4918);
    RegisterEvent(4919);
    RegisterEvent(1560);
    RegisterEvent(40);
    RegisterEvent(4917);
    RegisterGFxEvent(3452);
    RegisterGFxEvent(5871);
    RegisterGFxEvent(691);
    RegisterGFxEvent(692);
    RegisterGFxEvent(6210);
    RegisterGFxEvent(9320);
    RegisterGFxEvent(9330);
    return;
}

function LoadAudioOption()
{
    local bool bMute;

    // End:0x4A
    if(CanUseAudio())
    {
        bMute = GetOptionBool("Audio", "AudioMuteOn");
        SetOptionBool("Audio", "AudioMuteOn", bMute);
    }
    return;
}

function LoadVideoOption()
{
    local bool bKeepMinFrameRate;

    m_AntiAliasing = GetOptionInt("Video", "AntiAliasing");
    m_PostProc = GetOptionInt("Video", "PostProc");
    m_bL2Shader = GetOptionBool("Video", "L2Shader");
    m_bDOF = GetOptionBool("Video", "S30DOFBOX");
    m_bShaderWater = GetOptionBool("Video", "S30WaterEffectBox");
    bKeepMinFrameRate = GetOptionBool("Video", "IsKeepMinFrameRate");
    // End:0x11C
    if(!bKeepMinFrameRate)
    {
        // End:0x11C
        if((nPixelShaderVersion >= 30) && nVertexShaderVersion >= 30)
        {
            SetL2Shader(m_bL2Shader);
            // End:0x11C
            if(m_bL2Shader)
            {
                SetDOF(m_bDOF);
                SetShaderWaterEffect(m_bShaderWater);
            }
        }
    }
    return;
}

function LoadGameOption()
{
    local bool bChecked;
    local int iChecked;

    bChecked = false;
    bChecked = GetOptionBool("Control", "RightClickBox");
    SetFixedDefaultCamera(bChecked);
    // End:0x92
    if(!GetINIBool("ScreenInfo", "ShowZoneTitle", iChecked, "Option.ini"))
    {
        SetOptionBool("ScreenInfo", "ShowZoneTitle", true);
    }
    // End:0xED
    if(!GetINIBool("ScreenInfo", "ShowGameTipMsg", iChecked, "Option.ini"))
    {
        SetOptionBool("ScreenInfo", "ShowGameTipMsg", true);
    }
    return;
}

function OnLoad()
{
    SetContainerWindow("SkinnedWindow", 205);
    AddState("GAMINGSTATE");
    AddState("LOGINSTATE");
    AddState("PAWNVIEWERSTATE");
    AddState("ARENAGAMINGSTATE");
    AddState("ARENABATTLESTATE");
    SetOptionBool("ScreenInfo", "HideDropItem", false);
    GetShaderVersion(nPixelShaderVersion, nVertexShaderVersion);
    LoadVideoOption();
    LoadAudioOption();
    LoadGameOption();
    DataSheetAssignKeyReplacement();
    scriptShip = FlightShipCtrlWnd(GetScript("FlightShipCtrlWnd"));
    scriptTrans = FlightTransformCtrlWnd(GetScript("FlightTransformCtrlWnd"));
    m_hPartyMatchWnd = GetWindowHandle("PartyMatchWnd");
    m_hUnionMatchWnd = GetWindowHandle("UnionMatchWnd");
    return;
}

function DataSheetAssignKeyReplacement()
{
    m_datasheetKeyReplace[1] = "LEFTMOUSE";
    m_datasheetKeyReplace[2] = "RIGHTMOUSE";
    m_datasheetKeyReplace[3] = "BACKSPACE";
    m_datasheetKeyReplace[4] = "ENTER";
    m_datasheetKeyReplace[5] = "SHIFT";
    m_datasheetKeyReplace[6] = "CTRL";
    m_datasheetKeyReplace[7] = "ALT";
    m_datasheetKeyReplace[8] = "PAUSE";
    m_datasheetKeyReplace[9] = "CAPSLOCK";
    m_datasheetKeyReplace[10] = "ESCAPE";
    m_datasheetKeyReplace[11] = "SPACE";
    m_datasheetKeyReplace[12] = "PAGEUP";
    m_datasheetKeyReplace[13] = "PAGEDOWN";
    m_datasheetKeyReplace[14] = "END";
    m_datasheetKeyReplace[15] = "HOME";
    m_datasheetKeyReplace[16] = "LEFT";
    m_datasheetKeyReplace[17] = "UP";
    m_datasheetKeyReplace[18] = "RIGHT";
    m_datasheetKeyReplace[19] = "DOWN";
    m_datasheetKeyReplace[20] = "SELECT";
    m_datasheetKeyReplace[21] = "PRINT";
    m_datasheetKeyReplace[22] = "PRINTSCRN";
    m_datasheetKeyReplace[23] = "INSERT";
    m_datasheetKeyReplace[24] = "DELETE";
    m_datasheetKeyReplace[25] = "HELP";
    m_datasheetKeyReplace[26] = "NUMPAD0";
    m_datasheetKeyReplace[27] = "NUMPAD1";
    m_datasheetKeyReplace[28] = "NUMPAD2";
    m_datasheetKeyReplace[29] = "NUMPAD3";
    m_datasheetKeyReplace[30] = "NUMPAD4";
    m_datasheetKeyReplace[31] = "NUMPAD5";
    m_datasheetKeyReplace[32] = "NUMPAD6";
    m_datasheetKeyReplace[33] = "NUMPAD7";
    m_datasheetKeyReplace[34] = "NUMPAD8";
    m_datasheetKeyReplace[35] = "NUMPAD9";
    m_datasheetKeyReplace[36] = "GREYSTAR";
    m_datasheetKeyReplace[37] = "GREYPLUS";
    m_datasheetKeyReplace[38] = "SEPARATOR";
    m_datasheetKeyReplace[39] = "GREYMINUS";
    m_datasheetKeyReplace[40] = "NUMPADPERIOD";
    m_datasheetKeyReplace[41] = "GREYSLASH";
    m_datasheetKeyReplace[42] = "NUMLOCK";
    m_datasheetKeyReplace[43] = "SCROLLLOCK";
    m_datasheetKeyReplace[44] = "UNICODE";
    m_datasheetKeyReplace[45] = "SEMICOLON";
    m_datasheetKeyReplace[46] = "EQUALS";
    m_datasheetKeyReplace[47] = "COMMA";
    m_datasheetKeyReplace[48] = "MINUS";
    m_datasheetKeyReplace[49] = "SLASH";
    m_datasheetKeyReplace[50] = "TILDE";
    m_datasheetKeyReplace[51] = "LEFTBRACKET";
    m_datasheetKeyReplace[52] = "BACKSLASH";
    m_datasheetKeyReplace[53] = "RIGHTBRACKET";
    m_datasheetKeyReplace[54] = "SINGLEQUOTE";
    m_datasheetKeyReplace[55] = "PERIOD";
    m_datasheetKeyReplace[56] = "MIDDLEMOUSE";
    m_datasheetKeyReplace[57] = "MOUSEWHEELDOWN";
    m_datasheetKeyReplace[58] = "MOUSEWHEELUP";
    m_datasheetKeyReplace[59] = "UNKNOWN16";
    m_datasheetKeyReplace[60] = "UNKNOWN17";
    m_datasheetKeyReplace[61] = "BACKSLASH";
    m_datasheetKeyReplace[62] = "UNKNOWN19";
    m_datasheetKeyReplace[63] = "UNKNOWN5C";
    m_datasheetKeyReplace[64] = "UNKNOWN5D";
    m_datasheetKeyReplace[65] = "UNKNOWN0C";
    m_datasheetKeyReplaced[1] = GetSystemString(1670);
    m_datasheetKeyReplaced[2] = GetSystemString(1671);
    m_datasheetKeyReplaced[3] = GetSystemString(1517);
    m_datasheetKeyReplaced[4] = "Enter";
    m_datasheetKeyReplaced[5] = "Shift";
    m_datasheetKeyReplaced[6] = "Ctrl";
    m_datasheetKeyReplaced[7] = "Alt";
    m_datasheetKeyReplaced[8] = "Pause";
    m_datasheetKeyReplaced[9] = "CapsLock";
    m_datasheetKeyReplaced[10] = "ESC";
    m_datasheetKeyReplaced[11] = GetSystemString(1672);
    m_datasheetKeyReplaced[12] = "PageUp";
    m_datasheetKeyReplaced[13] = "PageDown";
    m_datasheetKeyReplaced[14] = "End";
    m_datasheetKeyReplaced[15] = "Home";
    m_datasheetKeyReplaced[16] = "Left";
    m_datasheetKeyReplaced[17] = "Up";
    m_datasheetKeyReplaced[18] = "Right";
    m_datasheetKeyReplaced[19] = "Down";
    m_datasheetKeyReplaced[20] = "Select";
    m_datasheetKeyReplaced[21] = "Print";
    m_datasheetKeyReplaced[22] = "PrintScrn";
    m_datasheetKeyReplaced[23] = "Insert";
    m_datasheetKeyReplaced[24] = "Delete";
    m_datasheetKeyReplaced[25] = "Help";
    m_datasheetKeyReplaced[26] = GetSystemString(1657);
    m_datasheetKeyReplaced[27] = GetSystemString(1658);
    m_datasheetKeyReplaced[28] = GetSystemString(1659);
    m_datasheetKeyReplaced[29] = GetSystemString(1660);
    m_datasheetKeyReplaced[30] = GetSystemString(1661);
    m_datasheetKeyReplaced[31] = GetSystemString(1662);
    m_datasheetKeyReplaced[32] = GetSystemString(1663);
    m_datasheetKeyReplaced[33] = GetSystemString(1664);
    m_datasheetKeyReplaced[34] = GetSystemString(1665);
    m_datasheetKeyReplaced[35] = GetSystemString(1666);
    m_datasheetKeyReplaced[36] = "*";
    m_datasheetKeyReplaced[37] = "+";
    m_datasheetKeyReplaced[38] = "Separator";
    m_datasheetKeyReplaced[39] = "-";
    m_datasheetKeyReplaced[40] = ".";
    m_datasheetKeyReplaced[41] = "/";
    m_datasheetKeyReplaced[42] = "NumLock";
    m_datasheetKeyReplaced[43] = "ScrollLock";
    m_datasheetKeyReplaced[44] = "Unicode";
    m_datasheetKeyReplaced[45] = ";";
    m_datasheetKeyReplaced[46] = "=";
    m_datasheetKeyReplaced[47] = ",";
    m_datasheetKeyReplaced[48] = "-";
    m_datasheetKeyReplaced[49] = "/";
    m_datasheetKeyReplaced[50] = "`";
    m_datasheetKeyReplaced[51] = "[";
    m_datasheetKeyReplaced[52] = "";
    m_datasheetKeyReplaced[53] = "]";
    m_datasheetKeyReplaced[54] = "'";
    m_datasheetKeyReplaced[55] = ".";
    m_datasheetKeyReplaced[56] = GetSystemString(1669);
    m_datasheetKeyReplaced[57] = GetSystemString(1667);
    m_datasheetKeyReplaced[58] = GetSystemString(1668);
    m_datasheetKeyReplaced[59] = "-";
    m_datasheetKeyReplaced[60] = "=";
    m_datasheetKeyReplaced[61] = GetSystemString(1676);
    m_datasheetKeyReplaced[62] = GetSystemString(1673);
    m_datasheetKeyReplaced[63] = GetSystemString(1674);
    m_datasheetKeyReplaced[64] = GetSystemString(1675);
    m_datasheetKeyReplaced[65] = GetSystemString(1677);
    return;
}

function string GetUserReadableKeyName(string Input)
{
    local int i;
    local string output;

    i = 0;
    J0x07:

    // End:0x47 [Loop If]
    if(i < m_datasheetKeyReplace.Length)
    {
        // End:0x3D
        if(m_datasheetKeyReplace[i] == Input)
        {
            output = m_datasheetKeyReplaced[i];
        }
        ++i;
        // [Loop Continue]
        goto J0x07;
    }
    // End:0x5E
    if(output == "")
    {
        output = Input;
    }
    return output;
    return;
}

function PartyLootingChanged(int selectedNum)
{
    // End:0x62
    if(bPartyMaster || (IsRoomMaster()) && !bPartyMember)
    {
        // End:0x50
        if(GetOptionInt("Communication", "PartyLooting") == selectedNum)
        {
            return;
        }
        setEnableLootingBox(false);
        RequestPartyLootingModify(selectedNum);
    }
    return;
}

function chkRequestRegistWaitingSubstitute(bool checked)
{
    // End:0x3C
    if(checked == GetOptionBool("Communication", "StartupAutoPartyMatching"))
    {
        return;
    }
    // End:0x47
    if(m_bAutoPartyMatching)
    {
        return;
    }
    // End:0x57
    if(checked)
    {
        RequestRegistWaitingSubstitute(1);
    }
    return;
}

function HandleSwitchEnterchatting()
{
    local bool enableEnterChatting;
    local FlightTransformCtrlWnd scriptFlgithForm;
    local FlightShipCtrlWnd scriptFlightShip;
    local ShortcutCommandItem shortcutItem;

    scriptFlgithForm = FlightTransformCtrlWnd(GetScript("FlightTransformCtrlWnd"));
    // End:0x3D
    if(scriptFlgithForm.isNowActiveFlightTransShortcut)
    {
        return;
    }
    scriptFlightShip = FlightShipCtrlWnd(GetScript("FlightShipCtrlWnd"));
    // End:0x75
    if(scriptFlightShip.isNowActiveFlightShipShortcut)
    {
        return;
    }
    Class'NWindow.ShortcutAPI'.static.ActivateGroup("GamingStateDefaultShortcut");
    Class'NWindow.ShortcutAPI'.static.ActivateGroup("CameraControl");
    Class'NWindow.ShortcutAPI'.static.ActivateGroup("GamingStateGMShortcut");
    // End:0x196
    if(getInstanceUIData().getIsArenaServer())
    {
        Class'NWindow.ShortcutAPI'.static.ActivateGroup("TempStateShortcut");
        preEnterChattingOption = GetChatFilterBool("Global", "EnterChatting");
        SetChatFilterBool("Global", "EnterChatting", true);
        enableEnterChatting = true;
        CallGFxFunction(getCurrentWindowName(string(self)), "onSwitchDisableEnterChatting", string(true));        
    }
    else
    {
        // End:0x201
        if(GetChatFilterBool("Global", "EnterChatting"))
        {
            Class'NWindow.ShortcutAPI'.static.ActivateGroup("TempStateShortcut");
            SetChatFilterBool("Global", "EnterChatting", true);
            enableEnterChatting = true;            
        }
        else
        {
            Class'NWindow.ShortcutAPI'.static.DeactivateGroup("TempStateShortcut");
            SetChatFilterBool("Global", "EnterChatting", false);
            enableEnterChatting = false;
        }
    }
    // End:0x30C
    if((GetGameStateName() == "ARENABATTLESTATE") || GetGameStateName() == "ARENAGAMINGSTATE")
    {
        Class'NWindow.ShortcutAPI'.static.DeactivateGroup("ArenaPickEnterChattingShortcut");
        Class'NWindow.ShortcutAPI'.static.ActivateGroup("ArenaGamingShortcut");
        Class'NWindow.ShortcutAPI'.static.ActivateGroup("ArenaGamingEnterChattingShortcut");        
    }
    else
    {
        // End:0x3CD
        if(GetGameStateName() == "ARENAPICKSTATE")
        {
            Class'NWindow.ShortcutAPI'.static.ActivateGroup("ArenaPickEnterChattingShortcut");
            Class'NWindow.ShortcutAPI'.static.DeactivateGroup("TempStateShortcut");
            Class'NWindow.ShortcutAPI'.static.DeactivateGroup("ArenaGamingShortcut");
            Class'NWindow.ShortcutAPI'.static.DeactivateGroup("ArenaGamingEnterChattingShortcut");
        }
    }
    CallGFxFunction(getCurrentWindowName(string(self)), "onSwitchEnterChatting", string(enableEnterChatting));
    return;
}

function ToggleOpenMeWnd(bool isShortCut)
{
    isOpenShortCut = isShortCut;
    // End:0x1F
    if(IsShowWindow())
    {
        HideWindow();        
    }
    else
    {
        ShowWindow();
    }
    return;
}

function ShortCutReset()
{
    ActiveFlightShort();
    HandleSwitchEnterchatting();
    return;
}

function OnCallUCFunction(string funcName, string param)
{
    switch(funcName)
    {
        // End:0x22
        case "ShortCutReset":
            ShortCutReset();
            // End:0x132
            break;
        // End:0x49
        case "HandleSwitchEnterchatting":
            HandleSwitchEnterchatting();
            // End:0x132
            break;
        // End:0x71
        case "PartyLootingChanged":
            PartyLootingChanged(int(param));
            // End:0x132
            break;
        // End:0xA4
        case "RequestRegistWaitingSubstitute":
            chkRequestRegistWaitingSubstitute(bool(param));
            // End:0x132
            break;
        // End:0xC9
        case "SetPcRoomBoxData":
            SetPcRoomBoxData(bool(param));
            // End:0x132
            break;
        // End:0xEA
        case "StateBoxShow":
            StateBoxShow(bool(param));
            // End:0x132
            break;
        // End:0x110
        case "handleShaderOptionChange":
            handleShaderOptionChange();
            // End:0x132
            break;
        // End:0x12F
        case "setChattingOption":
            setChattingOption();
            // End:0x132
            break;
        // End:0xFFFF
        default:
            break;
    }
    return;
}

function SetDefaultPositionByClick()
{
    GetCurrentResolution(g_CurrentMaxWidth, g_CurrentMaxHeight);
    SetDefaultPosition();
    return;
}

function InitControlOption()
{
    CallGFxFunction(getCurrentWindowName(string(self)), "InitControlOption", "");
    return;
}

function InitScreenInfoOption()
{
    CallGFxFunction(getCurrentWindowName(string(self)), "InitScreenInfoOption", "");
    return;
}

function StateBoxShow(bool bChecked)
{
    local TargetStatusWnd util;

    util = TargetStatusWnd(GetScript("TargetStatusWnd"));
    util.StateBoxShow(bChecked);
    return;
}

function SetPcRoomBoxData(bool bOption)
{
    local InfoWnd Script;

    Script = InfoWnd(GetScript("InfoWnd"));
    // End:0x46
    if((Script != none) && isGAMINGSTATE)
    {
        Script.HandleToggleShowPCCafeEventWnd(true, bOption);
    }
    return;
}

function ActiveFlightShort()
{
    // End:0xC8
    if(scriptShip.Me.IsShowWindow())
    {
        SetChatFilterBool("Global", "EnterChatting", true);
        CallGFxFunction(getCurrentWindowName(string(self)), "onSwitchEnterChatting", string(true));
        CallGFxFunction(getCurrentWindowName(string(self)), "onSwitchDisableEnterChatting", string(true));
        Class'NWindow.ShortcutAPI'.static.ActivateGroup("FlightStateShortcut");
        scriptShip.updateLockButton();        
    }
    else
    {
        // End:0x191
        if(scriptTrans.Me.IsShowWindow())
        {
            SetChatFilterBool("Global", "EnterChatting", true);
            CallGFxFunction(getCurrentWindowName(string(self)), "onSwitchEnterChatting", string(true));
            CallGFxFunction(getCurrentWindowName(string(self)), "onSwitchDisableEnterChatting", string(true));
            scriptTrans.updateLockButton();
            Class'NWindow.ShortcutAPI'.static.ActivateGroup("FlightTransformShortcut");
        }
    }
    return;
}

function handleShaderOptionChange()
{
    m_AntiAliasing = GetOptionInt("Video", "AntiAliasing");
    m_PostProc = GetOptionInt("Video", "PostProc");
    m_bL2Shader = GetOptionBool("Video", "L2Shader");
    m_bDOF = GetOptionBool("Video", "S30DOFBOX");
    m_bShaderWater = GetOptionBool("Video", "S30WaterEffectBox");
    SetHDR(m_PostProc);
    SetAntialiasing(m_AntiAliasing);
    SetShaderWaterEffect(m_bShaderWater);
    SetDOF(m_bDOF);
    SetL2Shader(m_bL2Shader);
    return;
}

function OnEvent(int a_EventID, string a_Param)
{
    switch(a_EventID)
    {
        // End:0x19
        case 1710:
            HandleDialogResult(true);
            // End:0x1CC
            break;
        // End:0x2B
        case 1720:
            HandleDialogResult(false);
            // End:0x1CC
            break;
        // End:0x41
        case 3410:
            UIActivationUponStateChanges(a_Param);
            // End:0x1CC
            break;
        // End:0x57
        case 4910:
            OnAskPartyLootingModify(a_Param);
            // End:0x1CC
            break;
        // End:0x6D
        case 4911:
            OnPartyLootingHasModified(a_Param);
            // End:0x1CC
            break;
        // End:0x75
        case 4917:
        // End:0x7D
        case 4916:
        // End:0x9E
        case 4913:
            bPartyMember = false;
            bPartyMaster = false;
            OnPartyHasDismissed();
            // End:0x1CC
            break;
        // End:0xC4
        case 4914:
            bPartyMember = true;
            bPartyMaster = false;
            OnBecamePartyMember(a_Param);
            // End:0x1CC
            break;
        // End:0xEA
        case 4915:
            bPartyMember = false;
            bPartyMaster = true;
            OnBecamePartyMaster(a_Param);
            // End:0x1CC
            break;
        // End:0x153
        case 4918:
            bPartyMember = true;
            bPartyMaster = false;
            OnHandOverPartyMaster();
            // End:0x12C
            if(m_hPartyMatchWnd.IsShowWindow() == true)
            {
                m_hPartyMatchWnd.HideWindow();
            }
            // End:0x150
            if(m_hUnionMatchWnd.IsShowWindow() == true)
            {
                m_hUnionMatchWnd.HideWindow();
            }
            // End:0x1CC
            break;
        // End:0x174
        case 4919:
            bPartyMember = false;
            bPartyMaster = true;
            OnRecvPartyMaster();
            // End:0x1CC
            break;
        // End:0x192
        case 40:
            bPartyMember = false;
            bPartyMaster = false;
            OnRestart();
            // End:0x1CC
            break;
        // End:0x1A3
        case 1560:
            OnPartyMatchRoomClose();
            // End:0x1CC
            break;
        // End:0x1B6
        case 9170:
            m_bAutoPartyMatching = true;
            // End:0x1CC
            break;
        // End:0x1C9
        case 9175:
            m_bAutoPartyMatching = false;
            // End:0x1CC
            break;
        // End:0xFFFF
        default:
            break;
    }
    return;
}

function HandleDialogResult(bool bOK)
{
    local DialogBox dialogBoxScript;

    dialogBoxScript = DialogBox(GetScript("DialogBox"));
    // End:0x53
    if(Class'UICommonAPI'.static.DialogIsOwnedBy(string(self)))
    {
        // End:0x53
        if(dialogBoxScript.DialogGetID() == 9)
        {
            SetRequestPartyLootingModifyAgreement(bOK);
        }
    }
    return;
}

function setEnableLootingBox(bool bEnable)
{
    CallGFxFunction(getCurrentWindowName(string(self)), "setEnableLootingBox", string(bEnable));
    return;
}

function setLootingBoxSelection(int SelectNum)
{
    CallGFxFunction(getCurrentWindowName(string(self)), "setLootingBoxSelection", string(SelectNum));
    return;
}

function saveLootingBoxSelection()
{
    CallGFxFunction(getCurrentWindowName(string(self)), "saveLootingBoxSelection", "");
    return;
}

function SetRequestPartyLootingModifyAgreement(bool bOK)
{
    // End:0x13
    if(bOK)
    {
        RequestPartyLootingModifyAgreement(1);        
    }
    else
    {
        dScript.SetButtonName(1337, 1342);
        RequestPartyLootingModifyAgreement(0);
    }
    return;
}

function OnPartyMatchRoomClose()
{
    // End:0x41
    if(!bPartyMember && !bPartyMaster)
    {
        setLootingBoxSelection(GetOptionInt("Communication", "PartyLooting"));
    }
    return;
}

function OnPartyHasDismissed()
{
    setLootingBoxSelection(GetOptionInt("Communication", "PartyLooting"));
    setEnableLootingBox(true);
    return;
}

function OnBecamePartyMember(string a_Param)
{
    local int Lootingtype;

    ParseInt(a_Param, "Lootingtype", Lootingtype);
    setLootingBoxSelection(Lootingtype);
    setEnableLootingBox(false);
    return;
}

function OnBecamePartyMaster(string a_Param)
{
    local int Lootingtype;

    ParseInt(a_Param, "Lootingtype", Lootingtype);
    setLootingBoxSelection(Lootingtype);
    setEnableLootingBox(true);
    return;
}

function OnHandOverPartyMaster()
{
    setEnableLootingBox(false);
    return;
}

function OnRecvPartyMaster()
{
    saveLootingBoxSelection();
    setEnableLootingBox(true);
    return;
}

function OnRestart()
{
    setLootingBoxSelection(GetOptionInt("Communication", "PartyLooting"));
    setEnableLootingBox(true);
    // End:0x66
    if(getInstanceUIData().getIsArenaServer())
    {
        SetChatFilterBool("Global", "EnterChatting", preEnterChattingOption);
    }
    return;
}

function bool IsRoomMaster()
{
    local PartyWnd Script;

    Script = PartyWnd(GetScript("PartyWnd"));
    return Script.m_AmIRoomMaster;
    return;
}

function OnPartyLootingHasModified(string a_Param)
{
    local int IsSuccess, LootingScheme;
    local string Schemestr, strParam;
    local PartyWnd Script;
    local SystemMsgData SystemMsgCurrent;
    local TextBoxHandle t_handle;
    local L2Util util;

    util = L2Util(GetScript("L2Util"));
    Script = PartyWnd(GetScript("PartyWnd"));
    ParseInt(a_Param, "IsSuccess", IsSuccess);
    ParseInt(a_Param, "LootingScheme", LootingScheme);
    // End:0xE8
    if(IsSuccess != 0)
    {
        Script.SetMasterTooltip(LootingScheme);
        Schemestr = util.getLootingString(LootingScheme);
        t_handle = GetTextBoxHandle("PartyMatchRoomWnd.LootingMethod");
        t_handle.SetText(Schemestr);
    }
    // End:0x16D
    if(bPartyMaster || IsRoomMaster())
    {
        AddSystemMessage(3136);
        // End:0x13D
        if(IsSuccess != 0)
        {
            SetOptionInt("Communication", "PartyLooting", LootingScheme);            
        }
        else
        {
            setLootingBoxSelection(GetOptionInt("Communication", "PartyLooting"));
        }
        setEnableLootingBox(true);
    }
    // End:0x17B
    if(IsSuccess == 0)
    {        
    }
    else
    {
        // End:0x345
        if(IsSuccess == 1)
        {
            Schemestr = util.getLootingString(LootingScheme);
            GetSystemMsgInfo(3138, SystemMsgCurrent);
            ParamAdd(strParam, "MsgType", string(1));
            ParamAdd(strParam, "WindowType", string(SystemMsgCurrent.WindowType));
            ParamAdd(strParam, "FontType", string(SystemMsgCurrent.FontType));
            ParamAdd(strParam, "BackgroundType", string(SystemMsgCurrent.BackgroundType));
            ParamAdd(strParam, "LifeTime", string(SystemMsgCurrent.Lifetime * 1000));
            ParamAdd(strParam, "AnimationType", string(SystemMsgCurrent.AnimationType));
            ParamAdd(strParam, "Msg", MakeFullSystemMsg(SystemMsgCurrent.OnScrMsg, Schemestr));
            ParamAdd(strParam, "MsgColorR", string(SystemMsgCurrent.FontColor.R));
            ParamAdd(strParam, "MsgColorG", string(SystemMsgCurrent.FontColor.G));
            ParamAdd(strParam, "MsgColorB", string(SystemMsgCurrent.FontColor.B));
            ExecuteEvent(140, strParam);
            PlaySound(SystemMsgCurrent.Sound);
            setLootingBoxSelection(LootingScheme);            
        }
        else
        {
            // End:0x50D
            if(IsSuccess == 2)
            {
                Schemestr = util.getLootingString(LootingScheme);
                GetSystemMsgInfo(3138, SystemMsgCurrent);
                ParamAdd(strParam, "MsgType", string(1));
                ParamAdd(strParam, "WindowType", string(SystemMsgCurrent.WindowType));
                ParamAdd(strParam, "FontType", string(SystemMsgCurrent.FontType));
                ParamAdd(strParam, "BackgroundType", string(SystemMsgCurrent.BackgroundType));
                ParamAdd(strParam, "LifeTime", string(SystemMsgCurrent.Lifetime * 1000));
                ParamAdd(strParam, "AnimationType", string(SystemMsgCurrent.AnimationType));
                ParamAdd(strParam, "Msg", MakeFullSystemMsg(SystemMsgCurrent.OnScrMsg, Schemestr));
                ParamAdd(strParam, "MsgColorR", string(SystemMsgCurrent.FontColor.R));
                ParamAdd(strParam, "MsgColorG", string(SystemMsgCurrent.FontColor.G));
                ParamAdd(strParam, "MsgColorB", string(SystemMsgCurrent.FontColor.B));
                ExecuteEvent(140, strParam);
                PlaySound(SystemMsgCurrent.Sound);
                setLootingBoxSelection(LootingScheme);
            }
        }
    }
    return;
}

function OnAskPartyLootingModify(string a_Param)
{
    local string LeaderName;
    local int LootingScheme;
    local string Schemestr;
    local L2Util util;

    util = L2Util(GetScript("L2Util"));
    // End:0x3F
    if(Class'NWindow.UIAPI_WINDOW'.static.IsShowWindow("DialogBox"))
    {
        SetRequestPartyLootingModifyAgreement(false);
        return;
    }
    dScript.SetButtonName(184, 185);
    Class'UICommonAPI'.static.DialogSetID(9);
    Class'UICommonAPI'.static.DialogSetParamInt64((10 * 1000));
    Class'UICommonAPI'.static.DialogSetDefaultCancle();
    ParseString(a_Param, "LeaderName", LeaderName);
    ParseInt(a_Param, "LootingScheme", LootingScheme);
    Schemestr = util.getLootingString(LootingScheme);
    Class'UICommonAPI'.static.DialogShow(1, 7, MakeFullSystemMsg(GetSystemMessage(3134), Schemestr), string(self));
    return;
}

function UIActivationUponStateChanges(string a_Param)
{
    // End:0x8F
    if((((a_Param == "GAMINGSTATE") || a_Param == "ARENAGAMINGSTATE") || a_Param == "ARENABATTLESTATE") || a_Param == "ARENAPICKSTATE")
    {
        HandleSwitchEnterchatting();
        Class'NWindow.ShortcutAPI'.static.RequestList();
        isGAMINGSTATE = true;        
    }
    else
    {
        isGAMINGSTATE = false;
    }
    SetAlwaysOnTop(!isGAMINGSTATE);
    InitControlOption();
    return;
}

function setChattingOption()
{
    local ChatWnd Script;
    local SystemMsgWnd SysMsgScript;
    local int tempVal, i, resultNum;

    Script = ChatWnd(GetScript("ChatWnd"));
    SysMsgScript = SystemMsgWnd(GetScript("ChatWnd.SystemMsgWnd"));
    i = 0;
    J0x48:

    // End:0x575 [Loop If]
    if(i < Script.m_sectionName.Length)
    {
        GetINIBool(Script.m_sectionName[i], "system", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bSystem = tempVal;
        GetINIBool(Script.m_sectionName[i], "useitems", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bUseitem = tempVal;
        GetINIBool(Script.m_sectionName[i], "damage", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bDamage = tempVal;
        GetINIBool(Script.m_sectionName[i], "chat", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bChat = tempVal;
        GetINIBool(Script.m_sectionName[i], "normal", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bNormal = tempVal;
        GetINIBool(Script.m_sectionName[i], "party", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bParty = tempVal;
        GetINIBool(Script.m_sectionName[i], "shout", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bShout = tempVal;
        GetINIBool(Script.m_sectionName[i], "market", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bTrade = tempVal;
        GetINIBool(Script.m_sectionName[i], "pledge", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bClan = tempVal;
        GetINIBool(Script.m_sectionName[i], "tell", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bWhisper = tempVal;
        GetINIBool(Script.m_sectionName[i], "ally", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bAlly = tempVal;
        GetINIBool(Script.m_sectionName[i], "hero", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bHero = tempVal;
        GetINIBool(Script.m_sectionName[i], "union", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bUnion = tempVal;
        GetINIBool(Script.m_sectionName[i], "nonpcmessage", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bNoNpcMessage = tempVal;
        GetINIBool(Script.m_sectionName[i], "worldChat", tempVal, "chatfilter.ini");
        Script.m_filterInfo[i].bWorldChat = tempVal;
        i++;
        // [Loop Continue]
        goto J0x48;
    }
    Script.m_UseChatSymbol = int(GetChatFilterBool("Global", "OldChatting"));
    GetINIBool("global", "keywordsound", resultNum, "chatfilter.ini");
    Script.m_KeywordFilterSound = resultNum;
    GetINIBool("global", "keywordactivate", resultNum, "chatfilter.ini");
    Script.m_KeywordFilterActivate = resultNum;
    GetINIBool("global", "UseAlpha", resultNum, "chatfilter.ini");
    Script.m_UseAlpha = resultNum;
    GetINIBool("global", "ChatResizing", resultNum, "chatfilter.ini");
    Script.m_ChatResizeOnOff = resultNum;
    GetINIBool("global", "SystemMsgWnd", resultNum, "chatfilter.ini");
    Script.m_bUseSystemMsgWnd = resultNum;
    GetINIBool("global", "UseSystemMsg", resultNum, "chatfilter.ini");
    Script.m_bSystemMsgWnd = resultNum;
    GetINIBool("global", "SystemMsgWndDamage", resultNum, "chatfilter.ini");
    Script.m_bDamageOption = resultNum;
    GetINIBool("global", "SystemMsgWndExpendableItem", resultNum, "chatfilter.ini");
    Script.m_bUseSystemItem = resultNum;
    GetINIBool("global", "UseWorldChatSpeaker", resultNum, "chatfilter.ini");
    Script.m_bWorldChatSpeaker = resultNum;
    GetINIString("global", "Keyword0", Script.m_Keyword0, "chatfilter.ini");
    GetINIString("global", "Keyword1", Script.m_Keyword1, "chatfilter.ini");
    GetINIString("global", "Keyword2", Script.m_Keyword2, "chatfilter.ini");
    GetINIString("global", "Keyword3", Script.m_Keyword3, "chatfilter.ini");
    // End:0x933
    if(bool(Script.m_bUseSystemMsgWnd))
    {
        Class'NWindow.UIAPI_WINDOW'.static.ShowWindow("SystemMsgWnd");        
    }
    else
    {
        Class'NWindow.UIAPI_WINDOW'.static.HideWindow("SystemMsgWnd");
    }
    // End:0x96D
    if(bool(Script.m_ChatResizeOnOff))
    {
        EnableChatWndResizing(false);        
    }
    else
    {
        EnableChatWndResizing(true);
    }
    Script.SetDefaultAlpha(Script.m_UseAlpha);
    SysMsgScript.SetDefaultAlpha(Script.m_UseAlpha);
    Script.GetAllcurrentAssignedChatTypeID();
    return;
}

 

 

Help me able to add 8 and 9 langugges into drop list of Language.
Many thanks for any advice!

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • sell adena l2rebon signature x1 - 1kk = 1.4 dollars l2reborn x10 - 500kk = 7 dollars E-Global x Lu4 - 1kk = 4 dollars DISCORD - GODDARDSHOP TELEGRAM - MMOPROMO
    • > X Buys 10-50k fake discord member (online/offline), so it looks "active", yes today you can also buy fake chatters. > X Advertises his discord server in forums etc trying to sell @everyone posts > Buyer doesn't understand why the purchase wasn't getting any new players Clownery. So all in one, imho buying this kind of stuff is not worth at all, despite the low proportion of real people in these servers got discord muted either way, especially becuse you get pinged and informed 42930423904 a day about some new lineage 2 server that was made just for money and sucks too.
    • If your main goal is to reach active L2 players in Lithuania, Discord is honestly the best bet right now. Most of the old forum traffic died down, but Discord groups stay busy with trading, clan recruiting, and events. Just make sure you check how engaged the channel actually is before spending money, some look big but aren’t that active.  
    • I’ve tried a few ad providers from here before, some were hit or miss. Best thing is to ask for recent results or proof before you spend anything, helps avoid wasting money.  
    • SOCNET BOOST - 是所有现有 SMM 面板中的新解决方案. 我们的面板提供超过 6100 种社交网络推广服务,包括 Instagram、TikTok、Telegram、VKontakte、Reddit、YouTube、Twitter (X.com)、Snapchat、Spotify 等众多服务 + 提升您网站在搜索结果中的流量。 我们的服务与高质量、可靠的服务提供商合作,为您的社交网络账号、帖子、视频、文章等提供推广,以及提升网站在搜索引擎中的排名,同时提供通过推荐赚取额外收入的方式。 可用支付方式: 通过 PayPal、任意加密货币 (+Binance Pay)、Telegram Stars、Cash App 或任何银行卡支付。 ⭐ 我们的社交媒体推广 SMM 面板 ⭐ SOCNET.PRO ⭐ 我们的在线商店 ⭐ SOCNET.STORE ⭐ Telegram 商店 ⭐ SOCNET.SHOP   新闻资源 Telegram 频道: https://t.me/socnet_news 联系方式与支持 Telegram 支持: https://t.me/socnet_support Discord 支持: socnet_support Discord 服务器: https://discord.gg/y9AStFFsrh WhatsApp 支持: https://wa.me/79051904467 WhatsApp 频道: https://whatsapp.com/channel/0029Vau0CMX002TGkD4uHa2n 电子邮件支持: solomonbog@socnet.store 我们已经运营了很长时间,积累了大量关于我们工作的评价! 我们的网站展示了大量积极和真实的用户评价!   ㅤㅤINSTAGRAM 服务 Instagram - 粉丝 ~ 真实 ~ 30天补充 ~ 20k-100k/天 | 每 1000 起价 $5.324 Instagram - 点赞 ~ 300k ~ 100k/天 ~ 亚洲/俄罗斯 | 每 1000 起价 $0.051 Instagram - 浏览量 (所有视频) ~ 500k-1M/天 ~ 即时 | 每 1000 起价 $0.003 Instagram - 评论 ~ 自定义 ~ 1M ~ 30天补充 ~ 1k/天 ~ 亚洲/土耳其 | 每 1000 起价 $4.875 Instagram - Instagram - 故事浏览 ~ 所有故事 ~ 150k ~ 30天补充 ~ 5k/天 | 每 1000 起价 $0.148 Instagram - 提及 ~ 自定义列表 ~ 100k/天 ~ 0-12小时 | 每 1000 起价 $2.763 ㅤㅤTELEGRAM 服务 Telegram - 成员 ~ 最大 100k ~ 100-1k/天 ~ 0-1小时 | 每 1000 起价 $0.604 Telegram - 高级成员 + 浏览量:从搜索 l 7天高级 l 7天不掉 | 每 1000 起价 $7.216 Telegram Bot 启动 - 即时 - 速度: 10k/天 - 不补充 | 每 1000 起价 $0.297 Telegram - 频道/群成员 ~ 美国 ~ 最大 70k ~ 10天补充 ~ 5k/天 ~ 即时 | 每 1000 起价 $1.788 Telegram - 浏览量 ~ 1 帖子 ~ 即时 | 每 1000 起价 $0.005 Telegram - 互动反应 | 每 1000 起价 $1.306 ㅤㅤTWITTER (x.com) 服务 Twitter (x.com) - 点赞 ~ 200k ~ 10k/天 ~ 亚洲 | 每 1000 起价 $1.187 Twitter (x.com) - 转推 ~ 200k ~ 10k/天 ~ 亚洲 | 每 1000 起价 $0.894 Twitter (x.com) - 粉丝 | 不掉粉 | 30天补充 | 每 1 小时自动补充 | 每 1000 起价 $19.50 Twitter (x.com) - 点赞 ~ 350k ~ 2k-10k/天 ~ 混合 ~ | 每 1000 起价 $1.727 Twitter (x.com) - 推文浏览量 ~ 最大 100M ~ 30天补充 ~ 10M/天 ~ 即时 | 每 1000 起价 $0.032 Twitter (x.com) - 推文展示次数 ~ 最大 1M ~ 1M/天 ~ 即时 | 每 1000 起价 $0.114 ㅤㅤTHREADS Threads - 点赞 ~ 不补充 ~ 1k-10k/天 ~ 0-1小时 | 每 1000 起价 $1.045 Threads - 粉丝 ~ 500-1k/天 ~ 不补充 ~ 即时 | 每 1000 起价 $2.438 Threads - 转发 ~ 1k-5k/天 ~ 30天补充 ~ 0-2小时 | 每 1000 起价 $8.125 ㅤㅤLIKEE Likee - 粉丝 ~ 最大 30k ~ 真实 ~ 即时 | 每 1000 起价 $10.112 Likee - 点赞 ~ 最大 30k ~ 真实 ~ 即时 | 每 1000 起价 $3.787 Likee - 分享 ~ 最大 30k ~ 真实 ~ 即时 | 每 1000 起价 $2.649 Likee - 评论 ~ 最大 30k ~ 真实 ~ 即时 | 每 1000 起价 $11.473 Likee - 浏览量 ~ 最大 1M ~ 真实 ~ 即时 | 每 1000 起价 $3.787 ㅤㅤTIKTOK 服务   TikTok - 浏览量 ~ 10k-100k/天 | 每 1000 起价 $0.033 TikTok - 点赞 + 浏览量 ~ 30天 ~ 3k-5k/天 | 每 1000 起价 $0.203 TikTok - 粉丝 ~ 30天 ~ 5k/天 | 每 1000 起价 $2.474 TikTok - 分享 ~ 30天 ~ 1M/天 | 每 1000 起价 $0.163 TikTok - 收藏 ~ 30天 ~ 3k-5k/天 | 每 1000 起价 $0.163 ㅤㅤFACEBOOK 服务 Facebook - 视频浏览量 ~ 5k-100k/天 | 每 1000 起价 $0.11 Facebook - 帖子点赞 ~ 5k/天 | 每 1000 起价 $2.548 Facebook - 页面点赞 + 粉丝 ~ 1k-10k/天 ~ 即时 | 每 1000 起价 $0.85 Facebook - 分享 ~ 30天 ~ 1k-5k/天 | 每 1000 起价 $1.451 Facebook - 帖子/照片点赞 ~ 20k ~ 永久 ~ 1k-50k/天 ~ 即时 | 每 1000 起价 $0.66 Facebook - 表情符号帖子点赞 ~ 1k-5k/天 ~ 即时 | 每 1000 起价 $0.943 Facebook 直播 [观看 15 分钟] | 每 1000 起价 $1.338 Facebook - 视频/Reels 浏览量 ~ 3秒 ~ 500k-1M/天 | 每 1000 起价 $0.11 ㅤㅤREDDIT 服务 Reddit 频道订阅者 [30天补充] [最大: 100M] [开始时间: 0-1小时] [速度: 5M/天] | 每 1000 起价 $2.08 Reddit 分享 | 500M | 永久补充 | 超快 | 0-10 分钟 | 100M/天 | 每 1000 起价 $0.371 Reddit 浏览量 | 500M | 永久补充 | 超快 | 0-10 分钟 | 100M/天 | 每 1000 起价 $0.371 Reddit 浏览量 + 分享 | 500M | 永久补充 | 超快 | 0-10 分钟 | 100M/天 | 每 1000 起价 $0.741 Reddit 链接分享 | 500M | 永久补充 | 超快 | 0-10 分钟 | 100M/天 | 每 1000 起价 $0.371 ㅤㅤDISCORD 服务 Discord 离线成员 | 阅读说明 | 添加机器人 | 高质量 | 最大 5K | 每 1000 起价 $1.58 Discord 全球在线服务器成员 | +2个月在线 | 最大 15K | 每 1000 起价 $108.986 Discord 服务器加速 | 1/3/6/12 个月 | 1x-14x 加速 | 每 1 次加速 起价 $2.23 Discord | 仅反应 | 超高质量 | 即时开始 | 每 1000 起价 $5.695 ㅤㅤLINKEDIN 服务 LinkedIn - 个人资料粉丝 ~ 最大 1k ~ 30天补充 ~ 500-1k/天 ~ 0-1小时 | 每 1000 起价 $21.97 LinkedIn - 页面粉丝 ~ 最大 1k ~ 30天补充 ~ 500-1k/天 ~ 0-1小时 | 每 1000 起价 $21.97 LinkedIn - 帖子点赞 [+ 展示次数] ~ 30天补充 ~ 500/天 ~ 即时 | 每 1000 起价 $16.90 LinkedIn - 评论 [随机] ~ 最大 1k ~ 不补充 ~ 30-50/天 ~ 1-6小时 | 每 1000 起价 $28.73 LinkedIn - 联系人连接 ~ 30天补充 ~ 500/天 ~ 即时 | 每 1000 起价 $28.73 ㅤㅤYOUTUBE 服务 YouTube - 浏览量 ~ 永久 ~ 500k-1M/天 | 每 1000 起价 $1.488 YouTube - 点赞 ~ 不补充 ~ 1k-5k/天 ~ 即时 | 每 1000 起价 $0.13 YouTube - 订阅者 | 中等质量 5K | 250-500/天 R30 | 每 1000 起价 $78.00 YouTube - 评论 ~ 随机 ~ 100k ~ 不补充 ~ 1k-5k/天 ~ 0-3小时 | 每 1000 起价 $19.013 YouTube - Shorts 点赞 ~ 50k-60k/天 ~ 30天补充 - 即时 | 每 1000 起价 $1.30 YouTube - 直播互动 ~ 帮助小型直播提升 ~ 即时 | 每 1000 起价 $0.192   ㅤㅤWHATSAPP 服务 WhatsApp 频道成员 [全球真实] [速度: 500/天] [开始: 0-1小时] | 每 1000 起价 $15.647 WhatsApp 群组成员 [混合国家] [真实质量] | 每 1000 起价 $30.893 WhatsApp 频道成员 [混合国家] [真实质量] | 每 1000 起价 $28.179 WhatsApp 频道表情反应 | 每 1000 起价 $6.797 WhatsApp 频道帖子表情反应 | 随机混合 | 每 1000 起价 $3.861 ㅤㅤTWITCH/KICK/TROVO 服务 Twitch - 粉丝 ~ 最大 1k ~ 1k/天 ~ 即时 | 每 1000 起价 $0.183 Twitch - 视频浏览量 ~ 最大 20k ~ 不补充 ~ 5k/天 ~ 0-1小时 | 每 1000 起价 $1.073 Twitch - 剪辑浏览量 ~ 最大 20k ~ 不补充 ~ 5k/天 ~ 0-1小时 | 每 1000 起价 $0.163 Twitch 直播浏览量 | 10 分钟 | 每 1000 起价 $0.597 Trovo 直播粉丝 [最大: 5K] [优惠] [1-2/小时] [30天补充] | 每 1000 起价 $18.688 Kick - 粉丝 ~ 1.2k ~ 不补充 ~ 1k/天 ~ 即时 | 每 1000 起价 $4.55 Kick - 直播观看者 - 稳定高质量观众 ~ 时长: 60 分钟 | 每 1000 起价 $40.30 ㅤㅤSOUNDCLOUD 服务   Soundcloud - 粉丝 ~ 2.5k ~ 30天补充 ~ 100-500/天 ~ 即时 | 每 1000 起价 $7.132 Soundcloud - 点赞 ~ 2.5k ~ 30天补充 ~ 100-500/天 ~ 即时 | 每 1000 起价 $7.132 Soundcloud - 转发 ~ 2.5k ~ 30天补充 ~ 100-500/天 ~ 即时 | 每 1000 起价 $7.132   ㅤㅤSPOTIFY 服务 Spotify - 粉丝 ~ 292k ~ 20k/天 | 每 1000 起价 $4.225 Spotify - 收藏 ~ 400k ~ 20k/天 | 每 1000 起价 $0.488 Spotify - 月度听众 ~ 永久 ~ 5k-20k/天 | 每 1000 起价 $1.788 ㅤㅤQUORA 服务 Quora.com - 赞 ~ 最大 10k ~ 30天补充 | 每 1000 起价 $8.125 Quora.com - 分享 ~ 最大 10k ~ 30天补充 | 每 1000 起价 $8.125 Quora.com - 粉丝 ~ 最大 10k ~ 30天补充 | 每 1000 起价 $8.45   ㅤㅤ网站流量 全球 / GEO 定向 - 自定义推荐流量 | 每 1000 次访问 起价 $1.284 全球来自 Google.com 流量 [自然] [自定义关键词] | 每 1000 次访问 起价 $0.244 全球来自 Google.com 流量 | 每 1000 次访问 起价 $0.244 全球来自 Facebook 流量 | 每 1000 次访问 起价 $0.244 全球来自 Instagram 流量 | 每 1000 次访问 起价 $0.244 全球来自 Quora 流量 | 每 1000 次访问 起价 $0.244 全球来自 Reddit 流量 | 每 1000 次访问 起价 $0.244 全球来自 YouTube 流量 | 每 1000 次访问 起价 $0.244 全球来自 Twitter 流量 | 每 1000 次访问 起价 $0.244 注意: 此文本块未展示我们全部产品;如需更多信息,请访问下方相关链接! 如果您有任何问题,我们的客服团队随时为您服务! 可用支付方式: 通过 PayPal、任意加密货币(+Binance Pay)、Telegram Stars、Cash App 或任意银行卡支付。 ⭐ 我们的社交媒体推广 SMM 面板 ⭐ SOCNET.PRO ⭐ 我们的在线商店 ⭐ SOCNET.STORE ⭐ Telegram 商店 ⭐ SOCNET.SHOP   新闻资源 Telegram 频道: https://t.me/socnet_news 联系方式与支持 Telegram 支持: https://t.me/socnet_support Discord 支持: socnet_support Discord 服务器: https://discord.gg/y9AStFFsrh WhatsApp 支持: https://wa.me/79051904467 WhatsApp 频道: https://whatsapp.com/channel/0029Vau0CMX002TGkD4uHa2n 电子邮件支持: solomonbog@socnet.store 我们已经运营了很长时间,积累了大量关于我们工作的评价! 我们的网站展示了大量积极和真实的用户评价!  获取 $1 首次试用奖励  只需在我们的网站提交主题为“获取试用奖励”的客服工单即可。 访问 SMM 面板 (可点击)或联系我们的 机器人 客服 ⭐ 我们邀请您 合作 并 赚钱 ⭐ 想在我们的商店销售您的产品或服务并赚取收益吗? 成为我们的合作伙伴或提出互利合作方案? 您可以通过本帖提供的 联系方式 与我们联系。    常见问题与退款政策   如有任何问题或疑问,我们的快速客服服务将立即回应您的请求! 若服务未完全符合要求或未达到承诺质量,只有在产品描述中注明了保修及诚信保修期限的情况下,才会提供退款。其他情况的服务退款将不被完全处理或发放!购买此类服务即表示您自动同意我们的未交付服务退款规则! 目前我们接受 CRYPTOMUS、Payeer、NotPayments、Perfect Money、俄罗斯和乌克兰银行卡、AliPay、BinancePay、CryptoBot、信用卡及 PayPal。 $1 注册奖励仅限于购买使用,并且只能在用户首次注册任何 SocNet 项目后使用一次。 我们重视每位客户,并通过联系方式为无效账号提供替换服务! p.s: 购买奖励可用于任意 SOCNET 项目:在线商店或 Telegram 机器人。
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock