--.--.-- *--*
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

IWの「南西抜き」再現

2012.05.17 *Thu*
本鯖だとアイスウォールを足元置きされた場合、ターゲットが南西にいる場合、すり抜けてきます。
その特性を利用しての狩りの方法「南西抜き」というテクが存在します。
IW02.jpg

IW01.jpg
本鯖は遮線判定がこのようになっていると予測します。
■は遮線判定対象
★は足元判定

<上> <右上> <右> <左上>
■■■ □■■ □■■ ■□□ 
■★■ □★■ □★■ ■★□ 
□□□ □□□ □■■ □□□ 

<下> <左下> <左> <右下>
□□□ □□□ ■□□ □□□ 
□★□ □☆□ ■☆□ □★□ 
■■■ ■□□ ■□□ □■■ 


真下に障害物がある時に移動可能な位置は☆のみです。

■■■
■★■
☆■■


・移動先に向かう線に障害物があれば 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;



関連記事
| Auriga |

COMMENT

Comment Form


秘密にする
 


TRACKBACK

TrackBack List



プロフィール

Author:みのり

すごく面倒臭がりで大雑把です。
なので、すぐ楽をしようとして
ツールを作り始めます。
ツールを作る時間と手作業で費やす時間
はたしてどちらが短いのか……


-構築環境-

Auriga0945 MySQL 5.5
with 2011-12-20bRagexeRE

3CeAM rev525
with 2010-07-30aRagexeRE



カテゴリ

未分類 (9)
RagexeRE (9)
eAthena (1)
Auriga (5)
ツール:eAthena用 (4)
ツール:Auriga用 (6)
ツール:その他 (14)
はじめてのAurigaスクリプト (8)
はじめてのAurigaスクリプト基本編 (21)
はじめてのAurigaスクリプト応用編 (7)
Aurigaスクリプト (3)
本鯖 (7)
Aurigaスクリプト:冒険者アカデミー (6)
ドラクエ10 (2)
新生FF14 (3)
EVE Online (2)



最新記事



最新コメント



月別アーカイブ



検索フォーム



リンク

このブログをリンクに追加する



ブロとも申請フォーム

この人とブロともになる



QRコード

QR



12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Copyright © Rocco di Forte All Rights Reserved.
テンプレート配布者: サリイ  ・・・  素材: HELIUM  ・・・ 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。