--.--.-- *--*
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
新しい記事を書く事で広告が消せます。
| スポンサー広告 |
IWの「南西抜き」再現
2012.05.17 *Thu*
本鯖だとアイスウォールを足元置きされた場合、ターゲットが南西にいる場合、すり抜けてきます。
その特性を利用しての狩りの方法「南西抜き」というテクが存在します。


その特性を利用しての狩りの方法「南西抜き」というテクが存在します。


本鯖は遮線判定がこのようになっていると予測します。
■は遮線判定対象
★は足元判定
真下に障害物がある時に移動可能な位置は☆のみです。
・移動先に向かう線に障害物があれば NG。
・しかし、本鯖の座標系は、左下、つまり南西である。
・キャラの位置は、セルの中央ではなくセルの左下。
・キャラと同じ座標の障害物は、自身の右上にあることと同等となる。
map/path.c
■は遮線判定対象
★は足元判定
<上> <右上> <右> <左上>
■■■ □■■ □■■ ■□□
■★■ □★■ □★■ ■★□
□□□ □□□ □■■ □□□
<下> <左下> <左> <右下>
□□□ □□□ ■□□ □□□
□★□ □☆□ ■☆□ □★□
■■■ ■□□ ■□□ □■■
真下に障害物がある時に移動可能な位置は☆のみです。
■■■
■★■
☆■■
・移動先に向かう線に障害物があれば NG。
・しかし、本鯖の座標系は、左下、つまり南西である。
・キャラの位置は、セルの中央ではなくセルの左下。
・キャラと同じ座標の障害物は、自身の右上にあることと同等となる。
map/path.c
int path_search_real(struct walkpath_data *wpd,int m,int x0,int y0,int x1,int y1,int easy,cell_t flag)
{
int x, y, i = 0;
int dx, dy;
+ int ne;
struct map_data *md = &map[m];
if(!map[m].gat)
return -1;
+ ne = (x1 - x0 >= 0) || (y1 - y0 >= 0); //北東チェック
// path_search2() の場合map_getcellp() の返り値は常に0
- if(x0 < 0 || x0 >= md->xs || y0 < 0 || y0 >= md->ys || map_getcellp(md,x0,y0,flag))
+ if(x0 < 0 || x0 >= md->xs || y0 < 0 || y0 >= md->ys || (ne && map_getcellp(md,x0,y0,flag)))
return -1;
if(x1 < 0 || x1 >= md->xs || y1 < 0 || y1 >= md->ys || map_getcellp(md,x1,y1,flag))
return -1;
- 関連記事
-
- disguise修正点
- ログイン人数を偽る方法(笑)
- IWの「南西抜き」再現
- 取り巻きモンスターの挙動
- @monsterコマンド簡略化
| Auriga |
COMMENT
Comment Form
TRACKBACK
TrackBack List
* HOME *