亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? charasel.pas

?? 仙境傳說(RO)私人服務器端源代碼。第一次上傳。
?? PAS
字號:
unit CharaSel;



interface

uses
//Windows, Forms, Classes, SysUtils, Math, ScktComp, Common;
	Windows, SysUtils, ScktComp, Common;

//==============================================================================
// 娭悢掕媊
		procedure sv2PacketProcess(Socket: TCustomWinSocket);
//==============================================================================










implementation
//==============================================================================
// 僉儍儔僙儗僒乕僶乕僷働僢僩張棟
procedure sv2PacketProcess(Socket: TCustomWinSocket);
var
	cmd   :word;
	cnt   :integer;
	i,j,k :integer;
	w     :word;
	l     :cardinal;
	id1   :cardinal;
	id2   :cardinal;
	b     :byte;
	bb    :array[0..5] of byte;
	len   :integer;
	str1  :string;
	tp    :TPlayer;
  tp1   :TPlayer;
	tc    :TChara;
  tc1   :TChara;
        count:integer;
        count2:integer;
{NPC僀儀儞僩捛壛}
	mi    :MapTbl;
{NPC僀儀儞僩捛壛僐僐傑偱}
begin
	len := Socket.ReceiveLength;
	if len >= 2 then begin
		Socket.ReceiveBuf(buf, len);
		RFIFOW(0, cmd);
		case cmd of
    $0064:
      begin
//WFIFOL( 2, tp.ID);
//WFIFOB( 6, tp.Login);
//WFIFOB( 7, tp.Gender);
//WFIFOW( 8, tp.ver2);
//WFIFOB( 10, tp.GMMode);
//WFIFOL( 11, tp.LoginID1);
//WFIFOL( 15, tp.LoginID2);
				RFIFOL( 2, l);
        if (Player.IndexOf(l) = -1) then begin
           count2 := 0;
           tp1 := TPlayer.Create;
           tp1.ID := l;
           RFIFOB( 6, tp1.Login);
           RFIFOB( 7, tp1.Gender);
           RFIFOW( 8, tp1.ver2);
           RFIFOB( 10, tp1.GMMode);
           RFIFOL( 11, tp1.LoginID1);
           RFIFOL( 15, tp1.LoginID2);
           PlayerName.AddObject(tp1.Name, tp1);
           Player.AddObject(tp1.ID, tp1);
           for i := 0 to charaname.Count -1 do begin
             tc1 := CharaName.Objects[i] as TChara;
             if (tc1.ID = tp1.ID) then begin
               tp1.CData[count2] := tc1;
					     tp1.CData[count2].CharaNumber := count2;					     tp1.CData[count2].ID := tp1.ID;					     tp1.CData[count2].Gender := tp1.Gender;
               count2 := count2 + 1;
             end;
           end;
        end else begin
          tp1 := Player.IndexOfObject(l) as TPlayer;
          tp1.ID := l;
          RFIFOB( 6, tp1.Login);
          RFIFOB( 7, tp1.Gender);
          RFIFOW( 8, tp1.ver2);
          RFIFOB( 10, tp1.GMMode);
          RFIFOL( 11, tp1.LoginID1);
          RFIFOL( 15, tp1.LoginID2);
        end;
      end;
		$0065: //僉儍儔僙儗嶪愙懕梫媮
			begin
				RFIFOL( 2, l);
				str1 := IntToStr(l);
				RFIFOL( 6, id1);
				RFIFOL(10, id2);
				if Player.IndexOf(l) <> -1 then begin
					tp := Player.IndexOfObject(l) as TPlayer;
					//if tp.IP = Socket.RemoteAddress then begin
					if (tp.LoginID1 = id1) and (tp.LoginID2 = id2) and (tp.LoginID1 <> 0) then begin
						Socket.Data := tp;
						
						WFIFOL(0, $00000000);
						Socket.SendBuf(buf, 4);

						ZeroMemory(@buf[4], 24);
						WFIFOW(0, $006b);
						cnt := 0;

						if tp.ver2 = 9 then w := 24 else w := 4;
						if tp.ver2 = 9 then j := 5 else j := 3;
						for i := 0 to j - 1 do begin
							if tp.CData[i] <> nil then begin
								ZeroMemory(@buf[w+(cnt*106)], 106);
								tc := tp.CData[i];
								tc.IP := Socket.RemoteAddress;
								tc.tmpMap := '';
								CalcStat(tc);
								for k := 1 to 330 do begin
									tc.Skill[k].Tick := 0;
								end;
								tc.SkillTick := $FFFFFFFF;
								tc.Option := tc.Option and $FFFE;
								with tc do begin
									WFIFOL(w+(cnt*106)+  0, CID);
									WFIFOL(w+(cnt*106)+  4, BaseEXP);
									WFIFOL(w+(cnt*106)+  8, Zeny);
									WFIFOL(w+(cnt*106)+ 12, JobEXP);
									WFIFOL(w+(cnt*106)+ 16, JobLV);
									WFIFOL(w+(cnt*106)+ 20, 0);
									WFIFOL(w+(cnt*106)+ 24, 0);
									WFIFOL(w+(cnt*106)+ 28, Option);
									WFIFOL(w+(cnt*106)+ 32, Karma);
									WFIFOL(w+(cnt*106)+ 36, Manner);

									WFIFOW(w+(cnt*106)+ 40, StatusPoint);
									WFIFOW(w+(cnt*106)+ 42, HP);
									WFIFOW(w+(cnt*106)+ 44, MAXHP);
									WFIFOW(w+(cnt*106)+ 46, SP);
									WFIFOW(w+(cnt*106)+ 48, MAXSP);
									WFIFOW(w+(cnt*106)+ 50, Speed);
									WFIFOW(w+(cnt*106)+ 52, JID);
									WFIFOW(w+(cnt*106)+ 54, Hair);
									WFIFOW(w+(cnt*106)+ 56, Weapon);
									WFIFOW(w+(cnt*106)+ 58, BaseLV);
									WFIFOW(w+(cnt*106)+ 60, SkillPoint);
									WFIFOW(w+(cnt*106)+ 62, Head3); //Head
									WFIFOW(w+(cnt*106)+ 64, Shield);
									WFIFOW(w+(cnt*106)+ 66, Head1);
									WFIFOW(w+(cnt*106)+ 68, Head2);
									WFIFOW(w+(cnt*106)+ 70, HairColor);
									WFIFOW(w+(cnt*106)+ 72, ClothesColor);

									WFIFOS(w+(cnt*106)+ 74, Name, 24);

									for k := 0 to 5 do
										WFIFOB(w+(cnt*106)+98+k, ParamBase[k]);
									WFIFOB(w+(cnt*106)+104, CharaNumber);
									WFIFOB(w+(cnt*106)+105, 0);
									Inc(cnt);
								end;
							end;
						end;
						WFIFOW(2, w + cnt * 106);
						Socket.SendBuf(buf, w + cnt * 106);
					end;
				end;
			end;
		$0066: //僉儍儔僋僞慖戰梫媮
			begin
				if Socket.Data = nil then exit;
				tp := Socket.Data;
                                {2廳儘僌僀儞僠僃僢僋}
                                    count := 0;
                                    while count < 8 do
                                    begin
                                      if (tp.CData[count] <> nil)and(tp.CData[count].Login <> 0) then
                                      begin
                                        //DebugOut.Lines.Add('2廳儘僌僀儞偝傟傑偟偨丅');
                                        //2廳儘僌僀儞
			        	      WFIFOW( 0, $0081);
			       	              WFIFOB( 2, 08);
			         	      tp.CData[count].Socket.SendBuf(buf, 3);
                                      end;
                                      inc(count);
                                    end;
                                  {2廳儘僌僀儞僠僃僢僋丂偙偙傑偱}

				RFIFOB(2, b);
				if b > 4 then exit;
				if tp.CData[b] <> nil then begin
					tc := tp.CData[b];
{NPC僀儀儞僩捛壛}
					i := MapInfo.IndexOf(tc.Map);
					j := -1;
					if (i <> -1) then begin
						mi := MapInfo.Objects[i] as MapTbl;
						if (mi.noSave = true) then j := 0;
					end;
					if (j = 0) then begin
						tc.Map := tc.SaveMap;
						tc.Point.X := tc.SavePoint.X;
						tc.Point.Y := tc.SavePoint.Y;
					end;
{NPC僀儀儞僩捛壛僐僐傑偱}
					WFIFOW(0, $0071);
					WFIFOL(2, tc.CID);
					WFIFOS(6, tc.Map + '.rsw', 24);
					WFIFOL(22, ServerIP);
					WFIFOW(26, sv3port);
					Socket.SendBuf(buf, 28);
				end;
			end;
		$0067: //僉儍儔嶌惉梫媮
			begin
				if Socket.Data = nil then exit;
				tp := Socket.Data;

				//僗儘僢僩偑偁偄偰偄傞偐偳偆偐僠僃僢僋
				RFIFOB(32, b);
				if b > 4 then exit;
				if tp.CData[b] <> nil then begin
					WFIFOW(0, $006e);
					WFIFOB(2, 2);
					Socket.SendBuf(buf, 3);
					exit;
				end;
				//僷儔儊乕僞偵晄惓偑側偄偐僠僃僢僋
				b := 0;
				for i := 0 to 5 do begin
					RFIFOB(i+26, bb[i]);
					if (bb[i] < 1) or (bb[i] > 9) then begin
						WFIFOW(0, $006e);
						WFIFOB(2, 2);
						Socket.SendBuf(buf, 3);
						exit;
					end else begin
						b := b + bb[i];
					end;
				end;
				if b <> 30 then begin
					WFIFOW(0, $006e);
					WFIFOB(2, 2);
					Socket.SendBuf(buf, 3);
					exit;
				end;
				//柤慜偑婛偵巊傢傟偰偄側偄偐僠僃僢僋
				str1 := RFIFOS(2, 24);
				if CharaName.IndexOf(str1) <> -1 then begin
					WFIFOW(0, $006e);
					WFIFOB(2, 0);
					Socket.SendBuf(buf, 3);
					exit;
				end;

				//僉儍儔僨乕僞嶌惉
				tc := TChara.Create;
				with tc do begin
					ID := tp.ID;
					Gender := tp.Gender;
					CID := NowCharaID;
					Inc(NowCharaID);
					Name := str1;
					Gender := tp.Gender;
					JID := 0;
					BaseLV := 1;
					BaseEXP := 0;
					StatusPoint := 0;
					JobLV := 1;
					JobEXP := 0;
					SkillPoint := 0;
					Zeny := DefaultZeny;
					for i := 0 to 5 do
						ParamBase[i] := bb[i];
					DefaultSpeed := 150;
					RFIFOB(35, b);
					if b > 19 then begin //敮宆偑晄惓
						WFIFOW(0, $006e);
						WFIFOB(2, 2);
						Socket.SendBuf(buf, 3);
						tc.Free;
						exit;
					end;
					Hair := b;
					RFIFOB(33, b);
					if b > 8 then begin //敮偺怓偑晄惓
						WFIFOW(0, $006e);
						WFIFOB(2, 2);
						Socket.SendBuf(buf, 3);
						tc.Free;
						exit;
					end;
					HairColor := b;
					ClothesColor := 0;
					RFIFOB(32, CharaNumber);
					Map := DefaultMap;
					Point.X := DefaultPoint_X;
					Point.Y := DefaultPoint_Y;
					SaveMap := DefaultMap;
					SavePoint.X := DefaultPoint_X;
					SavePoint.Y := DefaultPoint_Y;
					with Item[1] do begin
						ID := 1201;
						Amount := 1;
						Equip := 2;
						Identify := 1;
						Refine := 0;
						Attr := 0;
						Card[0] := 0;
						Card[1] := 0;
						Card[2] := 0;
						Card[3] := 0;
						Data := ItemDB.IndexOfObject(1201) as TItemDB;
					end;
					with Item[2] do begin
						ID := 2301;
						Amount := 1;
						Equip := 16;
						Identify := 1;
						Refine := 0;
						Attr := 0;
						Card[0] := 0;
						Card[1] := 0;
						Card[2] := 0;
						Card[3] := 0;
						Data := ItemDB.IndexOfObject(2301) as TItemDB;
					end;
					for i := 0 to 330 do begin
						if SkillDB.IndexOf(i) <> -1 then begin
							tc.Skill[i].Data := SkillDB.IndexOfObject(i) as TSkillDB;
						end;
					end;
					SkillTick := $FFFFFFFF;
					CalcStat(tc);
					HP := MAXHP;
					SP := MAXSP;
				end;
				CharaName.AddObject(tc.Name, tc);
				Chara.AddObject(tc.CID, tc);
				RFIFOB(32, b);
				tp.CName[b] := tc.Name;
				tp.CData[b] := tc;

				//僉儍儔僨乕僞憲怣
				with tc do begin
					WFIFOW(0, $006d);
					WFIFOL(2+	0, CID);
					WFIFOL(2+	4, BaseEXP);
					WFIFOL(2+	8, Zeny);
					WFIFOL(2+ 12, JobEXP);
					WFIFOL(2+ 16, JobLV);
					WFIFOL(2+ 20, 0);
					WFIFOL(2+ 24, 0);
					WFIFOL(2+ 28, Option);
					WFIFOL(2+ 32, Karma);
					WFIFOL(2+ 36, Manner);
					WFIFOW(2+ 40, StatusPoint);
					WFIFOW(2+ 42, HP);
					WFIFOW(2+ 44, MAXHP);
					WFIFOW(2+ 46, SP);
					WFIFOW(2+ 48, MAXSP);
					WFIFOW(2+ 50, Speed);
					WFIFOW(2+ 52, JID);
					WFIFOW(2+ 54, Hair);
					WFIFOW(2+ 56, Weapon);
					WFIFOW(2+ 58, BaseLV);
					WFIFOW(2+ 60, SkillPoint);
					WFIFOW(2+ 62, Head3);
					WFIFOW(2+ 64, Shield);
					WFIFOW(2+ 66, Head1);
					WFIFOW(2+ 68, Head2);
					WFIFOW(2+ 70, HairColor);
					WFIFOW(2+ 72, ClothesColor);
					WFIFOS(2+ 74, Name, 24);
					for i := 0 to 5 do
						WFIFOB(2+98+i, ParamBase[i]);
					WFIFOB(2+104, CharaNumber);
					WFIFOB(2+105, 0);
				end;
				Socket.SendBuf(buf, 108);
			end;
		$0068: //僉儍儔嶍彍梫媮
			begin
				if Socket.Data = nil then exit;
				tp := Socket.Data;

				RFIFOL(2, l);
				str1 := RFIFOS(6, 40);
				if str1 = tp.Mail then begin
					i := Chara.IndexOf(l);
					if (i <> -1) then begin
						//嶍彍丅
						tc := Chara.Objects[i] as TChara;
						for k := 0 to 2 do begin
							if tp.CData[k] = tc then begin
								tp.CName[k] := '';
								tp.CData[k] := nil;
								break;
							end;
						end;
						CharaName.Delete(i);
						Chara.Delete(i);
						tc.Free;
						WFIFOW(0, $006f);
						Socket.SendBuf(buf, 2);
					end else begin
						//嶍彍偡傞僉儍儔偑尒偮偐傜側偄(嶍彍嫅斲傪曉偡)
						WFIFOW(0, $0070);
						WFIFOB(2, 1);
						Socket.SendBuf(buf, 3);
					end;
				end else begin
					//儊乕儖傾僪儗僗偑堘偆
					WFIFOW(0, $0070);
					WFIFOB(2, 0);
					Socket.SendBuf(buf, 3);
				end;
			end;
		end;
	end;
end;
//==============================================================================
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品黄色片免费大全| 亚洲成人一区二区在线观看| 激情综合色播五月| 精品成人a区在线观看| 国内精品免费**视频| 久久久久久久性| yourporn久久国产精品| 一区二区三区高清在线| 欧美日本韩国一区二区三区视频| 日韩黄色免费电影| 26uuu国产电影一区二区| 国产激情精品久久久第一区二区 | 亚洲欧美另类图片小说| 91麻豆国产福利精品| 亚洲影院理伦片| 欧美一区二区私人影院日本| 国产综合久久久久久久久久久久| 国产精品视频第一区| 在线日韩国产精品| 另类小说一区二区三区| 国产日产欧美精品一区二区三区| 91美女在线观看| 免费观看日韩av| 成人欧美一区二区三区1314 | 国产美女一区二区三区| 国产精品无人区| 欧美日韩电影一区| 狠狠色丁香婷综合久久| 亚洲欧美福利一区二区| 日韩一二三四区| 成人avav影音| 美女mm1313爽爽久久久蜜臀| 亚洲国产高清aⅴ视频| 欧美日韩美少妇| 国产suv精品一区二区三区| 亚洲国产aⅴ成人精品无吗| 欧美精品一区二区在线播放| 色婷婷一区二区| 国产永久精品大片wwwapp| 亚洲免费观看高清完整版在线 | 一本大道综合伊人精品热热| 三级欧美韩日大片在线看| 国产日韩欧美在线一区| 欧美日韩亚洲综合在线| 成人午夜视频网站| 日本不卡免费在线视频| 亚洲精品视频免费观看| 久久精品日产第一区二区三区高清版| 在线视频欧美精品| 不卡的av网站| 经典三级一区二区| 午夜欧美视频在线观看| 亚洲欧美日韩在线播放| 国产午夜精品一区二区| 欧美一区在线视频| 欧美亚洲综合另类| 成人免费视频视频在线观看免费| 久久精品二区亚洲w码| 亚洲韩国一区二区三区| 亚洲色图19p| 国产精品网站一区| 久久综合九色综合97_久久久| 777奇米四色成人影色区| 一本色道综合亚洲| 91丝袜美腿高跟国产极品老师| 国产成人综合在线| 国产黄色精品视频| 激情深爱一区二区| 激情综合色播五月| 玖玖九九国产精品| 久久99精品久久久久久国产越南 | 青青草成人在线观看| 一区二区理论电影在线观看| 日韩美女久久久| 中文字幕一区免费在线观看| 中文字幕精品一区二区精品绿巨人 | 国产精品自拍在线| 国产主播一区二区三区| 极品瑜伽女神91| 狠狠色狠狠色综合| 国产美女一区二区三区| 国产成人免费视| 不卡的av在线| 色哟哟欧美精品| 欧美综合亚洲图片综合区| 91在线国产福利| 欧美性受极品xxxx喷水| 欧美日本免费一区二区三区| 在线不卡的av| 2021国产精品久久精品| 国产亚洲欧美色| 国产精品精品国产色婷婷| 亚洲男人的天堂在线aⅴ视频| 依依成人综合视频| 五月天婷婷综合| 麻豆国产精品777777在线| 精品制服美女丁香| 成人高清av在线| 91蝌蚪porny成人天涯| 欧美亚洲综合另类| 欧美一卡二卡在线| 国产蜜臀av在线一区二区三区| 中文字幕在线播放不卡一区| 亚洲高清视频中文字幕| 美脚の诱脚舐め脚责91 | 欧美精品黑人性xxxx| 日韩一级免费一区| 久久久久久久久97黄色工厂| 国产精品美女久久久久久久久 | av不卡免费在线观看| 欧美性生活一区| 久久久激情视频| 夜夜嗨av一区二区三区网页| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品88av| 欧美人与z0zoxxxx视频| 久久精品日产第一区二区三区高清版| 亚洲精品日产精品乱码不卡| 青草av.久久免费一区| 成年人网站91| 欧美一区二区在线免费观看| 国产精品高清亚洲| 日韩影院精彩在线| 99vv1com这只有精品| 日韩一区二区三区免费观看| 国产精品乱人伦一区二区| 日韩激情视频网站| 99久久精品一区| 久久综合久久综合亚洲| 亚洲国产日韩精品| 不卡电影一区二区三区| 91精品国产综合久久香蕉的特点| 国产精品久久久久一区二区三区| 午夜精品久久久久久| 成人美女在线视频| 精品久久久久99| 午夜精品一区二区三区电影天堂| 粉嫩av一区二区三区| 日韩亚洲欧美综合| 亚洲午夜国产一区99re久久| 成人黄色av电影| 精品国产sm最大网站免费看| 亚洲一区二区精品视频| 99久久国产免费看| 国产女同性恋一区二区| 精品一区二区三区在线播放| 欧美日本免费一区二区三区| 亚洲少妇30p| 成人深夜视频在线观看| 亚洲精品一区二区三区蜜桃下载 | 欧美一区二区日韩| 亚洲国产成人高清精品| 99re热视频这里只精品| 中文字幕乱码日本亚洲一区二区| 久久99精品国产麻豆婷婷洗澡| 欧美精品三级日韩久久| 亚洲综合丁香婷婷六月香| 97se亚洲国产综合在线| 国产精品国产三级国产有无不卡 | 成人av免费在线播放| 中文字幕av一区二区三区免费看| 免费成人在线观看视频| 91精选在线观看| 午夜精品视频一区| 欧美疯狂性受xxxxx喷水图片| 亚洲一区二区中文在线| 色菇凉天天综合网| 亚洲亚洲精品在线观看| 26uuu久久天堂性欧美| 韩日精品视频一区| 精品国产乱码久久久久久久久 | 亚洲大片免费看| 欧美男同性恋视频网站| 五月激情综合网| 91麻豆精品91久久久久同性| 奇米色一区二区| 久久综合久久鬼色| 高潮精品一区videoshd| 国产精品毛片a∨一区二区三区| 成人午夜激情在线| 亚洲视频一二三| 欧美三级蜜桃2在线观看| 丝袜美腿亚洲综合| 久久综合999| 北条麻妃国产九九精品视频| 亚洲人成在线播放网站岛国| 欧美在线free| 久久精品国产久精国产| 国产亚洲女人久久久久毛片| 成人一区二区三区视频| 亚洲精品中文字幕乱码三区| 欧美人成免费网站| 国产自产2019最新不卡| 国产精品久久久久久久久动漫 | 久久久久国色av免费看影院| 成人综合婷婷国产精品久久免费| 亚洲色图制服丝袜| 91精品久久久久久蜜臀| 国产一区二三区| 亚洲乱码日产精品bd|