Skip to content

Latest commit

 

History

History
352 lines (200 loc) · 10.4 KB

README.en.md

File metadata and controls

352 lines (200 loc) · 10.4 KB

MAClient is a full-featured client for Million Arthur. Currently support Mobimon server(tw), SNDA server(cn), Actoz server(kr), Japan server(jp), and Cherry server(sg).

Switch to dev for latest code(may be unstable).

##Documents

For History

Plugin document

##Running

###Windows

Windows users can obtain pre-bundled binary files from here or from release

Tip1:Make sure path only contais ASCII characters, this is a bug from pyinstaller.

Tip2:If you're using kr server or jp server on Chinese or English version of Windows, try use NiceTerm(Terminal Emulator) in MAClientGUI

###Web version

MAClient runs on a browser that is websocket ready chaojibangRunning demo

###Android

Refer to Run MAClient on Android Devices

###Linux/OS X/what else Install httplib2 from here or from PIP,and PyCrypto. You need python-devel and a working toolchain to build PyCrypto from source code.

sudo pip install httplib2 Crypto

####KR Server dependency library Refer to release for a download. This library is not opensource at thie time.

MAClient runs on python2.x (Recommand) and 3.x

git clone --recursive https://github.com/fffonion/MAClient.git
cd httplib2
python setup.py install

The httplib2 submodule is for py2x; for py3x, download here

python MAClient_cli.py
python MAClient_cli.py [config file]
python MAClient_cli.py [config file] [task]/[commands]

Compile maclient_smart to C extension to get faster auto_set speed. Before running the following command, you need to install Cython, python-devel, and a working toolchain.

python build_cython_ext.py build_ext --inplace

##Configuration

Refer to config_sample.ini,or herefor some configured files.

You can also use MAClientGUI, a handy configrating tool. Download Source code


###account_?

? can be either cn,cn2,cn3,tw,kr,jp,sg, which means: Mobimon server(tw), SNDA server(cn), Actoz server(kr), Japan server(jp), and Cherry server(sg).

####username, password you know

####session, user_id ignore

###carddeck

####carddeck list

The value can be either card id or serial id. Serial id differs from user to user.

eg:

min=124 #Second - Bisclavret
factor=93714777,54276719

Please make sure min item is for lick fairy, so that save_traffic mode works well.

lick fairy means only touch the fairy to get minimun damage and reward.

###system

System Configurations

####server

server code cn,cn2,cn3,tw,kr,jp,sg

####loglevel

int from 0-6, 0 for debug output

####taskname

the task name from keys in tasker section, use | to split multiple tasks

####tasker_times

the loop time when doing a task, 0 = infinite

####try_factor_time

the loop time when refreshing factor battle list, 0 = infinite

####factor_sleep

the sleep interval when refreshing factor battle list

####explore_sleep

the sleep interval when exploring

####fairy_battle_times

the loop time when refreshing fairy list, 0 = infinite

####fairy_battle_sleep

the sleep interval of refreshing fairy list. eg:0,5,3|5,10,2 means sleep 3 min when it's between 05 o'clock, and 2 min between 510 o'clock. Otherwise, sleep 1.5 min by default

####fairy_battle_times

the factor of sleep interval of refreshing fairy list. factor * the_sleep_time_in_fairy_battle_sleep = real_sleep_time

####delay

delay between two POST request, will show WARNING if set to 0

####allow_long_sleep

whether long time sleep is allowed. on some OS, long time sleeping in the background may call the process to be killed.

####reconnect_gap

when to reconnect if the server returns cookie expired. two format is supported

(1)int, reconnect in INT minutes

(2)HH:MM, reconnect at system time HH:MM

###tactic

the tactics

####auto_explore

whether explore area automatically (following rules in explore_areaexplore_floor), 1 by default

####auto_green_tea, auto_red_tea

the limit of auto using potion. set to 0 to disable auto using potion

####auto_red_tea_level

use red potion in what situation 1.all wake fairies,2.all normal fairies,0.disabled

####auto_choose_red_tea

whether choose red potion type automatically. if a half potion meets battle cost, then use half potion

####strict_bc

if enabled, a no bc break will be raised if BC left < battled cost, this will lead to auto using potion or aborting battle(only fairy battled is affected)

####auto_sell_card

whether sell card automatically when card package is full, following select_card_to_sell

####auto_fp_gacha

whether run friendship gacha automatically when friendship point is 99% of the limit.

####fp_gacha_bulk

whether run bulk friendship gacha (10 cards a time)

####auto_build

whether auto compound cards in explore and friendship gacha

####auto_fairy_rewards

automatically get fairy rewards

####sell_card_warning

value 2:warns all ,1:warns for R+,0:no warning

####del_friend_day

delete friends that is not login for ? days

####fairy_final_kill_hp

beat the fairy again if the fairy's hp is lower than ?

20000 by default

###tasker

setup tasks; it's a Moore state machine

You can specify multiple action expressions with | as seperator; seperate command and args using SPACE in single expression

Command list:

login login/l, set carddeck set_card/sc, factor battle factor_battle/fcb, explore dungeon explore/e, refresh fairy list to beat fairy_battle/fyb, use potion red_tea/rt green_tea/gt, sell card sell_card/slc, select server set_server/ss, friend menu friend/f, gacha gacha/g,set free points point/p, get rewardbox rewardbox/rb, manually select fairy to beat fairy_select/fs, re-login relogin/rl, greet friends like/greet/gr

Expression starts with t: means this is a task

Append argumentss after explore, sell_card to specify instant condition, or the action will be performed as what's in condition section in config file; factor_battle has an optional int arg to specify minimun BC left, default to 0; fairy_battle has an optional int arg to specify refresh times, default to fairy_battle_times in config file

如:

login heheh 123456 #login
set_server cn|set_card factor|factor_battle #set cn server, set carddeck "factor", do factor battle
ss cn|sc factor|fcb #abbreviation version
explore 'ooxx' in area.name # explore area "ooxx"
fcb l:1 70 OR fcb lake:1 70# do factor battle with factor id 1, exit when BC less than 70

Refer to COMMANDS Document for details

###condition

Globals:

HH current hour(24-hour format)
MM current minute
BC left BC
BC% left BC as percent, like 0.22
AP left AP
AP% left AP as percent, like 0.12
SUPER super value
GOLD gold value
FP friendship point value
FAIRY_ALIVE whether player's fairy is alive
GUILD_ALIVE whether guild fairy is alive

PS: You must enter the fairy list at once (use fairy_battle/fyb or fairy_select/fs) to get the value of FAIRY_ALIVE and GUILD_ALIVE

PPS: When subject of a expression is single, you can use $ to replace it.

eg. in explore_area expressions, $.IS_EVENT and area.IS_EVENT are equal

####factor factor battle expression

values:

star: leader card star

cid: leader card id

eg:

start ==1 or star ==2 OR star in [1,2] #leader card star is 1 or 2
cid in [124,8,256] #leader card id is 124,8 or 256:

####explore_area area expression, | split areas with descending priority, empty to select randomly

values: area

properties:

IS_EVENT, IS_DAILY_EVENT, IS_GUILD, NOT_FINNISHED, name

eg.:

area.IS_EVENT and area.NOT_FINNISHED #select an event and unfinnished area
area.name == 'ooooo' #select 'ooooo'
area.NOT_FINNISHED | area.IS_EVENT #select an unfinnished area; if none, select an event area
area.NOT_FINNISHED | #select an unfinnished area; if none, select randomly

####explore_floor area expression, | split floors with descending priority, empty to select randomly

values:floor

properties:

NOT_FINNISHED, cost

eg.:

floor.cost<6 and floor.NOT_FINNISHED #select a floor with cost less than 6 and is unfinnished
floor.cost<3 | #select a floor with cost less than 3; if none, select randomly

####fairy_select select which fairies

values:fairy

properties:

IS_MINE, LIMIT(in seconds), NOT_BATTLED, lv(level), IS_WAKE, IS_WAKE_RARE, IS_GUILD

eg.:

not fairy.IS_MINE and fairy.LIMIT<600 and fairy.NOT_BATTLED

####fairy_select_carddeck select which carddeck when encounting a fairy

values:fairy

properties:

lv, hp, name, IS_MINE, TIME_LIMIT(in seconds), IS_WAKE, IS_WAKE_RARE, IS_GUILD

You can only use ternary expressions: EXP and TRUE-ACTION or FALSE-ACTION or TRUE-ACTION if EXP else FALSE-ACTION, can be nested; card deck name should be wrapped in quote, and is set in carddeck section in config file

special carddeck names are:

do not change the carddeck no_change, let the fairy escape letitgo, abort beating fairy abort

eg.:

fairy.hp>200000 and 'tiandao' or 'full' OR 'tiandao' if fairy.hp>200000 else 'full' #if fairy hp>200000的, then use carddeck "tiandao", else "full"

####select_card_to_sell select which cards to sell

values: card

properties:

star, lv, sid(serial id), mid(card master id),price(sell price), holo(is holography card)

eg:

card.star in [1,2] and card.lv<5 and card.mid != 124 and not card.holo

PS:All Cherrys are excluded.

####select_card_as_food As former, but no exclusion of Cherrys

####select_card_to_feed As former, but no warning of R+ card (of course)