23 12
發新話題
打印

L4D/2 伺服器資料簽名檔製作器 (已推出新版本)

[Close]

L4D/2 伺服器資料簽名檔製作器 (已推出新版本)

L4D/2 伺服器資料簽名檔製作器

這個程式可以為用戶自動製作500x150 大小的圖片, 圖片用作顯示伺服器資料, 狀態等等, 可用作簽名圖使用
目前只支援500x150


特點:
- 可選擇在簽名檔出甚麼資料
- 自訂樣式
- 自動更新圖片
- 即時上傳至ftp功能
等等



此程式(下稱exe)需連同smx插件(下稱smx)一並使用

exe 系統需求:
.net frammework 2.0或以上
在作者電腦測試中: (使用 1.0.0版)
(配備: E8400 cpu, 3.25 RAM, XP SP3 Home)
exe 佔用0% cpu資源, RAM 30000~50000K


在測試中 (使用0.1版)
smx 沒有導致lag 情況


=====簽名檔例子=====
↓ 此為我server banner  (會更新的)↓

~~~按此下載~~~

=====EXE使用教學=====




=====SMX使用教學=====
指令:sbm_make - 手動方式即時輸出serverbanner_maker.txt (管理員指令)
sbm_ver - 查看目前插件版本

CVAR
sbm_onoff - 開關自動輸出serverbanner_maker.txt
sbm_debug - 開關debug模式 (開發用)
sbm_interval - 每隔多少秒輸出serverbanner_maker.txt
sbm_onchange - 開關當人數, 玩家隊伍有變化時輸出serverbanner_maker.txt



插件源碼請見#10
=====下載=====

exe 1.0.0版本
smx 0.1版本

按此下載


如果你是 "伺服聯盟" 的會員,請你向dogwong申領"ExpEdition-專用簽名圖"。




=====更新內容=====
exe 更新內容:
版本: 1.0.0
2010年11月28日12:00
支援檔案版本:
儲存設定: v1.0, v1.1
serverbanner_maker.txt: v1.0, v1.1

- 新增: 支援從smx取得伺服器名稱(需smx0.1版)
- 新增: 玩家數會自訂顯示格式
- 新增: 取得及顯示IP, 並自動感應IP是vLan哪間房
- 新增: 上載至專用伺服器功能
- 新增: 自動從steam.inf取得版本功能
- 新增: 顯示項目: 圖片更新時間
- 新增: 自動修改線上狀態功能
- 新增: 儲存至連結功能例子
- 新增: 純一字型功能
- 新增: 在項目按一下設定位置, 字體及顏色功能
- 新增: 最新消息功能
- 修改: 用戶使用介面
- 修改: 設計畫面和預覽畫面分開
- 修改: 一些字眼上修改(如玩家(倖存者)數改成倖存者數)
- 修改: 載入設定後會自動開啟 txt及更新背景
- 修改: 移動項目時不會將左上角移至滑鼠位置
- 修改: 當用戶用了使用背景圖片時匯入圖片, 會即時更新設計畫面
- 修正: 儲存jpg時黑色畫面
- 修正: 狀態圖片在已被選擇下更換圖片不會更新
- 修正: 更新版本檢查過於頻密
- 取消: 另外一個的關於畫面
- 取消: 每個控制項設定字體按鈕
- 取消: 查看圖片功能

smx更新內容:
版本: 0.1 (10:00 21/11/10)
輸出檔案版本:
serverbanner_maker.txt: v1.1

- 新增: 同時輸出伺服器名稱
- 修改: txt會在沒有玩家下仍會輸出
- 修改: sbm_debug設定為1時, 會顯示輸出txt動作

[ 本帖最後由 dogwong 於 2010-11-28 13:13 編輯 ]
附件: 您所在的用戶組無法下載或查看附件
得20字咁少!

TOP

其實有點不明插件用途

TOP

回復 1# 的帖子

已經成個例子擺左係度 = =

幅圖可以放係:  (下便既簽名圖)

TOP

引用:
原帖由 jacky2605 於 2010-11-16 16:09 發表
其實有點不明插件用途
我簽名未放洗唔洗咁=3=
得20字咁少!

TOP

用vb整??
可唔可以睇睇個源碼

TOP

引用:
原帖由 森之千手 於 2010-11-16 16:51 發表
用vb整??
可唔可以睇睇個源碼
Messagebox.show("no")
得20字咁少!

TOP

dogwong:
       Messagebox.show("no")
       TextBox.Text = "no"

森之千手:
       If TextBox.Text = "no" Then
          Messagebox.show("Yes")
       End If

TOP

引用:
原帖由 森之千手 於 2010-11-16 20:42 發表
dogwong:
       Messagebox.show("no")
       TextBox.Text = "no"

森之千手:
       If TextBox.Text = "no" Then
          Messagebox.show("Yes")
       End If
Messagebox.show("no")
TextBox.Text = "no"
exit sub
If TextBox.Text = "no" Then
          Messagebox.show("Yes")
End If
得20字咁少!

TOP

引用:
原帖由 dogwong 於 2010-11-16 20:49 發表

Messagebox.show("no")
TextBox.Text = "no"
exit sub
If TextBox.Text = "no" Then
          Messagebox.show("Yes")
End If
Do While TextBox.Text = "no"
Messagebox.show("No")
Loop
搞到好似係度厄post咁

TOP

serverbanner_maker.smx 源碼 (部份)
輸出serverbanner_maker.txt 的function源碼不公開 , function名為makefile()
複製內容到剪貼板
代碼:
#include
#define PLUGIN_VERSION    "0.0 (10:00 14/11/10)"
#define CVAR_FLAGS FCVAR_PLUGIN

new Handle:plugin_onoff;
new Handle:plugin_debug;
new Handle:save_timer_interval;
new Handle:save_on_change;
new Handle:record_file = INVALID_HANDLE;
new Handle:save_timer = INVALID_HANDLE

public Plugin:myinfo =
{
        name = "簽名檔製作器server banner maker(smx part)",
        author = "dogwong/Marco Chan",//我的第15個插件
        description = "no",
        version = PLUGIN_VERSION,
        url = "http://www..com/space.php?uid=4411"
}
public OnPluginStart(){
        RegAdminCmd("sbm_make", make_record, ADMFLAG_ROOT);
        RegConsoleCmd("sbm_ver", version);
        plugin_onoff = CreateConVar("sbm_onoff", "1", "Auto generate serverbanner_maker.txt on/off(0=off, 1=on)", CVAR_FLAGS,true,0.0,true,1.0);
        plugin_debug = CreateConVar("sbm_debug", "0", "SBM debug message on/off(0=off, 1=on)", CVAR_FLAGS,true,0.0,true,1.0);
        save_timer_interval = CreateConVar("sbm_interval", "10.0", "Auto generate serverbanner_maker.txt interval", CVAR_FLAGS,true,1.0,true,60.0);
        save_on_change = CreateConVar("sbm_onchange", "1", "Generate file on change(eg. player join/leave) on/off(0=off, 1=on)", CVAR_FLAGS,true,0.0,true,1.0);
        HookConVarChange(save_timer_interval, save_timer_interval_change);
        HookEvent("player_team", on_change);
        //CreateTimer(10.0, update_timer_tick);
}
public save_timer_interval_change(Handle:convar, const String:oldValue[], const String:newValue[]){
        if (save_timer != INVALID_HANDLE){
                KillTimer(save_timer);
                save_timer = CreateTimer(GetConVarFloat(save_timer_interval), save_timer_tick, _, TIMER_REPEAT);
        } else {
                save_timer = CreateTimer(GetConVarFloat(save_timer_interval), save_timer_tick, _, TIMER_REPEAT);
        }
}
public OnMapStart(){
        if (save_timer == INVALID_HANDLE){
                save_timer = CreateTimer(GetConVarFloat(save_timer_interval), save_timer_tick, _, TIMER_REPEAT);
        }
}
public OnMapEnd(){
        if (save_timer != INVALID_HANDLE){
                KillTimer(save_timer);
                save_timer = INVALID_HANDLE;
        }
}
/*OnClientConnect(client){
        if (GetConVarInt(plugin_debug)){
                PrintToServer("[SBM debug] event: OnClientConnect");
        }
        if (GetConVarInt(save_on_change)){
                make_file();
        }
}*/
OnClientConnected(client){
        if (GetConVarInt(plugin_debug)){
                PrintToServer("[SBM debug] event: OnClientConnected");
        }
        if (GetConVarInt(save_on_change) && GetConVarInt(plugin_onoff) == 1){
                make_file();
        }
}
OnClientDisconnect(client){
        if (GetConVarInt(plugin_debug)){
                PrintToServer("[SBM debug] event: OnClientDisconnect");
        }
        if (GetConVarInt(save_on_change) && GetConVarInt(plugin_onoff) == 1){
                make_file();
        }
}
OnClientPutInServer(client){
        if (GetConVarInt(plugin_debug)){
                PrintToServer("[SBM debug] event: OnClientPutInServer");
        }
        if (GetConVarInt(save_on_change) && GetConVarInt(plugin_onoff) == 1){
                make_file();
        }
}
public Action:on_change(Handle:event, const String:name[], bool:dontBroadcast){
        if (GetConVarInt(plugin_onoff) == 1){
                if (GetClientOfUserId(GetEventInt(event, "userid"))){
                        if (!IsFakeClient(GetClientOfUserId(GetEventInt(event, "userid")))){
                                if (GetConVarInt(plugin_debug)){
                                        PrintToServer("[SBM debug] event: player_team");
                                }
                                if (GetConVarInt(save_on_change)){
                                        make_file();
                                }
                        }
                }
        }
}
public Action:make_record(client, args){
        if (client>0){
                PrintToChat(client, "手動輸出serverbanner_maker.txt");
        } else {
                PrintToServer("手動輸出serverbanner_maker.txt");
        }
        make_file();
}
public Action:save_timer_tick(Handle:timer, any:client){
        if (GetConVarInt(plugin_onoff) == 1){
                make_file();
        }
}
public Action:version(client, args){
        if (client){
                PrintToChat(client, "簽名檔製作器server banner maker(smx part)  %s\n輸出serverbanner_maker.txt版本: v1.0", PLUGIN_VERSION);
        } else {
                PrintToServer("簽名檔製作器server banner maker(smx part)  %s\n輸出serverbanner_maker.txt版本: v1.0", PLUGIN_VERSION);
        }
}
[ 本帖最後由 dogwong 於 2010-11-18 10:02 編輯 ]
得20字咁少!

TOP

即係即時UPDATE SERVER STATE上FTP?
如果冇裝MYSQL呢?

TOP

引用:
原帖由 leo221094 於 2010-11-17 23:58 發表
即係即時UPDATE SERVER STATE上FTP?
如果冇裝MYSQL呢?
以圖像形式儲存
得20字咁少!

TOP

唔想用ftp既都可以用hfs.

TOP

幾個建議
1. 可以比人加入文字方塊
2. 設計區域較難控制
3. 圖片中的大小可以調校

TOP

引用:
原帖由 gordon7803 於 2010-11-18 22:04 發表
幾個建議
1. 可以比人加入文字方塊
2. 設計區域較難控制
3. 圖片中的大小可以調校
圖片中的大小可以調校


姐係點
得20字咁少!

TOP

 23 12
發新話題