插件简易流程教学

Home Home
引用 | 编辑 弑血
2019-06-15 18:26
楼主
推文 x2
今天教学课程是:


1.插件要写的的方向


2.跟要做些什么 &怎么做


p.s以上都(废话)


首先举个例子,我如果要弄一个zp感染模式出英雄好了,


首先第一步,要知道英雄什么条件出现?


简单来说 倒数完出僵尸后 可以用set_task 或者直接 function 呼叫自己内容


然而 方向 直接找出 生成僵尸语法后 下一段 添加自己新增的


可以参考用 

//宣告g_players为33空间阵列&player_count为变数
new g_players[33], player_count;


//以回圈方式检查1~32个玩家id内是否有什么
for (new i=1; i<33; i++)
{
// 判断不是僵尸才执行的内容&g_zombie[33]只是一个条件检查 每个版本僵尸变数阵列名称都不一样喔~
if (!g_zombie[ i ])
{
//把玩家id代号以回圈i 导入g_player阵列中储存&player_count为阵列顺序代号
g_players[player_count] = i;

//顺序代号 由0+1以此类推直到宣告的33-1=32最大数
player_count ++;
}
}


//宣告 g_random = 1~10范围乱数
new g_random = random_num(1,10);


// 10-8 = 2 & 以100%来算是20%比例执行以下内容
if (g_random > 8)
{
//宣告一个变数名hero,取得算出不是僵尸的人数id编号,再以随机方式取得id编号,至于为什么要-1 因为 由0开始+下去 最后一个大于 阵列人数+1的位子&-1只是为了让她不会出现所谓的阵列值空数。

new hero = g_players[random_num(0, player_count-1)];

//然后 hero 就可以拿去做你要的事情 例如~

//宣告32空间阵列
new name[32];
//取得hero使用者名称储存至name & sizeof name -1 为 最大使用宣告空间0~31范围
get_user_name(hero, name, sizeof name-1);

client_print(0, print_center, "某某某 %s成为了英雄", name);

也可以给予武器之类的 一推有没有的设定

// 这段语法 要使用到fun的 include喔~
give_weapon(hero, "weapon_ak47");
}


以上教学 给予一些想学但是不知道 如何下手的人看一下 所谓的方向目的 还有 达成使用


另外 首先要先有一些程式基础~不然 后续还有很多 if else while for switch new static const return 之类的要学

献花 x2
引用 | 编辑 Nailaz
2019-06-15 18:37
1楼
  
比较想知道static 跟 new 的差异
自己理解是static宣告比较省空间 也就是使用完后就会自动释出空间
但是new应该也具同等效力吧 假如都同样宣告在一个function内的话

献花 x0
引用 | 编辑 弑血
2019-06-15 18:43
2楼
  
下面是引用 Nailaz 于 2019-06-15 18:37 发表的 : 到引言文
比较想知道static 跟 new 的差异
自己理解是static宣告比较省空间 也就是使用完后就会自动释出空间
但是new应该也具同等效力吧 假如都同样宣告在一个function内的话



static 比较广泛使用在 区域函数内


new 通常用在 广域


然而两者放在广域 其实都是一样的效果...

主要区别在于 区域内

两者分别在于 一个会释放记忆体位置一个不会释放位置


new = 放在 区域内的话 会自己释放 = 0


static 放在 区域内 不会释放 会永久叠加占据记忆体空间 不会归0


简单来说就是 new 每次 定义新的值都是0开始 static 可以让定义的值不断叠加喔~ 在某方面static 比new 还要猛


ps.之前在测试2者差异的时候 用print去弄数据才发现这有趣的事

献花 x0
引用 | 编辑 Nailaz
2019-06-15 19:24
3楼
  
原来如此! 谢啦

献花 x0
引用 | 编辑 弑血
2019-06-15 20:56
4楼
  
下面是引用 Nailaz 于 2019-06-15 19:24 发表的 : 到引言文
原来如此! 谢啦



用在某方面上面 例如在think内用static取得某座标效益远比new还要好的地方


new 会不断找记忆体空间填补然后释放 如果放在think内一直重复 效率远比static还要慢


如果单纯把static放在think内取得某些值 在不归0状况下 static效益这时候远比new还要好 至少不用一直重复释放

献花 x0
引用 | 编辑 T.o.n..y
2019-06-17 11:19
5楼
  
太棒的插件教学了~ 感谢~感谢 表情

献花 x0