
標題: 教改SP檔 (意見收集 @ #11) [打印本頁]
作者: leo221094 時間: 2010-8-30 19:51 標題: 教改SP檔 (意見收集 @ #11)
禁我飛去教學第2 PART
正所謂工欲善其事,必先利其器
第一步,你須要有編寫既工具
當然notepad都得,但係notepad睇唔到行數
所以我推薦大家用EmEditor.
上google就可以search到 (破解版個d,用心搵下就會搵到 =])
當你安裝好晒後,就應該會見到呢個介面
[attach]90158[/attach]
首先教D簡單既, 漢化先啦
大家都經常係插件網站度見到XXX漢化
咁漢化究竟係咩黎呢?
其實漢化就係將外國插件網公開source既插件
將其中會顯示比玩家/場主見到既字
翻譯後再取代本來既文字,令使用者覺得親切.
ok先黎個簡單示範一個好常見既插件, 入場提示插件
以呢個插件為例子:l4d2_playerjoining.sp用em開左之後會見到呢個畫面
[attach]90159[/attach]
大家係左手面會見到由1-N的數字順序而整齊咁排列好
但係佔據中間的一大堆字只係單調既黑色係咪睇落好唔順眼
好難分呢?
只要你跟以下既步驟做...
[attach]90160[/attach]
[attach]90161[/attach]
就會見到一個彩色既世界了 
[attach]90162[/attach]
係咪順眼左好多呢
好,基本開始步驟完了,然後到正式的"漢化"了
未開始漢化前,先介紹下最基本sourcemod用黎顯示文字比玩家/場主睇既編程字眼分別係:
PrintToChat,PrintHintText,PrintCenterText(以上3個係對應指定某位玩家的)
而相對全場玩家都可以睇到既編程字眼會係: PrintToChatAll,PrintHintTextToAll,PrintCenterTextAll
以l4d2_playerjoining.sp中既42同106行做例子
PrintToChatAll("%s \x04%N\x01 has connected to the server.", TAG_INFO, client);
PrintToChat(i, "%s \x04%N\x01 has joined the %s.", TAG_INFO, player, sTeam);
呢2句分別係對應全場玩家同指定玩家既顯示句法
你會見到中間粉紅色左一段字,而佢頭尾分別比" 括住
呢個括號里面既內容就係會顯示比玩家睇到既字
仔細d睇,你會見到有d (%s ,%N, \x04, \x01)呢d怪獸
暫時你地會唔知佢地係乜,但係我遲下會講解既 =]
ok,咁大家將注意力集中係has connected to the server呢part
呢句好簡單, 將佢翻譯成中文就係: 已連接到伺服器
大家只要將已連接到伺服器覆蓋has connected to the server[attach]90168[/attach]
就基本完成左漢化了,係咪好簡單呢? 
不過未完, 你仲要save好佢再將sp檔轉成smx檔先叫完成架嘛
save as個時有少少須要留意既
就係將編碼個度由 繁體中文 轉為 UTF-8
[attach]90171[/attach]
[attach]90172[/attach]
點解咁做呢?
(註: 如果冇興趣知,可以飛左以下呢段文字)
如果你有讀過電腦既,你應該會知道電腦世界所有野都係由1同0組成
而我地人類就利用1同0唔同既排列方法黎進行儲存我地所須要既內容
呢度所指唔同既排列方法,就係編碼
你用A排列方法黎SAVE B排列方法既內容,電腦當然唔識睇而變成亂碼
所以你就要轉番編碼做UTF-8 呢個相對容納性較大既排列方法啦!
完成儲存呢個步驟就到compile啦
你可以去X:\Program Files\Steam\SteamApps\common\left 4 dead 2\left4dead2\addons\sourcemod\scripting
度搵到compile.exe呢個程式
compile.exe係一個轉換器
佢既功用係將sp檔轉做smx檔
方法好簡單,只要將sp檔拖去compile.exe上
佢就會幫你轉做smx了
[attach]90165[/attach]
[attach]90166[/attach]
最後去X:\Program Files\Steam\SteamApps\common\left 4 dead 2\left4dead2\addons\sourcemod\scripting\compiled
度搵番l4d2_playerjoining.smx
將佢COPY去X:\Program Files\Steam\SteamApps\common\left 4 dead 2\left4dead2\addons\sourcemod\plugins
就完成全個步驟了
教學完畢 
禁我飛去教學第2 PART
[ 本帖最後由 leo221094 於 2010-9-3 15:59 編輯 ]
作者: etsa 時間: 2010-8-30 21:36
真係好好,好有用,有埋圖文並茂,都好詳細,好啱D初學者自用。有D sp檔我想改但係又唔識,依家可以試吓學吓改
,感謝無私分享
。
作者: kennyfong 時間: 2010-8-31 07:02
http://forums.alliedmods.net/showthread.php?t=93892
可以試吓呢個
係外國D人整
專為.sp檔上色既(Notepad++用)
作者: StartV. 時間: 2010-8-31 10:14
支持一下
作者: SiU乂呀謙 時間: 2010-8-31 10:35
幾正,,,,好
作者: leo221094 時間: 2010-8-31 12:01
的確係唔錯
不過暫時對em都幾滿意,未需要轉住
thx a lot
作者: etsa 時間: 2010-8-31 17:49
我本身係用Notepad++,你提供呢個對我好有用
,已收下,謝謝
。
[ 本帖最後由 etsa 於 2010-10-2 16:59 編輯 ]
作者: leo221094 時間: 2010-9-1 20:17
改SP檔 Part 2
繼續上一回講開既場內顯示部份
上回提過,基本顯示句法有6句,分別係:
PrintToChat , PrintToChatAll , PrintHintText , PrintHintTextToAll , PrintCenterText , PrintCenterTextAll
先示範下佢地既分別
首先PrintToChat & PrintToChatAll
基本寫法示範:
[attach]90493[/attach]
遊戲顯示效果:
[attach]90492[/attach]
跟住PrintHintText & PrintHintTextToAll
基本寫法示範:
[attach]90495[/attach]
遊戲顯示效果:
[attach]90496[/attach]
[attach]90497[/attach]
最後係PrintCenterText & PrintCenterTextAll
基本寫法示範:
[attach]90498[/attach]
遊戲顯示效果:
[attach]90499[/attach]
[attach]90500[/attach]
大家可以睇到呢6個句法
其實可以分為3類 (Chat , Hint , Center)
佢地分別會係遊戲入面顯示係畫面既: 左下 , 中間徧下 & 中間徧上
而任何一類所包含個2句分別會顯示比指定玩家 同 全場玩家
而佢地既差異就係1個 加All 1個唔加 (例子: PrintToChat & PrintToChatAll)
我諗聰明既你,應該好快就可以熟悉咁運用呢d分別
跟住講寫法,望一望下面個示範圖先[attach]90515[/attach]
[attach]90493[/attach]
仔細望下24同25行
佢地除左一個有All, 一個冇之外
仲有咩分別?
答案就係24有client
而25係冇既
呢個client既作用就係用黎指定邊個玩家,你想顯示d字比佢睇的指針.
咁係咪一定要用"client"呢個字黎做指針?
No! 你可以用其他字黎取代佢, 例如:victim, userid, i, fxxk
因為呢個指針其實係一個value值
你可以當佢係一個箱,而呢個箱里面裝住目標玩家既代號
個箱係咩名唔緊要, 重要既係佢裝住既野.
你點知佢究竟係裝住咩呢?
咁就要再睇上面張示範圖啦
改SP好多時都要由下向上咁追溯上去
我依家順便示範埋點追溯
首先搵"client"
成個sp檔裏面只有22同24行出現過"client"
咁即係呢2個client係有關連既
而由於22行係1個title 24行係內容
由此我地可以判定24行"client"呢個value里面裝載既代號
係繼承自22行, 咁22行既"client"又係繼承自邊度呢?
答案係19行, but, why?
原因係由22-26呢個public,其實係由19行所觸發既
我點知? 只要搵出佢地既共通性就會明白.
19同22既共通性就係DisplayDemo
DisplayDemo呢個字就係全個22-26 public既名
而19行就係一句指示執行DisplayDemo呢個public既寫法
追溯到19行,就係一切既源頭!!
成個程序既觸發就係第19行.
追溯既行動到此結束,但係目的仲未逹到
我地既目的係搵出"client" 呢個箱究竟係裝住d咩?
要想知道就要解釋下19行既作用啦
簡單咁介紹下19行既寫法啦
RegConsoleCmd("!", DisplayDemo);
RegConsoleCmd : 呢個係一個註冊指令既寫法, 而呢個註冊指令係屬於一個公眾形式指令
即係場內任何人都可以執行呢個指令.
"!" : 執行指令既啟動碼, 你可以當佢係一個口令(例子: 之麻開門)
DisplayDemo : 收到指令後執行既public 名字,亦即係22-26行public既名字
簡單黎講,當你想自己寫SP或者改人SP個時,只要跟住呢個追溯程序搵到佢既源頭就可以進行修改.
例如: 我唔鐘意用!黎做啟動碼, 我要用 fxxk 咁我就可以改做 "fxxk"
然後當我係game度要執行程序個時, 我只要打!fxxk 就可以要求系統執行程序啦
(順便講埋,好多人開post求人幫改個d !buy 做 !b, !x !123, 跟我呢個教學已經可以自己修改,求人不如求己
)
講到呢度,你地會唔會覺得有d"沉"氣?
我都覺,所以後面都係加速啦 
最後,我地知道打!!個個玩家既代號就由19行 ->22行 -> 24行 到最後顯示左句句子比呢個玩家睇了
好,教學完畢,去沖涼
[ 本帖最後由 leo221094 於 2010-9-1 22:23 編輯 ]
作者: Pvt.Allen 時間: 2010-9-1 22:19
also can use Notepad++
(I am using it, I think it is better)
作者: kennyfong 時間: 2010-9-2 18:00
支持樓主
sp檔真係唔知點寫
作者: leo221094 時間: 2010-9-3 15:58
so far 黎個意見收集, 教呢D野會唔會簡單得濟?
查實我比較PREFER你地改SP時實際上遇到問題既話可以拎出黎大家討論下
好過我咁樣打水蛇春咁長既教學
(查實係我懶得整,又要CAP圖又要做DEMO 囧")
作者: toto345618433 時間: 2010-9-3 17:19 標題: 回復 11# 的帖子
你咁打落去確實會手殘
為左樓主既健康著想
建議樓主改為問答帖。
作者: apple_W 時間: 2010-9-4 00:22
問題問題~~~~~~~~
點解唔WORK
自行解決了~~~
[ 本帖最後由 apple_W 於 2010-9-4 12:53 編輯 ]
作者: love6807 時間: 2010-9-4 01:24
請問
要怎麼修改lxd(5)
才能完美支援L4D2
作者: leo221094 時間: 2010-9-4 13:45
引用:
原帖由 love6807 於 2010-9-4 01:24 發表 
請問
要怎麼修改lxd(5)
才能完美支援L4D2
請引出你認為有問題的source部份
或者你唔確定邊部份有問題可以將sp當先以rar包裝後放上附件
另外,何謂完美支援?
[ 本帖最後由 leo221094 於 2010-9-4 14:53 編輯 ]
作者: love6807 時間: 2010-9-4 16:33
引用:
請引出你認為有問題的source部份
或者你唔確定邊部份有問題可以將sp當先以rar包裝後放上附件
另外,何謂完美支援?
就是這個
完美的意思就是可以在L4D2上執行,而不會出毛病
這個lxd(5).smx (人品插件)
只要打!addrp
等待倒數完 會出現突發訊息
此刻
就會斷線
有時會有時不會
請樓主幫幫我
謝謝
[attach]90792[/attach]
作者: leo221094 時間: 2010-9-4 17:43
引用:
原帖由 love6807 於 2010-9-4 16:33 發表 
就是這個
完美的意思就是可以在L4D2上執行,而不會出毛病
這個lxd(5).smx (人品插件)
只要打!addrp
等待倒數完 會出現突發訊息
此刻
就會斷線
有時會有時不會
請樓主幫幫我
謝謝
90792 ...
so far 我係教你改sp 唔係幫你改sp
不過都幫你睇下個sp先啦
ok wo 3967行,叫我睇晒佢 =P
炒ser原因可能係:
1383行既GiveClientSpecificUpgrade 呢個public
因為SDKCall(AddUpgrade, client, IndexToUpgrade[upgrade]);
係l4d1個時先有,到左2代已經唔support
另外好多咩 sm_evilbeam , sm_evilrocket 呢d都係call第2d插件既function
你如果冇呢d相關插件都唔會執行到
再黎改model SetEntityModel 改bill就一定x街啦, bill係2代都冇mdl
SetEntityModel(TankId,"models/infected/witch.mdl");
witch又未PrecacheModel 又係必炒部份
....
隨便望下都見到一大堆, 你都係放棄呢個plugin啦
比你改到都要汁番十幾個鐘
[ 本帖最後由 leo221094 於 2010-9-4 17:44 編輯 ]
作者: etsa 時間: 2010-10-1 20:09
都係分享下啫,我新手黎架咋
leo師兄你唔使咁客氣la,你點會係新手,將來如有d唔明嘅嘢重要向你請教
。
[ 本帖最後由 etsa 於 2010-10-2 02:44 編輯 ]
作者: 風神小子 時間: 2010-10-9 00:29
新手...
我想知sp檔其實有咩用?
有時見到d smx檔 我想開 但亂碼
兩者有咩分別 唔知可唔可以解答
仲有就係呢 我試左1個廣告插件
sm_advertisements_interval 5
呢1句係果個插件參數 但我將佢set落autoexec.cfg果到係無用
一定要每次開場係Srcds到輸入 有冇咩方法set去邊個檔到 等我以後開場都唔洗打呢句野
[ 本帖最後由 風神小子 於 2010-10-9 00:32 編輯 ]
作者: apple_W 時間: 2010-10-9 00:55
#19
SP檔compile左就變SMX檔
SMX係改唔到的
sm_advertisements_interval 5
你可以放係SERVER.CFG到
佢就會每一次都RUN
作者: 風神小子 時間: 2010-10-9 12:04
引用:
原帖由 apple_W 於 2010-10-9 00:55 發表 
#19
SP檔compile左就變SMX檔
SMX係改唔到的
sm_advertisements_interval 5
你可以放係SERVER.CFG到
佢就會每一次都RUN
原來係咁~
sp檔轉smx檔係未要用程式?
個server.cfg檔係未要自己整出黎?整完放係\left 4 dead 2\left4dead2\cfg?
我係\left 4 dead 2\left4dead2\cfg入面見到1個叫listenserver.cfg ga檔案
set係呢個入面又得唔得?
作者: toto345618433 時間: 2010-10-9 12:21 標題: 回復 21# 的帖子
1. 用mouse 移動sp檔至compile.exe 上放手即可轉成smx檔 (係compiled 資料夾內)
2. listenserver 同server 係2回事
| 歡迎光臨 IPvE vLan 遊戲平台|網吧系統 (https://www.ipve.com/bbs/) |
Powered by Discuz! 6.0.0 |