ing): Boolean; //取好友农场数据 function GetFriendFarmLandDB(aIdHTTP: TIdHTTP; aUserID: integer; var aWebStr: string): Boolean; //计算等级 返回等级 function ResultLevel(aSumExp:integer; var aNowExp, aOutLevelMaxExp: integer): integer; //分析仓库商店背包数据 aType 0仓库1商店2背包 function PostBagsBD(aIdHTTP:TIdHTTP; var aWebStr: string; aType: TBagsType): boolean;
//动作类型 0偷取 1杀虫 2浇水 3除草 4收获 // 5松土 6种植 7全部卖出 8购买种子 // 9查看消息 10所有动作(在PostAction中没有实现义意,不作操作) // //aActionType动作类型 是种植\卖出\购买种子还是做什么在此赋值 //aOwnerId是自己的UserID 必须为自己的UserID //aPlace为地块的序号,从0开始 不用时可为0 //aSeedID 为作物\种子的aID 种植\卖出\购买种子时用到 不用时可为0 function PostAction(aIdHTTP: TIdHTTP; var aWebStr: string; aActionType: TActionType; aOwnerId, aPlace, aSeedID: integer): boolean; //取得farmKey function GetfarmKey(aInputTimeInt: Int64; var aFarmTime: int64; var aFarmKey: string): Boolean; //写日志文件 procedure WriteLog(aQQnum, aLogStr, aAppPah: String); implementation
//将本地时间转成QQ服务器时间 getTime() 方法傳回從 1970 年 1 月 1 日午夜開始計 算的毫秒數 function DateTimeToServerTime(aDateTime: TDateTime): integer; begin Result:= DateTimeToUnix(aDateTime)-28800; end; //提取字符串 function SubString(aInputStr, aStr_L, aStr_R:string):string; var sPosB,sPosE:integer; Lwhtml,LwCstr_L,LwCstr_R:string; begin Result:='';
if Trim(aInputStr)='' then Exit; Lwhtml:= LowerCase(aInputStr); LwCstr_L := LowerCase(aStr_L); LwCstr_R := LowerCase(aStr_R); sPosB:= Pos(LwCstr_L, Lwhtml) + Length(LwCstr_L); sPosE:= PosEx(LwCstr_R, Lwhtml, sPosB); if (sPosB
0) then Result:=Copy(aInputStr, sPosB, sPosE-sPosB); end; function HashStr2BinStr(Hash:string):string; var buf:array[0..63] of Char; i:Integer; begin Result:=''; FillChar(buf, SizeOf(buf),0); SetLength(Result, Round(Length(Hash)/2)); FillChar(Result[1], Length(Result),0); HexToBin(PChar(Hash), buf,SizeOf(buf)); for i:=0 to Round(Length(Hash)/2)-1 do Result:= buf; end; function Fmd5(str:string):string; var md5 : TIdHashMessageDigest5; longWordRec : T4x4LongWordRecord; begin md5 := TIdHashMessageDigest5.Create; try {$IFDEF ID10} Result:= md5.HashStringAsHex(str); {$ELSE} longWordRec:= md5.HashValue(str); Result:= md5.AsHex(longWordRec); {$ENDIF} finally md5.Free; end; end; function md5_3(str:string):string; begin Result:= Fmd5(str); Result:= HashStr2BinStr(Result); Result:= Fmd5(Result); Result:= HashStr2BinStr(Result); Result:= Fmd5(Result); end;
function Preprocess(aPassWord, aVerif
yCode:string):string; begin Result:= Fmd5(md5_3(aPassWord) + UpperCase(aVerifyCode)); end; //取得Flash版本 procedure GetFlaseVersion(var aStr: string); var tmpGerVersion: string; tmpIdHTTP: TIdHTTP; RespData: TStringStream; begin try RespData:= TStringStream.Create(''); tmpIdHTTP:= TIdHTTP.Create(Application); tmpGerVersion:= Const_Flase_Version+'ini.xml'; tmpIdHTTP.Get(tmpGerVersion, RespData); tmpGerVersion:= Utf8ToAnsi(RespData.DataString); tmpGerVersion:= SubString(tmpGerVersion, 'name="main" url="module/', '"'); if pos('Main.swf?v=', tmpGerVersion)=0 then tmpGerVersion:= 'Main.swf?v=57'; aStr:= Const_Flase_V