# Serissa

## これは何？

EC○をオフライン起動したりみんなで遊んだりするためのツールです。

## インストール

- winmm.dllファイル,eco_flight.exeファイル,SerissaフォルダをECOのインストールパスに配置(eco.exeのあるフォルダ)

## 使い方

### オフラインで遊ぶ場合＆ホストになる場合

1. (eco_launch.exeではなく)eco.exeを直接起動
2. (ホストになる場合)チャット欄で/worldgateコマンドを使用する

※ECOをProgram FilesやProgram Files (x86)にインストールしている場合は**必ず「管理者として実行」**で起動してください  
※UPnPにより自動的にポートを開放しますが、環境によっては手動で行う必要があります  
※Serissaはポート番号12000,12100,12200,8080を使用します

### 誰かのワールドに遊びに行く場合

1. eco_flight.exeを起動
2. 相手のIPアドレスを教えてもらい、接続先に入力
3. 接続ボタンを押す

## 実装した機能

- キャラの新規作成・削除(削除キーは"test")
- 通常チャット
- エモーション
- モーション
- 看板
- 着せ替え
- 称号
- 飛空庭起動キーの使用(1つ目のみ)
- 飛空庭への移動
- 飛空庭へ家具の配置・再配置・撤去・騎乗
- マップ移動
- パートナーの呼び出し・自動移動
- ライドパートナーへの騎乗
- アイテムの重量/容量
- 装備時の容量変化
- 見た目変更ウィンドウと保管枠拡張
- ニーベルングのヘアサロン(カットとセットを除く)
- お顔スイッチャー
- ヘアカラー
- 飛空庭の改造・染色
- 飛空庭の家と内装
- ゴミ箱(持ち物ウィンドウのみ)
- ECOショップ
- ギルド商人(ジュエル・ゴールド以外)
- マネキン(ポーズの指定以外)
- 箱系アイテム(単/複数アイテムの入手、複数の中からランダム、複数の中から選択、の3タイプのみ)
- アイテムチェンジ(見た目だけ)
- イベントスクリプト(script.txtを参照)
- モンスタースタンプ
- モンスターフィギュア(高性能使い捨てカメラ+クリエイトフィギュアでの作成のみ)
- デバッグコマンド
  - /item {ItemID}
    アイテムを入手する。ItemIDはitem[2-7]?.csvのもの。
  - /gold [value]
    お金を入手する。valueは金額。
  - /warp [MapID] [X] [Y]
    指定したマップの座標に移動する。MapIDはmapname.csvのもの。
  - /reload
    イベントスクリプトとワープ定義を再読み込みする。
  - /worldgate
    ワールドゲートを開閉する。
  - /return
    セーブポイント(現在はアップタウン固定)に戻る
  - /scale [倍率] [表示速度]
    キャラクターの表示スケールを変更する。倍率は1000が標準。表示速度はミリ秒で指定(1000で1秒)。
    倍率と表示速度は省略可能(省略した場合それぞれ1000、1500がデフォルト)。
  - /gvar [変数名]
    グローバル変数の現在の値を確認する。
  - /wvar [変数名]
    ワールド変数の現在の値を確認する。

## 設定の上書き

以下のような内容のwinmm.iniをwinmm.dllと同じフォルダに設置すると設定を上書きできます。
直起動モードでは引数が指定できないため、パケットログを取る際などはこちらの設定が必要です。
(必要なもののみ記述して下さい)

    [winmm]
    ; ログアウトの高速化
    FastLogout=1
    ; ゲーム内ブラウザの無効化
    NoBrowser=1
    ; 暗号化の無効化
    NoCrypt=1
    ; パケットログの保存
    PacketLog=1

## 注意点など

- アイテムIDを知るのに必要なitem.csvなどは、[uneco](http://lyna.space/junk/eco/uneco.zip)を使用し、インストールパスのdata\xls\table.hedを指定して入手してください。
- 未実装の機能が多いため、実装されていない機能に触れるとクライアントが無反応になったり、エラー落ちする場合があります。
- 仕様が固まるまでは保存データの互換性が失われる変更が行われる可能性があります(セーブの初期化が必要になる場合があります)。

## バグ報告について

バグ報告の際は、
1. 動作環境(ツールのバージョン、OSなどPCの情報)
2. どういう手順で起きたか(バグを再現可能な手順)
3. どういうバグが起きたか(不具合の詳細及びエラーメッセージが出た場合はその内容)
これらを添えて報告をお願いします。必要な情報が欠けている場合は対応が難しくなります。
また、このツールは実験的意味合いを多く含むため、開発者の環境で起きないバグに関しては修正の優先度が低くなります。

## 既知のバグ

- 一部の環境(Windows 7？)でログインできない

## 更新履歴

### build180812

- mod機能で一部間違ったファイルを読み込む不具合を修正
- mod機能でwindow_param.csvや拡張子がtxtやsprなどのファイルが存在するだけでクライアントが落ちていた問題を修正

### build180622

- 0x05E2で送るNPCが100を超える場合はパケットを分割するように修正
- スクリプトの以下の命令にpublicパラメータを追加(script.txt参照)
  - say
  - motion
  - playbgm
  - playse
- 座った状態で移動開始した時に0x157Cを自分以外にも送るように修正
- 座った状態で向きを変更した時に0x157Cを送らないように修正
- 座った状態でモーションを実行した時に0x157Cを送らないように修正

### build171125

- 見た目変更が反映されなかったのを修正
- 矢が装備できなかったのを修正
- 弓装備時のモーションを修正
- 飛空庭での移動スピードを修正
- itemコマンドでスタック可能なサイズを超える数を指定できていたのを修正

### build171109

- スクリプトにsay命令、haspartner命令を追加
- motion命令のidにPARTNER_IDを指定できるようにした
- script.txtを少し加筆
- warp_dest1025aをマージ(thx all!)

### build171019

- 装備ウィンドウからの転生特典変更を実装(アイテム受け取りは未実装)
- 現在はデフォルトで転生状態となります

### build171016

- mod機能で未対応だったファイル形式の一部に対応

### build171004

- npcflags命令でパケットに乗せるIDの条件をnpc.csvのFLAGが0以外であることに変更
- スクリプトに以下の命令を追加
  - dir
  - browser
  - irisgacha
  - add
  - sub
  - mul
  - div
  - mod
  - rand
- warp_dest1004をマージ(thx to sekさん Cloveroidさん dhaag0314さん)

### build170929

- mod機能を追加
- Serissa\data以下にファイルを配置することで任意のファイルを上書きできます
  (例えばnpc.csvであればSerissa\data\xls\table\npc.csv)
- warp_dest0929をマージ(thx to sekさん Cloveroidさん)

### build170923

- 以下のデバッグコマンドを追加
  - scale
  - gvar
  - wvar
- 飛空庭にキャラが残ってる状態でひもを片付けた際に取り残される場合があるのを修正
- 飛空庭での位置ずれを修正(たぶん…)
- 起動速度を少し改善

### build170922

- パートナーの名前がおかしくなる場合があるのを修正
- スクリプトに以下の命令を追加
  - playbgm
  - stopbgm
  - setbgm
  - playse
  - stopse
  - setse
- resetcamera

### build170920

- 種族待機モーションに対応
- LAN内からの接続に対応
- パートナーのサイズに対応
- 一部表示されないパートナーがあったのを修正
- スタック可能な家具アイテム配置時の処理を修正
- マネキンの見た目変更ダイアログを開いた時に別のマネキンの装備が表示される場合があるのを修正
- マネキンデータが正常に保存されていなかったのを修正
- 一旦マネキンと影響の出た家具を全て撤去すれば正常化しますが、
  間違えると今後もエラーが蓄積してしまうため、一度でもマネキンを使用している場合はセーブデータ自体の削除をお勧めします。
- sekさんの最新データをマージ

### build170917a

- 負荷を抑制

### build170917

- 移動モーションを修正
- オフライン/ホストモード時のログアウトの高速化
- システム→ヘルプで簡易装備アイテムID表を閲覧できるように
- ワールド変数の使用時にエラーが出ていたのを修正
- 外部接続可能なホストモードを実装(/worldgateコマンドで切り替え)
- UPnPによるポートフォワーディングを実装(/worldgateコマンドを使用しない限り実行しない)
- 読み込み速度(と利便性)のためcsvのキャッシュを再び保存するように変更
- スクリプトのset命令を拡張してキャラの状態などを取得できるようにした(script.txt参照)
- 未接続マップへの侵入時などの緊急避難用に/returnコマンドを追加
- sekさんのwarp_dest.csvとscriptマージ

### build170914

- EXエモーションを仮実装
- 初期状態で全てのモーション/エモーションを所持するように変更
- マップ間接続データ(warp_dest.csv)の拡充(thx sekさん)
- 一部装備が見た目に反映されないのを修正

### build170910

- スクリプトの命令にbuyshop,sellshop,desposit,withdraw,warehouse,inputnumberを追加

### build170909a

- 書き込み権限が取得できない場合にその旨を表示するようにした

### build170909

- デバッグコマンドでアイテムを入手する際に所持数制限を適用するようにした
- 未定義のNPCに話しかけることでスクリプトを生成できるようにした

### build170907

- ソケットの初期化タイミングを遅くした(Win7対策)

### build170906

- DLL化

### build170718

- データの保存と読み込みを実装

### build170705

- マネキンの配置フラグが常に0番目の情報が使われていたのを修正

### build170704

- ブリーダーブローチ・ガーデナーブローチの装備によるジョイントジョブへの転職を仮実装

### build170626

- モンスタースタンプを実装
- イリスカードポスターを実装
- モンスターフィギュアを実装(高性能使い捨てカメラでのスケッチ+クリエイトフィギュアでの作成のみ)

### build170624

- csvとmapをクライアントから自動で読み込む機能を追加
  無ければクライアントから読み込みます。初回時はそこそこ重いです。
  更新は行わないので、アップデートで更新の必要がある場合は-forcereaddatオプションを付けて起動して下さい。
- warp_dest.csvの読み込み元をcsvフォルダからuserフォルダに変更
- アイテムチェンジに仮対応(能力値の引き継ぎは未対応)
- ライドパートナー使用時にPCの姿が変わる場合があるのを修正

### build170621

- イベントスクリプトに変数の展開記法を追加(${VariableName} sysmsg,talk,select命令のみ対応)
- イベントスクリプトにキャラ名定数を追加({CHAR_NAME})

### build170620

- イベントスクリプトを実装(script.txtを参照)

### build170618

- レベルアップ処理とステータスの上昇処理を仮実装
- キャラ作成時イベントをエミルのみ仮実装
- ログアウト時にパートナーの表示が残っていたのを修正

### build170616

- 箱系アイテムの仕組みと一部箱の実装(箱の中身の定義はuser/itembox.csv)
- スキル「ヘブンリーコントロール」「ウェザーコントロール」の仮実装
- warpコマンドの追加

### build170614

- マネキン周りを実装(ポーズの指定以外)

### build170611

- ECOショップを実装(販売アイテムの定義はuser/ecoshop.json)
- ギルド商人の機能を(ジュエル・ゴールド以外)実装
- 飛空庭で移動ができなくなっていたのを修正

### build170609

- パートナーの移動がおかしくなっていたのを修正
- 無地のネームプレートで入力をキャンセルするとパートナー名が初期化されるのを修正
- アイテムパケがおかしかったのを修正
- 装備パケにライドパートナーではないパートナーのアイテムIDを乗せないようにした

### build170517

- 作成
