游戏外挂制作研究的中文网络平台

前往游戏开发制作 http://www.gameres.com

 


  声明:GameRes严禁各类外挂、私服等商业行为,更不会以GameRes名义进行任何商业销售,请勿信任任何出售、购买、招聘内容,谨防受骗!不要轻易运行下载的可执行文件,谨防恶意发布的木马病毒。

还是无聊,再发一个垃圾 - 游戏外挂研究院
注册GameRes用户 登录 找回密码 |  精华区索引 | 新帖快速索引 | 本版精华区欢迎访问本论坛!

游戏外挂研究院 » 游戏外挂制作 » 还是无聊,再发一个垃圾

  声明:此资讯仅供参考,不代表本站观点,请明辨信息正确性,如果信息错误、虚假,请给我们来信,我们将进行查处。

本主题共有23张帖子, 被点击11666 发表新主题发表回复发布新投票
白痴做梦
Exp:23

新成员
 发表于: 2007-2-2 12:25:00

{threadNotes} 还是无聊,再发一个垃圾

大话的自动喊话,很是垃圾的说,哈哈


源代码送上:




本主题包含附件: sf_200722122452.rar (431568bytes)
此文件由用户上传,GameRes.com无法确定其安全性,请慎重使用!

 注册: 2007-2    状态: Offline 1   Top
白痴做梦
Exp:23

新成员
 发表于: 2007-2-2 12:26:00

{threadNotes} Re:还是无聊,再发一个垃圾

全部代码

program AutoSpeakInGame;

uses
  Forms,
  MainFormUnit in 'MainFormUnit.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

unit MainFormUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, jpeg, XPMan;

type
  TForm1 = class(TForm)
    MemoTalking: TMemo;
    ButtonStart: TButton;
    ButtonSave: TButton;
    Image1: TImage;
    StatusBar1: TStatusBar;
    ButtonLoad: TButton;
    ButtonClear: TButton;
    Timer1: TTimer;
    ButtonStop: TButton;
    XPManifest1: TXPManifest;
    procedure ButtonClearClick(Sender: TObject);
    procedure ButtonSaveClick(Sender: TObject);
    procedure ButtonLoadClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ButtonStartClick(Sender: TObject);
    procedure ButtonStopClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonClearClick(Sender: TObject);
begin
  MemoTalking.Clear;
end;

procedure TForm1.ButtonSaveClick(Sender: TObject);
begin
  MemoTalking.Lines.SaveToFile(ExtractFilePath(Application.ExeName) + '自动留言.txt');
end;

procedure TForm1.ButtonLoadClick(Sender: TObject);
begin
  if FileExists(ExtractFilePath(Application.ExeName) + '自动留言.txt') then
    MemoTalking.Lines.LoadFromFile(ExtractFilePath(Application.ExeName) + '自动留言.txt')
  else
    ShowMessage('未找到保存在本机上的留言文件');
end;


//-----------------------------------------
//  得到大话2主窗口
function getDaHuaHWND : HWND;
var
  XY2Handle: HWND;
  szText: array[0..254] of char;
begin
  Result := 0;
  XY2Handle:= FindWindow(PChar('WSWINDOW'), nil);
  if XY2Handle = 0 then exit
  else
  begin
    GetWindowText(XY2Handle, @szText, 255);
    if Trim(szText) = '大话西游 II 聊天窗口' then
      XY2Handle := GetWindow(XY2Handle, GW_OWNER);
  end;
  Result := XY2Handle;
end;


//----------------------
//  发送键盘消息
procedure SendKey(const FightKey : Char; isMenu : Boolean = True);
begin
  keybd_event(VK_MENU,mapvirtualkey(VK_MENU,0),keyeventf_keyup,GetMessageExtraInfo());
  sleep(10);
  if isMenu then
  begin
    keybd_event(VK_MENU,mapvirtualkey(VK_MENU,0),0,GetMessageExtraInfo());
    sleep(10);
  end;
  keybd_event(Byte(FightKey),mapvirtualkey(Byte(FightKey),0),0,GetMessageExtraInfo());
  sleep(10);
  keybd_event(Byte(FightKey),mapvirtualkey(Byte(FightKey),0),keyeventf_keyup,GetMessageExtraInfo());
  sleep(10);
  keybd_event(VK_MENU,mapvirtualkey(VK_MENU,0),keyeventf_keyup,GetMessageExtraInfo());
  Sleep(400 div 4);
end;

//--------------------------
//  在游戏里面留言
procedure SpeakInGame(Words : string);
var
  i : integer;
  myWord : word;
  tmpInt : integer;
  Xy2Handle : HWND;
begin
  Xy2Handle := getDaHuaHWND;
  SetForegroundWindow(Xy2Handle);
  tmpInt := Length(Words);
  i := 0;
  repeat
    if IsDBCSLeadByte(Byte(Words[i])) = True then //是否是中文前半部分
    begin
      myWord := Word(Words[i])
        shl 8 + Word(Words[i + 1]);
      Inc(i, 2)
    end
    else
    begin
      myWord := Word(Words[i]);
      Inc(i, 1)
    end;
    SendMessage(Xy2Handle, WM_IME_CHAR, myWord, 0);
  Until i > tmpInt;
  SendKey(#13, False);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Timer1.tag > MemoTalking.Lines.Count - 1 then
    Timer1.tag := 0;
  if MemoTalking.Lines.Count > 0 then
    SpeakInGame(MemoTalking.Lines.Strings[Timer1.tag]);
  Timer1.tag := Timer1.tag + 1;
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
  if MemoTalking.Lines.Count > 0 then
  begin
    SetForegroundWindow(getDaHuaHWND);
    Timer1.Enabled := True;
  end
  else
    ShowMessage('请先填写好需要的留言内容!');
end;

procedure TForm1.ButtonStopClick(Sender: TObject);
begin
  Timer1.Enabled := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if FileExists(ExtractFilePath(Application.ExeName) + '自动留言.txt') then
    MemoTalking.Lines.LoadFromFile(ExtractFilePath(Application.ExeName) + '自动留言.txt');
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = Mbleft then
  begin
    ReleaseCapture;
    SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
  end;
end;

end.

 注册: 2007-2    状态: Offline 2   Top
zjein
Exp:16

新成员
 发表于: 2007-3-9 0:43:00

{threadNotes} Re:还是无聊,再发一个垃圾

感谢你的源码..顶`

 注册: 2007-3    状态: Offline 3   Top
龙心翔
Exp:3

新成员
 发表于: 2007-5-9 11:35:00

{threadNotes} Re:还是无聊,再发一个垃圾

顶.收下了.谢谢

 注册: 2006-6    状态: Offline 4   Top
MenPlong
Exp:324

下士
 发表于: 2007-5-9 12:14:00

{threadNotes} Re:还是无聊,再发一个垃圾

保留  3Q   学习

 注册: 2007-4    状态: Offline 5   Top
Willson
Exp:2

新成员
 发表于: 2008-3-16 23:39:00

{threadNotes} Re: 还是无聊,再发一个垃圾

顶~~~~

 注册: 2008-3    状态: Offline 6   Top
david026
Exp:68

侦察兵
 发表于: 2008-3-17 12:12:00

{threadNotes} Re:还是无聊,再发一个垃圾

学习了

 注册: 2006-10    状态: Offline 7   Top
clg333zzz
Exp:1

新成员
 发表于: 2008-3-26 21:52:00

{threadNotes} Re:还是无聊,再发一个垃圾

呵呵,好东西,我喜欢

 注册: 2007-10    状态: Offline 8   Top
ZZCCJJ86
Exp:7

新成员
 发表于: 2008-5-3 15:22:00

{threadNotes} Re:还是无聊,再发一个垃圾

为什么这么多人用delphi

 注册: 2007-9    状态: Offline 9   Top
w41gb78
Exp:1

新成员
 发表于: 2009-11-20 16:12:00

{threadNotes} Re:还是无聊,再发一个垃圾

感谢啊,收下了,学习中啊,正好我也是学习delphi的啊!

 注册: 2009-11    状态: Offline 10   Top
小淫虫
Exp:6

新成员
 发表于: 2009-11-21 19:09:00

{threadNotes} Re:还是无聊,再发一个垃圾

虽然比较简单   但还是顶你啦 ~~
辛苦了

 注册: 2009-11    状态: Offline 11   Top
veneryz
Exp:14

新成员
 发表于: 2010-7-18 11:06:00

{threadNotes} Re:还是无聊,再发一个垃圾

不错.谢谢

 注册: 2008-6    状态: Offline 12   Top
x33a
Exp:1

新成员
 发表于: 2010-7-25 20:11:00

{threadNotes} Re:还是无聊,再发一个垃圾

Delphi? 难道我真的要去学?

 注册: 2010-7    状态: Offline 13   Top
共1页,选择:   1  

主题管理:   删除关闭/取消置顶/取消精华/取消移动编辑主题 |  [提问/交流/原创/作品/业内/关闭/清除]

游戏外挂研究院 » 游戏外挂制作 » 还是无聊,再发一个垃圾

您尚未登录论坛,可以同通过这里进行登录,如果您不是GameRes用户,可以点击这里立即注册

关于本站 | 投稿指南 | 广告服务 | 联系本站

未经书面许可,请勿转载、链接本站内容,否则非法引用所造成的后果自负;
本站不对所提供的所有资讯正确性负责,若因资讯导致的任何损失本站概不负责,请自行斟酌。
闽ICP备05005107号
Copyright © 2001-2008 GameRes游戏开发资源网 All Rights Reserved.