ドSうしこの

カテゴリ:Java( 26 )

PCキャラクターの強制移動

e0131715_02342058.jpg
サーバーからキャラクターの強制移動ができた
SSは移動させた結果。2PCで撮影しているとかではない。
移動できるけどマップがスクロールしねえw
さらに移動すると、動いても位置が固定されてこのSSで言うとテレポートしない限りずーっと右端にいるw
マップもスクロールすりゃ何かに使えたんだが、だめかなあ
テレポートさせれば中央に戻るけど、画面が一瞬固まるからスマートじゃない
まぁ、使うかわからんが一応覚えておこう・・・・


[PR]
by umisaka1 | 2016-06-18 02:36 | Java | Trackback | Comments(2)

[L1J管理テクニック]シャットダウン後自動でサーバを立ち上げる方法

殲滅鯖v2 定期再起動を入れているんだが、自動シャットダウン後の自動サーバ立ち上げを
Windowsのタスク(LinuxならCronか)に登録して立ち上がるようにしていたんだが、
タイミングによって自動立ち上げの時点でしっかりとシャットダウンされておらず、
立ち上がらないということが頻発した。
その対策として、シャットダウン後に自動でサーバが立ち上がるよう(タスクを使わず)改造してみた。
いまんとこ上手くいってるっぽいのでそのやり方を紹介


1.jp.l1j.server.GameServer.javaのshutdownメゾットを改修
public void shutdown() {
disconnectAllCharacters();
// Modified by Usico 2014/09/02 Start
try {
String filename = "C:\\hoge\\ServerStart.bat";
Runtime.getRuntime().exec(filename);
} catch (Exception e) {
System.out.println(e);
} finally {
System.exit(0);
}
// Modified by Usico 2014/09/02 End
}
 こんなかんじ
 filename変数にシャットダウン後に起動するServerStart.batのパスを入れる。常識だが\マークはエスケープシーケンスをつけるように。

2.GameServer.batの改修
timeout 10
cd /D %~dp0
@java -server -XX:PermSize=256m -XX:MaxPermSize=512m -Xms1024m -Xmx10240m -XX:NewRatio=2 -XX:SurvivorRatio=8 -jar l1jserver.jar
@pause
 timeout 10(たしかWindowsVistaからしか使えないはず)を先頭にれるだけ。これで10秒間後に2行目以降の処理が流れる。
 シェルスクリプトならpingコマンドかなんかで待たせればいいんじゃね
 なぜ、これを入れるかというと、System.exit(0);の処理でjava vmが終了するが、その前に起動処理をしないといけない。
 同じポートで2個鯖の起動はできないため、exitする前に起動してバッチ側で10秒待たせておき、その間にjava vmを落とす。
 これでエラーにならずに鯖が起動できる。

なお、うしこの場合はServerStart_after.batというのをServerStart.batをコピーして作成し、そのバッチファイルにtimeoutを入れている。
テストの時とかで毎回10秒待つのだるいしね?・・・

何かの参考になれば。

[PR]
by umisaka1 | 2014-09-05 20:51 | Java | Trackback | Comments(0)

なつかし むずかしリネージュ

少しづつ作ってます。
気づくとこんな時間(AM 2時)。。。 今日7時起きなのにい

アカウント単位のクラン加入処理できた気がする!
キャラ作成後アカウントテーブルにクランIDが入っていないとここらへんに飛んで・・・
アイテム欄にある連合軍へ加入か、枢軸軍へ加入を使うと・・・
(クラン名は未定。アイテム欄にあるアイテムはl1j初期装備で設定変更していない。)
(クラン選択アイテムを最初は連合:青系 枢軸:赤系 にしようと思ったけど色で決められたらタマランので気を使う)
e0131715_02074311.png
オウフwwwwwwwwwとんだでござるwwwwwww
よかったよかった。クラ茶もできるはず。
e0131715_02082897.png
殲滅鯖や戦争鯖v3からソースコピーしまくったけど結構時間かかったな
javaのジェネリティクスっていう機能を使ったんだけど、いまだに知らないこと多い 大杉。java難しい。
(l1jではフツーに使われてた)

今回も戦争鯖v3のように、ありとあらゆるリテラルをソースに一切書かずにDBで管理する。
(l1j標準のリテラルは必要がなければ管理しないけど)
こうすることで、ゲームを起動しながら細かい設定変更が可能になるのよお053.gif
ただでさえバランスとるの難しいから、ゲームを起動しながらいじれるっていうのは重要なのよお016.gif
e0131715_02120638.png
で、↑のテーブルを読み込んでソースに落としたのがこれ
codeを指定して変数から読込。間接的に参照しているだけのように見えるけどやっぱDBからっていうのが重要。
明日は首都帰還スクロールと開発&付与とーーー  あとなんだっけ?
e0131715_02103570.png

[PR]
by umisaka1 | 2014-07-15 02:15 | Java | Trackback | Comments(4)

ハンターが動いた!

e0131715_10443184.jpg

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

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

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


そろそろここのコメント考えるのがめんどくさくなってきた→LLランキング
[PR]
by umisaka1 | 2011-05-28 10:46 | Java | Trackback | 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でちょっと遊んでみよう~
[PR]
by umisaka1 | 2011-04-27 11:13 | Java | Trackback | Comments(5)

l1j-jp2

l1j-jp2 projectを開始

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

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

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

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

googleアカウントのメアドかhotmailのメアドくれればコミット権限配布します
フォーラムはとりあえず今はいらなそう。コミッター増えたら考えよう^^
[PR]
by umisaka1 | 2011-01-07 02:02 | Java | Trackback | Comments(33)

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


u0ev5より

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

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

これを使ってみます。

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

e0131715_2332819.jpg

パッケージやクラス名は自分で分かるように適当でいいです。
今回は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クラスでインポートされていないのでこのままビルドするとエラーになります。
e0131715_3324517.jpg

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

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

よい鯖管ライフを!

e0131715_3353439.jpg

[PR]
by umisaka1 | 2010-11-03 02:34 | Java | Trackback | Comments(11)

弱点露出

できたできた
Lv1


e0131715_2241141.jpg

Lv2


e0131715_22411618.jpg

Lv3


e0131715_22412473.jpg


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に変更しないとだめだね

で、本鯖だとこれどういう仕様?
[PR]
by umisaka1 | 2010-10-18 22:43 | Java | Trackback | 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で解析していくしかないね うまごんさんの掲示板みると知識ある人結構いそうだし、今からでも開発できると思うんだけどな

ってね
[PR]
by umisaka1 | 2010-10-18 13:45 | Java | Trackback | Comments(9)

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

前も書いた気がするけど


e0131715_1302140.gif


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

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

----
あと、個人商店のバグでアデナを支払わずにアイテム買えちゃうっていうバグを噂で聞いたんだけどマジ?
再現手順しってたらこっそり教えて なおすから
[PR]
by umisaka1 | 2010-06-02 01:34 | Java | Trackback | Comments(0)

I'm an Engeneer Engenere Enginere. I'm good with math!
by うしこ
プロフィールを見る
画像一覧

最新のコメント

てつだってー( ˊ̱˂˃..
by umisaka1 at 15:07
お久しぶりです! 復活..
by 古賀ノギ at 19:13
うおお 古賀鯖の古賀さ..
by うしこ at 22:06
お元気ですかー!
by 古賀ノギ at 21:28
wktk moomoo
by tuiteru at 19:36
その前に仕事できるのかよww
by umisaka1 at 12:55
腱鞘炎が悪化しすぎて1日..
by hanageking at 08:03
よし、武器成長要素もいれ..
by うんこないと at 00:27
お はなきんお気に入りの..
by umisaka1 at 19:24
久しぶりに見たら新しい事..
by ももげ at 13:36

最新の記事

はんぐるつぶし4
at 2017-06-29 10:13
ハングルつぶし3
at 2017-06-28 00:37
ハングルつぶし2
at 2017-06-26 12:47

検索

もじでぱ

ブログジャンル

イラスト:まるめな