廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 8600 個閱讀者
 
<<   1   2  下頁 >>(共 2 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
mischna09
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
頭銜:路人餅14ˋ(˙∀˙)ˊ路人餅14ˋ(˙∀˙)ˊ
特約版主
級別: 特約版主 該用戶目前不上站
版區: CS提問區
推文 x8 鮮花 x91
分享: 轉寄此文章 Facebook Plurk Twitter 版主評分版主評分 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x1
[插件] [SMA教學]巧妙使用變數 第{ 1 }集  (這次將教你如何利用變數寫出 - 只能在開場限時內執行某事)
精華文章原創文章
===========================================


 輕鬆寫插件~     表情             ~寫插件輕鬆


===========================================
大家好~我又是Y14Y了~ [依然是AMXX新手]
最近因為幫好友寫了魔王 
其中使用了大量的變數
變數? 你問變數是什麼嗎?
今天你將會認識它並活用他
Let's GO!
-------------主要介紹--------------------------------------------------
1.變數是什麼?
變數在SMA中扮演著一種
開關  或是 紀錄數字  或是 代替 的腳色
你能透過各種事件 讓這個開關or 數字發生變化 
然後在其他的fuction中藉由取得此變數的直來控制他
如果是替代的腳色 則須寫一個 解釋他是蝦餃 的東西


2.建立變數
直接寫一個
new 變數名稱[33] 
[33] 有時候在其他情況會用更大的數字 如256等等
如果不加 就變成 沒有特定對象
大多人會在前面加 g_  我不覺得有差 可能只是方便分辨它是啥吧 
就醬...  (真短 =口=)


3.變數建立位置 (原來還有~)
一般而言可以直接再SMA任何一個 [ 不是別人fuction地盤的地方 ] 供整個插件的所有fuction都能共用 
或 [ 直接加在fuction裡面 ] 這樣範圍就只有這個fuction了


4.解釋 (開關與紀錄數字不在此範圍)
如果你今天建立的變數是用來當代替的腳色
那我直接用一個範例講解好惹
public example(id)
{
new name[33], money[33]
get_user_name(id, name, 32)
        money = get_user_money(id)
        client_print(id, print_chat, "我的名字是%s 我很窮 我只有%d塊錢", name , money)
}
看到了嗎? 建立變數後就是要解釋他
解釋這是名字有點特別 要用這個格式
get_user_name(要解釋誰的名字, 要解釋的變數名稱, 32)
其他的get_user 的這種都可以用money的解釋法
順便教一下好了
%s 和 %d 是取得名稱或數字的意思 要解釋的東西要寫在後面 而且要有順序之分!
請記得以下內容! 如果用錯將導致顯示不出來 或顯示亂碼
[ %s 是用來取得名稱 如:玩家名字 || %d 試用來取得數字的 如:錢 擊殺數]


5.我希望他是XX 需要做什麼? (代替 不在此範圍)
一個拿來成為開關或紀錄數字的變數 
不管你要拿來當開關還是紀錄數字 
不必刻意去做什麼解釋
P.S. 沒動的變數在開關上是指 false (關閉) 在數字紀錄上是0


6.如何用在 if 裡面 (代替 不在此範圍)
今天如果你希望這個式子是
如果 你的變數是開的狀態
就要寫
if (你的變數[id])
如果是關的狀態就
if (!你的變數[id]) 在前面加個驚嘆號
數字紀錄的話
if (你的變數[id] == 30)
就是如果此變數是30 也可以...
if (你的變數[id] >= 30)
就是如果大於等於30 所以當然也能...
if (你的變數[id] <= 30)
小於等於... 也能
if (你的變數[id] != 30)
如果不等於30


7.變數名稱
變數的名稱你爽就好! 可以隨便取
但請明記一個重點
變數名字的開頭第一個字 一定要是英文!!!
-----------------主要介紹結束--------------------------------
活用1 :
我會用一個範例插件(功能是開場限時可以領一把免費武器 CT是m4a1 TR是ak47)來做翻譯
也就是把每句都變成中文 方便你更快學會
!!此插件為上次的選單教學中的範例擷取取出來的 上次並沒有做詳細解釋!!
/////////////////////////////////////////////////////////////////////////////////
#include <amxmodx>
#include <fun>


#define PLUGIN "變數實用範例 {1} - 只能在開場限時內執行的事"
#define VERSION "1.0"
#define AUTHOR "Y14Y"


new g_free_time[33]


public plugin_init() 
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent( "event_round_start", 2, "1=Round_Start");
register_clcmd("14_free", "example")
}
public example(id)
{
if(is_user_alive(id) && get_user_team(id) == 1 && g_free_time[id])
{
client_print(id, print_chat, "[系統]你領取了開場限時免費武器 - AK-47!")
give_item(id, "weapon_ak47")
}
if(is_user_alive(id) && get_user_team(id) == 2 && g_free_time[id])
{
give_item(id, "weapon_m4a1")
client_print(id, print_chat, "[系統]你領取了開場限時免費武器 - M4A1!")
}
if(!g_free_time[id])
{
client_print(id, print_chat, "[系統]限時免費武器的時間已經過了 下次早點吧!")
return;
}
}
public event_round_start()
{
for(new i = 0; i < get_maxplayers(); i++)
{
g_free_time = true
  set_task(10.0, "freeoff", i)
}
}
public freeoff(id)
{
g_free_time[id] = false
}
//////////////////////////////////////////////////////////
翻譯 解釋: (基礎部分就不多加說明了)
#include <amxmodx> //不說明
#include <fun> //不說明


#define PLUGIN "變數實用範例 {1} - 只能在開場限時內執行的事" //不說明
#define VERSION "1.0" //不說明
#define AUTHOR "Y14Y" //不說明


建立一個變數 (名字為)g_free_time[33]


public plugin_init() //不說明
{
register_plugin(PLUGIN, VERSION, AUTHOR) //不說明
        註冊事件("event_round_start"代表的事件是"回合開始")
        註冊指令("(指令)14_free", 觸發"example")
}
public example(id)
{
如果(玩家生存(id) 並且 取得隊伍(id) 是 1(TR) 並且  g_free_time[id]這個變數是開啟的)
{
client_print(id, print_chat, "[系統]你領取了開場限時免費武器 - AK-47!") //不說明
give_item(id, "weapon_ak47") //給玩家道具- 武器 AK47
}
if(玩家生存(id) 並且 取得隊伍(id) 是 2(CT) 並且  g_free_time[id]這個變數是開啟的 )
{
give_item(id, "weapon_m4a1") //給玩家道具- 武器 M4A1
client_print(id, print_chat, "[系統]你領取了開場限時免費武器 - M4A1!") //不說明
}
if(g_free_time[id]這個變數是關閉的 )
{
client_print(id, print_chat, "[系統]限時免費武器的時間已經過了 下次早點吧!") //不說明
return; //停止
}
}

public event_round_start() //事件:回合開始
{
for(new i = 0; i < get_maxplayers(); i++) //不說明
{
將g_free_time設定為開啟
        計時器(10.0(秒), "執行freeoff" ,對象是i)
}
}
public freeoff(id)
{
將g_free_time設定為關閉
}
====================================
如果身為高手的你覺得哪裡講錯或有更好的講法 歡迎說出~ ^^
今天的教學就到這裡了~祝你能成SMA高手

如果你覺得對你有用
就讓我吃朵花花 或推推吧~
威望要 2 以上才可以下載附件,您目前威望不足,請勿購買


本帖包含附件
txt example.txt   (2022-06-09 14:20 / 2 KB)  
說明: 範例 - 因為不能上傳SMA格式 所以使用TXT記事本
下載次數:15 需要威望:2


[ 此文章被mischna09在2021-07-01 16:39重新編輯 ]

此文章被評分,最近評分記錄
財富:300 (by amore12) | 理由: 讚..^^



獻花 x4 回到頂端 [樓 主] From:臺灣安源通訊股份有限公司 | Posted:2013-02-04 07:21 |
Nailaz 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎 創作大師獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x77 鮮花 x254
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

2.建立變數
直接寫一個
new 變數名稱[33] (<-我不大懂加33和不加33的差別 反正我通常都會加)
大多人會在前面加 g_ 我不覺得有差 可能只是方便分辨它是啥吧
就醬... (真短 =口=)

加[33]是因為要讓玩家個別取得ID,玩家最大數是32
[]也不一定要是33可以是256等等的


[ 此文章被鄭柏昇在2013-02-04 07:53重新編輯 ]


web front-end and software engineer.
獻花 x1 回到頂端 [1 樓] From:臺灣中華電信股份有限公司 | Posted:2013-02-04 07:43 |
烈Gama英仙座
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特約版主
級別: 特約版主 該用戶目前不上站
版區: MyChat戰隊
推文 x4 鮮花 x90
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
= =
這對我很有用

給你一個讚!!

希望能再多交一些


獻花 x1 回到頂端 [2 樓] From:臺灣中華電信股份有限公司 | Posted:2013-02-04 11:50 |
絕影華
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x36 鮮花 x109
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 鄭柏昇 於 2013-02-04 07:43 發表的 : 到引言文


加[33]是因為要讓玩家個別取得ID,玩家最大數是32
[]也不一定要是33可以是256等等的



有時候我也會奇怪......
人數32  為什麼不用new xxxx[32]


獻花 x1 回到頂端 [3 樓] From:未知地址 | Posted:2013-02-04 12:47 |
八云の橙貓 手機 會員卡
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x18 鮮花 x90
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 絕影華 於 2013-02-04 12:47 發表的 : 到引言文




有時候我也會奇怪......
人數32  為什麼不用new xxxx[32]



玩家的id是1~32
但是 如果使用32的話 裡面包含的只有0~31(0也算在內 編號32的玩家無法被指定到)


所以 用33的話 雖然0用不到 但是才可以包含1~32的位元組可以儲存id


有錯請指點


獻花 x0 回到頂端 [4 樓] From:臺灣中華電信股份有限公司 | Posted:2013-02-04 14:21 |
絕影華
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x36 鮮花 x109
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 八云の橙貓 於 2013-02-04 14:21 發表的 : 到引言文




玩家的id是1~32
但是 如果使用32的話 裡面包含的只有0~31(0也算在內 編號32的玩家無法被指定到)


所以 用33的話 雖然0用不到 但是才可以包含1~32的位元組可以儲存id


有錯請指點



還以為像程式一樣玩家由0開始計算
表情 表情 表情


獻花 x1 回到頂端 [5 樓] From:未知地址 | Posted:2013-02-04 14:59 |
觀眾甲
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x319 鮮花 x963
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 絕影華 於 2013-02-04 14:59 發表的 : 到引言文




還以為像程式一樣玩家由0開始計算
表情 表情 表情

我也是這樣以為
但是有一次用for的時候
發現有時候用for(new i=0;i<32;i++)顯示某些文字的時候
會有錯誤
但是for(new i=1;i<32;i++)不會錯誤
我才發現到,0是顯示給全部玩家-w-


獻花 x0 回到頂端 [6 樓] From:美國 | Posted:2013-02-04 17:12 |
絕影華
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x36 鮮花 x109
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 觀眾甲 於 2013-02-04 17:12 發表的 : 到引言文


我也是這樣以為
但是有一次用for的時候
發現有時候用for(new i=0;i<32;i++)顯示某些文字的時候
會有錯誤
但是for(new i=1;i<32;i++)不會錯誤
我才發現到,0是顯示給全部玩家-w-



怪不得........
之前用for由0開始
在等級中玩家名字顯示了伺服器的名稱
表情


獻花 x0 回到頂端 [7 樓] From:未知地址 | Posted:2013-02-04 19:06 |
幻影乂鬼狼
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
版主
級別: 版主 該用戶目前上站
版區: CS提問區
推文 x12 鮮花 x1676
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

內容很詳細(打字打得很累吧
送你 表情


く__,.ヘヽ.    / ,ー、 〉
     \ ', !-─‐-i / /´
      /`ー'    L//`ヽ、
     /  /,  /|  ,  ,    ',
   イ  / /-‐/ i L_ ハ ヽ!  i
    レ ヘ 7イ`ト  レ'ァ-ト、!ハ|  |
     !,/7 '0'   ´0iソ|   |   
     |.从"  _   ,,,, / |./   |
     レ'| i>.、,,__ _,.イ /  .i  |
      レ'| | / k_7_/レ'ヽ, ハ. |
       | |/i 〈|/  i ,.ヘ | i |
      .|/ / i:   ヘ!  \ |
        kヽ>、ハ   _,.ヘ、   /、!
       !'〈//`T´', \ `'7'ーr'
       レ'ヽL__|___i,___,ンレ|ノ
         ト-,/ |___./
         'ー'  !_,.:
獻花 x1 回到頂端 [8 樓] From:臺灣凱擘股份有限公司 | Posted:2013-02-05 20:41 |
kitty3d07 手機
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

神.
但我也很混亂

此文章被評分,最近評分記錄
財富:-20 (by 乂舞狼乂) | 理由: 回文字數少於10中文字或6英文單詞


獻花 x0 回到頂端 [9 樓] From:未知地址 | Posted:2013-02-17 18:33 |

<<   1   2  下頁 >>(共 2 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.017228 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言