⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uconnector.pas

📁 千年源代码,只缺少控件,可以做二次开发用,好不容易得来的
💻 PAS
📖 第 1 页 / 共 4 页
字号:
   uid, upass, uname, unativenumber, umasterkey : String;
   uEmail, uPhone, uParentName, uParentNativeNumber : String;
   ucharname, uvillage, uservername : String;

   pd : PTVillageData;
begin
   Result := true;

   msg := @aComData^.Data;

   case msg^ of
      CM_VERSION :
         begin
            if FGameStatus <> gs_none then exit;

            pcVer := @aComData^.Data;
            if (pcVer^.rNation <> NATION_VERSION) or (pcVer^.rVer < PROGRAM_VERSION) then begin
               sKey.rmsg := SM_CLOSE;
               sKey.rkey := 1;
               AddSendData (@sKey, SizeOf(skey));
            end else begin
               VerNo := pcVer^.rVer;
               FClientWindow := cw_login;
               SendStatusMessage (MESSAGE_LOGIN, '楷搬登菌嚼聪促');
            end;
         end;
      CM_CHANGEPASSWORD :
         begin
            if (FGameStatus <> gs_none) or (FGameStatus = gs_changepass) then exit;

            Case PaidType of
               pt_none : begin
                  SendStatusMessage (MESSAGE_SELCHAR, '蜡历沥焊甫 掘绊 乐嚼聪促. 泪矫 扁促妨 林技夸');
                  exit;
               end;
               pt_invalidate : begin
                  SendStatusMessage (MESSAGE_SELCHAR, '公丰 荤侩磊绰 官曹 荐 绝嚼聪促');
                  exit;
               end;
            end;
            FGameStatus := gs_changepass;

            pcChangePassword := @aComData^.Data;
            pcChangePassword^.rNewPass [NAME_SIZE - 1] := 0;
            
            upass := Trim (StrPas (@pcChangePassword^.rNewPass));
            if (upass = '') or (Pos (',', upass) > 0) or (Length (upass) > 10) then begin
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_SELCHAR, '货厚剐锅龋啊 肋给 涝仿登菌嚼聪促');
               exit;
            end;
            Move (LoginData, LGRecord, SizeOf (TLGRecord));
            LGRecord.Password := uPass;
//            StrPCopy (@LGRecord.Password, upass);

            if LoginSender <> nil then begin
               LoginSender.PutPacket (ConnectID, LG_UPDATE, 0, @LGRecord, SizeOf (TLGRecord));
            end;
         end;
      CM_CREATEIDPASS :
         begin
            exit;
            {
            if (FGameStatus <> gs_none) or (FGameStatus = gs_createlogin) then exit;
            FGameStatus := gs_createlogin;
            }
         end;
      CM_CREATEIDPASS2 :
         begin
            exit;
            {
            if (FGameStatus <> gs_none) or (FGameStatus = gs_createlogin) then exit;

            pcCreateIdPass2 := @aComData^.Data;
            pcCreateIdPass2^.rID [NAME_SIZE - 1] := 0;
            pcCreateIdPass2^.rPass [NAME_SIZE - 1] := 0;
            pcCreateIdPass2^.rName [NAME_SIZE - 1] := 0;
            pcCreateIdPass2^.rNativeNumber [NAME_SIZE - 1] := 0;
            pcCreateIdPass2^.rMasterKey [NAME_SIZE - 1] := 0;

            uid := Trim (StrPas (@pcCreateIdPass2.rID));
            upass := Trim (StrPas (@pcCreateIdPass2.rPass));
            uname := Trim (StrPas (@pcCreateIdPass2.rName));
            unativenumber := Trim (StrPas (@pcCreateIdPass2.rNativeNumber));
            umasterkey := Trim (StrPas (@pcCreateIdPass2.rMasterKey));

            if (uid = '') or (Pos (',', uid) > 0) or (not isFullHangul (uid)) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '立加捞抚捞 肋给 涝仿登菌嚼聪促');
               exit;
            end;
            if (upass = '') or (Pos (',', upass) > 0) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '厚剐锅龋啊 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uname = '') or (Pos (',', uname) > 0) or (not isFullHangul (uname)) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '夯牢捞抚捞 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uNativeNumber = '') or (Pos (',', uNativeNumber) > 0) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '积斥岿老捞 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uMasterKey = '') or (Pos (',', uMasterKey) > 0) or (not isFullHangul (uMasterKey)) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '傈拳锅龋啊 肋给涝仿登菌嚼聪促');
               exit;
            end;

            FGameStatus := gs_createlogin;

            FillChar (LGRecord, SizeOf (TLGRecord), 0);
            StrPCopy (@LGRecord.PrimaryKey, uid);
            StrPCopy (@LGRecord.Password, upass);
            StrPCopy (@LGRecord.UserName, uname);
            StrPCopy (@LGRecord.IpAddr, IpAddr);
            StrPCopy (@LGRecord.MakeDate, DateToStr (Date));
            StrPCopy (@LGRecord.NativeNumber, unativenumber);
            StrPCopy (@LGRecord.MasterKey, umasterkey);

            if LoginSender <> nil then begin
               LoginSender.PutPacket (ConnectID, LG_INSERT, 0, @LGRecord, SizeOf (TLGRecord));
            end;
            }
         end;
      CM_CREATEIDPASS3 :
         begin
            if (FGameStatus <> gs_none) or (FGameStatus = gs_createlogin) then exit;

            pcCreateIdPass3 := @aComData^.Data;
            uId := Trim (pcCreateIdPass3^.rID);
            uPass := Trim (pcCreateIdPass3^.rPass);
            uName := Trim (pcCreateIdPass3^.rName);
            uNativeNumber := Trim (pcCreateIdPass3^.rNativeNumber);
            uMasterKey := Trim (pcCreateIdPass3^.rMasterKey);
            uEmail := Trim (pcCreateIdPass3^.rEmail);
            uPhone := Trim (pcCreateIdPass3^.rPhone);
            uParentName := Trim (pcCreateIdPass3^.rParentName);
            uParentNativeNumber := Trim (pcCreateIdPass3^.rParentNativeNumber);

            if (uId = '') or (Pos (',', uId) > 0) or (not isFullHangul (uId)) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '立加捞抚捞 肋给 涝仿登菌嚼聪促');
               exit;
            end;
            if (uPass = '') or (Pos (',', uPass) > 0) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '厚剐锅龋啊 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uName = '') or (Pos (',', uName) > 0) or (not isFullHangul (uName)) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '夯牢捞抚捞 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uNativeNumber = '') or (Pos (',', uNativeNumber) > 0) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '积斥岿老捞 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uMasterKey = '') or (Pos (',', uMasterKey) > 0) or (not isFullHangul (uMasterKey)) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '凯艰窜绢啊 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uEmail = '') or (Pos (',', uEmail) > 0) or (not isFullHangul (uEmail)) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, 'e-mail捞 肋给涝仿登菌嚼聪促');
               exit;
            end;
            if (uPhone = '') or (Pos (',', uPhone) > 0) then begin
               SendStatusMessage (MESSAGE_CREATELOGIN, '傈拳锅龋啊 肋给涝仿登菌嚼聪促');
               exit;
            end;

            if uParentNativeNumber <> '-' then begin
               if (uParentName = '') or (Pos (',', uParentName) > 0) or (not isFullHangul (uParentName)) then begin
                  SendStatusMessage (MESSAGE_CREATELOGIN, '何葛丛捞抚捞 肋给涝仿登菌嚼聪促');
                  exit;
               end;
               if (uParentNativeNumber = '') or (Pos (',', uParentNativeNumber) > 0) then begin
                  SendStatusMessage (MESSAGE_CREATELOGIN, '何葛丛 林刮殿废锅龋啊 肋给涝仿登菌嚼聪促');
                  exit;
               end;
            end;

            FGameStatus := gs_createlogin;

            FillChar (LGRecord, SizeOf (TLGRecord), 0);

            LGRecord.PrimaryKey := uId;
            LGRecord.PassWord := uPass;
            LGRecord.UserName := uName;
            LGRecord.NativeNumber := uNativeNumber;
            LGRecord.MasterKey := uMasterKey;
            LGRecord.Email := uEmail;
            LGRecord.Phone := uPhone;
            LGRecord.ParentName := uParentName;
            LGRecord.ParentNativeNumber := uParentNativeNumber;
            LGRecord.IpAddr := IpAddr;
            LGRecord.MakeDate := DateToStr (Date);

            if LoginSender <> nil then begin
               LoginSender.PutPacket (ConnectID, LG_INSERT, 0, @LGRecord, SizeOf (TLGRecord));
            end;
         end;
      CM_IDPASS :
         begin
            if (FGameStatus <> gs_none) or (FGameStatus = gs_login) then exit;

            if frmMain.sckLoginConnect.Socket.Connected = false then begin
               SendStatusMessage (MESSAGE_LOGIN, '了价钦聪促. 泪矫饶 促矫 楷搬秦 林技夸');
               exit;
            end;

            FGameStatus := gs_login;

            if boCheckPaidInfo = false then begin
               PaidType := pt_validate;
               Code := 0;
            end;

            pcIdPass := @aComData^.data;
            pcIdPass^.rID [NAME_SIZE - 1] := 0;
            pcIdPass^.rPass [NAME_SIZE - 1] := 0;

            LoginID := Trim (StrPas (@pcIdPass^.rID));
            LoginPW := Trim (StrPas (@pcIdPass^.rPass));

            if (LoginID = '') or (LoginPW = '') then begin
               LoginID := '';
               LoginPW := '';
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_LOGIN, '沥犬洒 涝仿秦 林技夸');
               exit;
            end;

            if (LimitUserCount > 0) and (LimitUserCount <= ConnectorList.PlayingUserCount) then begin
               if IpAddr <> '203.227.29.65' then begin
                  if (LoginID <> 'ypinetree') and (LoginID <> 'pinetree') then begin
                     FGameStatus := gs_none;
                     LoginID := '';
                     LoginPW := '';
                     SendStatusMessage (MESSAGE_LOGIN, '立加牢盔捞 檬苞登菌嚼聪促');
                     exit;
                  end;
               end;
            end;

            FillChar (LGRecord, SizeOf (TLGRecord), 0);
//            StrPCopy (@LGRecord.PrimaryKey, LoginID);
            LGRecord.PrimaryKey := LoginID;

            if LoginSender <> nil then begin
               LoginSender.PutPacket (ConnectID, LG_SELECT, 0, @LGRecord.PrimaryKey, SizeOf (LGRecord.PrimaryKey));
            end;
         end;
      CM_IDPASSAZACOM :
         begin
            if (FGameStatus <> gs_none) or (FGameStatus = gs_login) then exit;

            if frmMain.sckLoginConnect.Socket.Connected = false then begin
               SendStatusMessage (MESSAGE_LOGIN, '了价钦聪促. 泪矫饶 促矫 楷搬秦 林技夸');
               exit;
            end;

            FGameStatus := gs_login;

            PaidType := pt_timepay;

            pcIdPass := @aComData^.data;
            pcIdPass^.rID [NAME_SIZE - 1] := 0;
            pcIdPass^.rPass [NAME_SIZE - 1] := 0;

            LoginID := Trim (StrPas (@pcIdPass^.rID));
            LoginPW := Trim (StrPas (@pcIdPass^.rPass));

            FillChar (LGRecord, SizeOf (TLGRecord), 0);
//            StrPCopy (@LGRecord.PrimaryKey, LoginID);
            LGRecord.PrimaryKey := LoginID;

            if LoginSender <> nil then begin
               LoginSender.PutPacket (ConnectID, LG_SELECT, 0, @LGRecord.PrimaryKey, SizeOf (LGRecord.PrimaryKey));
            end;
         end;
      CM_CREATECHAR :
         begin
            if (FGameStatus <> gs_none) or (FGameStatus = gs_createchar) then exit;

            {
            if (LimitUserCount > 0) and (ServerName = '角氰') then begin
               SendStatusMessage (MESSAGE_SELCHAR, '角氰辑滚俊 歹 捞惑 某腐磐甫 父甸 荐 绝嚼聪促');
               exit;
            end;
            }

            Case PaidType of
               pt_none : begin
                  SendStatusMessage (MESSAGE_SELCHAR, '蜡历沥焊甫 掘绊 乐嚼聪促. 泪矫 扁促妨 林技夸');
                  exit;
               end;
               pt_invalidate : begin
                  SendStatusMessage (MESSAGE_SELCHAR, '公丰 荤侩磊绰 父甸 荐 绝嚼聪促.');
                  exit;
               end;
            end;

            FGameStatus := gs_createchar;

            boFlag := false;
            for i := 0 to 5 - 1 do begin
//               if LoginData.CharInfo[i].CharName[0] = 0 then begin
               if LoginData.CharInfo[i].CharName = '' then begin
                  boFlag := true;
                  break;
               end;
            end;
            if boflag = false then begin
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_SELCHAR, '歹捞惑 某腐磐甫 父甸 荐 绝嚼聪促');
               exit;
            end;

            pcCreateChar := @aComData^.data;
            pcCreateChar^.rChar [NAME_SIZE - 1] := 0;
            pcCreateChar^.rVillage [NAME_SIZE - 1] := 0;
            pcCreateChar^.rServer [NAME_SIZE - 1] := 0;

            ucharname := Trim (StrPas (@pcCreateChar^.rChar));
            uvillage := Trim (StrPas (@pcCreateChar^.rVillage));
            uservername := Trim (StrPas (@pcCreateChar^.rServer));

            for i := 0 to RejectCharName.Count - 1 do begin
               if Pos (RejectCharName.Strings[i], ucharname) > 0 then begin
                  FGameStatus := gs_none;
                  SendStatusMessage (MESSAGE_SELCHAR, '某腐磐疙栏肺 荤侩且 荐 绝嚼聪促');
                  exit;
               end;
            end;

            if Length (ucharname) > 12 then begin
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_SELCHAR, '某腐磐疙狼 弥措辨捞绰 茄臂 6臂磊涝聪促');
               exit;
            end;
            if (ucharname [1] >= '0') and (ucharname [1] <= '9') then begin
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_SELCHAR, '某腐磐疙狼 贸澜俊 箭磊甫 荤侩且 荐 绝嚼聪促');
               exit;
            end;
            if (ucharname [Length (ucharname)] >= '0') and (ucharname [Length (ucharname)] <= '9') then begin
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_SELCHAR, '某腐磐疙狼 场俊 箭磊甫 荤侩且 荐 绝嚼聪促');
               exit;
            end;
            if (ucharname = '') or (Pos (',', ucharname) > 0) then begin
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_SELCHAR, '某腐磐疙栏肺 荤侩且 荐 绝嚼聪促');
               exit;
            end;
            if (not isFullHangul (ucharname)) or (not isGrammarID(ucharname)) then begin
               FGameStatus := gs_none;
               SendStatusMessage (MESSAGE_SELCHAR, '漂荐巩磊 酒捞叼绰 父甸 荐 绝嚼聪促');
               exit;
            end;

            FillChar (DBRecord, SizeOf (TDBRecord), 0);
            DecodeDate (Date, nYear, nMonth, nDay);
            with DBRecord do begin
               StrPCopy (@PrimaryKey, ucharname);
               StrPCopy (@MasterName, LoginData.PrimaryKey);
               // Guild : array [0..20 - 1] of byte;
               StrPCopy (@LastDate, format ('%d-%d-%d', [nYear, nMonth, nDay]));
               StrPCopy (@CreateDate, format ('%d-%d-%d', [nYear, nMonth, nDay]));

               if pcCreateChar^.rSex = 0 then StrPCopy (@Sex, '巢')
               else StrPCopy (@Sex, '咯');

               ServerID := 0;
               X := 534;
               Y := 574;

               for i := 0 to VillageList.Count - 1 do begin
                  pd := VillageList.Items [i];
                  if pd^.Name = uvillage then begin
                     ServerID := pd^.ServerID;
                     X := pd^.X;
                     Y := pd^.Y;
                     break;
                  end;
               end;

               {
               Light : Integer;
               Dark : Integer;
               Energy : Integer;
               InPower : Integer;
               OutPower : Integer;
               Magic : Integer;
               Life : Integer;

               Talent : integer;
               GoodChar : integer;
               BadChar : integer;

               Adaptive : integer;
               Revival : integer;
               Immunity : integer;
               Virtue : integer;
               }

               CurHeadSeek := 2200;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -