• 如何在Ubuntu 14.04上設置MapleStory私人服務器

    本教程將教你如何在 Ubuntu 14.04 上逐步設置私有服務器。

    警告!

    本教程不是為新手寫的。你應該能夠知道你在做什麼。

    SSH客戶端軟件

    如果使用 Windows,請使用 PuTTY 作為客戶端,否則使用 ssh 命令。

    您的VPS提供商應為您提供 root 用戶和密碼。
    但是你不應該使用 root 來操作,而應該創建一個具有 sudo 特權的新用戶。
    以下步驟將教你如何做到這一點。

    用 root 登錄

    SERVER_IP_ADDRESS是您的 VPS 公共 IP 地址。

    ssh root@SERVER_IP_ADDRESS

    創建用戶

    創建一個新用戶,例如twms

    adduser twms

    授予用戶 sudo 權限

    gpasswd -a twms sudo

    使用新用戶和密碼登錄

    exit
    ssh twms@SERVER_IP_ADDRESS

    Lang

    locale -a
    sudo locale-gen zh_TW zh_TW.UTF-8

    第一件事

    此命令將檢索新的程序包列表。

    sudo apt-get update

    Utility

    sudo apt-get install software-properties-common

    配置防火牆

    在啟用防火牆之前,您必須允許 OpenSSH 通過它,否則您將丟失連接,並且永遠不能登錄。

    sudo ufw app list
    sudo ufw allow OpenSSH

    允許您的服務使用的端口。

    sudo ufw allow 8484/tcp
    sudo ufw allow 8485/tcp

    查看添加的規則並啟用防火牆。

    sudo ufw show added
    sudo ufw enable

    設置 MySQL

    首先安裝MySQL。
    在安裝過程中,會要求您設置 MySQL 的root密碼。

    sudo apt-get install mysql-server

    這個命令將運行一個腳本來加強 MySQL 的安全性。

    sudo mysql_secure_installation

    以下配置是可選的。有關詳細信息,請閱讀文檔。

    nano /etc/mysql/my.cnf
    /etc/mysql/my.cnf
    #key_buffer
    max_allowed_packet = 1M
    thread_stack = 128K
    ...
    max_connections = 75
    ...
    table_open_cache = 32M
    key_buffer_size = 32M

    配置後,重啟 MySQL。

    sudo service mysql restart

    安裝 Java 運行時

    確定你的服務的 Java 版本。

    Java 7

    # 添加存儲庫
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update

    # 安裝
    sudo apt-get install oracle-java7-installer

    # 自動設置 Java 7 環境變量
    sudo apt-get install oracle-java7-set-default

    # 安裝 Java 加密擴展(JCE)無限強度管轄權策略文件
    sudo apt-get install oracle-java7-unlimited-jce-policy

    Java 8

    # 添加存儲庫
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update

    # 安裝
    sudo apt-get install oracle-java8-installer

    # 自動設置 Java 8 環境變量
    sudo apt-get install oracle-java8-set-default

    # 安裝 Java 加密擴展(JCE)無限強度管轄權策略文件
    sudo apt-get install oracle-java8-unlimited-jce-policy

    驗證已安裝的版本。

    java -version

    安裝 unzip

    sudo apt-get install unzip

    將文件上傳到服務器

    如果您使用 Windows,請使用 WinSCP 或 FileZilla,否則使用 scp 工具。
    將您的文件上傳到用戶的主目錄。例如/home/twms

    準備服務器文件

    將目錄切換到/home/twms
    將歸檔twms.zip解壓縮到目錄twms_files

    cd ~
    mkdir server_files.zip
    unzip server_files.zip -d twms_files/
    cd twms
    mkdir wz
    unzip wz_files.zip -d wz/

    設置數據庫

    使用您在安裝期間設置的密碼登錄到root

    mysql -u root -p

    為 MySQL 創建數據庫twms_db,並向密碼為password的新用戶twms_user授予權限。
    這與我們創建非 root 用戶的原因相同。

    CREATE DATABASE twms_db;
    GRANT ALL ON twms_db.* TO 'twms_user' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    quit

    將目錄切換到/home/twms/twms_files/sql/

    cd ~/twms_files/sql/

    以用戶twms_user身份登錄,並在數據庫twms_db上執行 SQL 腳本文件FILENAME.sql
    您可能需要使用--default-character-set選項來解決由字符集引起的問題。


    mysql -u twms_user -p twms_db < FILENAME.sql

    設置服務

    將目錄切換到/home/twms/twms_files/

    cd ~/twms_files/

    根據您的配置編輯數據庫設置,綁定IP地址和偵聽端口。

    nano settings.ini

    創建一個 shell 腳本來啟動服務,而不必每次都輸入命令。

    nano start.sh

    根據服務器的配置和服務參數編輯腳本。以下示例不適合所有情況。
    一般來說,您需要設置CLASSPATH環境變量,並將入口點類路徑傳遞給 Java。

    start.sh
    #!/bin/bash
    export CLASSPATH=.:dist/*:lib/*
    java -Xmx1000M -server -Dnet.sf.odinms.wzpath=./wz/ -Dfile.encoding=UTF-8 server.Start

    使腳本可由當前用戶執行。

    chmod u+x start.sh

    啟動服務

    ./start.sh

    Linux 私服架設服務,詳細請洽TobyShield

  • 停用IE傳送笑臉

    開啟登錄編輯程式

    進到機碼

    1
    HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft

    新增一個機碼Internet Explorer,新增Restrictions機碼到Internet Explorer底下
    進入機碼

    1
    HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Restrictions

    新增DWORD值名為NoHelpItemSendFeedback,修改資料為1

    Reference:
    http://samathalemonseio.com/topic/269886-windows-10-tip-registry-tweak-to-disable-%E2%80%9Csend-feedback%E2%80%9D-smiley-button-in-internet-explorer-toolbar/
    http://beatexcel.com/disable-send-a-smile/

  • 楓故事 ZXString、StringPool、CMsgbox與CMsgboxLinkWeb範例

    StringPool::GetInstance 函式

    語法

    1
    StringPool * StringPool::GetInstance(void);

    參數

    不帶任何參數。

    回傳值

    回傳一個StringPool的Instance,若尚未建立則會自動建立一個。

    StringPool::GetString 函式

    語法

    1
    2
    3
    4
    5
    template<typename T>
    ZXString<T> * StringPool::GetString(
    ZXString<T> *result,
    unsigned int nIdx
    );

    參數

    result[out]

    用於存放取得的ZXString的指標。

    nIdx

    用於查詢的ID。[in]

    回傳值

    回傳一個ZXString的指標,如果該ID不存在,可能導致程式崩潰。

    CMsgbox 與 CMsgboxLinkWeb 類別

    程式庫提供兩種MsgBox,一個是CMsgbox,另一個是CMsgboxLinkWeb。使用方法都很簡單,參考下面範例就會了。

    範例

    很簡單的class使用,顯示一個訊息ID是0x102A的訊息窗。

    CMsgbox只有一個OK按鈕,若連結網址不為空的話會顯示連結。

    1
    2
    3
    4
    5
    ZXString<char> sDesc = ""; // 連結文字
    ZXString<char> sLink = ""; // 連結網址
    ZXString<char> sMsg; // 訊息文字
    StringPool::GetInstance()->GetString(&sMsg, 0x102A);
    TSingleton<CMsgbox>::CreateInstance()->Init(sMsg, sLink, sDesc);

    直接使用C-Style字串也是可以的,編譯器會自動配置class。

    1
    TSingleton<CMsgbox>::CreateInstance()->Init("Test Text", "http://toby.logdown.com", "Test Link");

    寫asm的話參考下面方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    push ebp
    mov ebp,esp
    sub ebp,40
    call TSingleton<CMsgbox>::CreateInstance
    mov esi,eax
    xor edi,edi
    push ecx
    mov ecx,esp
    mov [ebp-04],esp
    push -01
    push sDesc
    mov [ecx],edi
    call ZXString<char>::Assign
    push ecx
    mov ecx,esp
    mov [ebp-08],esp
    push -01
    push sLink
    mov [ecx],edi
    call ZXString<char>::Assign
    push ecx
    mov ecx,esp
    mov [ebp-08],esp
    push -01
    push sMsg
    mov [ecx],edi
    call ZXString<char>::Assign
    mov ecx,esi
    call CMsgbox::Init
    pop ebp
    ret

    台灣楓故事DEMO:

    CMsgboxLinkWeb則是Yes-No訊息方塊,按Yes會打開連結。

    1
    2
    3
    ZXString<char> sLink = ""; // 連結網址
    ZXString<char> sMsg = ""; // 訊息文字
    TSingleton<CMsgboxLinkWeb>::CreateInstance()->Init(sMsg, sLink);

    台灣楓故事DEMO:

  • TobyBeanfunLogin

    可以選遊戲、選帳號,還能登入遊戲的登入器。
    目前僅台灣帳號可登入、僅能用帳號密碼登入。

    下載點:

  • Bahamut Redirector

    var url = location.href;
    var regex;

    if (regex = url.match(/m(.gamer.com.tw\/)forum\/(\S*)/))
    {
    location.href = "http://forum" + regex[1] + regex[2];
    }
    else if (regex = url.match(/m(.gamer.com.tw\/)home\/(\S*)/))
    {
    location.href = "http://home" + regex[1] + regex[2];
    }
  • 安裝非官方Windows XP SP4 (Service Pack 4)

    以下操作不保證無風險,請自行評估資料安全並適當做好備份。

    下載點:http://www.softpedia.com/get/Others/Signatures-Updates/Windows-XP-SP4-Unofficial.shtml#download

    到登錄檔HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/NIs/Language
    DefaultInstallLanguage改成0409重開機再安裝

    語系代碼:
    0404 = “zh-tw;Chinese (Taiwan)”
    0804 = “zh-cn;Chinese (China)”
    0C04 = “zh-hk;Chinese (Hong Kong SAR)”
    1004 = “zh-sg;Chinese (Singapore)”
    0409 = “en-us;English (United States)”

    裝完後會變成英文界面,改回登錄值無效果。

    此時請服用語言包:https://mega.nz/#!pQcRgKrD!UmU-DE0fBMFwEwSJVwFCg_0hnLyPeK9k2dwT6PAu7m0

    至MUI執行MUISetup.exe,上下都選Chinese (Traditional),然後安裝。
    過程中出現錯誤那是說明中心的語言無法安裝沒關係,略過繼續即可。
    安裝完會出現一個需要插入XP光碟的畫面,這是因為原本不是英文版系統沒有多國語言的檔案,這時候需要一片英文安裝光碟,完成後重開機就是中文版囉。

  • Change Android target platform of Cocos2d-x 3.x projects

    Manually change the target platform ID in:
    [Project Root]/cocos2d/cocos/platform/android/java/project.properties
    [Project Root]/proj.android/project.properties

    Then compile it again.
    cocos compile -p android --ap [Platform ID]

    Cocos2d-x 3.x still haven't provide a clean directive, so you might need to clean compiled obj manually.

  • Install Cocos2d-x on Ubuntu 12.04

    If you can, please switch to 14.04...

    Download cmake binary from https://cmake.org/download/
    Extract to /opt

    sudo tar -xzf cmake*.tar.gz -C /opt

    Make symlink

    sudo ln -f -s /opt/cmake*/bin/cmake /usr/bin/cmake

    Check version

    cmake --version

    Download glfw3 source code from http://www.glfw.org/download.html

    unzip glfw*.zip -d ~/
    cd ~/glfw*
    cmake -G "Unix Makefiles"
    sudo make install

    Then you can follow the instructions at http://www.cocos2d-x.org/wiki/Linux_Installation_and_Setup

    Running cpp-tests got this error
    ./cpp-tests: error while loading shared libraries: libfmod.so.6: cannot open shared object file: No such file or directory

    Make symlink to fix

    cd <*COCOS FOLDER LOCATION*>/external/linux-specific/fmod/prebuilt/64-bit
    ln -s libfmod.so libfmod.so.6
    ln -s libfmodL.so libfmodL.so.6

    ref:
    http://stackoverflow.com/questions/17768008/how-to-build-install-glfw-3-and-use-it-in-a-linux-project
    http://askubuntu.com/questions/355565/how-to-install-latest-cmake-version-in-linux-ubuntu-from-command-line
    https://github.com/cocos2d/cocos2d-x/issues/14961

  • Bypass Script

    loadlibrary(BlackCipher\BlackCall.aes)
    loadlibrary(TobyBypass.dll)
    alloc(SonOfTheBlack,64)

    BlackCall.aes+2289F:
    jmp SonOfTheBlack
    nop
    nop
    nop

    SonOfTheBlack:
    call CreateProcessW
    add esp,04
    jmp BlackCall.aes+228AF