设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 778|回复: 6

[求助] 阅读权限高于50的进!帮我复制个文章!啊!要疯啦   [复制链接]

Rank: 5Rank: 5

帖子
178
精华
0
声望
1054 点
金币
94 Mold
被赞许
0 次
注册时间
2009-2-13
发表于 2010-9-5 10:46:04 |显示全部楼层
10金币
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
今天兴冲冲地去银行,往支付宝冲了15快钱想买VIP来提高权限看这个贴:http://www.modchina.com/viewthread.php?tid=28446&highlight=
谁知到要买元宝时支付宝说什么集成端口错误!!!!!
啊啊啊啊啊啊啊啊啊啊啊啊
http://www.modchina.com/viewthread.php?tid=28446&highlight=
谁能帮我完整的复制过来,给他10金币
短信我或者发EMAIL也可以,我的EMAIL地址是ksm449095600@hotmail.com

最佳答案

programe 查看完整内容

高级编程技术 (AMX Mod X) 高级篇1 这篇文章将向您概述AMX Mod X 的高级编程. 任务 任务就是计时器,使您可以有间隔时间地运行指定的代码一次或多次。这个功能十分有用,你可以等待一段时间后执行脚本, 设置物体使其毁灭其自己(通过脚本执行例如自爆等事件), 或者仅仅就是一遍又一遍地重复某一事件. 设置任务有好多种方法. 实际就是 set_task(): set_task(Float:time,const function[],id = 0,parameter[]="",len = 0,fl ...
水王猪皮进军modchina!!!

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
3735
精华
1
声望
5900 点
金币
2148 Mold
被赞许
47 次
注册时间
2009-12-20

优秀版主奖 Modchina灌水王 星界财团 可爱小猫

发表于 2010-9-5 10:46:05 |显示全部楼层
高级编程技术 (AMX Mod X)  高级篇1

这篇文章将向您概述AMX Mod X 的高级编程.


任务

任务就是计时器,使您可以有间隔时间地运行指定的代码一次或多次。这个功能十分有用,你可以等待一段时间后执行脚本, 设置物体使其毁灭其自己(通过脚本执行例如自爆等事件), 或者仅仅就是一遍又一遍地重复某一事件.
设置任务有好多种方法. 实际就是 set_task():
set_task(Float:time,const function[],id = 0,parameter[]="",len = 0,flags[]="", repeat = 0)
参数分类如下:
•        Float:time – 间隔一定时间的计时器 (间隔最短 0.1 秒)
•        function[] –计时器一个含有公共事件的字符串
•        id – 分配给事件的一个独一无二的id
•        parameter – 给计时器发送数据的一行代码
•        len – 给计时器发送的行的大小flags - One of the following:
o        "a" – 重复某事件指定次数
o        "b" – 循环执行事件
o        "c" – 进入在一个地图经过多久之后执行事件
o        "d" -  进入在一个地图经过多久之前执行事件
•        repeat – 如果 flags 是 "a", 则指定了重复事件的次数。
下面是一个事件的例子. 它会扇玩家五个耳光(囧), 每秒扇一次.
-------------------------------------------分割线--------------
//计时功能(计时器)收到了参数行和事件ID
public slapTask(params[], id)
{
   new player = params[0]
   user_slap(player, 5)
}

public start_slapping(id)
{
   new params
   params[0] = id
   //我们不需要指定特定的 id
   set_task(1.0, "slapTask", 0, params, 1, "a", 5)
}

-------------------------------------------分割线--------------

如果您参数长度指定为0,则任务事件应该如下 :
public slapTask(id)

菜单
菜单就是供玩家选择的HUD信息. 菜单制作的过程可能比较混乱,但是菜单对于玩家在游戏中投票或者选择命令还是非常有用的.
菜单必须注册如下两个东西 – 设置 "按键" ,指定需要注册选项的数量和用于选取指定菜单内容的字符串。字符串必须出现在每个菜单的开头部分,以触发您所需的功能。 当显示菜单时, 您可以把它给一个或者多个玩家使用. 一旦玩家按下了某个按键, 所选定的结果会被返还到所注册的菜单中。
例子如下, 我们将制作一个显示枪支的菜单: AK47, M4A1, 或者 AWP, 玩家选择后给于其所选的枪支。


-------------------------------------------分割线--------------
#include <amxmodx>
#include <amxmisc>
#include <fun>
public plugin_init()
{
    register_plugin("Menu Demo", "1.0", "BAILOPAN")
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2
    register_menucmd(register_menuid("Which Weapon?"), keys, "giveWeapon")
}
-------------------------------------------分割线--------------


这里出现了两个命令 - register_menuid 和 register_menucmd. register_menuid 注册了出现在菜单开始时的一段简单的语句,它会返回一个ID值。 这个ID是register_menucmd的第一个参数。register_menucmd的第二个参数是“键的构造”。 我们的菜单将会显示出三个选项, 因此我们加入三个菜单键。最后一个参数是公共功能,它将会处理菜单选择的结果。
接下来,怎样才能显示出菜单呢? 那么就做一个简单的控制台命令吧: "giveme".

-------------------------------------------分割线--------------
public plugin_init()
{
    register_plugin("Menu Demo", "1.0", "BAILOPAN")
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2
    register_menucmd(register_menuid("Which Weapon?"), keys, "giveWeapon")
    register_clcmd("giveme", "showWeaponMenu")
}
-------------------------------------------分割线--------------


register_clcmd 和 register_concmd类似,区别在于register_clcmd需要两个参数. 它常被用在注册普通玩家可用的命令上(除了个别的,例如+attack).


-------------------------------------------分割线--------------
// clcmd 的功能是给于我们玩家的ID
public showWeaponMenu(id)
{
    new menu[192]
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2

    format(menu, 191, "Which Weapon?^n^n1. AK47^n2. M4A1^n3. AWP")
    show_menu(id, keys, menu)
    return PLUGIN_HANDLED
}

//我们所做的菜单的功能是获取玩家的ID和玩家所按下的选择结果
public giveWeapon(id, key)
{
    //键值将从0开始
    if (key == 0)
    {
         give_item(id, "weapon_ak47")
    } else if (key == 1) {
         give_item(id, "weapon_m4a1")
    } else if (key == 2) {
         give_item(id, "weapon_awp")
    }
}
-------------------------------------------分割线--------------



好了我们完成了! 也许板式可能让大家感到疑惑. "^n" 意思就是 "另起一行", 这样,菜单的板式就可以变得更加规矩. 您可以再 VGUI2的 mod里使用更多的修改方法, 例如 "\w" 输出白色文字, "\r" 输出红色文字, "\y" 输出黄色文字. 当玩家输入命令后(在控制台输入giveme,上文定义过了), 他会看见这个菜单. 当他按下一个键后, 给于武器的功能会受到玩家的ID和他按下的键值,然后玩家会得到他选择的武器。
事件/消息
这段示范中我们将在上一个例子的基础上进行拓展。玩家每次重生后, 会看到菜单并显示选枪界面 (注意 – 我们先不管其他的东西,比如阻止使用B键购买和删除购买区,本文仅是一个演示)。
消息就是 Half-Life 玩家和服务器交谈的一种语言,反之亦然。例如, 消息 "DeathMsg" (message id 83) 有三个参数: Attacker (byte), Victim (byte), and Weapon (string). 您可以获取消息或者发送消息. 这里我们将做一个二者同时存在的例子. 首先让我们创建一个玩家出生时的选枪菜单。


-------------------------------------------分割线--------------
public plugin_init()
{
    register_plugin("Menu Demo", "1.0", "BAILOPAN")
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2
    register_menucmd(register_menuid("Which Weapon?"), keys, "giveWeapon")
    //flags - b 意思就是 "把东西给制定目标", e 意思就是 "目标还活着"
    //当玩家出生时事件执行
    register_event("ResetHUD", "hook_hud", "be")
}

public hook_hud(id)
{
    //当我们不指定任务参数时
    //任务id将会被发到功能中
//这个是有用的因为我们再次利用
//了我们已经有了ID的显示菜单的功能
    set_task(0.2, "showWeaponMenu", id)
}
注意我们设置了一个收到消息时的短暂的延迟- 这是为了确保玩家有足够的的时间重生。
register_event 可以得到更多的参量来帮助你限制你的一些事件-例如只有相同的特定参量.
现在让我们探知当玩家死亡时的情况……
public plugin_init()
{
    register_plugin("Message Demo", "1.0", "BAILOPAN")
    //这条消息将通知每个死亡的玩家, 因此我们使用
    // flag "a" – 全局事件
    register_event("DeathMsg", "hook_death", "a")
}

public hook_death()
{
    new Killer = read_data(1) //获得第一个消息的参量
    new Victim = read_data(2) //获得第二个消息的参量
    new headshot = read_data(3) //是否被爆头
    new weapon[32]
    read_data(4, weapon, 31)  //获知武器名
}
接下来, 我们将做一个简单的死亡时显示信息的脚本:
stock make_deathMsg(Killer, Victim, const weapon[])
{
    //message_begin 开始一条消息。切记不可同时执行两条消息。
    //MSG_ALL 可以给所有玩家发送消息
    //get_user_msgid 返回消息名的id值
    //{0,0,0} 是源向量 – 在这里我们没用到它
    //0 是目标 – 这里没有特定的目标
    message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0)
    write_byte(Killer)     //杀死别的玩家的人
    write_byte(Victim)     //被杀死的人
    write_string(weapon)   //武器
    message_end()
}
-------------------------------------------分割线--------------

想了解更多与消息相关的,请参照 HLSDK, AMX Mod X 论坛, HL-related 设计网站, 和其它的插件.列出MOD中消息的方法是,在控制台中输入 "meta game"(需要载入metamod). 您也可以使用register_message, 在引擎模块中的更高级的消息功能.
至于你信不信,我反正信了

使用道具 举报

Honorary Member

地狱恶势力

Rank: 7Rank: 7Rank: 7

帖子
3449
精华
4
声望
15019 点
金币
2052 Mold
被赞许
90 次
注册时间
2010-4-4

Modchina灌水王 可爱小猫 懒人勋章

发表于 2010-9-5 10:54:56 |显示全部楼层
10金币...不能动摇我
已有 1 人评分声望 收起 理由
449095600 + 5 你要多少金币?????

总评分: 声望 + 5   查看全部评分

使用道具 举报

Rank: 5Rank: 5

帖子
992
精华
0
声望
1428 点
金币
211 Mold
被赞许
0 次
注册时间
2009-8-15
发表于 2010-9-5 10:58:26 |显示全部楼层
额,我才40权限,我也想看哦··
我没哭,只是流了眼泪。

使用道具 举报

Rank: 8Rank: 8

帖子
933
精华
0
声望
1955 点
金币
1035 Mold
被赞许
5 次
注册时间
2009-5-28
发表于 2010-9-5 11:04:40 |显示全部楼层
本帖隐藏的内容需要回复才可以浏览
高级编程技术 (AMX Mod X)  高级篇1

这篇文章将向您概述AMX Mod X 的高级编程.


任务

任务就是计时器,使您可以有间隔时间地运行指定的代码一次或多次。这个功能十分有用,你可以等待一段时间后执行脚本, 设置物体使其毁灭其自己(通过脚本执行例如自爆等事件), 或者仅仅就是一遍又一遍地重复某一事件.
设置任务有好多种方法. 实际就是 set_task():
set_task(Float:time,const function[],id = 0,parameter[]="",len = 0,flags[]="", repeat = 0)
参数分类如下:
•        Float:time – 间隔一定时间的计时器 (间隔最短 0.1 秒)
•        function[] –计时器一个含有公共事件的字符串
•        id – 分配给事件的一个独一无二的id
•        parameter – 给计时器发送数据的一行代码
•        len – 给计时器发送的行的大小flags - One of the following:
o        "a" – 重复某事件指定次数
o        "b" – 循环执行事件
o        "c" – 进入在一个地图经过多久之后执行事件
o        "d" -  进入在一个地图经过多久之前执行事件
•        repeat – 如果 flags 是 "a", 则指定了重复事件的次数。
下面是一个事件的例子. 它会扇玩家五个耳光(囧), 每秒扇一次.
-------------------------------------------分割线--------------
//计时功能(计时器)收到了参数行和事件ID
public slapTask(params[], id)
{
   new player = params[0]
   user_slap(player, 5)
}

public start_slapping(id)
{
   new params
   params[0] = id
   //我们不需要指定特定的 id
   set_task(1.0, "slapTask", 0, params, 1, "a", 5)
}

-------------------------------------------分割线--------------

如果您参数长度指定为0,则任务事件应该如下 :
public slapTask(id)

菜单
菜单就是供玩家选择的HUD信息. 菜单制作的过程可能比较混乱,但是菜单对于玩家在游戏中投票或者选择命令还是非常有用的.
菜单必须注册如下两个东西 – 设置 "按键" ,指定需要注册选项的数量和用于选取指定菜单内容的字符串。字符串必须出现在每个菜单的开头部分,以触发您所需的功能。 当显示菜单时, 您可以把它给一个或者多个玩家使用. 一旦玩家按下了某个按键, 所选定的结果会被返还到所注册的菜单中。
例子如下, 我们将制作一个显示枪支的菜单: AK47, M4A1, 或者 AWP, 玩家选择后给于其所选的枪支。


-------------------------------------------分割线--------------
#include <amxmodx>
#include <amxmisc>
#include <fun>
public plugin_init()
{
    register_plugin("Menu Demo", "1.0", "BAILOPAN")
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2
    register_menucmd(register_menuid("Which Weapon?"), keys, "giveWeapon")
}
-------------------------------------------分割线--------------


这里出现了两个命令 - register_menuid 和 register_menucmd. register_menuid 注册了出现在菜单开始时的一段简单的语句,它会返回一个ID值。 这个ID是register_menucmd的第一个参数。register_menucmd的第二个参数是“键的构造”。 我们的菜单将会显示出三个选项, 因此我们加入三个菜单键。最后一个参数是公共功能,它将会处理菜单选择的结果。
接下来,怎样才能显示出菜单呢? 那么就做一个简单的控制台命令吧: "giveme".

-------------------------------------------分割线--------------
public plugin_init()
{
    register_plugin("Menu Demo", "1.0", "BAILOPAN")
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2
    register_menucmd(register_menuid("Which Weapon?"), keys, "giveWeapon")
    register_clcmd("giveme", "showWeaponMenu")
}
-------------------------------------------分割线--------------


register_clcmd 和 register_concmd类似,区别在于register_clcmd需要两个参数. 它常被用在注册普通玩家可用的命令上(除了个别的,例如+attack).


-------------------------------------------分割线--------------
// clcmd 的功能是给于我们玩家的ID
public showWeaponMenu(id)
{
    new menu[192]
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2

    format(menu, 191, "Which Weapon?^n^n1. AK47^n2. M4A1^n3. AWP")
    show_menu(id, keys, menu)
    return PLUGIN_HANDLED
}

//我们所做的菜单的功能是获取玩家的ID和玩家所按下的选择结果
public giveWeapon(id, key)
{
    //键值将从0开始
    if (key == 0)
    {
         give_item(id, "weapon_ak47")
    } else if (key == 1) {
         give_item(id, "weapon_m4a1")
    } else if (key == 2) {
         give_item(id, "weapon_awp")
    }
}
-------------------------------------------分割线--------------



好了我们完成了! 也许板式可能让大家感到疑惑. "^n" 意思就是 "另起一行", 这样,菜单的板式就可以变得更加规矩. 您可以再 VGUI2的 mod里使用更多的修改方法, 例如 "\w" 输出白色文字, "\r" 输出红色文字, "\y" 输出黄色文字. 当玩家输入命令后(在控制台输入giveme,上文定义过了), 他会看见这个菜单. 当他按下一个键后, 给于武器的功能会受到玩家的ID和他按下的键值,然后玩家会得到他选择的武器。
事件/消息
这段示范中我们将在上一个例子的基础上进行拓展。玩家每次重生后, 会看到菜单并显示选枪界面 (注意 – 我们先不管其他的东西,比如阻止使用B键购买和删除购买区,本文仅是一个演示)。
消息就是 Half-Life 玩家和服务器交谈的一种语言,反之亦然。例如, 消息 "DeathMsg" (message id 83) 有三个参数: Attacker (byte), Victim (byte), and Weapon (string). 您可以获取消息或者发送消息. 这里我们将做一个二者同时存在的例子. 首先让我们创建一个玩家出生时的选枪菜单。


-------------------------------------------分割线--------------
public plugin_init()
{
    register_plugin("Menu Demo", "1.0", "BAILOPAN")
    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2
    register_menucmd(register_menuid("Which Weapon?"), keys, "giveWeapon")
    //flags - b 意思就是 "把东西给制定目标", e 意思就是 "目标还活着"
    //当玩家出生时事件执行
    register_event("ResetHUD", "hook_hud", "be")
}

public hook_hud(id)
{
    //当我们不指定任务参数时
    //任务id将会被发到功能中
//这个是有用的因为我们再次利用
//了我们已经有了ID的显示菜单的功能
    set_task(0.2, "showWeaponMenu", id)
}
注意我们设置了一个收到消息时的短暂的延迟- 这是为了确保玩家有足够的的时间重生。
register_event 可以得到更多的参量来帮助你限制你的一些事件-例如只有相同的特定参量.
现在让我们探知当玩家死亡时的情况……
public plugin_init()
{
    register_plugin("Message Demo", "1.0", "BAILOPAN")
    //这条消息将通知每个死亡的玩家, 因此我们使用
    // flag "a" – 全局事件
    register_event("DeathMsg", "hook_death", "a")
}

public hook_death()
{
    new Killer = read_data(1) //获得第一个消息的参量
    new Victim = read_data(2) //获得第二个消息的参量
    new headshot = read_data(3) //是否被爆头
    new weapon[32]
    read_data(4, weapon, 31)  //获知武器名
}
接下来, 我们将做一个简单的死亡时显示信息的脚本:
stock make_deathMsg(Killer, Victim, const weapon[])
{
    //message_begin 开始一条消息。切记不可同时执行两条消息。
    //MSG_ALL 可以给所有玩家发送消息
    //get_user_msgid 返回消息名的id值
    //{0,0,0} 是源向量 – 在这里我们没用到它
    //0 是目标 – 这里没有特定的目标
    message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0)
    write_byte(Killer)     //杀死别的玩家的人
    write_byte(Victim)     //被杀死的人
    write_string(weapon)   //武器
    message_end()
}
-------------------------------------------分割线--------------

想了解更多与消息相关的,请参照 HLSDK, AMX Mod X 论坛, HL-related 设计网站, 和其它的插件.列出MOD中消息的方法是,在控制台中输入 "meta game"(需要载入metamod). 您也可以使用register_message, 在引擎模块中的更高级的消息功能.
AI怪物插件学习圣坛,让你快速学会制作大灾变和机甲风暴单机版!http://www.modchina.com/?fromuid=49624

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
4597
精华
3
声望
9452 点
金币
26 Mold
被赞许
115 次
注册时间
2009-10-18

MTT职员 最佳贡献奖 热心会员奖 可爱小猫 黑暗使者 Modchina元老 Modchina灌水王 星界财团 图界之神

发表于 2010-9-5 11:17:45 |显示全部楼层
我看不懂那个- -

使用道具 举报

Honorary Member

在人海出现,同时也在人海中沉没

Rank: 7Rank: 7Rank: 7

帖子
4193
精华
3
声望
7989 点
金币
696 Mold
被赞许
151 次
注册时间
2009-12-11

黑暗使者 Modchina灌水王

发表于 2010-9-5 11:26:30 |显示全部楼层
火星文呢。。。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部