Mac mini/A2.メモ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
*L2J_JP構築メモ [#r56e57ec]
低消費電力、静音なPPC Mac miniでL2Jサーバを走らせる。
-参考サイト
--http://svn.tslroom.net/
--http://tslroom.svnrepository.com/cgi-bin/trac.cgi/timel...
--http://chickenkatu.hp.infoseek.co.jp/l2j/
-必要なツール類
--Java 1.5 … L2JはJavaで記述されている。MacOSX 10.4 Tiger...
--Eclipse … Javaの統合開発環境セット
--MySQL … データベース
--phpMyAdmin … WEBブラウザからデータベース管理を行うツー...
~
~
*下準備 [#m476f1e1]
**Tigerへアップグレード(MacOSX 10.3.9 → 10.4.6) [#d17d2528]
-J2SE 5.0 (Java 1.5)~
MacOSX(Tiger)に付属します。Tigerへアップグレード(2006/6/...
-個人メモ(L2Jの構築とは無関係です)
--LaunchDaemons関連のトラブル発生
---postfixの対策 … http://tetralog.mydns.jp:8080/t/?date=...
---%% postfixの対策 … http://www.david-reitter.com/softwa...
---dovecotの対策 … http://wiki.dovecot.org/DovecotServerI...
**MySQL 4.1 [#ubb787d8]
-mysql-standard-4.1.20-apple-darwin8.6.0-powerpc.dmg をダ...
-次の3つのファイルをインストール
--mysql-standard-4.1.20-apple-darwin8.6.0-powerpc.pkg
--MySQLStartupItems.pkg
--MySQL.prefPane … システム環境設定からMySQLの制御が可能...
-/etc/php.iniへソケットの場所を指定
#pre{{
# cp /etc/php.ini.default /etc/php.ini
}}
/etc/php.iniの661行目付近を修正
#pre{{
mysql.default_socket = &color(red){/tmp/mysql.sock};
}}
システム環境設定→共有の「パーソナルWEB共有」を再起動すれ...
-〜/.profileへパス設定を追加
#pre{{
PATH=/opt/local/bin:/usr/local/mysql/bin:$PATH
}}
パス設定を反映~
#pre{{
$ . ~/profile
}}
-動作確認
#pre{{
$ mysqlshow
+-----------+
| Databases |
+-----------+
| test |
+-----------+
}}
**phpMyAdmin [#cf34f488]
-http://www.phpmyadmin.net/home_page/index.php をインスト...
-/etc/php.iniの修正が必要(MySQL 4.1を参照)
**Eclipse [#bd7852cd]
-Eclipse 3.2RC6 - Mac OSX (Mac/Carbon)版をダウンロードし...
--http://download.eclipse.org/eclipse/downloads/drops/S-3...
-日本語化パッチ pleiades_0.95.zip を http://mergedoc.sour...
readme.txtに従い、~
--jp.sourceforge.mergedoc.pleiadesディレクトリをEclipseの...
--eclipse.ini (Eclipse.app/Contents/MacOS/eclipse.ini)の...
jarファイルを&color(red){絶対パス};で指定するのがミソ。~
#pre{{
-javaagent:/Aplications/eclipse/plugins/jp.sourceforge.me...
}}
-subclipseのインストール。(下記を参考にして。)~
http://server.seasar.org/manual/install_subclipse.html
**L2J_JPサーバの作成 [#a78a31a0]
-ソースの取得~
全てをEclipse上で行う。~
まずEclipseを起動し、画面右下のSVNリポジトリを右クリック...
&ref(svn1.png,nolink);~
~
サーバを指定する。~
&ref(svn2.png,nolink);~
~
リポジトリL2J_JPを右クリックしてチェックアウトを選択する。~
&ref(svn3.png,nolink);~
~
オプションを聞かれたら、
「プロジェクトとしてワークスペースへチェックアウト」を選...
~
-ビルド~
「パッケージエクスポローラー」の中のL2J_JPを選択して、~
画面上部のボタン「実行 L2J_JP build.xml」を押せばOKです。~
&ref(build1.png,nolink);~
~
「BUILD SUCCESSFUL」と表示されればビルドは終了です。(私の...
~
-L2Jサーバの設置~
〜/Document/workspace/L2J_JP/build/dist フォルダがL2J_JP...
サーバの設置場所(どこでもOK)を決めてそこにコピーしてお...
#pre{{
$ cp -R ~/Document/workspace/L2J_JP/dist ~/L2J_JP
}}
-シェルスクリプトに実行属性を付加
#pre{{
$ cd ~/L2J_JP
$ find . -name "*.sh" -exec chmod +x {} \;
}}
**L2J_JPデータベースの作成 [#s9d5c9a4]
-キャラクタ名を日本語表示するための設定~
/etc/my.cnfを用意(存在しないなら)~
#pre{{
$ sudo cp /usr/local/mysql/support-files/my-medium.cnf /e...
}}
/etc/my.cnf の [mysqld]、[mysql]の項へ文字コードの設定を...
#pre{{
[mysqld]
&color(red){default-character-set=utf8};
[mysql]
&color(red){default-character-set=sjis};
}}
データベース l2jdb の作成と文字コードの確認~
#pre{{
$ mysql -u root
mysql> create database l2jdb character set &color(red){sj...
mysql> use l2jdb;
mysql> show variables like 'character\_set\_%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| character_set_client | sjis |
| character_set_connection | sjis |
| character_set_database | sjis |
| character_set_results | sjis |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+-------+
mysql> exit;
}}
-データベーステーブル/コンテンツの作成
#pre{{
$ cd ~/L2J_LP/gameserver/tools
$ ./database_installer.sh
}}
**L2J_JPサーバの設定 [#yae1d115]
-ネットワーク/MySQLアカウントの設定~
&color(red){外部と接続する場合は、MySQLのuser/passwd等を...
#pre{{
■ ~/L2J_JP/login/config/loginserver.properties
InternalHostname = 192.168.1.11 # Mac miniのIP
ExternalHostname = xxxx.ddo.jp # WAN側IPアドレスを指定(...
login = root # MySQLデータベースのuser
password = # MySQLデータベースのpasswd
■ ~/L2J_JP/gameserver/config/server.properties
InternalHostname = 192.168.1.11 # Mac miniのIP
ExternalHostname = xxxx.ddo.jp # WAN側IPアドレスを指定(...
login = root # MySQLデータベースのuser
password = # MySQLデータベースのpasswd
}}
~
-ゲームサーバの登録
#pre{{
$ cd ~/L2J_JP/login
$ ./RegisterGameServer.sh
Enter The id of the server you want to register or type h...
Your choice: &color(red){1}; ← 番号は何でも良いらしいが...
Server Registered hexid saved to 'hexid(server 1).txt'
Put this file in the /config folder of your gameserver an...
}}
hexidキーをgameserverへ登録する。
#pre{{
$ cp hexid\(server 1\).txt ../gameserver/config/hexid.txt
}}
-ルータのポートフォワード~
下記ポートをMac miniへフォーワードするようにルータを設定...
&color(red){実際私は外に繋いでないので間違っているかもし...
--TCP 7777
--UDP 7777
--TCP 2106
--UDP 2106
-L2J_JPサーバの起動
#pre{{
$ cd ~/L2J_JP/login
$ ./startLoginServer.sh
$ cd ~/L2J_JP/gameserver
$ ./startGameServer.sh
}}
**L2J_JPゲームパラメータの設定(お好みに応じて) [#ta00a00c]
-jp_addonの適用(正しいかどうか自身ないけど・・・)~
#pre{{
$ cd ~/L2J_JP/gameserver/jp_addon
$ mysql -u root l2jdb < sql/itemname_jp.sql
$ mysql -u root l2jdb < sql/l2whdb.sql
$ mysql -u root l2jdb < sql/updates_item.sql
$ mysql -u root l2jdb < sql/updates_npc.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql/armor.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql/etcitem....
$ mysql -u root l2jdb < custum_sql_by_viento/sql/minions....
$ mysql -u root l2jdb < custum_sql_by_viento/sql/npc.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql/raidboss...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/random_s...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/random_s...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/spawnlis...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/weapon.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql_for_add/...
$ mysql -u root l2jdb < custum_sql_by_viento/sql_for_add/...
$ cp -R data/* ../data
#rev 303と314のアップデートを実行する。
$ mysql -u root l2jdb < ~/L2J_JP/gameserver/sql/updates/2...
$ mysql -u root l2jdb < ~/L2J_JP/gameserver/sql/updates/2...
}}
-パラメータいじり~
#pre{{
■ ~/L2J_JP/gameserver/config/rates.properties
RateXP = 20 # 敵からの経験値(XP)を2...
RateSP = 20 # 敵からのスキルポイン...
RatePartyXP = 5 # パーティ行動時にはXP...
RatePartySP = 5 # パーティ行動時にはSP...
RateDropAdera = 1000 # 敵が落とすアデナ(お...
RateConsumableCost = 1. # 消費剤(ss/sps/矢等)の...
RateDropItems = 100 # 敵が落とすアイテム率...
RateDropSpoil = 3 # Dwarf専用スキル、スポ...
PlayerDropLimit = 0 # 死亡時、アイテムを落...
PlayerRateDrop = 0 # 死亡時、ドロップ率0
KarmaDropLimit = 0 # PKキャラ死亡時、アイ...
KarmaRateDrop = 0 # PKキャラ死亡時、ドロ...
# ドロップ成立時の、アイテム、装備品、武器の3つのうちど...
# 本例ではドロップ率が0なので、実質意味をなしてない。
KarmaRateDropItem = 10 # アイテムを10%の確立で...
KarmaRateDropEquip = 40 # 装備品を40%の確立で落...
KarmaRateDropEquipWeapon = 50 # 武器を50%の確立で落とす
■ ~/L2J_JP/gameserver/config/altsettings.properties
Delevel = Fales # レベルや経験値(XP)...
AltGameExponentXP = 5 # レベル差に応じてXPを...
AltGameExponentSP = 5 # レベル差に応じてSPを...
AltGameCanselByHit = cast # 敵攻撃により魔法詠唱...
SpBookNeeded = False # スキル取得の際、魔法...
AltGameSkillLearn = False # Trueにすると全種族/...
AltSubClassWithoutQuests = True # クエストなしでサブク...
■ ~/L2J_JP/gameserver/config/jp-custom.properties
AltChangeable3rdClass = True # 3次転職を可能にする
■ ~/L2J_JP/gameserver/config/options.properties
ZoneTown = 1
DeleteCharAfterDays = 1 # キャラクタ削除時、1...
MaxDriftRange = 200 # default 200
AllowRentPet = True
AllowFishing = True
■ ~/L2J_JP/gameserver/config/other.properties
StartingAdena = 2000000000 # キャラクタ作成時の初...
WyvernSpeed = 500 # ワイバーン(飛竜)の移...
StriderSpeed = 500 # ストラーダ(歩行竜)の...
UseDeepBlueDropRules = False
MaximumSlotsForNoDwarf = 160 # 種族Dwarf以外の手持ち...
MaximumSlotsForDwarf = 200 # 種族Dwarfの手持ちアイ...
MaximumSlotsForGMPlayer = 500 # GMの手持ちアイテム数
EnchantCance = 100 # エンチャントの成功率...
EnchantMax = 200 # +200までエンチャント...
HpRegenMultiplier = 200 # HPの自然回復速度200%
MpRegenMultiplier = 200 # MPの自然回復速度200%
CpRegenMultiplier = 200 # CPの自然回復速度200%
RaidHpRegenMultiplier = 50 # RaidボスのHPの自然回...
RaidMpRegenMultiplier = 50 # RaidボスのMPの自然回...
RaidDefenceMultiplier = 20 # Raidボスの防御力 ...
UnstuckInterval = 300
RespawnRestoreCP = 90 # 復活時、総CP値の90%を...
RespawnRestoreHP = 90 # 復活時、総HP値の90%を...
RespawnRestoreMP = 90 # 復活時、総MP値の90%を...
}}
-GMショップの設置~
--http://svn.tslroom.net/ の [[GM SHOP:http://svn.tslroo...
--ReadMe.txt に従い、8031.html を所定の場所に格納。
--GMショップのデータをl2jdpへ反映させます。
#pre{{
$ mysql -u root l2jdb < ダウンロードした/gm_shop/gm_shop....
}}
-GMキャラ~
--作り方~
データベースを直接編集して普通に作ったキャラクタをGMキャ...
具体的には、phpMyAdminのようなデータベース管理ツールを使...
---データベース l2jdb 中の
---accounts テーブルの 該当アカウントの access_level を...
---characters テーブルの 該当キャラの accesslevel を 100 ...
--コマンド~
GMキャラで冒険中に、チャットウインドウへ次のコマンドを入...
#pre{{
//admin
}}
-タヌキなアイテム … アイテムカスタマイズの例~
「タヌキの耳」を装備すると、最大CP/HP/MP、命中率、クリテ...
他、HPドレイン10%のおまけ付。~
#pre{{
--- gameserver/data/stats/armor/7600-7699.xml.org 2006-06...
+++ gameserver/data/stats/armor/7600-7699.xml 2006-06-10 ...
@@ -3,6 +3,14 @@
<item id='7680' name="Raccoon Ear">
<for>
<add val='0' order='0x10' stat='pDef' />
+ <mul val='1.3' order='0x40' stat='maxCp'/>
+ <mul val='1.3' order='0x40' stat='maxHp'/>
+ <mul val='1.3' order='0x40' stat='maxMp'/>
+ <mul val='1.3' order='0x40' stat='accCombat' />
+ <mul val='1.3' order='0x40' stat='rCrit' />
+ <mul val='1.3' order='0x40' stat='pAtkSpd' />
+ <mul val='1.3' order='0x40' stat='mAtkSpd' />
+ <add stat="absorbDam" val="10" order="0x50"/>
</for>
</item>
<item id='7681' name="Outlaw's Eyepatch">
}}
-Javaソース変更(リビルド要)~
--重量制限を100%まで無効にする。 ( http://svn.tslroom.net...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -1478,7 +1478,7 @@
setIsOverloaded(getCurrentLoad() > getMaxLoad());
int weightproc = getCurrentLoad() * 1000 / getMaxLoad...
int newWeightPenalty;
- if ( weightproc < 500) newWeightPenalty = 0;
+ if ( weightproc < 1000) newWeightPenalty = 0;
else if ( weightproc < 666) newWeightPenalty = 1;
else if ( weightproc < 800) newWeightPenalty = 2;
else if ( weightproc < 1000) newWeightPenalty = 3;
}}
--Lv差8以上のレイドボス石化対策 ( http://svn.tslroom.net/...
#pre{{
--- java/net/sf/l2j/gameserver/model/L2Character.java.ori...
+++ java/net/sf/l2j/gameserver/model/L2Character.java 200...
@@ -3811,7 +3811,7 @@
activeWeapon.getSkillEffects(this, target, crit);
// Check Raidboss attack
- if (target.isRaid() && getLevel() > target.getLevel()...
+ if (target.isRaid() && getLevel() > target.getLevel()...
{
L2Skill skill = SkillTable.getInstance().getInfo(451...
@@ -4418,7 +4418,7 @@
}
// Check Raidboss attack
- if (player.isRaid() && getLevel() > player.getLevel...
+ if (player.isRaid() && getLevel() > player.getLevel...
{
L2Skill tempSkill = SkillTable.getInstance().getIn...
if(tempSkill != null)
}}
--サブクラスを10個まで追加できるようにする。
#pre{{
--- java/net/sf/l2j/gameserver/handler/admincommandhandle...
+++ java/net/sf/l2j/gameserver/handler/admincommandhandle...
@@ -233,7 +233,7 @@ public class AdminSubClass implements...
else
playerMatrix = new Matrix(ob...
- if (playerMatrix.getNumSubClasse...
+ if (playerMatrix.getNumSubClasse...
{
sendReport("WARN", "Warning ...
continue;
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -6961,7 +6961,7 @@ public final class L2PcInstance ext...
*/
public boolean addSubClass(int classId, int classInd...
{
- if (getTotalSubClasses() == 3 || classIndex == 0)
+ if (getTotalSubClasses() == 10 || classIndex == 0)
return false;
if (getSubClasses().containsKey(classIndex))
--- java/net/sf/l2j/gameserver/model/actor/instance/L2Vil...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2Vil...
@@ -143,7 +143,7 @@ public final class L2VillageMasterIns...
{
case 1: // Add Subclass - Initial
// Avoid giving player an option to ...
- if (player.getTotalSubClasses() == 3)
+ if (player.getTotalSubClasses() == 10)
{
player.sendMessage("You can now ...
return;
}}
--スキル拡張その1(改) … メインクラスで習得したスキルを...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -177,7 +177,10 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ "WHERE char_obj_id=? AND (class_index=0 AND (skill_...
+ "(SELECT skill_name FROM character_skills WHERE cha...
+ ") OR class_index=?) GROUP BY skill_id";
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
@@ -5173,7 +5176,9 @@ public final class L2PcInstance ext...
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement(RE...
statement.setInt(1, getObjectId());
- statement.setInt(2, getClassIndex());
+ statement.setInt(2, getObjectId());
+ statement.setInt(3, getClassIndex());
+ statement.setInt(4, getClassIndex());
ResultSet rset = statement.executeQuery();
// Go though the recordset of this SQL query
}}
--%%スキル拡張その1(ボツ) … メインクラスで習得したスキル...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -177,7 +177,7 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_CHAR = "...
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
}}
--%%スキル拡張その2 … メイン、サブで習得したすべてのスキ...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -177,7 +177,7 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_CHAR = "...
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
}}
--スキル拡張その2 … メイン、サブで習得したすべてのスキル...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -174,7 +177,12 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_C...
+ "SELECT ( (MIN(ABS(class_index-?)*65536+skil...
+ " ( (MIN(ABS(class_index-?)*65536+skil...
+ "FROM character_skills "+
+ "WHERE ( class_index=0 OR class_index=? OR ?=...
+ "GROUP BY skill_name ORDER BY skill_id";
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
@@ -5110,8 +5206,11 @@ public final class L2PcInstance ex...
// Retrieve all skills of this L2PcInstance from the ...
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement(RE...
- statement.setInt(1, getObjectId());
+ statement.setInt(1, getClassIndex());
statement.setInt(2, getClassIndex());
+ statement.setInt(3, getClassIndex());
+ statement.setInt(4, getClassIndex());
+ statement.setInt(5, getObjectId());
ResultSet rset = statement.executeQuery();
// Go though the recordset of this SQL query
}}
--Hero武器を使う。(装備、床置き、倉庫出し入れが可能にな...
#pre{{
--- java/net/sf/l2j/gameserver/clientpackets/RequestDropI...
+++ java/net/sf/l2j/gameserver/clientpackets/RequestDropI...
@@ -91,7 +91,7 @@ public class RequestDropItem extends Cli
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <= 6621) || itemId...
- return;
+ ; // return;
if(_count < 0)
{
--- java/net/sf/l2j/gameserver/clientpackets/SendWareHous...
+++ java/net/sf/l2j/gameserver/clientpackets/SendWareHous...
@@ -106,7 +106,7 @@ public class SendWareHouseDepositList...
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <= 6621) || it...
- continue;
+ ; // continue;
// Calculate needed adena and slots
if (item.getItemId() == 57) currentAdena -= count;
@@ -145,7 +145,7 @@ public class SendWareHouseDepositList...
int itemId = oldItem.getItemId();
if ((itemId >= 6611 && itemId <= 6621) || it...
- continue;
+ ; // continue;
L2ItemInstance newItem = player.getInventory().transf...
if (newItem == null)
--- java/net/sf/l2j/gameserver/model/Inventory.java.org
+++ java/net/sf/l2j/gameserver/model/Inventory.java
@@ -546,7 +546,7 @@ public abstract class Inventory exten...
L2PcInstance player = (L2PcInstance)getOwner...
if(!player.isGM())
- if (!player.isHero())
+ if(false) // if (!player.isHero())
{
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <= 662...
@@ -779,7 +779,7 @@ public abstract class Inventory exten...
L2PcInstance player = (L2PcInstance)get...
if(!player.isGM())
- if (!player.isHero())
+ if(false) // if (!player.isHero())
{
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <...
}}
//-スクリーンショット~
//&ref(vara3.jpg,nolink);~
//~
#navi(Mac mini);
終了行:
*L2J_JP構築メモ [#r56e57ec]
低消費電力、静音なPPC Mac miniでL2Jサーバを走らせる。
-参考サイト
--http://svn.tslroom.net/
--http://tslroom.svnrepository.com/cgi-bin/trac.cgi/timel...
--http://chickenkatu.hp.infoseek.co.jp/l2j/
-必要なツール類
--Java 1.5 … L2JはJavaで記述されている。MacOSX 10.4 Tiger...
--Eclipse … Javaの統合開発環境セット
--MySQL … データベース
--phpMyAdmin … WEBブラウザからデータベース管理を行うツー...
~
~
*下準備 [#m476f1e1]
**Tigerへアップグレード(MacOSX 10.3.9 → 10.4.6) [#d17d2528]
-J2SE 5.0 (Java 1.5)~
MacOSX(Tiger)に付属します。Tigerへアップグレード(2006/6/...
-個人メモ(L2Jの構築とは無関係です)
--LaunchDaemons関連のトラブル発生
---postfixの対策 … http://tetralog.mydns.jp:8080/t/?date=...
---%% postfixの対策 … http://www.david-reitter.com/softwa...
---dovecotの対策 … http://wiki.dovecot.org/DovecotServerI...
**MySQL 4.1 [#ubb787d8]
-mysql-standard-4.1.20-apple-darwin8.6.0-powerpc.dmg をダ...
-次の3つのファイルをインストール
--mysql-standard-4.1.20-apple-darwin8.6.0-powerpc.pkg
--MySQLStartupItems.pkg
--MySQL.prefPane … システム環境設定からMySQLの制御が可能...
-/etc/php.iniへソケットの場所を指定
#pre{{
# cp /etc/php.ini.default /etc/php.ini
}}
/etc/php.iniの661行目付近を修正
#pre{{
mysql.default_socket = &color(red){/tmp/mysql.sock};
}}
システム環境設定→共有の「パーソナルWEB共有」を再起動すれ...
-〜/.profileへパス設定を追加
#pre{{
PATH=/opt/local/bin:/usr/local/mysql/bin:$PATH
}}
パス設定を反映~
#pre{{
$ . ~/profile
}}
-動作確認
#pre{{
$ mysqlshow
+-----------+
| Databases |
+-----------+
| test |
+-----------+
}}
**phpMyAdmin [#cf34f488]
-http://www.phpmyadmin.net/home_page/index.php をインスト...
-/etc/php.iniの修正が必要(MySQL 4.1を参照)
**Eclipse [#bd7852cd]
-Eclipse 3.2RC6 - Mac OSX (Mac/Carbon)版をダウンロードし...
--http://download.eclipse.org/eclipse/downloads/drops/S-3...
-日本語化パッチ pleiades_0.95.zip を http://mergedoc.sour...
readme.txtに従い、~
--jp.sourceforge.mergedoc.pleiadesディレクトリをEclipseの...
--eclipse.ini (Eclipse.app/Contents/MacOS/eclipse.ini)の...
jarファイルを&color(red){絶対パス};で指定するのがミソ。~
#pre{{
-javaagent:/Aplications/eclipse/plugins/jp.sourceforge.me...
}}
-subclipseのインストール。(下記を参考にして。)~
http://server.seasar.org/manual/install_subclipse.html
**L2J_JPサーバの作成 [#a78a31a0]
-ソースの取得~
全てをEclipse上で行う。~
まずEclipseを起動し、画面右下のSVNリポジトリを右クリック...
&ref(svn1.png,nolink);~
~
サーバを指定する。~
&ref(svn2.png,nolink);~
~
リポジトリL2J_JPを右クリックしてチェックアウトを選択する。~
&ref(svn3.png,nolink);~
~
オプションを聞かれたら、
「プロジェクトとしてワークスペースへチェックアウト」を選...
~
-ビルド~
「パッケージエクスポローラー」の中のL2J_JPを選択して、~
画面上部のボタン「実行 L2J_JP build.xml」を押せばOKです。~
&ref(build1.png,nolink);~
~
「BUILD SUCCESSFUL」と表示されればビルドは終了です。(私の...
~
-L2Jサーバの設置~
〜/Document/workspace/L2J_JP/build/dist フォルダがL2J_JP...
サーバの設置場所(どこでもOK)を決めてそこにコピーしてお...
#pre{{
$ cp -R ~/Document/workspace/L2J_JP/dist ~/L2J_JP
}}
-シェルスクリプトに実行属性を付加
#pre{{
$ cd ~/L2J_JP
$ find . -name "*.sh" -exec chmod +x {} \;
}}
**L2J_JPデータベースの作成 [#s9d5c9a4]
-キャラクタ名を日本語表示するための設定~
/etc/my.cnfを用意(存在しないなら)~
#pre{{
$ sudo cp /usr/local/mysql/support-files/my-medium.cnf /e...
}}
/etc/my.cnf の [mysqld]、[mysql]の項へ文字コードの設定を...
#pre{{
[mysqld]
&color(red){default-character-set=utf8};
[mysql]
&color(red){default-character-set=sjis};
}}
データベース l2jdb の作成と文字コードの確認~
#pre{{
$ mysql -u root
mysql> create database l2jdb character set &color(red){sj...
mysql> use l2jdb;
mysql> show variables like 'character\_set\_%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| character_set_client | sjis |
| character_set_connection | sjis |
| character_set_database | sjis |
| character_set_results | sjis |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+-------+
mysql> exit;
}}
-データベーステーブル/コンテンツの作成
#pre{{
$ cd ~/L2J_LP/gameserver/tools
$ ./database_installer.sh
}}
**L2J_JPサーバの設定 [#yae1d115]
-ネットワーク/MySQLアカウントの設定~
&color(red){外部と接続する場合は、MySQLのuser/passwd等を...
#pre{{
■ ~/L2J_JP/login/config/loginserver.properties
InternalHostname = 192.168.1.11 # Mac miniのIP
ExternalHostname = xxxx.ddo.jp # WAN側IPアドレスを指定(...
login = root # MySQLデータベースのuser
password = # MySQLデータベースのpasswd
■ ~/L2J_JP/gameserver/config/server.properties
InternalHostname = 192.168.1.11 # Mac miniのIP
ExternalHostname = xxxx.ddo.jp # WAN側IPアドレスを指定(...
login = root # MySQLデータベースのuser
password = # MySQLデータベースのpasswd
}}
~
-ゲームサーバの登録
#pre{{
$ cd ~/L2J_JP/login
$ ./RegisterGameServer.sh
Enter The id of the server you want to register or type h...
Your choice: &color(red){1}; ← 番号は何でも良いらしいが...
Server Registered hexid saved to 'hexid(server 1).txt'
Put this file in the /config folder of your gameserver an...
}}
hexidキーをgameserverへ登録する。
#pre{{
$ cp hexid\(server 1\).txt ../gameserver/config/hexid.txt
}}
-ルータのポートフォワード~
下記ポートをMac miniへフォーワードするようにルータを設定...
&color(red){実際私は外に繋いでないので間違っているかもし...
--TCP 7777
--UDP 7777
--TCP 2106
--UDP 2106
-L2J_JPサーバの起動
#pre{{
$ cd ~/L2J_JP/login
$ ./startLoginServer.sh
$ cd ~/L2J_JP/gameserver
$ ./startGameServer.sh
}}
**L2J_JPゲームパラメータの設定(お好みに応じて) [#ta00a00c]
-jp_addonの適用(正しいかどうか自身ないけど・・・)~
#pre{{
$ cd ~/L2J_JP/gameserver/jp_addon
$ mysql -u root l2jdb < sql/itemname_jp.sql
$ mysql -u root l2jdb < sql/l2whdb.sql
$ mysql -u root l2jdb < sql/updates_item.sql
$ mysql -u root l2jdb < sql/updates_npc.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql/armor.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql/etcitem....
$ mysql -u root l2jdb < custum_sql_by_viento/sql/minions....
$ mysql -u root l2jdb < custum_sql_by_viento/sql/npc.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql/raidboss...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/random_s...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/random_s...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/spawnlis...
$ mysql -u root l2jdb < custum_sql_by_viento/sql/weapon.sql
$ mysql -u root l2jdb < custum_sql_by_viento/sql_for_add/...
$ mysql -u root l2jdb < custum_sql_by_viento/sql_for_add/...
$ cp -R data/* ../data
#rev 303と314のアップデートを実行する。
$ mysql -u root l2jdb < ~/L2J_JP/gameserver/sql/updates/2...
$ mysql -u root l2jdb < ~/L2J_JP/gameserver/sql/updates/2...
}}
-パラメータいじり~
#pre{{
■ ~/L2J_JP/gameserver/config/rates.properties
RateXP = 20 # 敵からの経験値(XP)を2...
RateSP = 20 # 敵からのスキルポイン...
RatePartyXP = 5 # パーティ行動時にはXP...
RatePartySP = 5 # パーティ行動時にはSP...
RateDropAdera = 1000 # 敵が落とすアデナ(お...
RateConsumableCost = 1. # 消費剤(ss/sps/矢等)の...
RateDropItems = 100 # 敵が落とすアイテム率...
RateDropSpoil = 3 # Dwarf専用スキル、スポ...
PlayerDropLimit = 0 # 死亡時、アイテムを落...
PlayerRateDrop = 0 # 死亡時、ドロップ率0
KarmaDropLimit = 0 # PKキャラ死亡時、アイ...
KarmaRateDrop = 0 # PKキャラ死亡時、ドロ...
# ドロップ成立時の、アイテム、装備品、武器の3つのうちど...
# 本例ではドロップ率が0なので、実質意味をなしてない。
KarmaRateDropItem = 10 # アイテムを10%の確立で...
KarmaRateDropEquip = 40 # 装備品を40%の確立で落...
KarmaRateDropEquipWeapon = 50 # 武器を50%の確立で落とす
■ ~/L2J_JP/gameserver/config/altsettings.properties
Delevel = Fales # レベルや経験値(XP)...
AltGameExponentXP = 5 # レベル差に応じてXPを...
AltGameExponentSP = 5 # レベル差に応じてSPを...
AltGameCanselByHit = cast # 敵攻撃により魔法詠唱...
SpBookNeeded = False # スキル取得の際、魔法...
AltGameSkillLearn = False # Trueにすると全種族/...
AltSubClassWithoutQuests = True # クエストなしでサブク...
■ ~/L2J_JP/gameserver/config/jp-custom.properties
AltChangeable3rdClass = True # 3次転職を可能にする
■ ~/L2J_JP/gameserver/config/options.properties
ZoneTown = 1
DeleteCharAfterDays = 1 # キャラクタ削除時、1...
MaxDriftRange = 200 # default 200
AllowRentPet = True
AllowFishing = True
■ ~/L2J_JP/gameserver/config/other.properties
StartingAdena = 2000000000 # キャラクタ作成時の初...
WyvernSpeed = 500 # ワイバーン(飛竜)の移...
StriderSpeed = 500 # ストラーダ(歩行竜)の...
UseDeepBlueDropRules = False
MaximumSlotsForNoDwarf = 160 # 種族Dwarf以外の手持ち...
MaximumSlotsForDwarf = 200 # 種族Dwarfの手持ちアイ...
MaximumSlotsForGMPlayer = 500 # GMの手持ちアイテム数
EnchantCance = 100 # エンチャントの成功率...
EnchantMax = 200 # +200までエンチャント...
HpRegenMultiplier = 200 # HPの自然回復速度200%
MpRegenMultiplier = 200 # MPの自然回復速度200%
CpRegenMultiplier = 200 # CPの自然回復速度200%
RaidHpRegenMultiplier = 50 # RaidボスのHPの自然回...
RaidMpRegenMultiplier = 50 # RaidボスのMPの自然回...
RaidDefenceMultiplier = 20 # Raidボスの防御力 ...
UnstuckInterval = 300
RespawnRestoreCP = 90 # 復活時、総CP値の90%を...
RespawnRestoreHP = 90 # 復活時、総HP値の90%を...
RespawnRestoreMP = 90 # 復活時、総MP値の90%を...
}}
-GMショップの設置~
--http://svn.tslroom.net/ の [[GM SHOP:http://svn.tslroo...
--ReadMe.txt に従い、8031.html を所定の場所に格納。
--GMショップのデータをl2jdpへ反映させます。
#pre{{
$ mysql -u root l2jdb < ダウンロードした/gm_shop/gm_shop....
}}
-GMキャラ~
--作り方~
データベースを直接編集して普通に作ったキャラクタをGMキャ...
具体的には、phpMyAdminのようなデータベース管理ツールを使...
---データベース l2jdb 中の
---accounts テーブルの 該当アカウントの access_level を...
---characters テーブルの 該当キャラの accesslevel を 100 ...
--コマンド~
GMキャラで冒険中に、チャットウインドウへ次のコマンドを入...
#pre{{
//admin
}}
-タヌキなアイテム … アイテムカスタマイズの例~
「タヌキの耳」を装備すると、最大CP/HP/MP、命中率、クリテ...
他、HPドレイン10%のおまけ付。~
#pre{{
--- gameserver/data/stats/armor/7600-7699.xml.org 2006-06...
+++ gameserver/data/stats/armor/7600-7699.xml 2006-06-10 ...
@@ -3,6 +3,14 @@
<item id='7680' name="Raccoon Ear">
<for>
<add val='0' order='0x10' stat='pDef' />
+ <mul val='1.3' order='0x40' stat='maxCp'/>
+ <mul val='1.3' order='0x40' stat='maxHp'/>
+ <mul val='1.3' order='0x40' stat='maxMp'/>
+ <mul val='1.3' order='0x40' stat='accCombat' />
+ <mul val='1.3' order='0x40' stat='rCrit' />
+ <mul val='1.3' order='0x40' stat='pAtkSpd' />
+ <mul val='1.3' order='0x40' stat='mAtkSpd' />
+ <add stat="absorbDam" val="10" order="0x50"/>
</for>
</item>
<item id='7681' name="Outlaw's Eyepatch">
}}
-Javaソース変更(リビルド要)~
--重量制限を100%まで無効にする。 ( http://svn.tslroom.net...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -1478,7 +1478,7 @@
setIsOverloaded(getCurrentLoad() > getMaxLoad());
int weightproc = getCurrentLoad() * 1000 / getMaxLoad...
int newWeightPenalty;
- if ( weightproc < 500) newWeightPenalty = 0;
+ if ( weightproc < 1000) newWeightPenalty = 0;
else if ( weightproc < 666) newWeightPenalty = 1;
else if ( weightproc < 800) newWeightPenalty = 2;
else if ( weightproc < 1000) newWeightPenalty = 3;
}}
--Lv差8以上のレイドボス石化対策 ( http://svn.tslroom.net/...
#pre{{
--- java/net/sf/l2j/gameserver/model/L2Character.java.ori...
+++ java/net/sf/l2j/gameserver/model/L2Character.java 200...
@@ -3811,7 +3811,7 @@
activeWeapon.getSkillEffects(this, target, crit);
// Check Raidboss attack
- if (target.isRaid() && getLevel() > target.getLevel()...
+ if (target.isRaid() && getLevel() > target.getLevel()...
{
L2Skill skill = SkillTable.getInstance().getInfo(451...
@@ -4418,7 +4418,7 @@
}
// Check Raidboss attack
- if (player.isRaid() && getLevel() > player.getLevel...
+ if (player.isRaid() && getLevel() > player.getLevel...
{
L2Skill tempSkill = SkillTable.getInstance().getIn...
if(tempSkill != null)
}}
--サブクラスを10個まで追加できるようにする。
#pre{{
--- java/net/sf/l2j/gameserver/handler/admincommandhandle...
+++ java/net/sf/l2j/gameserver/handler/admincommandhandle...
@@ -233,7 +233,7 @@ public class AdminSubClass implements...
else
playerMatrix = new Matrix(ob...
- if (playerMatrix.getNumSubClasse...
+ if (playerMatrix.getNumSubClasse...
{
sendReport("WARN", "Warning ...
continue;
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -6961,7 +6961,7 @@ public final class L2PcInstance ext...
*/
public boolean addSubClass(int classId, int classInd...
{
- if (getTotalSubClasses() == 3 || classIndex == 0)
+ if (getTotalSubClasses() == 10 || classIndex == 0)
return false;
if (getSubClasses().containsKey(classIndex))
--- java/net/sf/l2j/gameserver/model/actor/instance/L2Vil...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2Vil...
@@ -143,7 +143,7 @@ public final class L2VillageMasterIns...
{
case 1: // Add Subclass - Initial
// Avoid giving player an option to ...
- if (player.getTotalSubClasses() == 3)
+ if (player.getTotalSubClasses() == 10)
{
player.sendMessage("You can now ...
return;
}}
--スキル拡張その1(改) … メインクラスで習得したスキルを...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -177,7 +177,10 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ "WHERE char_obj_id=? AND (class_index=0 AND (skill_...
+ "(SELECT skill_name FROM character_skills WHERE cha...
+ ") OR class_index=?) GROUP BY skill_id";
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
@@ -5173,7 +5176,9 @@ public final class L2PcInstance ext...
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement(RE...
statement.setInt(1, getObjectId());
- statement.setInt(2, getClassIndex());
+ statement.setInt(2, getObjectId());
+ statement.setInt(3, getClassIndex());
+ statement.setInt(4, getClassIndex());
ResultSet rset = statement.executeQuery();
// Go though the recordset of this SQL query
}}
--%%スキル拡張その1(ボツ) … メインクラスで習得したスキル...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -177,7 +177,7 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_CHAR = "...
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
}}
--%%スキル拡張その2 … メイン、サブで習得したすべてのスキ...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -177,7 +177,7 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_CHAR = "...
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
}}
--スキル拡張その2 … メイン、サブで習得したすべてのスキル...
#pre{{
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcI...
@@ -174,7 +177,12 @@ import net.sf.l2j.util.Point3D;
*/
public final class L2PcInstance extends L2PlayableInstance
{
- private static final String RESTORE_SKILLS_FOR_CHAR = "...
+ private static final String RESTORE_SKILLS_FOR_C...
+ "SELECT ( (MIN(ABS(class_index-?)*65536+skil...
+ " ( (MIN(ABS(class_index-?)*65536+skil...
+ "FROM character_skills "+
+ "WHERE ( class_index=0 OR class_index=? OR ?=...
+ "GROUP BY skill_name ORDER BY skill_id";
private static final String ADD_NEW_SKILL = "INSERT INT...
private static final String UPDATE_CHARACTER_SKILL_LEVE...
private static final String DELETE_SKILL_FROM_CHAR = "D...
@@ -5110,8 +5206,11 @@ public final class L2PcInstance ex...
// Retrieve all skills of this L2PcInstance from the ...
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement(RE...
- statement.setInt(1, getObjectId());
+ statement.setInt(1, getClassIndex());
statement.setInt(2, getClassIndex());
+ statement.setInt(3, getClassIndex());
+ statement.setInt(4, getClassIndex());
+ statement.setInt(5, getObjectId());
ResultSet rset = statement.executeQuery();
// Go though the recordset of this SQL query
}}
--Hero武器を使う。(装備、床置き、倉庫出し入れが可能にな...
#pre{{
--- java/net/sf/l2j/gameserver/clientpackets/RequestDropI...
+++ java/net/sf/l2j/gameserver/clientpackets/RequestDropI...
@@ -91,7 +91,7 @@ public class RequestDropItem extends Cli
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <= 6621) || itemId...
- return;
+ ; // return;
if(_count < 0)
{
--- java/net/sf/l2j/gameserver/clientpackets/SendWareHous...
+++ java/net/sf/l2j/gameserver/clientpackets/SendWareHous...
@@ -106,7 +106,7 @@ public class SendWareHouseDepositList...
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <= 6621) || it...
- continue;
+ ; // continue;
// Calculate needed adena and slots
if (item.getItemId() == 57) currentAdena -= count;
@@ -145,7 +145,7 @@ public class SendWareHouseDepositList...
int itemId = oldItem.getItemId();
if ((itemId >= 6611 && itemId <= 6621) || it...
- continue;
+ ; // continue;
L2ItemInstance newItem = player.getInventory().transf...
if (newItem == null)
--- java/net/sf/l2j/gameserver/model/Inventory.java.org
+++ java/net/sf/l2j/gameserver/model/Inventory.java
@@ -546,7 +546,7 @@ public abstract class Inventory exten...
L2PcInstance player = (L2PcInstance)getOwner...
if(!player.isGM())
- if (!player.isHero())
+ if(false) // if (!player.isHero())
{
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <= 662...
@@ -779,7 +779,7 @@ public abstract class Inventory exten...
L2PcInstance player = (L2PcInstance)get...
if(!player.isGM())
- if (!player.isHero())
+ if(false) // if (!player.isHero())
{
int itemId = item.getItemId();
if ((itemId >= 6611 && itemId <...
}}
//-スクリーンショット~
//&ref(vara3.jpg,nolink);~
//~
#navi(Mac mini);
ページ名: