public マウスX,マウスY,食事回数,ゲージ色,ヘルス残,購入実行,色差精度,売物色[19] public 色々[1],マウス間隔,クリック,現ページ,色調査,来店済,自分X,自分Y public 前回スキル,材料製作,現製作ページ,チェック,グループ,レアチェック,レア作成Full dim 材料[2,1],装備材料[2,1], 製品[2],装備[1] //★ public Fid,台詞,発言,取得回数,バックスペース, //★ // // DragonRaja 生産マクロ 03/09/30版 - by Delphinium // // 材料購入→製品作成→拾得→売却 を繰り返します // ヘルス減ったらベルトのメシを食います。 // //■使い方 -------------------------- // 0.必要に応じて設定項目を書き換える // 1.スキル欄のページを [JOB SKILL] に切換えてから閉じる // 2.生産ウインドウの製品ページを、作りたい物がある位置にしてから閉じる // 3.食事種別の設定通りにメシをベルトにセット(魔法の場合は魔法窓を出しておく) // 4.Spaceキーで自分中心の画面にする // 5.SHIFTキーを押下状態に固定する // 6.マウスカーソルを店員に合わせる // 7.CTRLで開始。BackSpaceで停止。 // //■注意 ---------------------------- // 店員からなるべく距離を取る(拾う時のクリック範囲に店員が居ると止まる) // 店で前回購入時にESCキーで閉じて位置が保存されてると誤動作する // 売却時は売れる物を全て売ります // //■設定 ---------------------------- //-※設定範囲外の数値は入れないでください //-▼購入材料設定------------ //--※製作1回分の材料の購入ウインドウ上の位置等を設定 ////////////////////////// レア貯め = 6 //何回やったらレア作れるポイントになるか 個数 = 10 // ポイント貯め用に一回にいくつぶん買うか ////////////////////////// 材料[0,0] = 505 //店の材料1の位置 3桁目がページ数・下2桁がページ内位置(1-15) 材料[0,1] = 4 * 個数 //材料1の購入数 材料[1,0] = 504 //材料2の位置(未使用なら=0) 材料[1,1] = 2 * 個数 //材料2の購入数 //-▼製作設定---------------- //--※製作ウインドウ上の位置と個数等の設定 製作スキル = 1 //[JOB SKILL]欄の製作アイコンの位置(左から何個目?1-5) 製品[0] = 4 //ページ 製品[1] = 8 //製作品は何個目?(1-10) 製品[2] = 1 //製作個数(1-9) =0でMax 待ち時間 = 0 //前回製作からの間隔(秒) //■レアとして欲しいアイテム↓ 装備材料[0,0] = 501 //店の材料1の位置 3桁目がページ数・下2桁がページ内位置(1-15) 装備材料[0,1] = 1 //材料1の購入数 装備材料[1,0] = 505 //材料2の位置(未使用なら=0) 装備材料[1,1] = 5 //材料2の購入数 装備[0] = 2 //ページ 装備[1] = 9 //製作品は何個目?(1-10) グループ = 3 //レアグループは▽を何回押した時に表示されるか。 レアチェック = 5 //レアグループは上から何番目か。1-5 レア作成Full = 999 //何個レアチャレンジするか。MAXはGMの12 //■レアとして欲しいアイテム↑ //-▼食事設定---------------- //--※ヘルス残量チェックは数十秒に1回なので余裕を持って 食事種別 = 1 //ベルト1に箱詰=1, ベルト1-5を順に=2, 魔法で=3, メシ抜き=0 ヘルス残 = 25 //ヘルスが残何%で食事をするか設定(1-100) //--※↓食事種別=3(魔法で)の場合に設定 食事魔法 = 2 //ヘルス回復魔法が魔法窓の左から何番目か指定 魔法個数 = 5 //魔法窓1ページの魔法数(1-5) メモライズ数が4以下の場合は変更 //-▲ここまで必ず設定----------- //-▼以下、気が向いたら設定----- //★追加設定 台詞 = "/comrade Owner" 発言 = 1 // 1:主人発言 0:店主クリック 取得回数 = 1 // 繰り返し拾う回数(1以上) バックスペース = 1 // 1:発言前にバックスペースを一回入れる 0:そのまま発言 //★ //-▼拾得法詳細設定---------- //--※画面中心の縦横[範囲ドット]の範囲内を[間隔ドット]の間隔でクリックします //--※拾得対象のサイズによって間隔を変えることを推奨 拾得間隔 = 12 //クリック密度(ドット) 拾得範囲 = 110 //拾得対象範囲(ドット) 色調査 = 0 //無効=0, 色変動=1, 色差概算(開始時と比較)=2, 色差概算(毎回更新)=3 色差精度 = 8 //色調査=2,3の場合に使用 //色調査=1は製作直前との色変動を厳密にチェック //色調査=2は開始時との原色の比率の変動をアバウトにチェック //色調査=3は製作直前との原色の比率の変動をアバウトにチェック //-▼機能切替設定------------ 局地戦回避 = 0 //無効=0, 有効=1 (毎20:57〜4分間停止し取消をクリックして再開) 購入実行 = 1 //材料購入を実行する=1, しない=0 ★1以上ならその数繰り返してから拾う 製作実行 = 個数 //↓以下同文 拾得実行 = 0 売却実行 = 0 //購入実行に2以上の数値を入れると[購入-製作]のセットをその回数繰返し //製作実行に2以上の数値を入れると製作をその回数繰返し //拾得実行=1は繰返し終了後にまとめて拾得。=2だと毎回拾得。 //-▼微調整------------------ マウス間隔 = 100 //クリック前待機時間(ms) 全マウスクリックに適用 クリック = 30 //クリック状態保持時間(ms) 全マウスクリックに適用 拾得基点X = 400 //拾得範囲の中心点 拾得基点Y = 280 補正Y = -40 //ヘルス回復魔法使用位置の拾得基点からのY座標補正値 売却数上限 = 72 //売却回数の上限 売却無効数 = 0 //先頭からこの位置までの物は売らない(0-15) //-▲設定ここまで -------------------- //------------------------------------ 基点上書 = 0 自分X = 拾得基点X 自分Y = 拾得基点Y + 補正Y 現製作ページ = 1 拾得回数 = 1 + (int(拾得範囲 / 拾得間隔)) 拾得基点X = 拾得基点X + int(拾得範囲 / 2) 拾得基点Y = 拾得基点Y + int(拾得範囲 / 2) カウント = 1 //★アプリケーションのID取得 Fid = GETID("","DRAGONRAJA") //★ STOPFORM(FALSE) if (色調査) then resize(色々,((拾得回数 * 拾得回数) - 1)) ヘルス残 = 68 + (int((118 * ヘルス残) / 100)) 来店済 = 0 while true //↓待機ループ sleep(0.3) ifb getkeystate(vk_numpad1) and !(基点上書) sleep(0.1) 拾得基点X = g_mouse_x 拾得基点Y = g_mouse_y 自分X = 拾得基点X 自分Y = 拾得基点Y + 補正Y 拾得回数 = 1 + (int(拾得範囲 / 拾得間隔)) 拾得基点X = 拾得基点X + int(拾得範囲 / 2) 拾得基点Y = 拾得基点Y + int(拾得範囲 / 2) 基点上書 = 1 sleep(0.2) mmv(50,50) sleep(0.5) endif ifb getkeystate(vk_ctrl) //↓CTRL押下されたら 前回製作 = 0 マウスX = g_mouse_x //マウス座標取得 マウスY = g_mouse_y //★最初の店主呼び出し修正 //マウスクリック(right,マウスX,マウスY) ifb (発言) マウスクリック(right,マウスX,マウスY) endif //★ いろいろリセット() //食事状況/ゲージ色リセット if (色調査 = 2) then 床スキャン(拾得基点X,拾得基点Y,拾得間隔,拾得回数) // while !(getkeystate(vk_back)) //↓BS押下までループ //ここから作成スタート for temppp = 1 to レア作成Full //レアポイント貯め開始 for rrrtemp = 1 to レア貯め いらっしゃいませ() //店ウインドウ開く for i = 0 to 2 //↓材料購入 if getkeystate(vk_back) then 一時停止() ショッピング(材料[i,0],材料[i,1]) next //↑購入完了 お買い上げ完了(0) //店ウインドウ閉じる for i = 1 to 製作実行 while ((前回製作 + 待ち時間) > gettime()) //↓早過ぎたら待機(遅いから多分無意味) sleep(0.5) if getkeystate(vk_back) then 一時停止() wend sleep(0.2) 夜なべ仕事(製品[1],製品[2],製作スキル,製品[0]) //製作 前回製作 = gettime() //製作時間記憶 next if getkeystate(vk_back) then 一時停止() next //レアポイント貯め完了 if getkeystate(vk_back) then 一時停止() いらっしゃいませ() //店ウインドウ開く for i = 0 to 2 //↓材料購入 if getkeystate(vk_back) then 一時停止() ショッピング(装備材料[i,0],装備材料[i,1]*3) next //↑購入完了 お買い上げ完了(0) //店ウインドウ閉じる //レア製作開始 for iii = 1 to 3 //↓3回ぐらいレア作ってみる sleep(0.2) レア作成(装備[1],1,製作スキル,装備[0],グループ) //製作 kbd(vk_space,down,100) //1キー押して kbd(vk_space,up,100) //離す next //残り物を作ってしまう 夜なべ仕事(装備[1],0,製作スキル,装備[0]) //製作 //レア製作完了 next //作成完了 KBD(VK_ENTER,CLICK,300) // wend //↑BS押下までのループここまで endif //↑CTRL押下時の処理ここまで wend //↑待機ループここまで //以下サブルーチン ----------------------------- //--------------------------------- //--------------------------------- function 色差概算(色) 色R = 色 and $FF 色G = (色 and $FF00) / $100 色B = (色 and $FF0000) /$10000 色計 = 色R + 色G + 色B 比R = int((色R / 色計) * 色差精度) 比G = int((色G / 色計) * 色差精度) result = "" + 比R + 比G fend //--------------------------------- procedure マウスクリック(左右,座標X,座標Y) btn(左右,down,座標X,座標Y,マウス間隔) btn(左右,up,座標X,座標Y,クリック) fend //--------------------------------- procedure いろいろリセット() 食事回数 = 0 //ベルト食事回数リセット ゲージ色 = PEEKCOLOR(ヘルス残,533) //開始時のヘルスゲージ色取得 fend //--------------------------------- procedure 無差別クリック(基点X,基点Y,間隔,回数) 床X = 基点X 床Y = 基点Y sleep(0.2) for i = 1 to (回数 * 回数) if getkeystate(vk_back) then 一時停止() ifb (色調査 = 1) mmv(50,50) ifb !(色々[(i - 1)] = peekcolor(床X,床Y)) mmv(床X,床Y) マウスクリック(left,床X,床Y) endif elseif (色調査 >= 2) mmv(50,50) ifb !(色々[(i - 1)] = 色差概算(peekcolor(床X,床Y))) mmv(床X,床Y) マウスクリック(left,床X,床Y) endif else // btn(left,down,床X,床Y,80) // btn(left,up,床X,床Y,15) btn(left,click,床X,床Y,40) endif ifb (i >= 回数) and ((i mod 回数) = 0) 床X = 床X - 間隔 床Y = 基点Y else 床Y = 床Y - 間隔 endif next マウスクリック(right,床X,床Y) sleep(0.1) fend //--------------------------------- procedure 床スキャン(基点X,基点Y,間隔,回数) 床X = 基点X 床Y = 基点Y mmv(430,570) sleep(0.1) for i = 1 to (回数 * 回数) if getkeystate(vk_back) then 一時停止() ifb (色調査 = 1) 色々[(i - 1)] = peekcolor(床X,床Y) elseif (色調査 >= 2) 色々[(i - 1)] = 色差概算(peekcolor(床X,床Y)) endif ifb (i >= 回数) and ((i mod 回数) = 0) 床X = 床X - 間隔 床Y = 基点Y else 床Y = 床Y - 間隔 endif next fend //--------------------------------- procedure 押し売り(上限,無効数) //★ マウスクリック(right,マウスX,マウスY) マウスクリック(right,マウスX,マウスY) sleep(0.3) //★ 確認位置 = 0 位置確定 = 0 //★ //mmv(マウスX,マウスY,マウス間隔) //マウスクリック(left,マウスX,マウスY) //店員クリック ifb !(発言) mmv(マウスX,マウスY,マウス間隔) マウスクリック(right,マウスX,マウスY) else //主人発言 KBD(VK_ENTER,CLICK,300) sleep(0.3) //バックスペース ifb (バックスペース) KBD(VK_BACK,CLICK,300) sleep(0.3) endif SendSTR(Fid,台詞) sleep(0.3) KBD(VK_ENTER,CLICK,300) sleep(0.3) endif //★ sleep(1) mmv(600,162,マウス間隔) マウスクリック(left,600,162) //売るボタンクリック ifb !(売物色[0]) sleep(1.5) for temp = 0 to 19 売物色[temp] = peekcolor(477,(temp + 191)) next else sleep(0.2) endif for i = 無効数 to (上限 - 1) if getkeystate(vk_back) then 一時停止() ifb ((i mod 15) = 0) and (i > 14) mmv(640,145,マウス間隔) マウスクリック(left,640,145) endif 売り物X = (465 + ((i mod 5) * 35)) 売り物Y = (70 + ((int((i mod 15) / 5)) * 35)) mmv(売り物X,売り物Y,マウス間隔) マウスクリック(left,売り物X,売り物Y) mmv(465,290,マウス間隔) 売物有 = 0 ifb 位置確定 売物有 = !(売物色[確認位置] = peekcolor(477,(確認位置 + 191))) if !(売物有) then 位置確定 = 0 endif ifb !(位置確定) sleep(0.1) for temp = 0 to 19 売物有 = !(売物色[temp] = peekcolor(477,(temp + 191))) ifb 売物有 確認位置 = temp 位置確定 = 1 break endif next endif ifb 売物有 マウスクリック(left,465,290) else break endif next お買い上げ完了(1) fend //--------------------------------- procedure レア作成(位置,個数,スキル,ページ,グループ) sleep(0.5) mmv(430,570) マウスクリック(right,430,570) マウスクリック(left,430,570) sleep(0.5) スキルX = 365 + (38 * (スキル - 1)) mmv(スキルX,480,マウス間隔) マウスクリック(left,スキルX,480) sleep(0.2) ifb (ページ) if !(前回スキル = スキル) then 現製作ページ = 1 前回スキル = スキル 製作ページ移動(ページ) endif 製品X = 320 + (37 * ((位置 - 1) mod 5)) 製品Y = 140 + (40 * (int((位置 - 1) / 5))) mmv(製品X,製品Y,マウス間隔) マウスクリック(left,製品X,製品Y) // マウスクリック(left,製品X,製品Y) sleep(0.2) ifb (個数 = 0) mmv(400,380,マウス間隔) マウスクリック(left,400,380) // マウスクリック(left,400,380) else mmv(400,354,マウス間隔) for temp = 1 to 個数 if getkeystate(vk_back) then 一時停止() マウスクリック(left,400,354) next endif // mmv(320,365,マウス間隔) // if !(チェック) then チェック = peekcolor(475,365) // sleep(0.05) // マウスクリック(left,320,365) //レアボタン mmv(320,365,マウス間隔) if !(チェック) then チェック = peekcolor(475,365) sleep(0.05) マウスクリック(left,466,323) //■ここからレア作成画面 sleep(0.3) レア画面チェック = peekcolor(355,240) mmv(375,235,マウス間隔) for temp = 1 to グループ if getkeystate(vk_back) then 一時停止() マウスクリック(left,375,235) next //95.125.155 //レアチェック mmv(260,65+(レアチェック*30),マウス間隔) マウスクリック(left,260,65+(レアチェック*30)) sleep(0.1) mmv(323,313,マウス間隔) マウスクリック(left,323,313) sleep(0.3) ifb (レア画面チェック = peekcolor(355,240)) mmv(480,320,マウス間隔) マウスクリック(left,480,320) endif //■ここまでレア作成画面 sleep(0.4) ifb (チェック = peekcolor(475,365)) mmv(475,365,マウス間隔) マウスクリック(left,475,365) endif fend //--------------------------------- procedure 夜なべ仕事(位置,個数,スキル,ページ) mmv(430,570) マウスクリック(right,430,570) マウスクリック(left,430,570) sleep(0.2) スキルX = 365 + (38 * (スキル - 1)) mmv(スキルX,480,マウス間隔) マウスクリック(left,スキルX,480) sleep(0.2) ifb (ページ) if !(前回スキル = スキル) then 現製作ページ = 1 前回スキル = スキル 製作ページ移動(ページ) endif 製品X = 320 + (37 * ((位置 - 1) mod 5)) 製品Y = 140 + (40 * (int((位置 - 1) / 5))) mmv(製品X,製品Y,マウス間隔) マウスクリック(left,製品X,製品Y) // マウスクリック(left,製品X,製品Y) sleep(0.2) ifb (個数 = 0) mmv(400,380,マウス間隔) マウスクリック(left,400,380) // マウスクリック(left,400,380) else mmv(400,354,マウス間隔) for temp = 1 to 個数 if getkeystate(vk_back) then 一時停止() マウスクリック(left,400,354) next endif mmv(320,365,マウス間隔) if !(チェック) then チェック = peekcolor(475,365) sleep(0.05) マウスクリック(left,320,365) sleep(0.4) ifb (チェック = peekcolor(475,365)) mmv(475,365,マウス間隔) マウスクリック(left,475,365) endif fend //--------------------------------- procedure ご購入(位置,個数) 商品X = 465 + (35 * ((位置 - 1) mod 5)) 商品Y = 69 + (35 * (int((位置 - 1) / 5))) mmv(商品X,商品Y,マウス間隔) // sleep(0.1) マウスクリック(left,商品X,商品Y) sleep(0.1) mmv(465,290,マウス間隔) for temp = 1 to 個数 if getkeystate(vk_back) then 一時停止() マウスクリック(left,465,290) next fend //--------------------------------- procedure 購入ページ移動(次ページ) 移動数 = 次ページ - 現ページ 現ページ = 次ページ ifb (移動数 < 0) 移動数 = abs(移動数) mmv(640,70,マウス間隔) for temp = 1 to 移動数 if getkeystate(vk_back) then 一時停止() マウスクリック(left,640,70) // sleep(0.1) next elseif (移動数 > 0) mmv(640,145,マウス間隔) for temp = 1 to 移動数 if getkeystate(vk_back) then 一時停止() マウスクリック(left,640,145) // sleep(0.1) next endif fend //--------------------------------- procedure 製作ページ移動(次ページ) 移動数 = 次ページ - 現製作ページ 現製作ページ = 次ページ ifb (移動数 < 0) 移動数 = abs(移動数) if (次ページ = 1) then 移動数 = 移動数 + 1 mmv(460,204,マウス間隔) for temp = 1 to 移動数 if getkeystate(vk_back) then 一時停止() マウスクリック(left,460,204) // sleep(0.1) next elseif (移動数 > 0) mmv(490,204,マウス間隔) for temp = 1 to 移動数 if getkeystate(vk_back) then 一時停止() マウスクリック(left,490,204) // sleep(0.1) next endif fend //--------------------------------- procedure ショッピング(商品,個数) ページ = int(商品 / 100) 位置 = (商品 mod 100) ifb (ページ > 0) ifb (ページ <> 現ページ) sleep(0.5) 購入ページ移動(ページ) endif sleep(0.2) ご購入(位置,個数) endif fend //--------------------------------- procedure 一時停止() repeat sleep(0.5) until getkeystate(vk_ctrl) いろいろリセット() //食事状況/ゲージ色リセット fend //--------------------------------- procedure いらっしゃいませ() ifb !(来店済) //★ マウスクリック(right,マウスX,マウスY) マウスクリック(right,マウスX,マウスY) //sleep(0.3) //★ //★ //mmv(マウスX,マウスY,マウス間隔) // mmv(マウスX,マウスY,マウス間隔) // マウスクリック(left,マウスX,マウスY) // sleep(0.5) ifb !(発言) mmv(マウスX,マウスY,マウス間隔) マウスクリック(left,マウスX,マウスY) else //主人発言 KBD(VK_ENTER,CLICK,300) //sleep(0.3) //バックスペース ifb (バックスペース) KBD(VK_BACK,CLICK,300) sleep(0.3) endif SendSTR(Fid,台詞) //sleep(0.3) KBD(VK_ENTER,CLICK,300) //sleep(0.3) endif //★ endif sleep(0.5) mmv(520,162,マウス間隔) マウスクリック(left,520,162) //買うボタンクリック //★ // sleep(0.3) // for temp = 1 to 5 // マウスクリック(left,640,70) // next //★ 現ページ = 1 fend //--------------------------------- procedure お買い上げ完了(来店状況) mmv(625,290,マウス間隔) マウスクリック(left,625,290) //キャンセルクリック sleep(0.5) ifb !(来店状況) and ((材料製作 > 0) or (購入実行 > 0)) mmv(560,280,マウス間隔) マウスクリック(left,560,280) //Exitボタンクリック 来店済 = 0 else 来店済 = 1 endif //★購入しない場合は閉じてしまう ifb !(購入実行) sleep(マウス間隔/1000) mmv(560,280,マウス間隔) マウスクリック(left,560,280) //Exitボタンクリック 来店済 = 0 endif //★ //★念のためESC //sleep(0.5) //KBD(VK_ESC,CLICK,500) //★ fend //--------------------------------- procedure 立ち食い(食事種別,食事魔法,魔法個数) select 食事種別 case 1 mmv(475,576,マウス間隔) sleep(1) マウスクリック(RIGHT,475,576) case 2 ifb (食事回数 < 5) 食事X = (478 + (32 * 食事回数)) 食事回数 = 食事回数 + 1 mmv(食事X,577) sleep(1) for temp = 0 to 5 マウスクリック(RIGHT,食事X,577) next endif case 3 mmv(700,560,マウス間隔) マウスクリック(left,700,560) sleep(0.5) //★魔法一覧出す mmv(350,580,マウス間隔) マウスクリック(left,350,580) sleep(0.5) //★ スペルキャスト(食事魔法,魔法個数) どこかに魔法(自分X,自分Y) mmv(700,560,マウス間隔) マウスクリック(left,700,560) マウスクリック(left,700,560) selend fend //--------------------------------- procedure 戦争取消() 現在秒 = gettime() ifb (G_TIME_HH = 20) and (G_TIME_NN > 56) repeat sleep(0.5) if getkeystate(vk_back) then 一時停止() until (gettime() > (現在秒 + 240)) mmv(520,430) sleep(1) マウスクリック(LEFT,520,430) sleep(1) mmv(マウスX,マウスY) sleep(1) endif fend //--------------------------------- procedure どこかに魔法(どこかX,どこかY) mmv(どこかX,どこかY,マウス間隔) sleep(2) for temp = 0 to 3 マウスクリック(RIGHT,どこかX,どこかY) next sleep(0.5) fend //--------------------------------- procedure スペルキャスト(魔法位置, 魔法個数) 魔法X = 魔法座標判定(魔法位置, 魔法個数) mmv(魔法X,485,マウス間隔) for temp = 0 to 2 マウスクリック(left,魔法X,485) next fend //--------------------------------- function 魔法座標判定(位置,魔法個数) select 魔法個数 case 1 左端 = 355 case 2 左端 = 335 case 3 左端 = 312 case 4 左端 = 288 case 5 左端 = 269 selend result = 左端 + (45 * 位置) fend