public boolean Load(String name) {
		if (name.length() > 16) {  //FIXME:
			Params.last_script = name.substring(0, 16);
		} else {
			Params.last_script = name;
		}
		trace("Params.last_script = " + Params.last_script);		
		switch (LoadFile(name)) {
		case FileCannotOpen:
			Parent.MessageBox("脚本 [" + name + "] 无法开启。");
			return false;
		
		case NotEnoughMemory:
			Parent.MessageBox("内存不足, 无法读取脚本[" + name + "]。");
			return false;
		
		case FileCannotRead:
			Parent.MessageBox("无法读取脚本。[" + name + "]");
			return false;
		}
		trace("CScriptAction::Load " + " " + "LoadFile(\"" + name + "\") success");
		byte[] bytes = new byte[8];
		script_buffer.position(0); // FIXME:
		script_buffer.get(bytes);
		//trace("CScriptAction::Load() magic[8] == " + Arrays.toString(bytes));
		String magic = null;
		try {
			magic = new String(bytes, "gbk");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		int ncommand = script_buffer.getInt();
		trace("magic == " + magic);
		trace("ncommand == " + ncommand);
		if (!ScriptType.SCRIPT_MAGIC.equals(magic)) {
			Parent.MessageBox("没有脚本数据。[" + name + "]");
			return false;
		}
		trace("CScriptAction::Load " + "magic correct"); 
		current.ncommand = ncommand;
		current.commands = script_buffer.position();
		this.position = 0;
		return true;
	}