仿mp的RadiusDamage函数

 1 public RadiusDamage(Float:vecSrc[3], pevInflictor, pevAttacker, Float:flDamage, Float:flRadius, iClassIgnore, bitsDamageType)
 2 {
 3     new pEntity;
 4     new Float:flAdjustedDamage, Float:falloff;
 5     new Float:vecOrigin[3];
 6     new Float:vecTemp[3];
 7
 8     if (flRadius)
 9         falloff = flDamage / flRadius;
10     else
11         falloff = 1.0;
12
13     new bInWater = engfunc(EngFunc_PointContents, vecSrc);
14
15     vecSrc[2] += 1.0;
16
17     if (!pevAttacker)
18         pevAttacker = pevInflictor;
19
20     while ((pEntity = engfunc(EngFunc_FindEntityInSphere, pEntity, vecSrc, flRadius)) != 0)
21     {
22         if (pev(pEntity, pev_takedamage) == DAMAGE_NO)
23             continue;
24
25         if (iClassIgnore != 0 && ExecuteHam(Ham_Classify, pEntity) == iClassIgnore)
26             continue;
27
28         if (bInWater && !pev(pEntity, pev_waterlevel))
29             continue;
30
31         if (!bInWater && pev(pEntity, pev_waterlevel) == 3)
32             continue;
33
34         pev(pEntity, pev_origin, vecOrigin);
35         xs_vec_sub(vecSrc, vecOrigin, vecTemp);
36
37         flAdjustedDamage = xs_vec_len(vecTemp) * falloff;
38         flAdjustedDamage = flDamage - flAdjustedDamage;
39
40         ExecuteHamB(Ham_TakeDamage, pEntity, pevInflictor, pevAttacker, flAdjustedDamage, bitsDamageType);
41     }
42 }
时间: 2024-10-28 15:36:20

仿mp的RadiusDamage函数的相关文章

php和mysql仿excel的rank函数

php仿excel的rank函数也是借鉴网上的代码,但是没有二维数组情况下的进行rank排名,所以自己对代码稍微改了一下,可以直接运行试验. <?php $arr = array(           array('s'=>'99','r'=>'1','a'=>'a'),           array('s'=>'99','r'=>'1','b'=>'b'),           array('s'=>'100','r'=>'2','c'=>'

JS仿C#的String.Format函数

String.prototype.format2 = function (args) { var s = this, vals = [], rst = [], pattern = /({|})/g, reg = s.match(pattern), matchs = s.match(/({+[-\w]+}+)/g); if (matchs != null) { if (arguments.length > 1) { for (var i = 0, c = arguments.length; i <

由浅至深学习block

关于block 在iOS 4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调.这不免让我们想到在C函数中,我们可以定义一个指向函数的指针并且调用: bool executeSomeTask(void) {     //do something and return if success or not } bool (*taskPoint)(void); taskPoint = something; 上面的函数指针可以直接通过(*taskPo

转自:Android MediaScanner 详尽分析

转自http://blog.csdn.net/Innost/article/details/6083467 一 MediaScannerService 多媒体扫描是从MediaScannerService开始的.这是一个单独的package.位于 packages/providers/MediaProvider:含以下Java文件 l         MediaProvider.java l         MediaScannerReceiver.java l         MediaSca

js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)

最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家,需要了解的朋友可以参考下 很庆幸,我又见到了末日后新升的太阳,所以我还能在这里写文章,言归正传哈,最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家. 什么是JSONP协议? JSONP即JSON w

iOS开发-由浅至深学习block

关于block 在iOS 4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调.这不免让我们想到在C函数中,我们可以定义一个指向函数的指针并且调用: 1 2 3 4 5 bool executeSomeTask(void) {     //do something and return if success or not } bool (*taskPoint)(void); taskPoint = something; 上面的函数指针可以直接

Go学习笔记02-源码

第二部分 源码 基于 Go 1.4,相关文件位于 src/runtime 目录.文章忽略了 32bit 代码,有兴趣的可自行查看源码文件.为便于阅读,示例代码做过裁剪. 1. Memory Allocator Go 内存分配器基于 tcmalloc 模型,这在 malloc.h 头部注释中有明确说明. Memory allocator, based on tcmalloc. http://goog-perftools.sourceforge.net/doc/tcmalloc.html 核心目标很

FFLIB之FFLUA——C++嵌入Lua&amp;扩展Lua利器[转]

摘要: 在使用C++做服务器开发中,经常会使用到脚本技术,Lua是最优秀的嵌入式脚本之一.Lua的轻量.小巧.概念之简单,都使他变得越来越受欢迎.本人也使用过python做嵌入式脚本,二者各有特点,关于python之后会写相关的文章,python对于我而言更喜欢用来编写工具,我前边一些相关的算法也是用python来实现的.今天主要讲Lua相关的开发技术.Lua具有如下特点: Lua 拥有虚拟机的概念,而其全部用标准C实现,不依赖任何库即可编译安装,更令人欣喜的是,整个Lua 的实现代码并不算多,

Codeforces 2A Winner (map运用)

Winner Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on CodeForces. Original ID: 2A 64-bit integer IO format: %I64d      Java class name: (Any) Prev Submit Status Statistics Discuss Next Type: None None Graph Theory      2-SAT