2008-10-3 3:21:36
引言
当我们在网站上展示发布的图片时,通常有必要在图片上打上水印或者版权信息,比如提供一些关于图片属于哪个组织或者个人的版权信息。如果通过手工给这些图片添加这类信息,通常会耗费时间并且不能使所有图片保持一致。这里可以用C#和GDI轻松完成这个程序。
概述
下面将展示给你处理图像的各种技术,以下展示了部分列表:
1.嵌在图片上的文本的位置与图像的尺寸相关。
2.选择System.Drawing.Font中的合适字体尺寸以便于阅读。
3.操作不透明的文本字符串。
4.通过特定颜色的位图替换来实现透明。
5.通过55的矩阵像素来改变图片的透明度。
定义图像
这个程序的第一步是加载一个需要应用水印的图片。图片可以是任何尺寸和分辨率。在我们这个例子中,我们将用一个449346,分辨列为72dpi的图片。
要实现这个实例,我们先定义两个字符串。第一个String指明图片的输入输出所在的文件夹路径;第二个String用来存储我们应用到水印中的版权信息。
来自Goberl,转载请注明出处
string WorkingDirectory = @C:\Projects\WaterMark;
string Copyright = Copyright 2002 - AP Photo/David Zalubowski;
接下来,我们为需要打水印的图片创建一个Image对象,并定义两个变量存储这张图片的宽度和高度,他们将用于创建一个24 bits/像素的Bitmap对象,接着利用Bitmap对象创建一个 Graphics对象。
Image imgPhoto = Image.FromFile(WorkingDirectory +
\\watermark_photo.jpg);
int phWidth = imgPhoto.Width;
int phHeight =imgPhoto.Height;
Bitmap bmPhoto = new Bitmap(phWidth,
phHeight,PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(72, 72);
Graphics grPhoto = Graphics.FromImage(bmPhoto);
下面这段代码载入一张背景颜色为绿色(A=0,R=0,G=255,B=0)格式为BMP的水印图片(这张图片将作为水印显示到上面载入的图片上),同时定义了存储图片宽和高的变量。

Image imgWatermark = new Bitmap(WorkingDirectory
+ \\watermark.bmp);
int wmWidth = imgWatermark.Width;
int wmHeight = imgWatermark.Height;
第一步、添加水印字符串
下面这段代码将把imgPhoto添加到Graphics对象中。原始图片的所有特征宽度、高度、像素都将就载入到Graphics对象中。
grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
grPhoto.DrawImage(
imgPhoto,
new Rectangle(0, 0, phWidth, phHeight),
0,
0,
phWidth,
phHeight,
GraphicsUnit.Pixel);
为了更好地兼容版权字符串,我们将测试7种不同的字体大小,以便选出其中最合适的字体应用到我们的图片中。为了提高性能,我们定义了一个int数组来存储我们的字体大小,并利用循环来测试版权字符串的字体大小,一旦我们找到合适的字体就退出循环并向Graphics对象中写入字符串。
int[] sizes = new int[]{16,14,12,10,8,6,4};
Font crFont = null;
SizeF crSize = new SizeF();
for (int i=0 ;i<7; i++)
{
crFont = new Font(arial, sizes[i],FontStyle.Bold);
crSize = grPhoto.MeasureString(Copyright, crFont);
if((ushort)crSize.Width < (ushort)phWidth)
break;
}
不同图片可能会有不同高度,我们将让字符串的垂直位置位于离图片底部5%处(字符串的中部位于5%处,而不是底部或者顶部位于5%处)。用版权字符串的高度来决定它所在的y方向上的坐标,通过计算图片中心位置并定义一个StringFormat对象,设置StringAlignment来使版权信息位于图片的中心。
int yPixlesFromBottom = (int)(phHeight *.05);
float yPosFromBottom = ((phHeight -
yPixlesFromBottom)-(crSize.Height/2));
float xCenterOfImg = (phWidth/2);
StringFormat StrFormat = new StringFormat();
StrFormat.Alignment = StringAlignment.Center;
目前,我们已经获得了所必须的坐标。接下来将创建一个黑色为60%(透明度的值为153)的 SolidBrush对象,绘制版权字符串时,并使其坐标位置在已计算的位置上向右和下各偏移1px,为了实现阴影效果,再创建一个颜色为白色的SolidBrush对象重复绘制一次版权字符串,并使其坐标位置直接为已计算的坐标位置。
SolidBrush semiTransBrush2 =
new SolidBrush(Color.FromArgb(153, 0, 0,0));
grPhoto.DrawString(Copyright,
crFont,
semiTransBrush2,
new PointF(xCenterOfImg+1,yPosFromBottom+1),
StrFormat);
SolidBrush semiTransBrush = new SolidBrush(
Color.FromArgb(153, 255, 255, 255));
grPhoto.DrawString(Copyright,
crFont,
semiTransBrush,
new PointF(xCenterOfImg,yPosFromBottom),
StrFormat);
第二步、添加水印图片
为上述已经修改了的图片创建一个Bitmap,并将其载入到一个新建的Graphic对象中。
Bitmap bmWatermark = new Bitmap(bmPhoto);
bmWatermark.SetResolution(imgPhoto.HorizontalResolution,
imgPhoto.VerticalResolution);
Graphics grWatermark =Graphics.FromImage(bmWatermark);
为了获得半透明水印图片,将定义一个ImageAttributes 对象,通过两次颜色处理来设置ImageAttributes的两个属性以达到颜色的改变(由有色转变为半透明)。
第一步颜色处理是把水印图片的背景色替换为透明(Alpha=0, R=0, G=0, B=0)。为了实现这一步,我们需要用到 Colormap和RemapTable。以上载入的水印图片的背景颜色为100%绿色,这有利于我们查找并替换他们。
ImageAttributes imageAttributes = new ImageAttributes();
ColorMap colorMap = new ColorMap();
colorMap.OldColor=Color.FromArgb(255, 0, 255, 0);
colorMap.NewColor=Color.FromArgb(0, 0, 0, 0);
ColorMap[] remapTable = {colorMap};
imageAttributes.SetRemapTable(remapTable,ColorAdjustType.Bitmap);
第二步颜色处理为改变水印图片的透明度。这一步将用到一个包含了RGBA信息的55的矩阵像素,这个矩阵的第三行第三列被设置为0.3f以获得半透明效果。这步操作将使水印图片呈半透明。
float[][] colorMatrixElements = {
new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f},
new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f},
new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f},
new float[] {0.0f, 0.0f, 0.0f, 0.3f, 0.0f},
new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}
};
ColorMatrix wmColorMatrix = new
ColorMatrix(colorMatrixElements);
imageAttributes.SetColorMatrix(wmColorMatrix,
ColorMatrixFlag.Default,
ColorAdjustType.Bitmap);
通过上面两种颜色处理添加到imageAttributes对象后,我们就可以让水印图片显示到图片的右上角了。水印图片的位置离顶上边缘10px,右侧边缘10px。
int xPosOfWm = ((phWidth - wmWidth)-10);
int yPosOfWm = 10;
grWatermark.DrawImage(imgWatermark,
new Rectangle(xPosOfWm,yPosOfWm,wmWidth, wmHeight),
0,
0,
wmWidth,
wmHeight,
GraphicsUnit.Pixel,
imageAttributes);
最后一步,我们将用添加了水印的位图代替原始图片,释放Graphic对象并存储图像为文件。
来自Goberl,转载请注明出处
imgPhoto = bmWatermark;
grPhoto.Dispose();
grWatermark.Dispose();
\\watermark_final.jpg,
imgPhoto.Save(WorkingDirectory +
ImageFormat.Jpeg);
imgPhoto.Dispose();
imgWatermark.Dispose();

That's it! Compile the project, run it, and see what happens! The code is fairly straightforward if it all makes sense then these techniques can be used for 100's of different image manipulations. The possibilities are endless.
原文来自:[http://www.codeproject.com/KB/GDI-plus/watermark.aspx]
个人学习所用,英语水平有限,欢迎指正。Goberl翻译于2008年10月2日。源码下载
阅读全文>>
2008-10-4 11:43:32
近日,发现Blog总出现404错误,想通过修改Web.Config的debug为false后查看错误提示信息,可一修改了,网站马上正常工作。
我怀疑是ASP.NET的缓存在作怪,因为这种错误从没发生在重新启动网站时。今早,获取了一点Bug信息,提示什么Unable System.Web.Compilation.BuildResultCompiledAss,可不小心把错误提示信息丢失,也就没到网上找原因。
看见友情链接中百度已经来访40次了,由于新版没有用户搜索来访,所以这40次全是Baidu的机器人留下的痕迹,当时在写友情链接这个模块时,就把google和baidu的机器人特别处理了一下。
阅读全文>>
2008-10-5 5:45:06
2008-10-12 3:33:36
引言
SEO是 Search Engine Optimization的简写。他是一门提高网站流量的艺术、手段和科学。
学会怎样构建网站和网页以改进搜索引擎对网站和网页的编排已经成为SEO中的重要组成部分。
在这篇文章中,我们将看到最常见的SEO方法创建标准的URL链接。
目前,大多数网站都是基于数据库驱动的或者是属于动态网页,他们几乎都是通过查询字符串来传递数据的。搜索引擎的爬行通常不会索引url中存在问号或者其他字符的网页。如果搜索引擎不能识别网站的页面和内容,就意味着这个网站的网页失去了(许多)存在的页面。怎样解决这个问题呢。这篇文章将利用一个简单的WebSite工程来讨论以上涉及的问题。
标准的url
标志的url是通过没有存在问号或其他(特殊)字符来传递数据的url,这些url将会最大化地被搜索引擎索引,从而提高你网站的排名。相比动态的URL,搜索引擎更喜欢静态不变的url。
一个动态的url是一个查询数据库或者执行某段脚本的网页地址。相比静态url,动态url对应的内容始终保持一致除非编入HTML的编码被改变,动态url产生于查询网站数据库。这些动态页面仅仅是展示数据库查询结果的模板。
搜索引擎不会索引动态url的原因,是由于这些链接中包含了不规范的字符,例如?,,%,=等等,任何不规范的字符都将被忽略。例如,如下链接:
http://www.myweb.com/default.aspx?id=120
忽略了不规范字符后,链接将会呈现如下状态:
http://www.myweb.com/default.aspx
这些完全不一样的url链接被搜索引擎忽略了不规范字符后都将呈现为相同url,从而导致搜索引擎不会索引你的所有动态页面。搜索引擎会
索引如下样式的链接:
http://www.myweb.com/page/120.aspx
虽然目前的搜索引擎在优化它们对动态url的索引情况,但是它们更偏爱于静态url。
创建符合SEO的标准url
这个webSite工程到底有什么功能呢?它能够创建标准的url以使你网站的排名提高。
在这个示例中,我们先看看下面的链接:
http://www.myweb.com/Order.aspx?Itemid=10Item=Apple
http://www.myweb.com/Order.aspx?Itemid=11Item=Orange
这个工程的功能就是把上面的链接转换成如下样式的url:
http://www.myweb.com/shop/10/Apple.aspx
http://www.myweb.com/shop/11/Orange.aspx
我们首先要做的,是把含有查询字符串的url转换为具有相同内容但不含有不规则字符的url,在转换url时,使查询字符串的值以/结束作为url路径的一部分,使查询字符串的名称作为网页文件的名称。当点击一个被转换了的url时,我们在Global.asax 文件的Application_BeginRequest事件中重写被点击的url,使其还原为能够显示实际内容的含有查询字符串的url,而此时的实际网页文件名称是在网站的web.config中得到的。
接下来我们详细介绍如何创建标准的url。此webSite工程展示了如何创建符合SEO的标准url,这也是一个重写url的方法。你可以在你的应运程序中利用这个方法来重写url。
转换url的方法GetContextualURL
这个方法实现了转换url的功能,其中网页名称将被作为一个参数。在示例中,我们将用如下链接来展示url的转化情况:
Order.aspx?Itemid=10Item=Apple
此方法将以GetContextualURL(Order.aspx?Itemid=10Item=Apple,Apple)的格式被执行。
在这个方法中,查询字符串的值将被拆分并重组。重组的url的网页名称apple.aspx将作为实际网页名称Order.aspx的别名,而这个Order.aspx是从web.config中获取的。重组的url的格式将是如下格式:
~/shop/10/Apple.aspx
通过循环web.config的AppSettings属性,找出对应键(apple)的值order.aspx,AppSettings的键为order.aspx的别名。如果你需要转化更多的页面url,你就得在web.config中添加相应的别名/网页名称。
public string GetContextualURL(string Url,string PageName)
{
string DestID = string.Empty;
string DestAlias = string.Empty;
string Str = Url.Split('?')[1].Split('=')[1] + /;
string DestPage = Url.Split('?')[0];
string ItemID = Url.Split('?')[1].Split('=')[1].Split('')[0];
string NewUrl = string.Empty;
//Get all the Key/Value pairs from web.config
string[] KeyList = WebConfigurationManager.AppSettings.AllKeys;
//Iterate the collection to find the specfic key/value pair
for (int KeyCount = 0; KeyCount < KeyList.Length; KeyCount++)
{
DestID = WebConfigurationManager.AppSettings[KeyList[KeyCount]].Trim();
DestAlias = KeyList[KeyCount];
if (DestID.ToLower() == DestPage.Trim().ToLower())
{
break;
}
}
//Form the contextual URL
NewUrl = ~ + DestAlias + ItemID + / + PageName + .aspx;
return NewUrl;
}
Application_BeginRequest Event
任何向服务器发送的请求都会执行此事件,因此我在此事件中重写被转化了的url,使其还原为实际的url。在这个事件中,我先检查请求的url是否是一个被转化了的url,如果是就分解url并获得id参数和name参数,然后利用他们重组一个包含查询字符串的实际url,再执行它。
protected void Application_BeginRequest(object sender, EventArgs e)
{
//Get the current http context
HttpContext InRequest = HttpContext.Current;
//Get the current path
string OldPath = InRequest.Request.Path.ToLower();
//Check the path whether it is a contextual path
if (InRequest.Request.RawUrl.Split('/').Length > 3)
{
string Path = InRequest.Request.RawUrl.Split('/')[2];
Path = / + Path + /;
string NewPath = /furl/ + WebConfigurationManager.AppSettings[Path];
string ItemName = InRequest.Request.RawUrl.Split('/')
[InRequest.Request.RawUrl.Split('/').Length - 1].Split('.')[0];
string ID = InRequest.Request.RawUrl.Split('/')[3];
//Rewrite the path with the actual path
InRequest.RewritePath(NewPath, , ?id= + ID +
id2= + ItemName, true);
}
}
实际请求页
在实际请求页order.aspx的Page_Load中获取id参数和name参数的值。
Label1.Text = Request.QueryString[1] +, Qty + Request.QueryString[0];
总结
有很多方法都可以实现SEO网页索引,提升网站排名的战略等等,然而,让搜索引擎索引动态网页内容是SEO的首要目标,也是SEO的一个良好开端。
License
This article has no explicit license attached to it but may contain usage terms in the article text or the download files
themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
本文来源:[http://www.codeproject.com/KB/aspnet/Friendly_URLs_in_ASPNet.aspx]
个人学习所用,英语水平有限,欢迎指正。Goberl翻译于2008年10月11日。源码下载
阅读全文>>
2008-10-12 8:13:00
突然发现本博客设计时的重大缺陷排名要分先后。
1.评论
评论模块的失败之处在于没有人性化地处理验证码的验证方式。众所周知,验证码是为了防止恶意用户的恶意行为,对于一个不起眼的个人博客,有几个会感兴趣来hack呢?所以这里的验证码是奢侈的(奢侈的验证码),可又不得不防啊,所以应该在怀疑有人恶意灌水的情况下才让其输入验证码才是人性化的;
再次就是欠缺关闭评论、新评论邮件提示两项功能。关闭评论能够提高文章的权限层次,邮件提示可以让博主或者留言者接收感兴趣的文章的新回复。
2.Tag标签
由于本博客数据库设计不够精细,导致每篇文章的tag标签只能唯一。如此明显的失误很是失败。
3.友情链接
友情链接的最大遗憾是没有在有新增站点时提示博主的功能,如果能够通过邮件及时提示博主,且在邮件中提供仅需输入密码就可管理新增站点的链接,那是何等高效啊。
4.缺少博主简介
5.提供的xml数据源不够丰富
6.缺少图片水印处理
我觉得我的更像一个信息孤岛,值得深思。。
阅读全文>>
2008-10-18 4:28:06
这段时间一直在接触.net的Sysytem.Drawing类,想学会饼图、柱状图的绘制。由于学校图书馆没有这方面的书,只好到MSDN上看了。
由于MSDN没有像图书的简介和目录那么具有较强的针对性(通常某一图书或者图书的某一章会详细介绍某一个类的常用方法和对象),总不能从总体上了解学习的过程和步骤。再加上人总有一蹴而就的思想,所以忽略了很多看上去没多大价值但实际上很具有价值的东西。这不,前些天为了实现渐变色,自己写了一类,可昨天才发现,渐变色的类(LinearGradientBrush)早已在由Microsoft写了。我花了半天时间写了一个只能水平渐变色的类后,正在考略垂直渐变和斜线渐变的时候,发现了微软早已为我做了这些工作我可真想自嘲一番啊。这也使得我不得不怀疑自己的学习方法。如果你不知道系统早已为你写了Sina函数,你为了求出正弦值还不得不去学习微积分这似乎很是浪费时间。
顺便说一下,由于平时得上课,所以博客更新都集中到周末。
以下分别是由.net的LinearGradientBrush类和自己写的类生成的具有渐变色的圆柱:

by MS class by myself class
以下是学习过程中的实验品:

饼图一

饼图二
阅读全文>>
2008-10-19 4:11:34
软件工程师毫无用处,我宁愿雇佣雷达专家教会他如何编程,也不愿意雇佣程序员来教会他雷达信号流程。
在周二的《管理信息系统》课上,老师在课件里提到这句话。我当时一听,心里就是一震。说这话不是明摆着打击Programer吗?
细细想来,这句话的含义不在于贬低Programer,而在于强调信息系统开发的系统需求、软件需求、初步设计等阶段的重要性。Program只是系统开发的一部分,如果仅懂programing而不懂得系统业务、流程,是做不出好的MIS的。
细想我在《观博客,显缺陷》中提到的博客缺陷,归根到底产生原因是由于没有一个良好的需求分析、系统分析这一步。如果你在系统都做完的情况下,再增加或者修改系统的功能(业务),难免会劳师动众劳民伤财。
初学编程时,教材上建议你学会程序流程图、学数据库时老师要求你学会实体-关系法。这些看上去没多大作用(程序小显示不出其高级之处)的简单方法,只有当 你面对难题感到迷惑时才会显示其真正的威力。对于这个实体-关系法我可是屡试不爽啊。其实,这些看似简单的方法的作用就在于让人的思路简单明了、清晰 而不混乱。
而系统开发流程正是一个使思路清晰的方法,它让我们明白每个阶段的任务和目的每个阶段都是为整个系统服务的;有了它,才能有条不紊的进行每一步工作;同时,也是它让我们清楚系统的最终目标的。
阅读全文>>
2008-10-24 19:39:59
一个关于数据字典的示范:
数据字典
数据项编号:
DI001
数据项名称:
学号
简述:
学籍信息管理信息系统中的学生编号
别名:
学生编码
类型:
文本
长度:
10
取值/含义:
aabbccddee
aa入学年份
bb学院编号
cc专业编号
dd班号
ee流水号
Instance:0809030101
阅读全文>>
2008-10-29 0:23:24
下载最新版
古惑仔挂机外挂
引言
前些日子,看见宿舍有同学在玩校内网的web游戏古惑仔之横行天下。发现其操作比较简单,无非就是点击不同页面的不同按钮来做任务、攻击、存/取钱。由于其升级主要靠做任务,遂写了一个不是外挂的外挂帮助玩家自动做任务。我之所以说它不是外挂,是由于到目前为止我还未见过如此简单的外挂。同时我在给它取名时,谓之FightIng。以下将把古惑仔之横行天下简称为古惑仔。
FightIng工作原理
1.正如我上面提到的,古惑仔游戏升级主要靠做任务,此外挂的目标就是帮助玩家做任务。而帮助玩家做任务的具体方法和步骤就是模拟点击(click)web页面中相应任务的按钮(input,type=sumit)。System.Windows.Forms.WebBrowser控件的InvokeMember方法能够帮助我们模拟点击该按钮。
2.由于页面中任务众多,但我们需要程序点击特定任务的按钮。如何到达到这一目标呢?.WebBrowser的Document为我们提供一个html文档树,它可以让我们轻而易举的获取某一任务的按钮并模拟点击(click)。
3.具体如何获取特定任务的按钮。经分析任务页面(job.do)的源码,发现所有任务的源码都被放在一个独立的<form>元素内。如下:
办假证
<form name= action=./djob.do method=post>
<input name=id value=1 type=hidden>
<input class=sub_btn name= value=立刻行动 type=submit>
</form>
注意上面的棕色字体部分。无论什么任务,唯一区别就在value的值不同,此处的value=1表示的任务为办假证。下面列出了1~20级的任务列表,前面的数字表示value的值。
1:办假证
2:夜总会看场子
3:替人追债
4:抢地盘
5:放高利贷
6:砸赌场
7:走私洋酒
8:酿酒
9:抢地下钱庄
我们就可以通过WebBrowser.Document.GetElementsByTagName(form)来获取任务页面(job.do)所有的form元素。(此处要注意,由于页面中存在不是任务的form,如搜索框。为了比避免出错,我们可以把循环form获取按钮的代码放在trycatch中,也可以先获取任务列表的父元素<table id=job_list class=item_table cellspacing=3 cellpadding=0>,再用父元素的GetElementsByTagName(form)来获取所有任务。 )同时获取form元素的第一(<input name=id value=N type=hidden> )、第二个子元素(<input class=sub_btn name= value=立刻行动 type=submit> )。通过第一个元素的value判断当前任务的名称,通过InvokeMember第二个元素,来达到模拟点击(click)特定任务的按钮。
复制代码
try
{
HtmlDocument htmlDoc = _wb.Document;
HtmlElementCollection formCollHtmlEle = htmlDoc.GetElementsByTagName(form);
for (int i = 1; i < formCollHtmlEle.Count; i++)
{
if (formCollHtmlEle[i].Children[0].GetAttribute(value) == id.ToString())
{
formCollHtmlEle[i].Children[1].InvokeMember(click);
_wb.Refresh();
break;
}
}
}
catch { }
4.注意个别任务,如走私洋酒。走私洋酒需要酿酒,本来可以通过执行任务返回的信息里获取是否需要酿酒,可事实发现InvokeMember激活的click事件没有返回酒水不足。无奈,只好通过获取当前精力来判断是否该酿酒了。由于走私洋酒的精力要求点数为18点,如果程序发现当前的精力点数大于19(避免误差)了,则说明没有正常执行走私洋酒,可能原因是酒水不足,遂酿酒一次。
复制代码
if (id == 7)//如果任务有其他准备条件,在此添加
{//如果是走私洋酒,则检查酒水是否满足。判断条件:精力大于19(避免误差),则说明酒水不足,此次执行酿酒
if (GetCurrentSprit() > 19) { ExecuteByID(8); return; }
}
5.接下来就是需要排除Bug了。如,在WebBrowser下载文档和加载文档时获取Document是错误的,获取Document不存在的子元素是错误的。
说的不够清楚,还请谅解。如有问题,可留言、Email。源码下载。
阅读全文>>
2008-10-30 22:41:09
下载地址:
古惑仔横行天下挂机外挂v1.5.0修订版(已修复v1.5.0中一特大Bug)办假证~黑吃黑。已更新 2008 年 11 月 5 日.(游戏已改版,黑吃黑任务已经不能执行)
不再计划发布新版本,谢谢各位的支持.
请不要使用任何下载工具下载,仅支持浏览器默认下载。若是由于是非电信用户无法下载,请Email.
如果发现安装缓慢,请下载Microsoft.NET Framework 2.0安装后再运行安装.
V1.5.0特征:
做完任务5+10+5=20秒后自动存钱降低进监狱概率、降低被抢劫现金的概率
在刷新页面(执行任务的时间周期会刷新页面)5秒后执行任务降低进监狱概率
手动设置执行任务和存钱的时间周期。执行任务与存钱的时间之差必须大于5秒,否则无法执行(需要重新启动程序才能生效)
自动记录上次任务(不同账号的登陆,请注意重新选择任务)
通过存储用户名和密码(个性化设置内的用户名和密码),启动程序后自动运行任务并最小化到任务栏
通过输入用户名和密码(个性化设置内的用户名和密码),且把程序快捷方式放入开始菜单的启动里面可实现开机自启动、自动运行上次运行的任务、自动最小化到右下角
修改了黑吃黑任务的检查机制。(由于本人账号不足30级,没有经过测试,如发现无法执行本任务,请Email或者留言)
对于某些玩家说的会弹出脚本错误的情况,可以把系统的IE6.0升级到IE7.0解决此问题
由于这次改动交大,又没有账号进行仔细的测试,所以Bug难免,望各位指出,谢谢!
古惑仔横行天下挂机外挂v1.4.1办假证~黑吃黑。已更新 2008 年 11 月 1 日.
古惑仔横行天下挂机外挂v1.4.0办假证~海上走私、黑吃黑(待测试),现金大于3000时自动存钱。已更新 2008 年 10 月 31 日.
下载说明:
后续版本(更高等级的任务)的下载将在本页更新。如有需求,请记住本页网址。
系统说明
1.系统功能
为广大《古惑仔》玩家自动执行任务升经验,从而快速升级。
2.系统要求
IE6.0++;
Microsoft.NET Framework 2.0;
3.使用说明
请在运行软件后,输入用户名和密码、勾选下次自动登录登陆校内网,并点击相应链接或者点击〖打开古惑仔〗进入古惑仔任务页面(http://mob.xiaonei.com/job.do),然后选择你需要执行的任务即可。
注意:选择的任务必须是在满足精力的条件下能够执行的任务(武器、弟兄等条件均满足)。
一台电脑只能运行一个账号。如果任务列表中没有你们的任务选择,请联系 Guijunyao(at)gmail.com
同时,请各位谅解程序的中Bug,本人虚心接受各位的意见和建议....
4.声明
本程序纯属个人娱乐学习所用,任何个人或者组织都不得用于商业目的。同时,使用本程序乃自愿由使用本程序带来的后果自负。我们是应该遵循游戏公平的原则
历史版本:
古惑仔横行天下挂机外挂v1.0.3。已更新 2008 年 10 月 28 日
FightIng_1.0.2.rar (古惑仔横行天下挂机外挂v1.0.2)
阅读全文>>