展鸿丶
展鸿丶
沙雕程序员。
关注数: 8
粉丝数: 1,091
发帖数: 6,291
关注贴吧数: 12
HLMV 增加FOV选项 我又来了… 第几次改来着…不过算了不是重点… 增加FOV设置项 修复菜单File->Exit退出程序崩溃下载地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1NA6b8&urlrefer=105e314f3a04e0f4aed26c3eef354ccf
在游戏中显示模型的 Hull Box 其实 Hull Box 就是 Hit Box …在游戏的启动参数加上-dev,启动游戏后r_drawentities设为3,有效值0~4其它效果自行测试吧。
CF Rez Explorer 双击打开REZ文件支持列表和表格两种视图模式 支持双击即时预览内部文件,提取选中的文件,提取列表内所有,以及替换文件...支持根目录或者子目录提取支持文件快速搜索
禁止客户端购买(源码) 非删除或者修改购买区,可指定玩家禁止购买。 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2FuLZN2X7B&urlrefer=7db46ff23f974a39c1c514885ba2dd42 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F14474840%2F&urlrefer=ea49eda525f2d351e219cab3d2fb683d
导出LithTech(CF)模型 昨晚闲着没事就重新写了一次这个玩意…
Debug Assert assert( 表达式 ); 当表达式返回0值时,调试器会弹出一个错误,并结束函数。 检查实体 assert( pev_valid(ent) ); 检查玩家 assert( (id >= 1) && (id <= 32) && pev_valid(id) && is_user_connected(id) );
[补课] 虚函数 虚函数(virtual function)是C++ Class的一种实现机制,用于实现多态。 类函数加上virtual修饰,就成了虚函数。 用一段代码表示: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2FHpKHeiJv&urlrefer=b4d00ffc569f82ffade0433fb9acc64f 在VS调试环境给函数下断点,可以看到pKnife有一个__vfptr变量,这是C++编译器添加的一个DWORD型数组,用来记录虚函数的地址,所以它又叫做虚函数表(Virtual Function Table 简称VFT)。 注意:如果Class里没有虚函数,那麽也不会有这个变量。调用pKnife->Print和pKnife->Print2都毫无疑问会执行表里对应的函数。 接着看看pGrenade的情况可以看到,重载了Print之后,原本是CBasePlayerItem里的,现在是CBasePlayerWeapon里的。 你可能会问:即使不用虚函数,直接重载也能实现,那这个东西还有什麽用? 如果把子类指针,转回父类指针,再调用那个重载的函数,结果依然是调用了子类的,想到什麽好点子没? ------------------------------------- 帅气的分割线 -------------------------------------- mp.dll 里实现了各种实体的功能,每一种实体都是一个类,它们都基于 CBaseEntity 这个类。 实际上各种实体都有很复杂的层级关系,举个例子: 玩家实体 CBasePlayer 是这样的: CBaseEntity::CBaseDelay::CBaseAnimating::CBaseToggle::CBaseMonster::CBasePlayer 曾曾曾爷爷了。。。 每一种实体都关联到一个类,比方说实体 weapon_ak47 实际上是关联到 CAK47 这个类 LINK_ENTITY_TO_CLASS(weapon_ak47, CAK47); 当你在插件或者其它地方使用CreateNamedEntity创建一个weapon_ak47实体,实际上也就是相当于上面代码的 new CAK47 这样的过程,只不过引擎和mp.dll帮你处理好了。 写插件非常重要的Ham模块就是对这些虚函数安装钩子,想钩住武器的切枪事件为什麽要所有武器都要钩一遍?因为每一种武器都有一个Deploy函数,只钩weapon_ak47,当然只有AK47才有效。 虚函数相当灵活,也容易操作,如果想钩一个虚函数,只需要知道它在VFT里的索引,写入新的函数地址就行。 基于这个特性,Ham模块提供了相当灵活的用法。 例如想要钩住hosta_entity的Think,只需要这样做: RegisterHam(Ham_Think, "hostage_entity", .... ); 如果使用fakemeta的FM_Think钩子,就要手动检查classname,如果有其它插件意外更改了classname会出现更意外的情况。。。 具体的实体关联情况可以参考CS16ND。 另外Ham的Ham_Weapon_SendWeaponAnim是BUG,任何情况使用都会崩溃(原因是Hook时参数数量不对)。
SetModel 笔记 要设置一个实体的模型,通常你会想到set_pev(ent, pev_model, "...."); 然而其实这样是没用的,因为这仅仅是改变了实体的一个保存名字的变量,而没有真正的设置模型。 正确设置的方法是使用g_enginefuncs.pfnSetModel函数,在fakemeta里就是engfunc(EngFunc_SetModel, ent, "...."); 这个函数里更改了实体的两个值来实现改变模型: pev->model 和 pev->modelindex 而 pev->modelindex 才是真正决定模型的变量,但是修改pev->modelindex并不会影响pev->model,会出现模型名字跟实际模型不一样的情况,所以一般用SetModel来设置模型。 但是SetModel设置了新的模型后,会改变实体的min/max,导致出现一些意外的情况,比方说TraceLine打不到之类的。 为了避免这个问题,使用SetModel设置模型之后要重新设置实体的min/max,这样有点麻烦,我们可以自己写一个SetModel代替之。 stock SetModel( ent, const model[] ) { set_pev( ent, pev_model, model ); set_pev( ent, pev_modelindex, engfunc(EngFunc_ModelIndex, model) ); }
AddToFullPack 笔记 函数原型: int AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet); 函数实体在mp.dll里定义,由引擎调用。 该函数把实体状态(state)添加到数据包里,准备发送给客户端,客户端接收到的实体数据都经过这个函数处理,于是乎可以修改这个函数达到一些单向效果,例如玩家1看不到玩家2,当玩家2的数据要发送给玩家1时,修改其发送的内容,就能达到目的。 可以使用fakemeta来钩住这个函数,例如: register_forward(FM_AddToFullPack, "FW_AddToFullPack_Post", TRUE); 使用fakemeta的set/get_es函数来修改entity_state_s *state的值,例如: public FW_AddToFullPack_Post( handle, e, ent, host, hostflags, player, pSet ) { set_es(handle, ES_RenderMode, kRenderTransAlpha); set_es(handle, ES_RenderAmt, alpha); }
View Mode 笔记 玩家作为观察者可以选择多种观察方式,引擎里叫做ViewMode,一共有6种。 // Spectator Movement modes (stored in pev->iuser1, so the physics code can get at them) #define OBS_NONE 0 #define OBS_CHASE_LOCKED 1 // 锁定追逐视角 #define OBS_CHASE_FREE 2 // 自由追逐视角 #define OBS_ROAMING 3 // 自由查看 #define OBS_IN_EYE 4 // 第一视角 #define OBS_MAP_FREE 5 // 自由总览地图视角 #define OBS_MAP_CHASE 6 // 追逐总览地图视角 玩家活着的时候,ViewMode一般为OBS_NONE,死掉后3秒左右的时间是OBS_CHASE_FREE。 ViewMode的值存储在pev->iuser1里,可以用fakemeta的pev函数获取或者修改。 正在观察的玩家ID存储在pev->iuser2里。 玩家死后可以从pev->iuser3得到杀死自己的人。
有一点小进步吗 我说没有缩放你们肯定不信 模型调整:贝壳
Half-Life Master server Half-Life Master server By Crsky (
[email protected]
) This source code is provided as is (no warranties). Download: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1bohJgWB&urlrefer=68e5bfcf394c86e3bc662f3b43f2e230
实体CBaseEntity的变量 非专业文章... (不懂C++可以跳过这一段...) 在插件里,所有能用CreateNamedEntity创建的实体类型(classname)都是基于CBaseEntity这个类,具体层级关系以后再讲...,CBaseEntity有一些Private变量可以使用,一般使用get/set_pdata_* 这一套函数来读取或者修改。 对于*不是玩家*的实体来说,CBaseEntity有20多个变量是没有被使用的。 你可以自由使用它们来保存自己的数据。(还在为iuser不够用发愁?) 这些变量是玩家保存子弹数量用的,所以其它实体并不会使用。要使用它们当然要先知道它们offset。所以说 offset 8 ~ 29 是可以自由使用的。 来个例子:当然你如果想保存float也是可以的,因为... 算了不解释了。 把set_pdata_int改成set_pdata_float就可以了,当然get也要,不然你存个float进去,用int的类型取出来就是错误的数据。 下次解释一下什么是 pdata ( Private Data),以及如何运用。
[Module] KeyValues 这个模块用于读取和保存键值... 下载地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1hqSC5pU&urlrefer=300f9cdce856a79c8bcbf28e780ee930 ======================= 帅气的分割线 ======================= 例子1: // 创建一个名为weapon的键 // 设置键值 // 保存到文件 // 删除weapon键, 释放内存它保存到文件之后是这样的:能保存当然也能读取: // 创建一个键 // 从weapon.txt加载键值 // 获取键值 // 输出到控制台 // 删除创建的键, 释放内存控制台:
快来吐槽吧~
HL调色板文件修改器 HL里的血块、喷图之类的颜色,都保存在这个文件里。 "gfx/palette.lmp" 随手写了个方便修改的工具。恶搞一发:BloodSprite:下载地址(成品+源码):http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1kTCSmSB&urlrefer=b97477ae3618fcefe35372ee1652cb74
[Module] Private Data 1.0 本模块可以读取/修改edict_s::pvPrivateData里的数据,类似fakemeta的get/set_pdata_*函数,支持所有基本数据类型,目前1.0版本没有CBaseEntity指针转换和复制字符串的函数,后续更新的版本会加上。 主要函数(privatedata.inc):http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F13249474%2F&urlrefer=6d16a53c03ad8da4493ba0e2bc6be7ce 工具库(privatedata_util.inc):http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F13249478%2F&urlrefer=cc862c7543d94f42f63516e79be5ab3c 模块使用VS2005编译,需要VC++2005运行库。 下载地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1kTAjxd1&urlrefer=42cdafbf0e313adeb6fc73c1f53dfc73
Orpheu: GameRules *本帖内容适合有一定AMXX基础和有一定orpheu使用经验的人。 模块辣鸡,没什麽卵用,之类的话就不用说了,不想用就单击右上角红叉。 要修改g_pGameRules里的变量,就先得到它,在InstallGameRules的Post函数里取返回值就行了。 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F13142029%2F&urlrefer=7aa3caa7936b49a67c575d62d9b01af8 注意要在plugin_precache里安装钩子,因为此时InstallGameRules函数还没有被调用。 得到g_pGameRules之后就可以用OrpheuMemoryGetAtAddress函数来读取变量值,用OrpheuMemorySetAtAddress函数来修改变量值。 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F13142049%2F&urlrefer=a2e7a1d7b9c834d2d9993b2af8423eb0 这是Memory的offset配置文件: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F13142056%2F&urlrefer=980e046b452ce0997cb756b3365cfa5a 放在orpheu的memory目录里就行了,文件名随便,没有扩展名。 顺便提供InstallGameRules函数特征文件: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F13142062%2F&urlrefer=51d6942edc744fb7a8f6122568479996 如果你的游戏无法使用,请自行修改特征码。 Orpheu: http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fforums.alliedmods.net%2Fshowthread.php%3Ft%3D116393&urlrefer=32a4a8552cbe0240758f884393f04a97 寻找特征码:http://tieba.baidu.com/p/4059835432
RevEmu For Windows From: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fbir3yk.net%2Fforum%2Ftopic_179%2F&urlrefer=351bf99ba75e910209d924d585a9edf5 Download: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1o6jEtlw&urlrefer=142526ced2426914e2417bfe8880902a
[+1s]VGUI2 code http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgit.oschina.net%2Fakcode%2FVGUI2&urlrefer=169d18312c9ca92a786d7992c85981ff
【Module】xPhere(ACG)模块下载 2012-08-18:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1i33zWup&urlrefer=2a9a2b5663c5e7723dd2265ab088ddc9 2013-01-23:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1qWKgHo4&urlrefer=574e07f948c76c71cd1eb2d611e8bed8 2014-02-01:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1i3pmSuh&urlrefer=7e0a6217f01a4b3e3f243bc56695095e 2014-03-12:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1c0BHJyw&urlrefer=342a4abfde0b9eb7540cb5874b72ee9f
Mind Mapping 裙子 417581065
HLMV最终回 总体改变一览: 改变Hook安装方式,使用Hook直接获得窗口句柄而不需要等待程序启动完毕 修复打开文件时可能直接崩溃(老式Hook的弊端) 修复打开模型后关闭窗口出错 修复N卡驱动导致Hook失败 修复studiomdl.exe贴图剪裁命令 使studiomdl.exe文件缓冲区达到64MB 增加贴图渲染模式选项(flatshade,chrome,fullbright,nomips,additive,masked) 重新编译hook.dll减小体积(使用黑月汇编) 重新编译studiomdl.exe减小体积(使用动态库) *仅修改了hlmv.exe使其加载hook.dll,其它无任何修改 *本程序(hook.dll,studiomdl.exe)安全无毒,源码公开,杀软报毒纯属误报 *源码位于source目录 下载地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1ntH32NR&urlrefer=1a47e0485169a2bb2fcb0fa5b7dffec9 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fi13.tietuku.com%2Fce99a1a892fdb1ee.gif&urlrefer=04073450dcfd3582760ae43c3fa20961
使用 IDA Pro 查找函数特征码 下载 IDA Pro 最好是6.x的版本,自带F5键反编译。 第一步: 在IDA里载入你的程序(EXE或DLL)第二步: 寻找函数,如果你知道函数里引用了某个函数或者字符串,就可以尝试直接搜索函数名或者字符串,在 IDA View 窗口里按(Alt+T)开始搜索,(Ctrl+T)继续往下搜索。 搜索到一个字符串或者函数之后,你可以按下 X 键,查找出所有引用了这个函数或者字符串的地方,这可以帮助你快速找到需要的函数。 找到一个函数之后,你可以按 F5 键查看反编译结果(C语言风格),根据代码来确定是否是你要寻找的函数。第三步: 切换到 Hex View 窗口,此时显示的位置有可能不是当前函数的数据,你需要记住这个函数的地址,就是(sub_xxxxxxx)这个,然后在IDA左边的 Function name 窗口里找到这个函数名(可以使用Alt+T快速搜索),双击一下,Hex View 窗口就会自动跳到这个函数头部数据。第四步: 选中并且复制这一行,就是函数的特征码(实际上特征码就是函数头部的几个字节数据)。 实际上最好复制整个函数的数据,但是一般来说前16个字节就已经够准了。 修改一下格式就可以使用了。特别提示: 如果特征码里出现有 0x10 - 0x20 之间的字节,最好替换成 0x2A 否则有可能出现特征码搜不到,这个是经验之谈,原理我也不懂。
[Module] read and write ini file Include: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F12292451%2F&urlrefer=1d46dfb0b9bd91b3312b9cbb46575507 Demo: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F12292453%2F&urlrefer=02f927a74aa98d26fb929715d52d2d26 Module: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1hqB63Hy&urlrefer=406426207c107c8ca70d275a96f7eac3 String/Int/Float read and write supported, it's easy to use.
读取INI的Native函数 为了方便读取配置文件而编写的。 可以读入Int、Float、String、Bool,以及复合的值。 config.h -> http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F11940331%2F&urlrefer=f47e0b562ab1fbe5898d4836cd9de86e config.sma -> http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F11940335%2F&urlrefer=d2a374bc060d0a4f6db865f54a24894b 编译 config.sma 并加载便可使用 GetPrivateProfile 函数
HLMV 1.36 *基于HLMV1.36英文原版修改 *修复Win7/8/8.1等系统下点击关闭出现停止运行的问题 *启动时自动更正MDL编译器和反编译器的路径 *如需修改或者扩展功能请打开Hook.e进行修改 *模块原创,修改源码请保留标题download:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1i3KUPTz&urlrefer=ffc971146a0a2607cf5c9c0f177b5f79
SPR文件浏览器(*语言) 今天下午折腾的,本来想写SPR制作工具的,然后发现SPR里所有图像都得共用一个调色板,已放弃SPR文件。 可以把SPR文件的打开方式设置为这个程序、可以把SPR文件拖入窗口中、支持查看任意帧、播放帧由于乱写就禁止了,有兴趣可以在源码中恢复。 按 ← → 可以查看上一帧、下一帧。download(成品+源码):http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1pJoohkR&urlrefer=00bc4c50281f183f38d532c816e9c7cc 弃坑完毕。
模型编译工具修改版 1、修复$cliptotextures选项,如果QC文件里不加入这个选项,贴图就不会被剪裁,保持原来的尺寸。 2、使贴图大小上限达到4K,即4096×4096。 3、使最终模型文件大小上限达到64MB,好像没什麽用,不过顺便而已。很多人关心的贴图问题,太大的贴图游戏载入不了,其实是可以破解的,只需要Hook引擎的GL_LoadTexture函数来重写贴图载入代码,就能成功加载大贴图。 关于这个我已经在MetaHook吧发过例子和代码,有兴趣的可以去看看。 http://tieba.baidu.com/p/3882875798download:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1DaKbW&urlrefer=b74cb498fa013c1c3de0f2f1726e259e
使用AMXX读取MDL模型信息 例如:用途自行发挥,我只负责带个头。 代码:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F11813964%2F&urlrefer=ff66bb2fa57f0d9d8afedf9264f4c88b
MDL修复程序 众所周知的MDL反拆开技术,就是修改已经编译好的MDL里面的SMD和贴图之类的文件名,让反编译程序无法使用这个名字来创建文件,达到反拆开的目的,这个小程序就是强制对这些SMD和贴图进行重命名,让反编译程序能正确拆开模型,代码量不大,只有200行。 (对一切使用此类方法 '加密' 过的MDL都有效)Download:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1hqw7DBI&urlrefer=cf19f91b423e3adaed58da71f0118276
跳跃减速调整插件 可以调整玩家跳跃之后的移动速度,修改 ‘sv_delayjump’ 数字越大越慢。 暂不开源,其实只有19行。 度盘 -> 1eQJCnUa
当你使用变量存储一个数值的时候,代码是这样的:计算机的内存是以二进制的方式保存的,只有 " 1" 和 " 0" 两个值。 所以十进制的1和2在内存中是这样的:首先介绍最简单的位移操作,操作符是 " <<" 或者 " >>" 。 它会把二进制数据统一往左边或者右边移动一定的位数。 例如数值1的二进制是这样的:我们用左移运算符,把二进制数据往左边移动 1 个位置。 代码是这样写的:然后数据就会变成这样:那麽二进制的 "10" 就是十进制的 "2" 啦。=========================================================== 你可能会有疑问了,最大可以往左边移多少位呢? AMXX规定的变量(cell)最大可以支持往左边移动 32 位。 =========================================================== 然后你可能会有疑问,如果移过头了会怎样? 如果往左边移过头了,那麽最靠左边的数据会被丢弃! 就像这样:好了,左移就是这样的用法,右移 ">>" 跟左移的用法完全一样,请自行实践。 现在来学习一下其它的一些位操作:位或、位与。 =========================================================== 位或的介绍: 当两个二进制位有一个为 "1" 时,结果就为 "1" 。 怎麽对两个数执行位或呢?位或的运算符是 " |"。 用键盘就是这个符号:看看代码怎麽写:我们用文字和图片来解释这个过程: 请回头看位或的介绍!那麽你知道 new_value 的值是多少了吗?=========================================================== 那麽位与又是怎样的呢? 位与的介绍: 当两个二进制都为 "1" 的时候,值为 "1" ,否则为 "0" 。 怎麽对两个数执行位与呢?位与的运算符是 "&"。 代码是这样写的:二进制对比:所以结果就是二进制的 "100" 也就是十进制的 "4"。说了位或和位与,这实际上有什麽用呢? 事例: 如果你想保存32个玩家的一种状态,比如玩家是否活着,那麽你可能会这样写:回想二进制,AMXX的变量的二进制可以有32位,如果每一位分别用来记录一个玩家的 状态,那麽不是1个变量就搞定了? 是的,确实可以,下面代码说话:(为了代码易懂写成这个形式,实际上可以简写成这样:)(两种写法的结果是完全一样的) 如果又忘了位或的原理,请回头看一下。 如果玩家的id是2,那麽 1<<id 就是把 1 往左边移动 2 位,所以结果是这样的:那麽这个位置就是用来保存玩家2的状态了,如果这个位置是 1 就表示玩家活着。 否则玩家就是死了。 那麽要把这个值弄到 user_alive 变量里,就要用到位或了。 如果又忘了位或的原理,请回头看一下。这样你就把一个玩家的状态加进变量里了,user_alive 的其它位置当然是用来 保存其它玩家的状态的,每个玩家的id都不同,所以处在的位置也不同,不用 担心冲突掉。 那麽要怎么取得玩家的状态呢? 这里就要用到位与了。 忘记了位与的原理请回头看。 如果要判断玩家 2 的状态,那就先把1移动到玩家2的位置忘记了位与的原理请回头看。 直接把这个数和 user_alive 进行位与。二进制:因为 "100" 肯定大于0,所以如果返回值大于0,那麽玩家就是活着了。 如果玩家不是活着的话,就会变成这样:所以如果返回 “0” 就表示这个位置的值是 0 ,玩家也就是死了。 ------------------------------------------------------------------------------------------
去除地图任务插件 服务器"mp.dll"里是检查地图里是否有某种实体来确定游戏模式的,所以我们只要删除这些实体就能去掉地图的任务。 看看mp里检查了哪些实体:于是只要在这些实体产生的时候就删掉即可达到目的,代码很简单,去掉备注40行都不到: 代码地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpaste.ubuntu.com%2F11022652%2F&urlrefer=c28909ee95998b26c2a4e1d9a22e7cd9 当然如果你发现人质图的人质还在,我也不知道人质实体名字,要同时删掉人质的话直接在列表里加入人质实体的类名即可。
加备注版连跳插件源码 好吧炒冷饭了,这是精品区的一个帖子,我只是抄了一遍加了些备注 代码:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2FMW91gvum&urlrefer=4def283368568d668a5fb560ba06fdf7
[水贴] 中二m4a1导弹 其实是学习vec的demo,不知道为什么就写成这样了 备注只是按照我的理解来写的,有错见谅,代码:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2Fw4sYDpNc&urlrefer=7dca2a368a61ad4b2b781e6508426a97 // ! 这个导弹是没有伤害的,要伤害自己写 加了特效的m4a1:
MetaHook设置V模型属性 此模块提供一些V模型修改的接口 例如手臂,贴图什麽的 inc在线预览 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2FiL9tlK1V&urlrefer=09cba647331e7a45965efb5ed199691a MetaHook下载 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1dKAse&urlrefer=9d3fbf7df7202bc012196dc7ef7fa8b8
[钻石星辰拳]AMXX发送MH消息 翻inc时看到EngFunc_RegUserMsg,于是想着是否能注册MetaHook消息,就测试了一下。 AMXX:MetaHook:Debug:
用AMXX写SetTask 除了定时比set_task精确点之外没什麽有点,而且只支持两种模式。 Type 1 - 指定时间后执行函数 Type 2 - 每隔指定时间执行一次函数(无限循环,可以扩展加上次数限制) 代码:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2FJ57j1R2u&urlrefer=d25310910a6e44df8dbc879624d18820
native函数教程3 上一贴:http://tieba.baidu.com/p/3687126017 上一贴说了参数的各种使用方法,这贴是最后一贴,介绍另一种参数传递方式,此种方式更灵活,适合动态参数的Native函数。 什麽是动态参数?动态参数->不限定参数类型和数量:看到这里肯定有疑问了,这样的参数,怎麽接收呢? 这就是这次要介绍的内容。 先写两个插件测试一下:运行:提示:打开上一贴,观察register_native ( ) 函数的使用上的区别! 我们现在来看看register_native ( ) 函数的介绍:看到第3个参数,可见Native函数的参数传递方式有两种类型,当style为1时,Native函数的使用方法就可以像第1贴和第2贴说明的那样,直接对应的参数写上,当style为0的时候,就是另一种参数传递方式,两种方式不能混用,本篇介绍的就是style为0时,参数的使用方式。 当register_native ( ) 时,style设为0,那麽Native函数的本体就必须被声明成这样:接收到的第1个参数表示调用Native函数的插件的ID,第2个参数表示传递到Native函数上的参数数量。 那麽怎麽获得参数内容呢?可以参考amxmodx.inc的说明:这里中文解释一下上图每个函数的用途: 参数序号从1开始! get_****(参数序号, ...); get_string- 获取字符串参数值 set_string - 设置字符串参数值 get_param - 获取整数型参数值 get_param_f - 获取浮点(小数)型参数值 get_param_byref - 获取指针指向的整数型变量的值 get_float_byref - 获取指针指向的浮点型变量的值 set_param_byref - 设置参数指针指向的整数型变量的值 set_float_byref - 设置参数指针指向的浮点型变量的值 get_array - 获取整数型数组参数值 get_array_f - 获取浮点型数组参数值 set_array - 设置整数型数组参数的值 set_array_f - 设置浮点型数组参数的值 在pawn中,数组型参数始终传递指针而非传递数组数据。(不懂指针的含义请百度学习C语言指针) 注意:当声明Native时没有指定参数的类型,则参数默认传递参数的指针! 这样的参数传递过去将全部是指针!所以获取参数是要使用***_byref ( ) !使用get_param或者get_param_f会获取到错误的数值!怎麽指定好参数的类型呢?参数名前加上"&"符号表示传递指针,而不是数据本身,这某种程度上可以稍微提高速度(不必纠结)。 你可以理解为,如果Native函数没有指定参数的数据类型,那麽全部都是加了"&"的,全部都是指针。 那麽获取它的值的时候就得用get_param_bytef / get_float_byref 来获取了,就像这样:运行:当然你已经指定了参数的类型的话,代码就是这样的:运行:因为pawn中,字符串就是数组,所以字符串也是传递指针的,现在来演示获取一个字符串参数!运行:----------------------------------------------------低调的分割线----------------------------------------------------- 有了以上的演示,你应该已经知道,你的Native函数可以不限定接收的参数数量和类型! 你可能想问,我可以通过参数返回数值或者字符串吗?就像上一贴一样! 毫无疑问,这是可以的,因为指针就是用来做这种事的,指针就是指向一个变量的东西,使用set_param_byref / set_float_byref 你就可以设置指针指向的变量的值,就达到了返回一个数值的目的,说那麽多都是废话,见代码:运行:有了这个例子,其它那些set_string / set_float_byref / set_array 自然不在话下了吧,举一反三! 这里要提醒一下,设置数组的时候,保存数组的变量要和来源数组成员数相同! ----------------------------------------------------低调的分割线----------------------------------------------------- 就算是我也觉得这篇写得不够好,可能是因为准备不够充分的原因,如果看不懂的话,我也不重写了! 弃坑。。。
native函数教程2 上一贴:http://tieba.baidu.com/p/3684515909 上次说了最简单的用法,传递整数型参数和返回整数型数值,嗯那麽这次来试试浮点型和字符串。 下面的代码向Native函数传递浮点型和字符串参数,并且返回一个浮点数。 插件A(声明Native函数):插件B(调用Native函数):输出结果:------------------------------------------------------------------------------------------------------------- 还可以通过参数来返回一个字符串,看代码: 插件A:插件B:输出结果:------------------------------------------------------------------------------------------------------------- 下一贴介绍另一种参数的传递方法。
AMXX的各种历史版本以及源码 点击以下按钮即可获得 ↓都是官方原版资料哦 sourceforge.net/projects/amxmodx
AlliedModders Open-Source ################################################################### ## AlliedModders ## Open-Source Software Group ## http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Falliedmods.net%2F&urlrefer=d60bbfe01802d8e7a28ac23d2efc85ff ################################################################### amxmodx AMX Mod X - Half-Life 1 Scripting and Administration Updated 2 hours ago ------------------------------------------------------------------------------------------------------------ sourcemod SourceMod - Source Engine Scripting and Administration Updated 18 hours ago ------------------------------------------------------------------------------------------------------------ metamod-source Metamod:Source - C++ Plugin Environment and Detour Library for the Source Engine Updated 2 days ago ------------------------------------------------------------------------------------------------------------ build-configs Build configuration files for AM Updated 2 days ago ------------------------------------------------------------------------------------------------------------ sourcepawn A small, statically typed scripting language. Updated 8 days ago ------------------------------------------------------------------------------------------------------------ stripper-source Stripper:Source Updated 8 days ago ------------------------------------------------------------------------------------------------------------ hl2sdk Half-Life 2 SDK Mirrors Updated 9 days ago ------------------------------------------------------------------------------------------------------------ ambuild AlliedModders C++ Build System Updated 15 days ago ------------------------------------------------------------------------------------------------------------ amtl AlliedModders C++ Template Library Updated 15 days ago ------------------------------------------------------------------------------------------------------------ cssdm Counter-Strike:Source Deathmatch Updated 17 days ago ------------------------------------------------------------------------------------------------------------ pawn-docgen Pawn documentation generator Updated on Oct 29, 2014 ------------------------------------------------------------------------------------------------------------ smxtools Tools for inspecting .smx files Updated on Sep 19, 2014 ------------------------------------------------------------------------------------------------------------ blaster Source and GoldSrc Query Tool Updated on Sep 8, 2014 ------------------------------------------------------------------------------------------------------------ metamod-hl1 Fork of Metamod for Half-Life 1 Updated on Aug 17, 2014 ------------------------------------------------------------------------------------------------------------ hlsdk Half-Life 1 SDK Mirror (2.3p3) Updated on May 25, 2014 - 楼主翻 amxmodx_mm.dll 的源码的时候发现的 - 不多解释,需要的人自然懂 - 代码 : http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgithub.com%2Falliedmodders&urlrefer=b93c642d45b274e1749cb1fe0d3a5d67
CS1.6的一些中文补丁【收集】 可以使客户端完全支持中文编码【中文ID,中文打字聊天等】,下载:度盘 -> 1sjwRB6t -资源来自互联网
用fakemeta模块修改玩家模型 以前一直是用cstrike模块修改模型,但是现在cstrike模块对我来说没有什麽用处了,因为我大部分功能都用fakemta模块或者hamsandwich模块代替实现了,而cstrike至今我只用来设置玩家模型,觉得不必要为了这个功能多带一个模块,今天xujiananxm提醒我要打断引擎调用的SetClientKeyValue,于是我重新测试了一下设置模型。实际上cstrike模块里cs_set_user_model函数也是使用SetClientKeyValue来修改玩家模型的,但是我以前测试没成功【实际上成功了,但是瞬间又被引擎还回来了】,调用engfunc(EngFunc_SetClientKeyValue, ...);的时候,FM_SetClientKeyValue实际上也会被触发,但是value却不是engfunc调用的时候的值,详见代码:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodepad.org%2FIBenK7uf&urlrefer=0ef026d41a36239e5f5364b0416c0dfc,于是只能打断掉引擎的SetClientKeyValue,然后设置模型就可以了【代码已给出例子】。
首页
1
2
3
4
5
下一页