ANA国内線【PR】

カテゴリ:Java

  • ハンターが動いた!
    [ 2011-05-28 10:46 ]
  • Eclipseでgetterとsetter
    [ 2011-04-27 11:13 ]
  • l1j-jp2
    [ 2011-01-07 02:02 ]
  • Eclipseの便利な技
    [ 2011-01-04 04:14 ]
  • [java]うしこ風オリジナルスキルの実装について
    [ 2010-11-03 02:34 ]
  • 弱点露出
    [ 2010-10-18 22:43 ]
  • チェーンソード 弱点露出
    [ 2010-10-18 13:45 ]
  • 死亡後復活しても10分たつと切断する罠解除方法
    [ 2010-06-02 01:34 ]
  • encode.exe (鯖管へ提言)
    [ 2010-05-19 13:39 ]
  • 日蝕
    [ 2010-04-29 10:08 ]

ハンターが動いた!


キール先生とホロ先生の助言により、特定の変身で攻撃できない問題をクリアした

このテーブルにactionコードを設定しないと、いくらsprのほうで対応してもjavaで弾くっぽい
しらなかった

こんなことで絵ええええええええええええええええええええええ


そろそろここのコメント考えるのがめんどくさくなってきた→LLランキング

by umisaka1 | 2011-05-28 10:46 | Java | Comments(1)

Eclipseでgetterとsetter

キャラクターにプロパティを持たせる場合(キルポイントやらデスポイント実装の時に)L1PcInstanceに
getterとsetterを作るんだけど、これ結構めんどくさいのよね
仕様によっては100個以上作る場合があるからそれだけでも1日つぶれるんだけど


public int _killPoint = 0;
public void setKillPoint(int killpoint){
 _killPoint = killpoint;
}
public int getKillPoint(){
 retrun _killPoint;
}
ただ、値が操作されるプロパティなら実際は下記のほうがいい
public int _killPoint = 0;
public void addKillPoint(int killpoint){
 _killPoint += killpoint;
}
public int getKillPoint(){
 retrun _killPoint;
}


これが
E c l i p s e に 5 秒 で 作 れ る 機 能 が あ っ た

泣いた
無知って怖いな

【やり方】
1.適当にフィールド変数をつくる
2.メニューのソースからgetterおよびsetterの生成を選択
3.1で作ったフィールド変数を適当にチェケラしてok
4.sugeeeeeee ←いまここ

eclipseでのコードフォーマットもvalaさんに教えてもらうまで知らなかったし、eclipseでちょっと遊んでみよう~

by umisaka1 | 2011-04-27 11:13 | Java | Comments(5)

l1j-jp2

l1j-jp2 projectを開始

http://code.google.com/p/l1j-jp2/

ぶっちゃけるとSVNよくわからなくて(´д`)
commitなんかいもしちゃって(´д`)
すでにrev6(´д`)
しょうがないからこれでやる(´д`)

既存の仕様のブラッシュアップや未実装仕様の実装 いつか来る、3.3cの移行を目的として
あまりコーディングルールに囚われずやっていこうと思いまふ(あまりにも酷いのはリファクタリングするが・・・)

共同開発者募集中です
欲しい人材
・java開発者
・データ更新者(主にDB)
・管理ツール等の開発者
・administrator

googleアカウントのメアドかhotmailのメアドくれればコミット権限配布します
フォーラムはとりあえず今はいらなそう。コミッター増えたら考えよう^^

by umisaka1 | 2011-01-07 02:02 | Java | Comments(33)

Eclipseの便利な技

Eclipseの便利な技 その1
1.ブロックコメントを1発で
コメント化したいコードを範囲選択して「ctrl」+「alt」+「/」

2.検索を楽に


ファイル名のパターンとファイルスコープをこんな風に選択すればjavaファイルからのみ
検索をかけることができる
正規表現も覚えればさらに作業が早くなる
java 検索を使うと、JREライブラリーや参照ライブラリーからも探すので結果表示ば莫大になる場合があるためl1jでは使ってない


つづくかも

by umisaka1 | 2011-01-04 04:14 | Java | Comments(6)

[java]うしこ風オリジナルスキルの実装について


u0ev5より

こんな風にエフェクトをある地点に表示する方法を書きます。(いわゆる魔人斬)
これを応用すればうしこが作ってきたスキルはほぼすべて実装可能です。
実装を考えている方は「【java】スキルの作成(概念編)」をまず参照してください。

1.発動方法を決める
アイテム使用により発動させるのか、攻撃時に発動させるのか等を決めます。
うしこの場合、たいていのactiveスキルはアイテム使用なので今回は

これを使ってみます。

2.クラスの作成
C_ItemUseクラスにスキル構造を直書きしてもいいんだけど、C_ItemUseクラス自体ステップ数が
長いので可読性を保つためスキルは別クラスに書き出します。
↓こんな感じにクラスを作ります。


パッケージやクラス名は自分で分かるように適当でいいです。
今回はM_TestSkillとします。

3.スキルの実装
2で作ったクラスにスキルを実装していきます。
以下のソースを貼り付けてください。(クラス名等は適宜変更してください。)
と思ったけど長すぎたので以下をDLして内容を確認してください。
http://ux.getuploader.com/u0eserver/download/14/M_TestSkill.java

4.C_ItemUseクラスへ3で作ったクラスを呼び出すよう定義する
発動アイテムは1で書いた49186 錆びた笛ですので、C_ItemUseクラスの335行目あたりに以下のコードを追加してください。
if(itemId == 49186){
//testSkillの実行
M_TestSkill run_testskill = new M_TestSkill(pc);
}

M_TestSkill はC_ItemUseクラスでインポートされていないのでこのままビルドするとエラーになります。

上図のように左に出ているxをクリックして「インポートします」をクリックするとエクリプスの機能で自動的にインポートコードがかかれます。

以上
あとはビルドしてGMアカウントで49186アイテムを作成して使ってみてください。
うしこがテストした限りでは動きました。

よい鯖管ライフを!

by umisaka1 | 2010-11-03 02:34 | Java | Comments(11)

弱点露出

できたできた
Lv1



Lv2



Lv3




skillId.javaに
public static final int STATUS_WEAKNESS_EXPOSURE_LV1 = 1026;
public static final int STATUS_WEAKNESS_EXPOSURE_LV2 = 1027;
public static final int STATUS_WEAKNESS_EXPOSURE_LV3 = 1028;

これを追加しないとだめだね。あと、下に書いたソースにはRandomArrayListっていう自作関数つかわれてるからrandomに変更しないとだめだね

で、本鯖だとこれどういう仕様?

by umisaka1 | 2010-10-18 22:43 | Java | Comments(8)

チェーンソード 弱点露出

1lj-twにあるL1Attack.java見たらチェーンソードの弱点露出が実装されてた

/* 弱點曝光 */
if (_weaponType2 == 18 && RandomArrayList.getInc(100, 1) <= 28) {
if (_pc.hasSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV1)) {
_pc.killSkillEffectTimer(STATUS_WEAKNESS_EXPOSURE_LV1);
_pc.removeSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV1);
_pc.setSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV2, 15000);
_pc.sendPackets(new S_SkillIconGFX(75, 2));
weaponDamage += 6;
} else if (_pc.hasSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV2)) {
_pc.killSkillEffectTimer(STATUS_WEAKNESS_EXPOSURE_LV2);
_pc.removeSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV2);
_pc.setSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV3, 15000);
_pc.sendPackets(new S_SkillIconGFX(75, 3));
weaponDamage += 9;
} else if (_pc.hasSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV3)) {

} else {
_pc.setSkillEffect(STATUS_WEAKNESS_EXPOSURE_LV1, 15000);
_pc.sendPackets(new S_SkillIconGFX(75, 1));
weaponDamage += 3;
}
}


L1Attackのダメージ処理のとこに適当にぶちこめば行ける模様
_pc.sendPackets(new S_SkillIconGFX(75, 1)); があるからたぶんアイコンもでるのかな
これからはtwのソース使ったほうがよさそうか?コメント台湾語だけど。
更新箇所だけ移植すればいいんだけど台湾語読めないからChangesみても何が更新されてるのやらよくわからぬ。

--

2chで新UIについて騒いで、Lineage エミュ鯖 雑談 PART48の>>32さんが教えてくれたフォーラム見たんだけどクライアントのDL先がわからんかった。
>>反映させる作業これは大変だよな
「反映させる作業」についても見つからなかった。フォーラムのページURLも含めて書いてくれたみたいだから流れたのかもしれないけど。

新UIってptリストやらなんやらでオペコードは変わってないのかなあ?
l1j-jp鯖で新UI対応してる鯖ってないよね?
もし変わってたら冒頭のtwに期待するか、jpで解析していくしかないね うまごんさんの掲示板みると知識ある人結構いそうだし、今からでも開発できると思うんだけどな

ってね

by umisaka1 | 2010-10-18 13:45 | Java | Comments(8)

死亡後復活しても10分たつと切断する罠解除方法

前も書いた気がするけど





L1PcInstance.javaの1455、1456行目をコメントアウトして死亡後10分切断仕様を殺せば解決。
この仕様を残したい&復活しても10分で切断されたくない場合は、C_Restart.javaに適当に、
「pc.stopPcDeleteTimer();」をいれればよい

ちなみに復活スクやリザレクションには「pc.stopPcDeleteTimer();」が入っているため、考慮モレと思われる。
復活スクやリザレクションから復活すれば10分後に落ちない。

----
あと、個人商店のバグでアデナを支払わずにアイテム買えちゃうっていうバグを噂で聞いたんだけどマジ?
再現手順しってたらこっそり教えて なおすから

by umisaka1 | 2010-06-02 01:34 | Java | Comments(0)

encode.exe (鯖管へ提言)

2chでencode.exeが晒された。
以下、うしこ BSE キールの反応。
(晒される前にある程度、ホロ、BSE、キールが3.2cの解析はしていた。)

うしこ さんの発言:
まあ実際
新グラやら改造したlist.sprつかわないんなら
いつものでもいいんだよな
えりす さんの発言:
チーターわくぞ
キール さんの発言:
ハイエナ
えりす さんの発言:
encode.exeはもう晒されたんだし
えりす さんの発言:
ヒャッハー
キール さんの発言:
そのうち出てきそう
えりす さんの発言:
うん
いつになるかはしらんが秒読み
さてホロランチャースキンつけてうpるか
うしこ さんの発言:

そうか
encodeあるから・・・!
うしこ さんの発言:
オワタオワタオワオワオワタ
キール さんの発言:
ホロランチャー・・・
うしこ さんの発言:
ッヅアァ!
めんどくせえ
キール さんの発言:
      オ、オ、オワターオワオワオワター♪
      \    オオオオワターオワオオワオワタ/
         ♪\(^o^) ♪
          _  )  > _ キュッキュ♪
        /.◎。/◎。/|
  \(^o^)/.| ̄ ̄ ̄ ̄ ̄|  |  \(^o^)/
    )  )  .|        |/   ノ ノ
((((  > ̄ > )))) \(^o^)/ ((( < ̄< ))))
              )  )
         (((  > ̄ > ))))
えりす さんの発言:
だから既存鯖も
すべて3.2に
しないと
いけない

実質上の3.0終焉フラグ

で、何が具体的にまずいかと言うと、list.sprをある方法で改変してクライアントに適用する事が出来る。
たとえば、2セル攻撃可能なDKとか弓撃てるアークナイトとか、SPDK並のゴブリンとか もうなんでもアリ。
あとわかる人は分かると思うけど、PK鯖はとっても影響がでかい。

一応対応策はある。
ユーザーが勝手に改変したlist.sprを鯖が許可したlist.sprではない場合、Inできなくする。
ソースを入れれば不正はできないっぽい。
ということでソース晒す。
具体的にはlist.sprをCRCで誤りチェックして違う除数の場合には蹴るというものらしいが、頭悪くてよくわからん。


少し長いので先に今回の3.2cをまとめ
■うしこから各鯖管へ提言
1.2chで晒されているencode.exeを手に入れる事
2.戦争鯖のうpロダで配布している3.2cを各鯖管も手に入れる事。(これにはencode.exeが入っていない)
そして戦争鯖からDLした物を自分のとこでも配布する。これを使用してユーザーに3.2cからの接続をするよう指示する事。
(たとえば、3.2cじゃないと町に入った瞬間落ちるようなgfxを置いたほうがよい。)
----ここから鯖側の設定
3.Encode.exeにpack.properties生成機能があるので自力で生成して、生成したpack.propertiesファイルを鯖ファイルのconfigフォルダ内に配置する事
4.以下のソースを適用する事。



■ソース
l1j\server\Config.java
1.
public static int LV99_EXP; を検索
2.
1で検索した下に次のコードを追加。
public static boolean LOGINS_TO_AUTOENTICATION;
public static String RSA_KEY_E;
public static String RSA_KEY_D;

3.
validate();を検索
4.
3で検索したコードの上に次のコードを追加。
try {
Properties packSettings = new Properties();
InputStream is = new FileInputStream(new File("./config/pack.properties"));
packSettings.load(is);
is.close();
LOGINS_TO_AUTOENTICATION = Boolean.parseBoolean(packSettings.getProperty("Autoentication", "false"));
RSA_KEY_E = packSettings.getProperty("RSA_KEY_E", "0");
RSA_KEY_D = packSettings.getProperty("RSA_KEY_N", "0");
} catch (Exception e) {}


l1j\server\server\ClientThread.java
1.
import java.util.logging.Logger;を検索
2.
1で検索したコードの下に次のコードを追加。
import java.math.BigInteger;
3.
private Socket _csocket;を検索。
4.
3で検索したコードの下に次のコードを追加。
private int _xorByte=(byte) 0xF0;
private long _authdata;
5.
6.
_out = new BufferedOutputStream(socket.getOutputStream());を検索
7.
6で検索したコードの下に次のコードを追加。
{
_xorByte = (int)(Math.random()*253+1);
_authdata = new BigInteger(Integer.toString(_xorByte)).modPow(new BigInteger(Config.RSA_KEY_E), new BigInteger(Config.RSA_KEY_D)).longValue();
}

8.
int loByte = _in.read();を検索
9.
8で検索したコードの下に次のコードを追加。
if(Config.LOGINS_TO_AUTOENTICATION)
{
hiByte ^= _xorByte;
loByte ^= _xorByte;
}

10.
return LineageEncryption.decrypt(data, dataLength, _clkey);を検索
11.
10で検索したコードの上に次のコードを追加
if(Config.LOGINS_TO_AUTOENTICATION)
{
for(int i =0 ; i < dataLength ; i++) {
data[i]=(byte)(data[i] ^ _xorByte);
}
}

12.
byte Bogus = (byte)(FIRST_PACKET.length + 7);を追加
13.
12で検索したコードの下に次のコードを追加
if(Config.LOGINS_TO_AUTOENTICATION)
{
_out.write((int)(_authdata & 0xff));
_out.write((int)(_authdata >> 8 & 0xff));
_out.write((int)(_authdata >> 16 & 0xff));
_out.write((int)(_authdata >> 24 & 0xff));
_out.flush();
}




以上

一応検証済み(BSEが)
ちなみに、これらの情報はうしこは一切解析していない。がんばったのはBSE、ホロ、キール、枝実(?)
結構ヤバメな内容だったのでブログで報告しといたほうがいいってことで書いた。
てか、3.2c Japanで最初に使いだした鯖は、他鯖の事なんも考えてなかったんだな
プンスコ

by umisaka1 | 2010-05-19 13:39 | Java | Comments(14)

日蝕

興味ある人あんまりいないと思うけど、eclipseのバージョンを変更した。
あんまり詳しくないんだけど、Eclipseっていろんな種類があって、知ってるのでは
1.本家純正eclipse(英語)
2.日本語化されたeclipse(ユーザーがModify)
3.all-in-one-eclipse(日本語。いろんなアドオンが最初から入っている)
4.Pleiadesプロジェクトのeclipse(3と同じでいろんなアドオンが入っているがアドオンすら日本語化され、javaエディタの色なども最適されている。ただしクソ重い。)

あってるかしらん。調べてみたかんじこんなもん。
いままで3をつかっていたんだけど、4のPleiadesをつかってみた。
もうね、めっちゃくちゃ重い。純正eclipseも重いのにさらに加速させた。
ただ、mysqldbをeclipseから見れたり、javaエディタが使いやすくなっていたり、(標準apiをハイライトすると日本語版java api6.0から情報をよんで見せてくれるイイ)
していたのでこれを使っていこう・・・

eclipseからのdb参照はこんなかんじ





一応、テーブルを選択しても見れるし、クエリ発行とかもできて便利。
特にリアルプログラマーの人はクエリとソースの開発環境が同一のウインドウでできるってことの便利さがわかってもらえるかと

さて、これをつかってマヨサバ開発:ドラクル        1:9の勢いでがんばるお!(*´・ω・)

by umisaka1 | 2010-04-29 10:08 | Java | Comments(11)