[SMA教学]巧妙使用变数 第{ 2 }集

Home Home
引用 | 编辑 mischna09
2013-02-04 23:54
楼主
推文 x2
===========================================


 轻松写插件~              ~写插件轻松


===========================================
大家好~我又是Y14Y了~ [依然是AMXX新手]
~!@#$%^&*() (经过一大串废话后)
今天你将活用变数 来控制等级 这种东西
Let's GO!
--------------------------------------------------------------------------------------
如果你不知道变数是什么 请先到我的第一集
http://bbs.mychat.to/reads.php?tid=976916 

--------------------------------------------------------------------------------------
我将用一个自制速成型插件 功能是
*像C$O的启示录一样的血量升级  3000美金生1等 最高41等 每生1等重生时的血量会加20*
我会放原插件内容 和 口语化的翻译 让你能更清楚每句话的意义
更快学会!
~~~~~~~~~~~~~~~~~~插件原文~~~~~~~~~~~~~~~~~~~~~~~~~

//此插件只提供参考 请勿自行修改后 自称自创品
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta> 
#include <fun> 


#define PLUGIN "变数实用范例 {2} - 购买血量等级"
#define VERSION "1.0"
#define AUTHOR "Y14Y"


new g_heal_level[33]


public plugin_init() 
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "fw_Spawn_Post", 1)
register_clcmd("maxhp_up", "example")
}
public example(id)
{
if(!is_user_alive(id))
{
client_print(id, print_chat, "[系统]请等到复活后再使用!")
}
else if(is_user_alive(id) && cs_get_user_money(id) >= 3000 && g_heal_level[id] <= 40)
{
cs_set_user_money(id, cs_get_user_money(id) - 3000 ,0)
g_heal_level[id]++
set_user_health(id, get_user_health(id) +  20)
client_print(id, print_chat, "[系统]你提升了血量上限至[%d]", (g_heal_level[id] * 20 + 100))
}
else if(is_user_alive(id) && cs_get_user_money(id) < 3000)
{
client_print(id, print_chat, "[系统]你的金钱不够!")
}
else if(is_user_alive(id) && g_heal_level[id] == 41)
{
client_print(id, print_chat, "[系统]你的血量上限已达最高!")
}
}
public fw_Spawn_Post(id)
{
set_user_health(id, get_user_health(id) + (g_heal_level[id] * 20))
}
~~~~~~~~~~~~~~~~~~文原件插~~~~~~~~~~~~~~~~~~~~~~~~~
翻译: (基础类的不多加说明)



#include <amxmodx> //不多加说明
#include <hamsandwich> //不多加说明
#include <cstrike> //不多加说明
#include <fakemeta>  //不多加说明
#include <fun>  //不多加说明


#define PLUGIN "变数实用范例 {2} - 购买血量等级" //不多加说明
#define VERSION "1.0" //不多加说明
#define AUTHOR "Y14Y" //不多加说明


新变数 名字g_heal_level[33]


public plugin_init()  //不多加说明
{
register_plugin(PLUGIN, VERSION, AUTHOR)  //不多加说明
        注册(事件[复活] 对象[玩家] 此发生时事件触发"fw_Spawn_Post"这个FUCTION)
        注册指令(输入"maxhp_up", 触发"example")
}
public example(id) //不多加说明
{
如果(玩家没有生存(id))
{
client_print(id, print_chat, "[系统]请等到复活后再使用!") //不多加说明
}
其他的 如果(玩家生存(id) 并且 取得玩家美金大于等于3000 并且  g_heal_level[id]这个变数 小于等于 40)
{
设定美金(对象:触发此FUCTION的玩家, 取得玩家金钱(id) 扣除3000 ,0) //后面的0不懂的勿动
g_heal_level[id]此变数加1
        设置血量(对象:id , 取得玩家血量 + 20)
client_print(id, print_chat, "[系统]你提升了血量上限至[%d]", (g_heal_level[id] * 20 + 100)) //不多加说明
}
其他的  如果(玩家生存(id) 并且  取得玩家美金(id) 小于 3000)
{
client_print(id, print_chat, "[系统]你的金钱不够!") //不多加说明
}
其他的  如果(玩家生存(id) 并且  g_heal_level[id]此变数等于41)
{
client_print(id, print_chat, "[系统]你的血量上限已达最高!") //不多加说明
}
}
public fw_Spawn_Post(id) //经解释后 现在是玩家重生发生的事
{
        设置血量(对象:id , 取得玩家血量 加上 (g_heal_level[id]的数量 乘于 20))
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果身为高手的你觉得哪里讲错或有更好的讲法 欢迎说出~ ^^

今天的教学就到这里了~祝你能成SMA高手



如果你觉得对你有用
就让我吃朵花花 或推推吧~

本帖包含附件
档名: txt health_example.txt   (2022-06-09 14:20 / 2 KB)  
范例 - 因为不能上传SMA格式 所以使用TXT记事本
下载次数:13 需要威望:2


献花 x3
引用 | 编辑 烈Gama英仙座
2013-02-05 07:50
1楼
  
嗯嗯~

怎么感觉你出文比上帝大大来的快呢

一天一篇

不早点起床抢不到头香呢

头香(洗头)

重点:

看过之后

并不会觉的你很嫩

真的

不需要在文章后加那一句

整篇文章算还不错的

献花 x2
引用 | 编辑 希斯特七夜
2013-02-05 23:02
2楼
  
说真的你并不是新手了算是中等以上的写SMA的高手 表情

献花 x2
引用 | 编辑 Marchillus
2013-02-17 17:13
3楼
  
呢 咱跟汝的阶级好像已经差不多了呢...(话说快开学了QAQ

献花 x0
引用 | 编辑 sot86217
2013-02-22 20:04
4楼
  
嗯~这篇也很详细~多出几篇吧~我也想学插件XD

献花 x1
引用 | 编辑 弑血
2013-04-23 01:53
5楼
  
加油喔
希望多出点,原因当然是,希望出现高手!!!
还有我这个人看到很多密密麻麻的字就
想删掉一些多余的字
我可以提醒你一下
这是你的
if(!is_user_alive(id))
{
client_print(id, print_chat, "[系统]请等到复活后再使用!")
}
else if(is_user_alive(id) && cs_get_user_money(id) >= 3000 && g_heal_level[id] <= 40)
{
cs_set_user_money(id, cs_get_user_money(id) - 3000 ,0)
g_heal_level[id]++
set_user_health(id, get_user_health(id) + 20)
client_print(id, print_chat, "[系统]你提升了血量上限至[%d]", (g_heal_level[id] * 20 + 100))
}
else if(is_user_alive(id) && cs_get_user_money(id) < 3000)
{
client_print(id, print_chat, "[系统]你的金钱不够!")
}
else if(is_user_alive(id) && g_heal_level[id] == 41)
{
client_print(id, print_chat, "[系统]你的血量上限已达最高!")
}
}
我觉得 修改过后 会减少很多
这我帮你修改的,看你要不要使用
if(!is_user_alive(id))
{
client_print(id, print_chat, "[系统]请等到复活后再使用!")
}
else
{
  if(cs_get_user_money(id) >= 3000 && g_heal_level[id] <= 40)
  {
    cs_set_user_money(id, cs_get_user_money(id) - 3000 ,0)
    g_heal_level[id]++
    set_user_health(id, get_user_health(id) + 20)
    client_print(id, print_chat, "[系统]你提升了血量上限至[%d]", (g_heal_level[id]   * 20 + 100))
  }
  else if(cs_get_user_money(id) < 3000)
  {
      client_print(id, print_chat, "[系统]你的金钱不够!")
  }
  else if(g_heal_level[id] == 41)
  {
      client_print(id, print_chat, "[系统]你的血量上限已达最高!")
  }
}
我是觉得...你已经判断好了前者,为啥后者要不断的给他勒 表情
你不觉得你已经给了if(!is_user_alive(id))
那为什么 else之后 就是另类的意思
还多给他3个is_user_alive(id) 表情
这并不是在指点你 ,而是想说 让大家明白使用else的方式。

献花 x0
引用 | 编辑 徐庆丞
2013-04-28 00:50
6楼
  
好强 .. 我顶多弄打指令加钱0..0

献花 x0
引用 | 编辑 能天使
2013-05-12 01:06
7楼
  
楼主 已经是中级以上的编写源码

献花 x0
引用 | 编辑 12456789
2013-09-11 16:01
8楼
  
现在学编写sma想找教学十分困难,

这个sma教学简直是造福人群!(包括我 表情 )

献花 x0
引用 | 编辑 adi37545vfg
2013-09-11 18:29
9楼
  
楼主大大好强 我不会写插件= = 感谢你发教学文 让我们看^^

献花 x0
引用 | 编辑 dpes964211
2013-09-27 20:22
10楼
  
载点不能下载= =   health_example.txt   里面都是乱码 表情

献花 x0
引用 | 编辑 Worship7
2013-09-30 14:17
11楼
  
终于有点眉目了。。。

献花 x0
引用 | 编辑 j12412211202
2014-05-11 09:59
12楼
  
因为大大的教学。令我学会了如何制作sma

献花 x0
引用 | 编辑 Lf2net618
2014-08-25 10:43
13楼
  
威望不够差点!!! 表情

献花 x0