由于藥材被采集之后需要一段時間后才能重新生長出來,因此,如果長時間在一個位置附近采集,必然最終會導致視野范圍內所有藥材被采集完畢。此時,可以讓程序驅動角色移動到另一片區域。
那么如何選擇移動方向可以隨機選擇一個方向直線前進,直到視野范圍內出現可以采集的藥材為止。
當然,這樣的搜索方式有些笨,效率不一定高。不過作為第一版程序,先采用這個笨辦法也無妨,后續可以改進。
程序設計的大致思路就是如此。
關于采集的具體過程,程序面臨兩個問題需要解決一是采集藥材的過程中會有小怪騷擾糾纏,二是有可能容易遭遇敵對玩家攻擊。三是野外也有一定的小概率出現精英怪物,以及周日出現的世界boss。
關于第一個問題,相對于襄王的戰力水平而言,野外的普通怪物對人物攻擊造成的傷害非常有限,不會致命,襄王原本可以不用理會。但問題是,采集一顆草藥的動作過程,需要35秒的時間,在這個時間內,如果遭到野外小怪的攻擊,則動作被打斷則會導致采集失敗。所以程序要做的是如果檢測到遭到角色正在遭受小怪騷擾攻擊,那么先啟動戰斗功能殺死怪物。
這里的戰斗功能設計并不難,因為需要對付的是戰斗力不高的普通小怪,不需要講究戰斗策略,只要簡單的按順序循環施放所有攻擊技能即可。可以照搬演奏家的“硬懟”戰斗模式。
關于第二個問題,因為孫軼民的仇家不多,因此出現這個情況的概率不高。他暫時不做考慮。
而且,應對這種情況的程序設計會比較復雜,就如同幫助柳榮華設計的刺客程序一般,他需要根據自己霸王的職業特點,以及戰斗對手的職業特點,制定專用的戰斗策略。因為戰斗對手可能是任何職業的,因此這個程序涉及到的內容就比較繁瑣復雜,設計也比較費時間,他暫時不做考慮。
如若真遇到玩家挑釁攻擊,那么一個簡單的處理方案就是讓角色先逃跑回到安全區。然后換一個地方繼續采集。畢竟賺錢比打架重要。
關于第三個問題。同樣采取躲避措施,精英怪物的攻擊與防御能力都高于普通怪物,光憑襄王一個人很難應付,即便能殺死它,也會耗費大量時間。
世界boss更不用說了。所以,遇到這種情況就先逃跑。直到把怪物甩開,換一個地方繼續采集。
另外,因為考慮到采摘之后要拾取藥材到包裹里,孫軼民將原有小跟班程序的代碼功能合并了進來。于是,不管是采集的藥材,還是打小怪掉落的物品,程序都會都自動拾取到包裹里。
經過初步思考,程序的可行性得到了論證。
這個思考過程讓他也聯想到了,網上其實也存在一些類似的輔助工具,諸如“按鍵精靈”。它們也能通過預設的腳本來完成一定的自動化任務,但是僅限于完成一些簡單的機械化操作。
這些輔助程序和孫軼民要制作的這個程序有著本質區別它們無法解讀游戲服務器反饋過來的數據,從而不能應付野外采集這樣的復雜功能。
舉例來說,按鍵精靈無法判斷野外藥草隨機生長的位置,也無法獲取角色自身所處的位置,生命值,周圍的怪物情況等等信息。沒有這些信息,自然無法實現自動采集。
而孫軼民開發的輔助程序是基于對服務器返回數據的解讀的,所以就能做出各種智能化的操作,因而能應付自動采集藥材這樣的復雜任務。
說干就干,他打開了vc60,迅速建好了程序框架。他給程序取名“采集精靈”,設定兩個快捷鍵f11啟動采集,f12暫停采集。
接著便開始寫具體代碼。
明日是周日無需上班,這一晚他滿懷激情馬不停蹄得工作了夜里3點,終于完成了自動采集程序的初步代碼。
然后做了一番簡單的測試他將襄王前往蟠龍山,然后啟動程序,讓它開始自動采集這里的7級藥材,然后自己去煮了一包泡面吃。
吃完回來看了一下,包裹里已經有了幾顆草藥。雖然不多,但這是他程序自動勞動的成果,這樣的成果令他心中充滿了興奮與期待。
睡前,他讓采集精靈繼續通宵工作,等待明早驗證實際運作效果。他自己則帶著興奮上床,好不容易才睡去。,,