約 149,762 件
https://w.atwiki.jp/fujisemi11/pages/26.html
業界ランキング「http //gyokai-search.com/3-kesyo.htm」 資生堂卒論「http //blog.nikkeibp.co.jp/nb/academic/university/pdf/ryutsu1_ryustu_chie10.pdf」
https://w.atwiki.jp/sapmania_bi70_delta/pages/20.html
DSO(標準)に対する有効化やロールバック処理は並列処理化され、パフォーマンスが改善された。 名前 コメント
https://w.atwiki.jp/dynamics-ax/pages/47.html
ベストプラクティスを有効にするには、 ユーザー毎に設定が必要です。 (1)Microsoft Dynamics AX > ツール > オプション を選択します。 (2)オプションダイアログで、「コンパイラ」ボタンをクリック。 (3)診断レベルを「レベル 4」にして、OKボタンを押します。 (4)オプションダイアログで、「ベストプラクティス」ボタンをクリック。 (5)警告レベルを「すべて」にし、 有効にしたいベストプラクティスにチェックを付けます。 参考: http //msdn.microsoft.com/en-us/library/cc967377%28v=ax.50%29.aspx http //msdn.microsoft.com/en-us/library/aa874347%28v=ax.50%29.aspx
https://w.atwiki.jp/is01rebuild/pages/41.html
デュアルタッチを有効にするには? 私はAndroidアプリケーションには詳しくない。 とりあえず、手を入れられそうな箇所を2つ調べてみた。 まず、先のページタッチパネルにある、/dev/input からc言語ネイティブプログラムで直接読み取る。2点目はDOWN、UPの通知なく、いきなりサイズが通知されるようだ。 Dev Tools にある Pointer Location で デュアルタッチした場合、getSize() で2点間の距離が得られる事が分かった。こちらも同様? 前者を修正するには kernel を変更するか、ラップするかすれば良いのだろう。ただし、最終的にFramework(API)に伝わるまでどのような道筋があるのか追いかけたくない。Androidアプリケーションが直接 API としてアクセスする Framework を考える。こちらは、アプリ側から直接利用されるJavaクラスだ。アプリに取って都合の良いイベントに加工しやすいかもしれない。 テストに使った Pointer Location がタッチ場所の座業取得に利用しているのが MotionEvent クラスだった。全体的に Android はこのクラスでイベントを受けるらしい…。このクラス内で、getSize() でサイズが得られるようなものが取得できた際に、2点に拡張してあげればよい。そうすれば、デュアルタッチになるのでは無かろうか?…と言う事で、修正を加えてみた。物理層~kernel~API直下まで一気に無視した。 結局、単純な話で size 通知が来たら、2点間の距離と中点が分かってるので手っ取り早くX座標に対し展開、Y座標は2点のうち最新の座標を両点のY座標としている。2点間の距離は float で 0~1 として得られるらしいので、X軸の解像度を乗じて2で割った数減加して X1、X2 とした。(π/4に傾けて実装するのも良いかもしれないが…。) final float MAX_SIZE = 960; と言う箇所が最大値。 あとは、1点目の後、最初に2点押された場合に ACTION_POINTER_2_DOWN 1点に戻った場合に ACTION_POINTER_2_UP を通知している。 ただし、2点押されている状態から同時に離された場合は考慮していない。 タイミングによって、そのような状態になるのか Pointer Location が異常終了した事があった。 raw logを取って対策を講じれば良いのだろうが面倒なので今回は行っていない。 また、pointerIndex⇔pointerId の相互ひも付けも行っていない。 たとえば、1DOWN , 2DOWN , 1UP とした場合でも、1DOWN , 2DOWN , 2UP になると思う。 1点目と2点目が瞬間入れ替わりするような現象も出るが、、、、お絵かきとかで無ければ問題ないと思う。 以上が概要で、以下がその実装。 無線LANの時と同様 LOG 出力でぐちゃぐちゃになっているが、コメントアウトして diff を取っているので、そこに修正を入れる必要はない。ファイル最下にある、readFromParcel メソッドに少々加工を施し、クラス変数を定義した。 より良いコードがありましたら、コメントに記入頂ければ幸いです。 今回、注目したソースコード。 ./frameworks/base/core/java/android/view/MotionEvent.java ←これに修正を入れている。 ./apps/Development/src/com/android/development/PointerLocation.java ./frameworks/base/core/java/com/android/internal/widget/PointerLocationView.java 以下、修正差分。 機能的に、必要部分は @@ -217,6 +217,9 @@ 部分と @@ -1289,6 +1347,84 @@ 以降のみ。 $ diff -ubB MotionEvent.java.orig MotionEvent.java--- MotionEvent.java.orig2011-01-03 14 22 55.620059406 +0900 +++ MotionEvent.java2011-01-05 22 48 33.150516732 +0900 @@ -27,7 +27,7 @@ * it is being used for. */ public final class MotionEvent implements Parcelable { - static final boolean DEBUG_POINTERS = false; + static final boolean DEBUG_POINTERS = true; /** * Bit mask of the parts of the action code that are the action itself. @@ -217,6 +217,9 @@ static private Object gRecyclerLock = new Object(); static private int gRecyclerUsed = 0; static private MotionEvent gRecyclerTop = null; + static private int lastAction = ACTION_MASK; + static private boolean isDual = false; + private long mDownTime; private long mEventTimeNano; @@ -643,6 +646,7 @@ * and pointer index. */ public final int getAction() { +//Log.v("MotionEvent","getAction"); return mAction; } @@ -655,6 +659,7 @@ * pointer actions. */ public final int getActionMasked() { +//Log.v("MotionEvent","getActionMasked"); return mAction ACTION_MASK; } @@ -667,6 +672,7 @@ * gone down or up. */ public final int getActionIndex() { +//Log.v("MotionEvent","getActionIndex"); return (mAction ACTION_POINTER_INDEX_MASK) ACTION_POINTER_INDEX_SHIFT; } @@ -675,6 +681,7 @@ * a stream of position events. */ public final long getDownTime() { +//Log.v("MotionEvent","getDownTime"); return mDownTime; } @@ -682,6 +689,7 @@ * Returns the time (in ms) when this specific event was generated. */ public final long getEventTime() { +//Log.v("MotionEvent","getEventTime"); return mTimeSamples[0]; } @@ -692,6 +700,7 @@ * @hide */ public final long getEventTimeNano() { +//Log.v("MotionEvent","getEventTimeNano"); return mEventTimeNano; } @@ -700,6 +709,7 @@ * arbitrary pointer identifier). */ public final float getX() { +//Log.v("MotionEvent","grtX"); return mDataSamples[SAMPLE_X]; } @@ -708,6 +718,7 @@ * arbitrary pointer identifier). */ public final float getY() { +//Log.v("MotionEvent","getY"); return mDataSamples[SAMPLE_Y]; } @@ -716,6 +727,7 @@ * arbitrary pointer identifier). */ public final float getPressure() { +//Log.v("MotionEvent","getPressure"); return mDataSamples[SAMPLE_PRESSURE]; } @@ -724,7 +736,8 @@ * arbitrary pointer identifier). */ public final float getSize() { - return mDataSamples[SAMPLE_SIZE]; +//Log.v("MotionEvent","getSize"); + return mDataSamples[SAMPLE_SIZE]; // SAMPLE_SIZE=3 } /** @@ -732,6 +745,7 @@ * = 1. */ public final int getPointerCount() { +//Log.v("MotionEvent","getPointerCount"); return mNumPointers; } @@ -744,6 +758,7 @@ * (the first pointer that is down) to {@link #getPointerCount()}-1. */ public final int getPointerId(int pointerIndex) { +//Log.v("MotionEvent getHistoricalX","getPointerId("+pointerIndex+")= "+mPointerIdentifiers[pointerIndex] ); return mPointerIdentifiers[pointerIndex]; } @@ -756,6 +771,7 @@ * that pointer identifier. */ public final int findPointerIndex(int pointerId) { +//Log.v("MotionEvent","findPointerIndex"); int i = mNumPointers; while (i 0) { i--; @@ -776,6 +792,7 @@ * (the first pointer that is down) to {@link #getPointerCount()}-1. */ public final float getX(int pointerIndex) { +//Log.v("MotionEvent","getX(in)"); return mDataSamples[(pointerIndex*NUM_SAMPLE_DATA) + SAMPLE_X]; } @@ -789,6 +806,7 @@ * (the first pointer that is down) to {@link #getPointerCount()}-1. */ public final float getY(int pointerIndex) { +//Log.v("MotionEvent","getY(in)"); return mDataSamples[(pointerIndex*NUM_SAMPLE_DATA) + SAMPLE_Y]; } @@ -804,6 +822,7 @@ * (the first pointer that is down) to {@link #getPointerCount()}-1. */ public final float getPressure(int pointerIndex) { +//Log.v("MotionEvent","getPressure(in)"); return mDataSamples[(pointerIndex*NUM_SAMPLE_DATA) + SAMPLE_PRESSURE]; } @@ -820,6 +839,7 @@ * (the first pointer that is down) to {@link #getPointerCount()}-1. */ public final float getSize(int pointerIndex) { +//Log.v("MotionEvent","getSize(in)"); return mDataSamples[(pointerIndex*NUM_SAMPLE_DATA) + SAMPLE_SIZE]; } @@ -834,6 +854,7 @@ * @see KeyEvent#getMetaState() */ public final int getMetaState() { +//Log.v("MotionEvent","getMetaState"); return mMetaState; } @@ -844,6 +865,7 @@ * and views. */ public final float getRawX() { +//Log.v("MotionEvent","getRawX"); return mRawX; } @@ -854,6 +876,7 @@ * and views. */ public final float getRawY() { +//Log.v("MotionEvent","getRawY"); return mRawY; } @@ -864,6 +887,7 @@ * @return Returns the precision of X coordinates being reported. */ public final float getXPrecision() { +//Log.v("MotionEvent","getXPrecision"); return mXPrecision; } @@ -874,6 +898,7 @@ * @return Returns the precision of Y coordinates being reported. */ public final float getYPrecision() { +//Log.v("MotionEvent","getYPrecision"); return mYPrecision; } @@ -886,6 +911,7 @@ * @return Returns the number of historical points in the event. */ public final int getHistorySize() { +//Log.v("MotionEvent","getHistorySize"); return mNumSamples - 1; } @@ -900,6 +926,7 @@ * @see #getEventTime */ public final long getHistoricalEventTime(int pos) { +//Log.v("MotionEvent","getHistoricalEventTime(pos)"); return mTimeSamples[pos + 1]; } @@ -908,6 +935,7 @@ * arbitrary pointer identifier). */ public final float getHistoricalX(int pos) { +//Log.v("MotionEvent","getHistoricalX(pos)"); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + SAMPLE_X]; } @@ -916,6 +944,7 @@ * arbitrary pointer identifier). */ public final float getHistoricalY(int pos) { +//Log.v("MotionEvent","getHistoricalY(pos)"); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + SAMPLE_Y]; } @@ -924,6 +953,7 @@ * arbitrary pointer identifier). */ public final float getHistoricalPressure(int pos) { +//Log.v("MotionEvent","getHistoricalPressure(pos)"); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + SAMPLE_PRESSURE]; } @@ -932,6 +962,7 @@ * arbitrary pointer identifier). */ public final float getHistoricalSize(int pos) { +//Log.v("MotionEvent","getHistoricalSize(pos)"); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + SAMPLE_SIZE]; } @@ -949,6 +980,8 @@ * @see #getX */ public final float getHistoricalX(int pointerIndex, int pos) { +//Log.v("MotionEvent getHistoricalX","pointerIndex="+pointerIndex+" pos="+pos+" mDataSamples["+ +//((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + (pointerIndex * NUM_SAMPLE_DATA) + SAMPLE_X+"]" ); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + (pointerIndex * NUM_SAMPLE_DATA) + SAMPLE_X]; } @@ -967,6 +1000,8 @@ * @see #getY */ public final float getHistoricalY(int pointerIndex, int pos) { +//Log.v("MotionEvent getHistoricalY","pointerIndex="+pointerIndex+" pos="+pos+" mDataSamples["+ +//((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + (pointerIndex * NUM_SAMPLE_DATA) + SAMPLE_Y+"]" ); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + (pointerIndex * NUM_SAMPLE_DATA) + SAMPLE_Y]; } @@ -985,6 +1020,7 @@ * @see #getPressure */ public final float getHistoricalPressure(int pointerIndex, int pos) { +//Log.v("MotionEvent","getHistoricalPressure(in,pos)"); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + (pointerIndex * NUM_SAMPLE_DATA) + SAMPLE_PRESSURE]; } @@ -1003,6 +1039,7 @@ * @see #getSize */ public final float getHistoricalSize(int pointerIndex, int pos) { +//Log.v("MotionEvent","getHistoricalSize(in,pos)"); return mDataSamples[((pos + 1) * NUM_SAMPLE_DATA * mNumPointers) + (pointerIndex * NUM_SAMPLE_DATA) + SAMPLE_SIZE]; } @@ -1013,6 +1050,7 @@ * numbers are arbitrary and you shouldn t depend on the values. */ public final int getDeviceId() { +//Log.v("MotionEvent","getDeviceId"); return mDeviceId; } @@ -1027,6 +1065,7 @@ * @see #EDGE_BOTTOM */ public final int getEdgeFlags() { +//Log.v("MotionEvent","getEdgeFlahs"); return mEdgeFlags; } @@ -1038,6 +1077,7 @@ * @see #getEdgeFlags() */ public final void setEdgeFlags(int flags) { +//Log.v("MotionEvent","setEdgeFlags"); mEdgeFlags = flags; } @@ -1045,6 +1085,7 @@ * Sets this event s action. */ public final void setAction(int action) { +//Log.v("MotionEvent","setAction"); mAction = action; } @@ -1054,6 +1095,7 @@ * @param deltaY Amount to add to the current Y coordinate of the event. */ public final void offsetLocation(float deltaX, float deltaY) { +//Log.v("MotionEvent","offsetLocation"); final int N = mNumPointers*mNumSamples*4; final float[] pos = mDataSamples; for (int i=0; i N; i+=NUM_SAMPLE_DATA) { @@ -1070,6 +1112,7 @@ * @param y New absolute Y location. */ public final void setLocation(float x, float y) { +//Log.v("MotionEvent","setLocation"); float deltaX = x-mDataSamples[SAMPLE_X]; float deltaY = y-mDataSamples[SAMPLE_Y]; if (deltaX != 0 || deltaY != 0) { @@ -1090,8 +1133,9 @@ * @param size The new size. * @param metaState Meta key state. */ - public final void addBatch(long eventTime, float x, float y, - float pressure, float size, int metaState) { + public final void addBatch(long eventTime, float x, float y, float pressure, float size, int metaState) { +//Log.v("MotionEvent","addBatch"); + float[] data = mDataSamples; long[] times = mTimeSamples; @@ -1143,6 +1187,7 @@ * @hide */ public final void addBatch(long eventTime, float[] inData, int metaState) { +//Log.v("MotionEvent","addBatch"); float[] data = mDataSamples; long[] times = mTimeSamples; @@ -1216,6 +1261,7 @@ } public void writeToParcel(Parcel out, int flags) { +//Log.v("MotionEvent","writeToParcel"); out.writeLong(mDownTime); out.writeLong(mEventTimeNano); out.writeInt(mAction); @@ -1250,6 +1296,10 @@ } private void readFromParcel(Parcel in) { + String text = new String(); + lastAction = mAction; + + mDownTime = in.readLong(); mEventTimeNano = in.readLong(); mAction = in.readInt(); @@ -1257,10 +1307,12 @@ mRawX = in.readFloat(); mRawY = in.readFloat(); final int NP = in.readInt(); - mNumPointers = NP; + mNumPointers = NP;//ポインタ個数 final int NS = in.readInt(); - mNumSamples = NS; - final int NI = NP*NS; + mNumSamples = NS;//サンプル個数 + final int NI = NP*NS;//ポインタ個数*サンプル個数 + int ND = 0 ; + if (NI 0) { int[] ids = mPointerIdentifiers; if (ids.length NP) { @@ -1268,14 +1320,18 @@ } for (int i=0; i NP; i++) { ids[i] = in.readInt(); +text+="ids["+i+"] = "+ ids[i] +"\n"; } float[] history = mDataSamples; - final int ND = NI*NUM_SAMPLE_DATA; + //final int ND = NI*NUM_SAMPLE_DATA; // NUM_SAMPLE_DATA = 4 + ND = NI*NUM_SAMPLE_DATA; if (history.length ND) { mDataSamples = history = new float[ND]; } for (int i=0; i ND; i++) { history[i] = in.readFloat(); +text += "history["+i+"] = "+history[i] +"\n"; + } long[] times = mTimeSamples; if (times == null || times.length NS) { @@ -1283,8 +1339,10 @@ } for (int i=0; i NS; i++) { times[i] = in.readLong(); +text += "times["+i+"] = "+times[i] +"\n"; } } + mXPrecision = in.readFloat(); mYPrecision = in.readFloat(); mDeviceId = in.readInt(); @@ -1289,6 +1347,84 @@ mYPrecision = in.readFloat(); mDeviceId = in.readInt(); mEdgeFlags = in.readInt(); - } +/* +Log.v("MotionEvent readFromParcel", + "mDownTime = "+ mDownTime +"\n"+ + "mEventTimeNano = "+ mEventTimeNano +"\n" + + "mAction = " + mAction + "\n"+ + "mMetaState = " + mMetaState +"\n"+ + "mRawX = " + mRawX + "\n"+ + "mRawY = " + mRawY + "\n"+ + // "NP = " + NP + "mNumPointers = NP = "+ NP + "\n"+ + //final int NS = in.readInt(); + "mNumSamples = NS = " + NS + "\n"+ + "NP*NS=NI = " + NI + "\n" + + "NI*4=ND = " + ND +"\n" + //NI*NUM_SAMPLE_DATA; // NUM_SAMPLE_DATA = 4 + text + + "mXPrecision = " + mXPrecision +"\n"+ + "mYPrecision = " + mYPrecision +"\n"+ + "mDeviceId = " + mDeviceId +"\n"+ + "mEdgeFlags = " + mEdgeFlags +"\n" ); + */ + //擬似デュアルタッチ対応 + if( mDeviceId == 65536 NP =1 NS =1 ) { + if( mDataSamples[SAMPLE_SIZE] 0 ) { + final float MAX_SIZE = 960; +float dHistory[] = new float[ND*2]; +int dIds[] = new int[2]; +dIds[0]=0; +dIds[1]=1; + +for(int i=0; i ND*2; i+=8 ) { + dHistory[i]= mDataSamples[i/2]-( mDataSamples[i/2+3]*MAX_SIZE)/2; + dHistory[i+1]= mDataSamples[i/2+1]; + dHistory[i+2]= mDataSamples[i/2+2]; + dHistory[i+3]= 0; + dHistory[i+4]= mDataSamples[i/2]+( mDataSamples[i/2+3]*MAX_SIZE)/2;; + dHistory[i+5]= mDataSamples[i/2+1]; + dHistory[i+6]= mDataSamples[i/2+2]; + dHistory[i+7]= 0; +} +mNumPointers = 2; //ポインタ個数2 +//mNumSamples *=1;//サンプル個数不変 +mPointerIdentifiers = dIds;//ID2つ +mDataSamples = dHistory; // 個別データ + +if(isDual == false lastAction == ACTION_MOVE ){ + mAction = ACTION_POINTER_2_DOWN; + //Log.i("MotionEvent readFromParcel","ACTION_POINTER_2_DOWN"); + isDual = true; +} + +/* +Log.i("MotionEvent readFromParcel","dual touch"); +Log.v("MotionEvent readFromParcel", + "mNumPointers = "+ mNumPointers + "\n"+ + "mNumSamples = " + mNumSamples + "\n"+ + "NP*NS=NI = " + NI + "\n" + + "NI*4=ND = " + ND +"\n" ); //NI*NUM_SAMPLE_DATA; // NUM_SAMPLE_DATA = 4 +Log.v("MotionEvent readFromParcel","mNumPointers * mNumSamples * NUM_SAMPLE_DATA="+mNumPointers * mNumSamples * NUM_SAMPLE_DATA); +Log.v("MotionEvent readFromParcel","mDataSamples.length="+mDataSamples.length ); +for( int i=0; i mNumPointers * mNumSamples * NUM_SAMPLE_DATA; i++ ) { +Log.v("MotionEvent readFromParcel", + "mDataSamples["+(i)+"] =" + mDataSamples[i] ); +} +for( int i=0; i mNumPointers; i++ ) { +Log.v("MotionEvent readFromParcel", + "mPointerIdentifiers["+(i)+"] =" + mPointerIdentifiers[i] ); +} +for( int i=0; i mNumSamples; i++ ) { +Log.v("MotionEvent readFromParcel", + "mTimeSamples["+(i)+"] =" + mTimeSamples[i] ); + }*/ + } + else if (isDual == true) { + mAction = ACTION_POINTER_2_UP; + //Log.i("MotionEvent readFromParcel","ACTION_POINTER_2_UP"); + isDual = false; + } + } + } } 以上 コメント 名前 コメント
https://w.atwiki.jp/ruinakokuryaku/pages/167.html
敵キャラ 敵キャラ/基本情報 敵キャラ/状態異常有効度 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 ニョロ B B E 大コウモリ D A B B A D 土の小鬼 石の小鬼 大長虫 B D D D D B B B 告死鳥 A B A E B 死霊戦士 D B D D A E オメメナイナイ B E A 生ける巨竜像 D B D D B D B E 生ける彫像 D B D D D B E 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 チャンピオン E E E E E E E E E E E E E E E E E E E E A E E E E E E E 獣鬼 フナット B B E 竜の卵 D D D D D D D D D D D D D D D D D D D D D D D A D D D クラーケン A D D D B D B B ダドアチャック D B B D 歩く死者 D D D B A D E できそこない D B A D 妖蛇后 D A ヂグモ D B B D B B E 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 亡霊 E E E E E E E E B B A E E E E E E E E 処刑機械 B D B トム D D D B A D E ジョン D D D B A D E 踊る死者 D D D B A D E ヒトクイバナ A D 野菜怪物 A D 塚護人 B D B B E さまよえる監視者 B B B D ごろつき B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 兵士 B B 混沌の獣 D B A D B 鞭使い 槍の戦鬼 D グラガドリス 指揮官 B B 凶獣 B D B B 賢人 B 獅子の神官 山羊の神官 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 トムス レッツァ アイラ ミランダ ハヤバ D D アーデス D B アニキンゲトリクス エルバクス 魔狼 B A 食人鬼 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 イバの大鹿 E B 妖精族の戦士 B D D B 西風の精 E E E D D E E E D B E E E ルク D D D A B D B D B E B 巨鳥のヒナ B B 妖精族の術者 B D D B 妖精王ユールフィンデ B B D A D D A D B E マーメイド E B 黒鉄小人の戦士 B 黒鉄小人の狙撃手 B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 編髭小人の戦士 B 編髭小人の狙撃手 B 剣の戦鬼 地底戦車 D E E E D E B E D 地底戦車ロキ D E E E D E B E D 自動機兵 D D E D E B B E オオグモ D B B D B B E 火炎蜥蜴 B D B E A D B A A 火喰鳥 E E E B D E D E E A D A E E 火喰鳥のヒナ B B E A 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 黒鉄のミーベル B 編髭のダリム B 山の巨人 D B D D B D D 人面石 D B B D B D B E D 怪仙 B B D B E 合成魔獣 D D D D B B 霜の巨人 D B D D B D A E E 北風の精 E E E D E E E D B E E E 不可視の守護者 D D D B 不可視の守護者(可視状態) D B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 怪仙ダッタ(無敵状態) E E E E E E E E E E E E E E E E E E E E E E E E E E E E 怪仙ダッタ D 空の巨人 D D D D D D E D 生命無き者の王 D E D E D E D D B A D D D 死せる近衛兵 D D D B A D <闇> D D D B E D D <恐怖> E D E D E E D E <業火> E A 奈落の戦鬼 イド B D D D B D D B B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 触手 B D D D B D D B B タイタス一世 タイタス二世 D B E A タイタス三世 D D B D B B D B E タイタス四世 D D D B B D D E タイタス五世 D D D E A D D D E タイタス六世 B E E タイタス七世 D D D D D D B D B E タイタス八世 D A E E タイタス九世 D D B B D E 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 タイタス十世(変身前) D E タイタス十世(変身後) D E タイタス十一世 D D D D B E タイタス十二世 D D D A D B E B E タイタス十三世 D B E タイタス十四世 D E D E タイタス十五世 B D E タイタス十六世 B E E E 生ける王座 D B D B E コンコーダンス思考体 B B B B D D 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 双極式ハーモニウム B B B B D D 回転ソフィア機関 B B B B D D タイタス(テオル) B タイタス(テオル・遠距離) E E E E E E E A E E E E E E E E E E E E E E E E E E E タイタス(チュナ) B タイタス(チュナ・遠距離) E E E E E E E A E E E E E E E E E E E E E E E E E E E タイタス(シーフォン) B タイタス(シーフォン・遠距離) E E E E E E E A E E E E E E E E E E E E E E E E E E E オーバーロード D B 青竜 D D D B D D B E D A 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 緑竜 D D D B D D B E A 赤竜 D D D B D D E A A 白竜 D D D B D D A E D B B E A 黒竜 D D D B D D A E A 鬼士 B B 狂い豚 B A 修羅丸 B 大猿 B 火車騎士 B 神殿軍騎兵 B D B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 神殿軍武僧 B D シーウァ騎兵 B B シーウァ兵 B パーシャ バルスムス D D D D E D メロダーク D D D 戦将バルスムス D 鉄騎兵 D D B D D D D B B E 魔将ナムリス E E E E E E E E E A E D D D D D E E E E D A E D E D D D D D 魔将ダーマディウス B D D B D 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 魔将ラァグ D D D E A D D A A 魔将ク・ルーム D D D D D D D D D B E 魔将アイビア D D E D E D E E D D A E E D E E D E D D E D D D 魔将テオル 魔将ク・ルーム(闘気状態) D D D D D D D D D B E シーフォンLv3 シーフォンLv6 シーフォンLv12 シーフォンLv18 シーフォンLv24 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 人工精霊3号 人工精霊8号 人工精霊18号 殺人ウサギ B A ミ=ゴ D D D D D D B E D 星船 D D D D E D ダイモン B B E B B E ソムニウム D B B D B D B E D 星竜 D D D B D D D E E E E D D D D D A <混沌> D B D B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 鍵の守護者 E E E E E E E E ミルドラの蛇 D B D A A A カムール D D D パリス ウリュウ D D D D ギュスタール NINJA 妖術師 B MASTER NINJA 戦士 B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 魔術師 B 盗賊 B 神官 B 射手 B 武僧 B D 騎士 B 君主 B 狂戦士 B 魔人 B 野伏 B 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 異端タイタス派 B 異端ミルドラ派 B D マメルク B E A 処刑機械(ランダムマップ) D B さまよえる大鹿 E B ルク(ランダムマップ) D D D A B D B D B E B 牛鬼公 B B 鬼竜 D D D B D D B A A イバの大鹿(ランダムマップ) D D D E D B シャルクー D E D E D E B B D D E 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 青銅の女神 D D B D D D D D D D A E D イグナティウス B D E B 深淵のもの B D D D D B D D B B D B B グラガドリス八十二世 B 真・夜種王(プリンセス) A 真・夜種王(マーメイド) D D A 真・夜種王(チャンピオン) D D D D D D D D A 真・夜種王(全裸) A <浄火> D D D E A E A 滅びの風の精 E E E D E E E D B E E E 名前 耐性 武器属性 魔法属性 斬 突 重 射 鞭 暗 長 格 魔 魔物 (遠) 火 水 雷 聖 闇 空 地 吸 物無 魔無 人外魔 ま 竜 獣 蜘蛛 天 技80 技150 技200 技300 混沌の狼 B B A
https://w.atwiki.jp/wfzwfz/pages/44.html
ワザップフォーラム!雑談 総督近報 vol.2 上位会議の有効運営 寒いんだよバカヤロウ。 俺は袁胤殺しの孔保安だぞ(ゲーム脳 http //jp.wazap.com/thread/%E3%83%AF%E3%82%B6%E3%83%83%E3%83%97%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A9%E3%83%A0%E9%9B%91%E8%AB%8730/393605/?p=23#10412116 現在の最新スレ ワザップフォーラム雑談の上位会議について 上位会議は住民自治体制を円滑に進める為に設置した、 総合運営グループです。 ワザップフォーラムの正当な利用者なら誰でも参加できます。 入会を強制する事はしませんが、総督としては未入会者(新しく来た人など)に 「是非お入りを」と促す様にしています。 上位会議では、会議や避難所運営、連絡、歴史の掲載などを行っています。 またアンケートで随時意見も募集しています。 既に住民自治の成果として、スレ権の指定方法などを会議で決め、 現在運用しています。 グループとは言わずとも、少数の古参による談合運営や 力任せの乱暴者による独裁統治ではなく、 こう言う自治機構を持ち、活用しているのは今現在ワザップフォーラムだけです。 また、現在安定したスレの運用がされていますが 上位会議があるからスレが安定するのではなく、 やはり、住民の皆さんの人徳や寛容さで安定するのだと思います。 これからも宜しく。
https://w.atwiki.jp/elthing/pages/54.html
ギガントード&ギガントード(サハギン) 攻撃魔石と友達魔石っていう意味です。 サハギンは確率ですが、ギガントードは100%発動でしかも安い。 分岐の多いマップでは回避されやすいですが、 狭いマップや分岐の少ないマップではかなり凶悪な効果が期待できる。 まぁカエルが効かない相手にはそもそも意味がないんですけど。 ランダムムース ただのムース乱立。しかし普通に凶悪。 方向転換系は状態異常扱いではないため カエルや減速等の他の状態異常を掻き消さないのが味噌。 減速状態で目にするムースの大群はまさに地獄絵図。 CPの不足気味な序盤はクリスタルや拠点周りに意識して配置できると何かと便利です。 チューチュータコカイナ デビルフィッシュの大量設置。たったそれだけ。 1回休み系は発動すれば乗っ取りされないという利点を持つ。 発動率も中々高く、タコ3匹の上に乗るなら吸われる覚悟を持つべき。 コストも安く能力も優秀なため、初手や序盤のメイン魔石として非常に有用。 オーガパラダイス オーガのふっ飛ばしはふっ飛ばし後のマスの効果も受ける、 つまり2回分CPをごっそりいただけるという仕様。 効果は0~2マスなので、その範囲が自マスのみなら100%自身が美味しい思いができる。 発動率自体は然程高くないのであまり期待値は高くない。 上記のムースやタコと合わせて使ってみるのも良い。 固定マス移動系 マッドマンやアーリマンのもつ1マス、2マス固定移動効果を利用し、 相当位置を自マスで埋めておくという誰でも思いつく戦法。 やってることはオーガと大体一緒だが こちらの方が発動率も高く、発動すれば確実に相当マスを踏む。 ただし状態異常扱いのため加速等で上書きされるし、 敵がカエル等の状態異常だった場合も同様に上書きしてしまう点には注意。 連続配置 黒魔道士やランドローラーの持つ隣り合うと強化する効果を利用し ただ只管に並べまくるという、戦術と言えるのかどうかすら分らないもの。 ただ数さえ揃えば減速時等を除いて敵から乗っ取られる危険はほぼ無くなる。 問題はその数を揃えるまでが中々時間がかかるということ。 サボテンダー等による長期戦が予想される場合で ある程度のエリアが広くそれなりの数が設置できる場所がベスト。 周りやすければそれだけ配置もしやすいので尚良し。
https://w.atwiki.jp/mhf_zenryoku/pages/100.html
武器毎の有効(とされる)スキル ※注意・このページはまだ書きかけです Q. ○○の武器を遣うときにどういうスキル組みをすればいいの? A.武器毎に有効とされるスキルは、基本的には以下の通り。ただし、モンスターごとに有効とされるスキルが変わるのは覚えておいた方がいい(エスピナス原種は、バインドボイス【大】を使ってくるが、しかし同時に風圧【大】攻撃を使ってくるため、両方が無いとほとんど意味がない(耳をふさぐモーションが風圧【大】ののけぞりに上書きされる。ただし、風圧【大】のけぞりに強制的に変わるため、風圧無しなら耳栓無しでも実はほとんど影響がない)など) 片手剣 ◆ 双剣 ◆ 大剣 ◆ 太刀 ◆ ハンマー ◆ 狩猟笛 ランス ◆ ガンランス ◆ ライトボウガン ◆ ヘビィボウガン ◆ 弓 ● 片手剣、大剣、太刀、ハンマー これらの武器は比較的SAつきの攻撃が多く、風圧程度では攻撃が止まる事が少ないため、攻撃スキル中心にスキルをつけていっても比較的問題はない。とはいえ、風圧無効などの防御スキル系は、あればその分SAに頼らずに攻撃を行うことも出来るようになるため、まったく無駄というわけではない。 【重要度:高】 攻撃力UP【小】~、見切り+1~、火事馬力+2 いわゆる攻撃スキル。 どれを優先すべきかは、「Q.攻撃力UP【大】と見切りと匠と火事場、どれを優先するべき?」 なども参照。 耳栓(高級耳栓) 比較的防御力が高い近接武器では、このスキルは攻撃スキルとして機能することが多い(咆吼しているモーションの間に攻撃を行えるため)。 一応、咆吼で耳をふさぐモーションが解除される前に敵が動き出すことが多いため、HPが低いと咆吼から確定で攻撃を食らう可能性があるのも考慮するべきではある。 【重要度:中】 砥石使用高速化 戦闘中に砥石を使ったり、切れ味レベルを青や白などで維持したまま戦闘を行いたいのであれば、あったほうがいい。 ただし、アイテム「高速砥石」でカバーすることもできる。 ● 双剣 【重要度:高】 攻撃力UP【小】~、見切り+1~、火事馬力+2 いわゆる攻撃スキル。 どれを優先すべきかは、「Q.攻撃力UP【大】と見切りと匠と火事場、どれを優先するべき?」 なども参照。 ただし、乱舞を中心に使っていくと切れ味の減少が早いため、切れ味+1はあまり効果的ではない可能性がある。 耳栓(高級耳栓) 比較的防御力が高い近接武器では、このスキルは攻撃スキルとして機能することが多い(咆吼しているモーションの間に攻撃を行えるため)。 一応、咆吼で耳をふさぐモーションが解除される前に敵が動き出すことが多いため、HPが低いと咆吼から確定で攻撃を食らう可能性があるのも考慮するべきではある。 ランナー(絶倫) シーズン7.0からの仕様変更により、鬼人化すると強走効果が解除されるようになったため、鬼人化状態を長く維持するためには必然的にスキルに頼る必要がある。 【重要度:中】 砥石使用高速化 戦闘中に砥石を使ったり、切れ味レベルを青や白などで維持したまま戦闘を行いたいのであれば、あったほうがいい。特に、双剣は切れ味が早く減少しやすいため、砥石を使う機会が非常に多くなるため、あったほうがいいケースも多い。 ただし、アイテム「高速砥石」でカバーすることもできる。 ● 狩猟笛 【重要度:高】 笛吹き名人 ただし、HR99以下だと、このスキルをつけるための条件がかなり制限されるのに注意( 攻撃力UP【小】~、見切り+1~、火事馬力+2 いわゆる攻撃スキル。 どれを優先すべきかは、「Q.攻撃力UP【大】と見切りと匠と火事場、どれを優先するべき?」 なども参照。 ● ランス 【重要度:高】 【重要度:中】 ● ガンランス 【重要度:高】 【重要度:中】 ● 弓 【重要度:高】 【重要度:中】 ● ライトボウガン、ヘビィボウガン 【重要度:高】 攻撃力UP【小】~、見切り+1~、火事馬力+2 いわゆる攻撃スキル。ガンナーは被弾しない事前提なので火事場力で攻撃力を上げた状態での戦闘を要求される。火事場>攻撃力UP=見切り だろうか。 装填速度+1~、反動軽減+1~、装填数UP 装填、射撃時の隙を減らす、攻撃の頻度を増やす為のスキル。ガン、撃つ弾の種類によって最速無反動の数値が違うので要考慮。基本的に装填速度+3反動軽減+2装填数UPとフルにある場合が多い。 耳栓(高級耳栓) 基本的に防御力が少ないガンナーは咆哮時の隙での被弾を無くす為に必要。基本的に攻撃を受けないとされるガンナーは火事場+2が基本とされて体力が少ない為攻撃をうければ即死という状況が多い。僅かな隙も許されない為に咆哮を行うモンスターと戦う場合はあるといいだろう。 尚、アイテム「使い捨て耳栓(高級耳栓)」でも代用可
https://w.atwiki.jp/is01rebuild/pages/76.html
加速度、磁界、傾きセンサーを動作させるには? 毎回の事だがとりあえず対応。(照度センサーは未対応) 手元では画面の自動回転は動作していない。 画面の自動回転をオンにするとエラーを出し続けているので未対応(未処理)部分があると思われる。 アプリケーションでは加速度、磁界、傾きセンサーの各値が取得出来ているようなので、とりあえずその方法をまとめた。 まず、センサー周りの関係ファイルから 例によって、1.6からサービスとlibは流用する。 akmdと言うのが標準(?)なのかどうなのかイマイチ調べは付いていないのだが、センサーを司っているらしいそのakmd2というのがあるらしい、それをinit.rcで起動しておく。 センサーのライブラリは sensors.default.so である。 以下は、ソースからビルドするセンサー関連ファイル。 センサーのインタフェース(修正する) $ANDROID_SRC/hardware/libhardware/include/hardware/sensors.h ここで下記のようにセンサー種別が定義されている。 #define SENSOR_TYPE_ACCELEROMETER 1 #define SENSOR_TYPE_MAGNETIC_FIELD 2 #define SENSOR_TYPE_ORIENTATION 3 #define SENSOR_TYPE_GYROSCOPE 4 #define SENSOR_TYPE_LIGHT 5 #define SENSOR_TYPE_PRESSURE 6 #define SENSOR_TYPE_TEMPERATURE 7 #define SENSOR_TYPE_PROXIMITY 8 今回は、1~3に対応する作業となる。 ライブラリの動的読み込み(HAL) $ANDROID_SRC/hardware/libhardware/hardware.c Android側からの制御(1) $ANDROID_SRC/frameworks/base/core/jni/android_hardware_SensorManager.cpp Android側からの制御(2) (修正する) こちらは、すべて見てないので対応漏れがあるかも。 $ANDROID_SRC/frameworks/base/services/jni/com_android_server_SensorService.cpp 1.6からの変更で動作しなくなっているようなので、上位互換性を確保する。 $ANDROID_SRC/hardware/libhardware/include/hardware/sensors.h の、構造体 sensors_control_device_t が変更になったため、旧libでは呼び出しアドレスにズレが生じたのだと思われる。 旧libとの互換性維持の為、次のように順番を変更した。(コメントは削除している) 2.2デフォルト struct sensors_control_device_t { struct hw_device_t common; native_handle_t* (*open_data_source)(struct sensors_control_device_t *dev); int (*close_data_source)(struct sensors_control_device_t *dev); int (*activate)(struct sensors_control_device_t *dev, int handle, int enabled); int (*set_delay)(struct sensors_control_device_t *dev, int32_t ms); int (*wake)(struct sensors_control_device_t *dev); }; を下記のように修正。 1.6との互換性確保 struct sensors_control_device_t { struct hw_device_t common; native_handle_t* (*open_data_source)(struct sensors_control_device_t *dev); int (*activate)(struct sensors_control_device_t *dev, int handle, int enabled); int (*set_delay)(struct sensors_control_device_t *dev, int32_t ms); int (*wake)(struct sensors_control_device_t *dev); int (*close_data_source)(struct sensors_control_device_t *dev); }; 旧libのままで close_data_source をコールすると何処に飛んでいくか分からないので、 $ANDROID_SRC/frameworks/base/services/jni/com_android_server_SensorService.cpp の close_data_source の呼び出し元をコメントアウトした。 static jint android_close(JNIEnv *env, jclass clazz) { /* if (sSensorDevice- close_data_source) return sSensorDevice- close_data_source(sSensorDevice); else */ return 0; } その他ファイルの配備 /system/etc/permissions/以下に $ANDROID_SRC/frameworks/base/data/etc/android.hardware.sensor.compass.xml $ANDROID_SRC/frameworks/base/data/etc/android.hardware.sensor.accelerometer.xml の2つのファイルを転送する。 1.6のデフォルトの /data/misc/akmd_set.txt は、symlink/data 環境にコピーする。 最後に、 chown compass.system /dev/akm8973_aot chmod 666 /dev/akm8973_aot chown compass.system /dev/akm8973_dev chmod 666 /dev/akm8973_dev chown compass.system /dev/smb380_dev chmod 666 /dev/smb380_dev を init.rc に記述しておく。 デフォルト1.6では666になっていたが、どのプロセスが書き換えているのだろうか? 調べが付いてないので permission の設定もとりあえず…。 以上を変更し、ビルドする事でセンサーはとりあえず動くようになった。 長時間運用、on off の繰り返しは未検証の為何が起こるか分からない。 コメント 名前 コメント すべてのコメントを見る (2011/02/04 0 07 公開)
https://w.atwiki.jp/uc_biulder/pages/200.html
スペックブレイクとは、SAを当てた後、A~DのどのモードでSAを発動したかによってそれぞれ違う効果が一定時間付与されるもの。 Aモード 移動速度低下(6秒) Bモード 攻撃機能停止(3秒) Cモード 被ダメージ増加(8秒) Dモード 命中率低下(10秒) Sブレイクと4すくみAはB、BはC、CはD、DはAに強いというすくみがありますが、これはAPが無くなるまで、つまりSA待機状態になるまでのすくみなので、SAのロックオンが始まったらモードを変えて自分が相手に与えたいSブレイクのモードにすると良いでしょう。 AモードのSブレイク活用方法AモードのSブレイクは、移動速度低下。次のSAやSOを当てやすくしたり敵のAPを削りやすくするために使用するなどがあります。序盤にHPの高いユニットを連続で狙う場合に使用すると良いでしょう。 BモードのSブレイク活用方法BモードのSブレイクは、攻撃機能停止。相手がSOを発動していたり、発動しそうなとき、あるいはこちらがSA待機状態になってしまった場合に相手に攻撃されない様にするなどがあります。少し使いどころが難しいので、あまり使用しなくても良さそうですね。 CモードのSブレイク活用方法CモードのSブレイクは、被ダメージ増加。相手にSOを当てる直前に使用するとSOの威力が1.5倍になるので、自軍ユニットがSOを発動できる戦術レベルに達したら狙うと良いでしょう。ただし、Cモードは移動速度が遅く、Bモードからの攻撃を受けやすいモードであるため、狙う際は慎重に立ち回りましょう。 DモードのSブレイク活用方法DモードのSブレイクは、命中率低下。敵からのSA・SO時の命中率を50%低下させます。相手にSOやSAを使われそうになったら狙ってみましょう。 おそらく6/9アプデからCブレイクが10秒に変更されているのですが7/12アプデ後に再確認した方がよいですかね? - ぎっく 2016-07-11 02 21 45 なまえ