導航:首頁 > 源碼編譯 > hud源碼

hud源碼

發布時間:2022-06-27 05:25:32

① 僵屍模式升級插件源碼 "源碼" (CS源碼)

#include <amxmodx>
#include <umitem>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <fun>

#define MAXMINES 3
#define MINE_DAMAGE 20
#define MINE_HEALTH 1000
#define MINE_INT_TEAM EV_INT_iuser1
#define MINE_OWNER EV_INT_iuser3
#define DMG_BULLET (1<<1)

new PLUGIN_NAME[] = "UM Item: Laser Mine"
new PLUGIN_AUTHOR[] = "Cheap_Suit"
new PLUGIN_VERSION[] = "1.1"

new Float:Delay[33]
new g_PlayerMines[33]
new boom, beam
new bool:g_lasermine[33]
new g_msgDeathMsg
new g_msgScoreInfo
new g_msgDamage
new bool:g_Dropped[33]

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_item("Laser Mine", "Hold out your knife and press e to plant", 3900)

register_think("lasermine","Lasermine_Think")
register_event("DeathMsg", "Event_DeathMsg", "a")
register_event("ResetHUD", "Event_ResetHUD", "be")
register_event("TextMsg", "Event_GameRestart", "a", "2=#Game_will_restart_in")
register_event("SendAudio", "Event_RoundEnd", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw")

g_msgDeathMsg = get_user_msgid("DeathMsg")
g_msgScoreInfo = get_user_msgid("ScoreInfo")
g_msgDamage = get_user_msgid("Damage")
}

public plugin_precache()
{
precache_sound("weapons/mine_deploy.wav")
precache_sound("weapons/mine_charge.wav")
precache_sound("weapons/mine_activate.wav")
precache_sound("debris/beamstart9.wav")
precache_model("models/v_tripmine.mdl")
beam = precache_model("sprites/laserbeam.spr")
boom = precache_model("sprites/zerogxplode.spr")
}

public Event_RoundEnd() {
set_task(2.0, "remove_mines")
}

public Event_GameRestart()
{
new Float:fRestartCvar = get_cvar_float("sv_restart")
set_task((fRestartCvar - 0.5), "Event_RoundEnd")
}

public client_connect(id)
{
g_lasermine[id] = false
g_PlayerMines[id] = 0
}

public Event_DeathMsg()
{
g_PlayerMines[read_data(2)] = 0
g_Dropped[read_data(2)] = false
}

public Event_ResetHUD(id)
{
if(g_lasermine[id])
{
g_Dropped[id] = false
g_PlayerMines[id] = MAXMINES
}
}

public Enable_Item(id)
{
if(g_Dropped[id]) {
g_PlayerMines[id] = 0
} else {
g_PlayerMines[id] = MAXMINES
}
g_lasermine[id] = true
}

public Disable_Item(id)
{
g_lasermine[id] = false
g_Dropped[id] = true
}

public client_PreThink(id)
{
if(!is_user_connected(id) || !is_user_alive(id)) {
return PLUGIN_CONTINUE
}

if(!g_lasermine[id]) {
return PLUGIN_CONTINUE
}

new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])
if(weapon == CSW_KNIFE)
{
if(get_user_button(id) & IN_USE)
{
if((Delay[id] + 1.3) < get_gametime())
{
if(g_PlayerMines[id] < 1) {
client_print(id, print_chat, "No more mines")
} else {
Create_Mine(id)
}
Delay[id] = get_gametime()
}
}
}
return PLUGIN_CONTINUE
}

public remove_mines()
{
new ent = find_ent_by_class(-1, "lasermine")
while(ent)
{
remove_entity(ent)
ent = find_ent_by_class(ent, "lasermine")
}
}

Create_Mine(id)
{
new Mine = create_entity("info_target")
if(is_valid_ent(Mine))
{
entity_set_string(Mine, EV_SZ_classname, "lasermine")
entity_set_int(Mine, EV_INT_movetype, MOVETYPE_FLY)
entity_set_int(Mine, EV_INT_solid, SOLID_NOT)
entity_set_model(Mine, "models/v_tripmine.mdl")

entity_set_float(Mine, EV_FL_frame, 0.0)
entity_set_int(Mine, EV_INT_body, 3)
entity_set_int(Mine, EV_INT_sequence, 7)
entity_set_float(Mine, EV_FL_framerate, 0.0)

entity_set_float(Mine, EV_FL_takedamage, 1.0)
entity_set_float(Mine, EV_FL_dmg, 100.0)
entity_set_float(Mine, EV_FL_health, float(MINE_HEALTH))

entity_set_int(Mine, EV_INT_iuser2, 0)

new Float:MinBox[3] = {-8.0, -8.0, -8.0}
new Float:MaxBox[3] = {8.0, 8.0, 8.0}
entity_set_size(Mine, MinBox, MaxBox)

new Float:vOrigin[3]
entity_get_vector(id, EV_VEC_origin, vOrigin)

new Float:flVelocity[3]
VelocityByAim(id, 64, flVelocity)

new Float:vTraceEnd[3]
vTraceEnd[0] = flVelocity[0] + vOrigin[0]
vTraceEnd[1] = flVelocity[1] + vOrigin[1]
vTraceEnd[2] = flVelocity[2] + vOrigin[2]

new Float:vTraceResult[3]
trace_line(id, vOrigin, vTraceEnd, vTraceResult)

new Float:vNormal[3]
if(trace_normal(id, vOrigin, vTraceEnd, vNormal) < 1)
{
remove_entity(Mine)
client_print(id, print_chat, "You must plant the Laser mine on a wall")
return PLUGIN_HANDLED_MAIN
}

new Float:vNewOrigin[3]

vNewOrigin[0] = vTraceResult[0] + (vNormal[0] * 8.0)
vNewOrigin[1] = vTraceResult[1] + (vNormal[1] * 8.0)
vNewOrigin[2] = vTraceResult[2] + (vNormal[2] * 8.0)

entity_set_origin(Mine, vNewOrigin)

new Float:vMineAngles[3]
vector_to_angle(vNormal, vMineAngles)
entity_set_vector(Mine, EV_VEC_angles, vMineAngles)

new Float:vBeamEnd[3]

vBeamEnd[0] = vNewOrigin[0] + (vNormal[0] * 8192)
vBeamEnd[1] = vNewOrigin[1] + (vNormal[1] * 8192)
vBeamEnd[2] = vNewOrigin[2] + (vNormal[2] * 8192)

new Float:vTracedBeamEnd[3]
trace_line(-1, vNewOrigin, vBeamEnd, vTracedBeamEnd)
entity_set_vector(Mine, EV_VEC_vuser1, vTracedBeamEnd)

emit_sound(Mine, CHAN_WEAPON, "weapons/mine_deploy.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
emit_sound(Mine, CHAN_ITEM, "weapons/mine_charge.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

new PlayerTeam = get_user_team(id)
entity_set_int(Mine, MINE_INT_TEAM, PlayerTeam)
entity_set_int(Mine, MINE_OWNER, id)

client_print(id, print_chat, "Planted mine")
client_print(id, print_chat, "%d mines left", g_PlayerMines[id] - 1)
g_PlayerMines[id] -= 1

new param[1]
param[0] = Mine
set_task(3.5, "Mine_Activate", 0, param, 1)
}
return PLUGIN_HANDLED_MAIN
}

public Mine_Activate(param[])
{
new Mine = param[0]
if(is_valid_ent(Mine))
{
entity_set_int(Mine, EV_INT_iuser2, 1)
entity_set_int(Mine, EV_INT_solid, 2)
entity_set_float(Mine, EV_FL_nextthink, halflife_time() + 0.01)
emit_sound(Mine, CHAN_ITEM, "weapons/mine_activate.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}
}

public Lasermine_Think(Mine)
{
if(is_valid_ent(Mine))
{
new TeamColor[3], MineTeam = entity_get_int(Mine, MINE_INT_TEAM)
switch(MineTeam)
{
case 1:
{
TeamColor[0] = 255
TeamColor[1] = 0
TeamColor[2] = 0
}
case 2:
{
TeamColor[0] = 0
TeamColor[1] = 0
TeamColor[2] = 255
}
}

new Float:vOrigin[3], Float:vEnd[3]
entity_get_vector(Mine, EV_VEC_origin, vOrigin)
entity_get_vector(Mine, EV_VEC_vuser1, vEnd)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(0)
write_coord(floatround(vOrigin[0]))
write_coord(floatround(vOrigin[1]))
write_coord(floatround(vOrigin[2]))
write_coord(floatround(vEnd[0]))
write_coord(floatround(vEnd[1]))
write_coord(floatround(vEnd[2]))
write_short(beam)
write_byte(0)
write_byte(0)
write_byte(3)
write_byte(5)
write_byte(0)
write_byte(TeamColor[0])
write_byte(TeamColor[1])
write_byte(TeamColor[2])
write_byte(255)
write_byte(0)
message_end()

if(entity_get_int(Mine, EV_INT_iuser2) == 1)
{
if(entity_get_float(Mine, EV_FL_health) <= 500) {
Detonate_Mine(Mine)
}
else
{
new Float:vOrigin[3], Float:vEnd[3]
entity_get_vector(Mine, EV_VEC_origin, vOrigin)
entity_get_vector(Mine, EV_VEC_vuser1, vEnd)

new Float:vTrace[3], id = trace_line(Mine, vOrigin, vEnd, vTrace)
if(is_user_connected(id) && is_user_alive(id))
{
new bool:doDamage
new VictimTeam = get_user_team(id)
new MineTeam = entity_get_int(Mine, MINE_INT_TEAM)
new FriendlyFire = get_cvar_num("mp_friendlyfire")
switch(FriendlyFire)
{
case 0:
{
if(VictimTeam != MineTeam) {
doDamage = true
} else {
doDamage = false
}
}
case 1: doDamage = true
}

if(doDamage)
{
new VictimHealth = get_user_health(id)
new Damage = VictimHealth - MINE_DAMAGE

if(Damage <= 0)
{
new MineOwner = entity_get_int(Mine, MINE_OWNER)
Create_Kill(id, MineOwner, "Lasermine")
}
else
{
set_user_health(id, Damage)

message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {0, 0, 0}, id)
write_byte(MINE_DAMAGE)
write_byte(MINE_DAMAGE)
write_long(DMG_BULLET)
write_coord(floatround(vOrigin[0]))
write_coord(floatround(vOrigin[1]))
write_coord(floatround(vOrigin[2]))
message_end()
}
emit_sound(id, CHAN_WEAPON, "debris/beamstart9.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}
}
}
}
}
entity_set_float(Mine, EV_FL_nextthink, halflife_time() + 0.01)
}

Detonate_Mine(Mine)
{
new Float:vOrigin[3]
entity_get_vector(Mine, EV_VEC_origin, vOrigin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(99)
write_short(Mine)
message_end()

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(3)
write_coord(floatround(vOrigin[0]))
write_coord(floatround(vOrigin[1]))
write_coord(floatround(vOrigin[2]))
write_short(boom)
write_byte(50)
write_byte(15)
write_byte(0)
message_end()

radius_damage(vOrigin, 1, 50)
remove_entity(Mine)

return PLUGIN_CONTINUE
}

Create_Kill(id, attacker, weaponDescription[])
{
new FFon = get_cvar_num("mp_friendlyfire")
if(FFon && get_user_team(id) == get_user_team(attacker))
{
set_user_frags(attacker, get_user_frags(attacker) - 1)
client_print(attacker, print_center, "You killed a teammate")

new money = cs_get_user_money(attacker)
if(money != 0) cs_set_user_money(attacker, money - 150, 1)
}
else if(get_user_team(id) != get_user_team(attacker))
{
set_user_frags(attacker, get_user_frags(attacker) + 1)
new money = cs_get_user_money(attacker)

if(money < 16000) cs_set_user_money(attacker,money + 300,1)
}

logKill(attacker, id, weaponDescription)

//Kill the victim and block the messages
set_msg_block(g_msgDeathMsg,BLOCK_ONCE)
set_msg_block(g_msgScoreInfo,BLOCK_ONCE)
user_kill(id)

//user_kill removes a frag, this gives it back
set_user_frags(id,get_user_frags(id) + 1)

//Replaced HUD death message
message_begin(MSG_ALL,g_msgDeathMsg,{0,0,0},0)
write_byte(attacker)
write_byte(id)
write_byte(0)
write_string(weaponDescription)
message_end()

//Update killers scorboard with new info
message_begin(MSG_ALL,g_msgScoreInfo)
write_byte(attacker)
write_short(get_user_frags(attacker))
write_short(get_user_deaths(attacker))
write_short(0)
write_short(get_user_team(attacker))
message_end()

//Update victims scoreboard with correct info
message_begin(MSG_ALL,g_msgScoreInfo)
write_byte(id)
write_short(get_user_frags(id))
write_short(get_user_deaths(id))
write_short(0)
write_short(get_user_team(id))
message_end()
}

// ------- LOG KILL------------

public logKill(id, victim, weaponDescription[] )
{
new namea[32],namev[32],authida[35],authidv[35],teama[16],teamv[16]

//Info On Attacker
get_user_name(id,namea,31)
get_user_team(id,teama,15)
get_user_authid(id,authida,34)

//Info On Victim
get_user_name(victim,namev,31)
get_user_team(victim,teamv,15)
get_user_authid(victim,authidv,34)

//Log This Kill
if( id != victim )
{
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
namea,get_user_userid(id),authida,teama,namev,get_user_userid(victim),authidv,teamv, weaponDescription )
}
else
{
log_message("^"%s<%d><%s><%s>^" committed suicide with ^"%s^"",
namea,get_user_userid(id),authida,teama, weaponDescription )
}
}

坐等分

② CS1.6僵屍插件4.3如何隱藏信息欄

看到4.3的僵屍主插件源碼 打開,以下內容來自插件吧MSB的一個教程

2修改生命 彈葯包 僵屍類型隱藏 :
尋找// Show health, class and ammo packs

看到 set_hudmessage(red, green, blue, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync2, "%L: %d - %L %s - %L %d", id, "ZOMBIE_ATTRIB1", pev(ID_SHOWHUD, pev_health), ID_SHOWHUD, "CLASS_CLASS", class, ID_SHOWHUD, "AMMO_PACKS1", g_ammopacks[ID_SHOWHUD])

把ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync2, "%L: %d - %L %s - %L %d", id, "ZOMBIE_ATTRIB1"

的"%L: %d - %L %s - %L %d" 引號里%L: %d - %L %s - %L %d 去掉 就隱藏了

③ 誰能給我CSOL加速以及快捷鍵 易語言的源碼 和模版 發我啊 郵箱 [email protected]

玩CS的朋友對控制台應該不陌生吧,它可以幫助我們修改好多參數信息,當然在CSOL同樣有控制台這樣的設定,下面是CSOL中的一些控制台命令,希望可以幫助到大家。
在游戲中按「~」打開控制台,輸入命令即可。
cl_showfps [0,1] 設定是否在畫面左上角顯示fps數據
fastsprites [0,1,2] 煙霧特效,0逼真,1像超任,2像GameBoy
fps_max X 設定游戲輸出給顯示卡的最大fps數,一般設定為60, 75, 85, 101,預設值是72
hud_centerid [0,1] 設定為1時,玩家ID會出現在螢幕的正中央,否則會出現在畫面的左下角。
hud_fastswitch [0,1] 快速換武器,設定為1時按數字鍵直接換武器,不用再按滑鼠左鍵
max_shells X 子彈的最大顯示數量(太多會lag...) X=0~500,預設值是300
max_smokepuffs X 煙霧彈的最大顯示數量,X=0~500,預設值是120
m_yaw X 設定滑鼠左右移位的加速度,預設值是 0.022
m_pitch X 設定滑鼠上下移位的加速度,預設值是 0.022
net_graph [0,1,2,3] 打開測FPS與連線速度數據的工具,設定成0 是關閉,開起此項功能多少會減少fps
net_graphpos [1,2,3] 設定FPS測量工具的顯示位置
volume X 調整音量大小,預設值是 0.8

④ 路過的來留個話!!!

假設有一種編程的方法,能夠克服所有的困難和改正所有的錯誤,而且能夠避免重寫代碼,我相信我們都會使用這種方法。因為沒有一種完美的編程方法, 我們能做的事情就只能是看我們周圍的程序員是如何做的,哪些是正確
的,哪些是錯誤的。有一些編程的方法是我從實際工作中總結而來的,也確實感到它們能夠幫助我養成良好的編程習慣。其中最重要的一件事情就是記住,當你看到這些經驗的時候,不要認為他們太簡單和基礎,覺得一種方法是不值得學習的。很多程序員認為檢查錯誤和寫程序注釋是浪費時間。而我認為,這些經驗能夠幫助我們節省時間和精力。在實踐過程中,我了解到,我能夠更快的編寫代碼,代碼也更加的有效率。

做最壞的打算

假設你是一個超級程序員,你的代碼永遠都不會有錯誤。但是,如果你的完美的代碼沒有得到完美的數據,事情將會如何?你的代碼假設一個指針是合法的,或者它會把一個聲音文件當作一個圖片來處理?基本上來說,一段代碼
不能假設任何事情。C語言又一個標準的函數 assert, 它能夠用來捕獲錯誤。每次你的代碼接收到用戶數據,請注意要先確認數據是你所預想的。如果不是,使用assert並且列印消息來解釋出現了什麼錯誤。這是很重要的,這樣你就能夠讓任何閱讀你的程序的人了解到,什麼是正確的數據,什麼是錯誤的。百分之九十的錯誤都是一些簡單的錯誤。所以,不要讓這種錯誤影響你的程序浪費調試人員的時間,而只需要簡單的在那些地方給出一個assert, 就能夠避免。百分之九十的時候它能夠容易的被改正。而另外百分之十的時候,它能夠在變成一個大的錯誤之前被調試人員注意到並且改正。不論你採用哪種編程語言,你編寫的第一個程序一般都是列印一條消息。把這個列印消息的功能作為你的程序中一個基本的函數,能夠簡單的列印任何錯誤。這樣,程序就能分辨不明顯的錯誤,你也能在任何錯誤可能出現的地方使用這個列印錯誤消息的函數。這樣,就能夠節省尋找錯誤的時間,從而讓改正錯誤的時間減短。

注釋

不要企圖記住你的代碼是用來做什麼的。在你編寫完一段程序幾個月之後,你不會記得在編寫程序的時候的想法,也不會記得什麼代碼是用來干什麼的。所以,寫注釋是一個好的方法,特別是當你需要別人來閱讀你的代碼,或者是為了你半年之後還能記起來這段代碼的目的。如果有一個同事告訴你,你的代碼有一個錯誤,你將不得不重新檢查並且改正它。如果你能夠通過注釋來回憶起什麼代碼用來做什麼,你就能快一點找到並且改正錯誤。這個方法也是比較簡單的,只需要註明你的那一段代碼是做什麼的,這就夠了。而如果你不這么做,其他的閱讀你的程序的人將看不懂它的意思,不知道變數是用來做什麼的,哪些復雜的計算又是用來做什麼的。如果你說明了它們的意義,就簡單多了。比如,看這樣的代碼if "(frmp>10)", "(plist.bdown & x03)", "(plist.y > pond.y)"就比看注釋要復雜的多。當你寫注釋的時候,你會得到兩種好處。

任何人都能明白你希望一段代碼去做什麼,而且,如果這段代碼有錯誤,閱讀代碼的人就能發現,它沒有執行你在注釋中希望它去做的事情,那樣就能盡快的發現錯誤和改正它。注釋是程序員最重要的工具之一。而且所有的語言都支持注釋。所以,記住,要寫注釋。

文檔

當我在寫一個文檔的時候,我記得我花了很多篇幅來寫一段關於系統和模塊的文檔。這個文檔是正確的,但是卻是沒有用的。因為,沒有人讀過它。很多人都忘記了還有這篇文檔,而是在需要的時候來問我,讓我來解釋給他們。

這種方法也不錯,它比查閱整個文檔快多了。很少有機會有人會花上一大段時間來通讀整個文檔。所以說,我當時寫文檔的時間是浪費了。而且,如果這個系統和模塊要做什麼改動的話,我還必須相應的修改文檔。也就是說,這文檔讓我的勞動加倍了。但是,這並不是說文檔是不重要的。相反,如果用源代碼和說明來記錄文檔,就簡單多了。在每一個函數的開頭,都用一段注釋來解釋函數的功能,如何使用,需要注意的問題等等。如果是一段比較復雜的代碼,需要解釋你所採用的方法。沒有必要採用另外一個文件來記錄文檔,而只用在源代碼中間來寫文檔。這樣你就能夠在你需要文檔的時候隨時找到它們。其他的程序員也會很方便的使用你的代碼。而且,不象一個專門的獨立的文檔那樣,其他的程序員將會無意識的閱讀你的文檔,而不會置之不理。如果有人來問你關於某一段代碼的意思的時候,你就會明白,那一段代碼缺少明白的注釋。所以,你可以盡快的補上它,而不會有另外一個程序員來問你同樣的問題。

採用工具

在編程的工作中,你也許會常常遇到這樣一些繁重的體力勞動,比如,編譯一個程序,然後就是等待。或者你使用了別人寫的API函數,而記住這些函數的名稱和參數是一個很累的活兒。這些工作並沒有什麼技術可言,比如說編譯程序,每天晚上都會有人把新增加的程序放到庫里,然後第二天上班以後你需要來重新編譯它們,往往都是一些重復的工作,但是由於程序很大,編譯的過程很漫長,而你就要陷入等待狀態。那麼,為什麼不採用工具呢?或者寫一些這樣的工具?我就這樣做過。我寫過一個程序,讓它每天早上3點開始,重新編譯程序,到了早上8點左右,差不多就編譯完成了。然後捕獲錯誤,如果有的話,就發電子郵件給相關的人。這樣,到了上班的時間,每個人都能得到一個最新的,編譯好的程序。如果代碼中有錯誤,還能最快的得到錯誤報告。再比如,我需要使用別人寫的API函數,當然,我不能指望每個人寫的函數都採用同樣的命名方法和參數定義方法,也不可能每次需要使用的時候都去查看文檔,那樣太浪費時間而且效率太低。我寫了一個工具,讓它來檢查我的函數調用是否正確,參數是否正確。如果有錯誤,則從文檔中找到可能的函數,並在錯誤日誌中給予提示。然後我就能很快的編寫代碼,而不用擔心函數拼寫,參數調用的類型和順序了。你也可以這么做,當下次有人來問你某個函數的名稱,參數類型,參數順序的時候,你就能夠告訴他,該怎麼做,用什麼工具了。

可復用的代碼

有一個好的比方,用來描述一個引擎。有一個不是程序員的朋友問過我一個問題,什麼是程序引擎?有什麼作用?為什麼要用引擎?我盡量的用通俗的語言回答它,一個程序引擎就像一個汽車的引擎。沒有它,汽車不能啟動,但是,同時,一個沒有輪胎的引擎,也是沒有用處的。

我想,這是一個好的例子。這個朋友說,當你的引擎不能用的時候,你可以換一個。如果傳動帶壞了,你可以換一個新的,同時把引擎的性能調整到最好。同樣,一個引擎有相同的部分,比如,傳動裝置,等等。它們對於一個引擎是重要的,如果某一個部分壞了,你不能不拆開引擎來更換它。

然後我的朋友總結道:如果你從頭來寫一個程序引擎,你就不得不從頭來寫所有的傳動帶,所有的零件。如果你能用一些以前用過的部分,你就能簡單的把它們拼裝到一起而不用重新寫了。

沒錯。他並不懂得如何去寫程序,但是他道出了編程的真諦。這也是一個普通的程序員和一個高級程序員的區別。採用可復用的代碼,讓工作變得簡單。

寫通用的代碼的關鍵是,不要讓你的子程序變長,不要超過一屏。關鍵要把你要做的事情分解開,變成小巧的,可以復用的函數,要麼完成一個功能,要麼調用另外的函數來完成一個完整的功能。

比如,VectorAdd()可能包含了一段代碼把兩個vectors的元素合並到一起,而SceneDisplay可能包含了調用PrepRender(), Render2dObjects(), Rende
rHud()的代碼。每一個函數可能都只有幾行。

當你把代碼分解成小的部分的時候,你將能夠集中注意力到一些在其他地方可以復用的功能上。在前一個例子中,RenderHud()和RenderDebugText()可能共享了同樣的一段函數調用,因為它們都是在屏幕上描畫一些對象。

⑤ 怎麼在蘋果電腦上安裝倩女幽魂手游版

ios模擬器的使用方法:
要使用ios模擬器,必須要有蘋果的操作系統,無論你使用黑蘋果,在虛擬機上裝蘋果系統或者真正的蘋果電腦都行,只要能裝上蘋果系統就ok。
裝好蘋果系統之後,裝上一個xcode(一個ios開發工具,可以直接到itunes上去下載,然後安裝。
隨便找一個ios應用的源代碼,運行就可以到開xcode,並啟動ios模擬器。當然你也可以對ios模擬器進行設置,3.5寸
iphone,4寸
iphone
,ipad等,都可以根據個人愛好進行,在githud上很多ios源碼,應該可以從上面找到一款你喜歡的。
有了ios模擬器你就可以在下載夢幻西遊手游ios版客戶端,然後安裝游戲,開始用電腦玩ios版。

⑥ 夢幻西遊手游蘋果版怎麼在電腦上玩 蘋果電腦版問題解答

安卓模擬器電腦版下載:

要使用ios模擬器,必須要有蘋果的操作系統,無論你使用黑蘋果,在虛擬機上裝蘋果系統或者真正的蘋果電腦都行,只要能裝上蘋果系統就ok。

裝好蘋果系統之後,裝上一個xcode(一個ios開發工具,可以直接到itunes上去下載,然後安裝。
隨便找一個ios應用的源代碼,運行就可以到開xcode,並啟動ios模擬器。當然你也可以對ios模擬器進行設置,3.5寸 iphone,4寸 iphone ,ipad等,都可以根據個人愛好進行,在githud上很多ios源碼,應該可以從上面找到一款你喜歡的。

有了IOS模擬器你就可以在下載夢幻西遊手游IOS版客戶端,然後安裝游戲,開始用電腦玩IOS版。

《夢幻西遊》手游是由網易游戲基於原端游《夢幻西遊2》開發的一款回合制角色扮演手機游戲,於2015年3月30日開啟全平台公測。該游戲在中國大陸由網易游戲運營,收費模式為免費。

《夢幻西遊》手游延續了端游的游戲背景與設定,6個經典角色如劍俠客、骨精靈、龍太子、虎頭怪、巫蠻兒、玄彩娥和押鏢、捉鬼等經典要素也都在針對智能手機特性優化後得到還原,同時端游的特色系統,如幫派、商業、師徒婚姻系統等也移植到了手游版上。

⑦ CS1.6顯按鍵問題

你用的什麼插件,是keylistener.amxx 、showkeys.amxx,還是spec用的specinfo.amxx ?showkeys.amxx 修改時say /keyscfg specinfo.amxx 修改需要源代碼,客戶端命令比較少,只能改顏色:si_msg_r <45|...> : HUD message red value.
si_msg_g <89|...> : HUD message green value.
si_msg_b <116|...> : HUD message blue value.

⑧ 手游夢幻西遊ios怎麼在電腦上玩

要使用ios模擬器,必須要有蘋果的操作系統,無論你使用黑蘋果,在虛擬機上裝蘋果系統或者真正的蘋果電腦都行,只要能裝上蘋果系統就ok。
裝好蘋果系統之後,裝上一個xcode(一個ios開發工具,可以直接到itunes上去下載,然後安裝。
隨便找一個ios應用的源代碼,運行就可以到開xcode,並啟動ios模擬器。當然你也可以對ios模擬器進行設置,3.5寸 iphone,4寸 iphone ,ipad等,都可以根據個人愛好進行,在githud上很多ios源碼,應該可以從上面找到一款你喜歡的。
更多攻略請搜索【4399夢幻西遊手游】

⑨ 率土之濱怎麼在電腦上玩 率土之濱電腦版攻略

要使用ios模擬器必須要蘋操作系統論使用黑蘋虛擬機裝蘋系統或者真蘋電腦都行要能裝蘋系統ok裝蘋系統裝xcode(ios發工具直接itunes載安裝隨便找ios應用源代碼運行xcode並啟ios模擬器ios模擬器進行設置三.5寸iphone四寸iphoneipad等都根據進行githudios源碼應該面找款喜歡攻略請搜索【四三99夢幻西遊手游

⑩ CS1.6伺服器的架設,包括AMX插件的加入方法

伺服器完全架設手冊
沒有人一生出來就什麼都會的,同樣我也是什麼都不會,自己慢慢學的。我知道Dcoo上有很多高手,如果本文有錯誤的地方,請不吝指正。以下基本都是偶在Dcoo等論壇上學到的伺服器架設經驗之談,發出來給大家看看,讓大家都從菜鳥轉型為初級的伺服器架設高手。言歸正傳,一步一步來:
一、 首先
你必須要有個高配置的電腦,如果是做伺服器的話,最好內存是在512M以上的機器,至於 內存 CPU 等對架設CS伺服器的影響,請查看其他帖子!然後是要了解的是,你上網的網路結構,是通過 Modem+路由+交換機 上網,還是用 代理伺服器+交換機 上網,我的論壇的帖子也有介紹,在此我就不在多餘重復說了。可以到我簽名的地址去看看!
二、 CS的伺服器端文件

由於現在CS1.6已經是比賽的版本了,所以偶就以1.6的為主,1.5的其實也一樣的,但是會少了很多的特效,比如1.5就不支持中文等。這里提供的是DcOo 1.6 3213的伺服器端版本。
三、開始設置伺服器
完成以後,先不要運行,運行的話是進入游戲,而不是開始伺服器!進入剛才安裝的那個文件夾,找到Hlds.exe文件,創建一個快捷方式,如圖:

然後把剛才那個快捷方式改一下名字,方便以後使用,偶改為Server,接下來是重點了。。。。請注意聽了哦!
看到hlds.exe 後面那裡的參數了沒?

那裡就是伺服器運行的時候必須要用到的啟動參數,參數不同,伺服器運行的效果也不同!以偶的為例,
-game cstrike +servercfgfile server.cfg -nomaster -insecure -port 27016 +maxplayers 32 +map de_st2 +sv_lan 1 –console
偶一個一個解釋好了:)
-game cstrike 這個就是指定以反恐精英為游戲的Mod,如果不指定的話就是半條命的模式,聽說也不錯很好玩的哦,沒玩過

+servercfgfile server.cfg 這個就是指定伺服器的配置文件,server.cfg這個文件放在cstrike下,後面偶會詳細介紹一下該文件的

-nomaster 載入這個參數就是讓伺服器不上WON認證,避免因為出國網路不通導致的伺服器問題。

-insecure 這個參數偶一下想不起來是幹嘛用的了。其他知道的朋友,請指教,謝謝!

-port 27016 指定伺服器運行時候的埠,范圍最好是在27015-27020 之間,據我的測試,區域網列表能刷出來的就是在這個范圍內,當然,如果你想用來做比賽伺服器不想讓其他人進的話,你可以指定任意不被佔用的埠。

+maxplayers 32 這個參數是指定伺服器最大進入玩家數,理論上最高能進32人,有的地圖最高只能進20人,比如CS_italy 那些早期救人質的圖都這樣的。並不是說一定要以32人為最大,這個要和你的網路狀況及伺服器配置相聯系的,關於CPU 內存 網路帶寬 之間的聯系,請在Dcoo上搜索一下,或者到我的論壇去查找一下,只有人數合適了,你的伺服器才能運行在快速穩定的狀態!

+map de_st2 這個參數就是當伺服器一開始運行的時候,運行的第一張地圖,你可以該為任意的,但是要注意,最好以 cstrike\maps 目錄下的地圖,不然伺服器會出錯!

圖中,以bsp為結尾的文件都是地圖文件,注意:參數不用帶文件全名,例如 de_st2 就可以了, 沒必要這樣 de_st2.bsp

-console 控制台,如果不帶這個參數的話,你架設好的伺服器就不能在那個黑底白字的窗口上輸入一些伺服器命令

+sv_lan 1 這個參數是控制該伺服器是區域網還是戰網的一個重要參數,當為 0 的時候,外網玩家也可以進入,當為 1 的時候,就只有區域網的玩家才能進入。如果要做面向公網和內網(不知道什麼叫公網和內網的,請自己找資料學習),這個參數建議為 0
綜合以上講解,很容易了解,

-game cstrike +servercfgfile server.cfg -nomaster -insecure -port 27016 +maxplayers 32 +map de_st2 +sv_lan 1 -console

用這些個參數架設的伺服器是一個CS1.6反恐精英,不通過WON驗證,游戲埠為27016,人數最多為32人,開始游戲地圖為沙漠2,面向區域網的伺服器!

如果要面向內外網的話,去掉 -nomaster +sv_lan 1這兩個參
參數配置正確了,就可以開始運行伺服器了?別急,還沒配置完全呢,還有一個比較重要的文件server.cfg還沒配置呢!

進入安裝目錄的cstrike下,你可以看到一個Server.cfg文件,這個文件是一個文本文件,但是沒和任何文本編輯軟體關聯,也就是說,當你打開的時候,系統會提示你打開方式,你可以選擇用記事本打開。打開以後你會看到如下的信息:
(注意:一下信息是毛毛蟲在當時編寫的時候Server.cfg文件。而我在編寫的時候沒有參考毛毛蟲的腳本而是依照國際比賽伺服器的標准而設置的,這點要千萬注意!!)
rcon_password "dcoo"
hostname "迪酷網 DcOo CS1.6 Server"
sv_maxspeed 320
mp_autokick 0
mp_autocrosshair 0
mp_autoteambalance 0
mp_buytime 0.25
mp_consistency 1
mp_c4timer 35
mp_fadetoblack 1
mp_falldamage 1
mp_flashlight 1
mp_forcecamera 3
mp_friendlyfire 1
mp_freezetime 10
mp_fraglimit 0
mp_hostagepenalty 0
mp_limitteams 6
mp_logfile 1
mp_logmessages 1
mp_logdetail 3
mp_maxrounds 0
mp_playerid 0
mp_roundtime 2.5
mp_startmoney 800
mp_timelimit 60
mp_tkpunish 0
mp_winlimit 0
sv_aim 0
sv_airaccelerate 10
sv_airmove 1
sv_allowdownload 0
sv_clienttrace 1.0
sv_clipmode 0
sv_allowupload 0
sv_cheats 0
sv_gravity 800
sv_maxrate 25000
sv_maxspeed 320
sv_maxupdaterate 101
sys_ticrate 10000
decalfrequency 60
pausable 0
log on
decalfrequency 60
edgefriction 2
host_framerate 0
exec listip.cfg
exec banned.cfg

哇*,,,Dcoo的也太簡單了吧,我記得以前還帶解釋的,現在這么都這樣了呢?!

不管他,反正我也看得懂是啥意思,我來解釋好了!只解釋一些常用的,沒解釋到的推薦用默認值。一般 0 為關 1 為開

rcon_password "dcoo" 這個是進入伺服器的密碼,如果不改的話,就相當於是一個帶密碼的伺服器,推薦去掉 "" 裡面部分
hostname "迪酷網 DcOo CS1.6 Server" 伺服器的名字,這個當然要改的了,改為你想改的名字就行了
sv_maxspeed 320 重力速度什麼的,不推薦修改用默認的好了。。
mp_autokick 0 自動踢人,當某位玩家因為一些其他的因素,常時間不動或者死機等,系統就會踢除該玩家,0 為關 1為開
mp_autocrosshair 0 准心的大小自動調節,建議不要改
mp_autoteambalance 0 雙方自動平衡,建議開啟,否則會出現兩邊隊伍人數不平衡
mp_buytime 0.25 購買武器時間 以60秒為單位,60*0.25=15秒
mp_c4timer 35 C4爆炸時間,國際比賽好像是35秒,推薦用這個值就行了
mp_fadetoblack 1 死後黑屏,推薦改為0
mp_falldamage 1 跌落損傷,這個不用改
mp_flashlight 1 手電筒開啟
mp_forcecamera 3 死亡後視角 有0 1 2 3 三種模式,其中0 為視角固定模式 1 為僅限隊友視角 2 為僅限隊友第一視角 3為自由觀看模式
mp_friendlyfire 1 自傷模式,自己人能打自己人,不是比賽服的話推薦關掉
mp_freezetime 10 開始買槍時候的靜止不能行走的凍結時間,10秒也太誇張了。3秒就夠了
mp_roundtime 2.5 每回合的時間,以分為單位,2.5為兩分半鍾,推薦改為3或者3.5 如果是死亡模式的話可以改為5
mp_startmoney 800 開局資金,一般都是800 最高可以改為16000 不推薦改!
mp_timelimit 60 每個地圖玩的時間 60分鍾合適了。如果改為0 的話就是不限制時間
mp_tkpunish 0 Team Killer 就是上局殺了自己方人的,這局就會挨懲罰,好像是死一局,開啟為1 要和之前那個mp_friendlyfire 1同時開啟才用用
mp_winlimit 0 當某方勝利多少局的時候換圖,0 為關閉
當然還有其他比較詳細的介紹,我這個只是大概介紹一下,偶發偶服的出來給大家看看:

sv_password ""
rcon_password "feilang"
hostname "南寧市飛浪網CS1.6比賽服 [CD]"
sv_maxrate 10000
sv_minrate 1000
sv_maxspeed 320
// 暫停游戲 禁止0/允許1
pausable
// 作弊模式 關閉0/開啟1
sv_cheats 0

// 自動瞄準 關閉0/開啟1
sv_aim 0
// 戰術手電筒 允許1/禁止0
mp_flashlight 1
// 腳步聲 開啟1/關閉0
mp_footsteps 1
// 高處落下傷害 開啟1/關閉0
mp_falldamage 1
// 自動踢出不動的玩家 開啟1/關閉0
mp_autokick 1
// 觀察員模式 開啟1/關閉0
allow_spectators 1
// 服務端設定游戲復位的時間,包括殺人數、武器、金錢和得分。設0不復位。
sv_restartround 2
// 每局時間30分鍾
mp_timelimit 45
// 購買武器凍結時間 (0-45)建議5秒以內。
mp_freezetime 3
// 每回合4分鍾
mp_roundtime 3
//購買武器裝備時間(0.25-1.5)即15秒-90秒
mp_buytime 0.25
// 炸彈倒計時時間 (15-75)
mp_c4timer 35
//開始游戲時的金錢數量(800-16000)
mp_startmoney 800
// 死亡後視角 1本隊隊友 2原地 0無限制
mp_forcechasecam 1
// 死亡後視角模式 0自由跟隨/1固定跟隨
mp_chasecam 1
// 人物死亡後屏幕 不變黑0/變黑1
mp_fadetoblack 0
// 友軍誤傷 關閉0/開啟1
mp_friendlyfire 0
// 手雷友軍傷害 關閉0/開啟1
mp_friendly_grenade_damage 0
// 殺害友軍懲罰 0不懲罰/懲罰:殺害隊友超過(1-n)人,下一回合自動死亡
mp_tkpunish 0
// 自動調整雙方隊伍平衡 不調整0/調整(1-n)個人
mp_autoteambalance 1
// 雙方人數差超過n人即自動調整人數差異 0關閉
mp_limitteams 2
// 殺害人質懲罰 0不懲罰/懲罰:規定時間內傷害人質超過(1-n)人自動踢出
mp_hostagepenalty 0
// 殺人數、得分上限 無0/有(1-n),超過上限就換地圖。
mp_fraglimit 0
// 勝利次數上限無0/有(1-n),超過上限就換地圖。
mp_winlimit 0
// 回合上限 無0/有(1-n),超過上限就換地圖。
mp_maxrounds 0
// 允許下載 開啟1/關閉0
sv_allowdownload 1

// 允許下載(sv_allowdownload 1)開啟時控制是否允許玩家的LOGO傳送 允許1/禁止0
sv_send_logos 1
// 允許下載(sv_allowdownload 1)開啟時控制是否允許資源文件傳送 允許1/禁止0
sv_send_resources 1
// 允許上傳 關閉0/開啟1
sv_allowupload 1
// 伺服器重力設置 默認正常重力800,范圍-999到99999
sv_gravity 800
// 投票比率(大家可以通過投票踢出作弊者和更換地圖) (0.1-1)
mp_mapvoteratio 0.6
// 設定鬼魂模式刷新值(0.1-1)
mp_ghostfrequency 0.1
// 伺服器高品質紋理 關閉0/開啟1
sv_sendvelocity 0
// 伺服器減少LAG延遲現象(對伺服器要求高) 關閉0/開啟1
mp_lowlag 0
// 伺服器細節數據發送 默認300 ,可減低到250、200,改善速度。
mp_decals 300
// 伺服器是否允許麥克風語音通訊 允許1/禁止0
sv_voiceenable 1
// 伺服器是否允許客戶端之間使用語音通信 允許1/禁止0
sv_alltalk 0
sv_region 4
//區域 4為亞洲

cdrequired "1"
cdrequiredversion auto
//為1 是需要CD ,第二行為自動檢測CD版本
// 伺服器是否記錄文件 不記錄0/記錄1
mp_logfile 0
// 是否在記錄文件里記錄談話內容 不記錄0/記錄1
mp_logmessages 0
// load ban files
exec listip.cfg
exec banned.cfg

紅色字體部分復制下來,粘貼入你的server.cfg文件,就和我的伺服器設置一樣了,當然你要記得改密碼和伺服器名字哦!
當然,你也可以直接用cs1.6目錄下那幾個bat批處理文件架設的伺服器!

編輯一下 setmaster add 69.28.151.178:27010 看到沒有,這個肯定不是你的IP,你要做的就是改為你自己的IP 。注意哦,192.168.X.X這個不是你的公網IP,這個是你的區域網IP,如果你是網吧的技術員的話,自己想法子找到你網吧用的線路的IP,然後做好對應的埠映射,映射已經超出本帖的范圍了,在此先不教。相關的請到我的論壇去看找一下各種路由的映射方法。

接下來就要解釋一下其他幾個個性化伺服器必須要修改到的文件,這兩個也是其中的一部分:

mapcycle.txt 地圖列表文件,也就是當伺服器運行的時候,就只會在這個文件中有的地圖之間從上到下運行,
de_st2
de_inferno
de_cbble
de_train
de_nuke
de_cpl_mill
de_aztec
de_st
從第一個到最後一個,然後在循環
motd.txt 這個文件比較特殊,這個就是當玩家進入你的伺服器的時候,看到的第一個歡迎logo,它是以文本文件形式存在,但是確實一個html網頁的源碼,如果你有網頁製作的功底的話,可以做得很好看,在此我就獻丑,放一下我對這個文件修改以後的效果給大家看看:

如果你沒那個功底,你可以找會的朋友幫你做一個,不是很難。
接下來的就是問最多的插件問題了,點擊這里下載用到的文件
解壓到cstrike的addons目錄下,完成後目錄結構如下:

第一個amxmodx 是amx插件的主文件夾,其下的configs 是一些插件的設置amxx.cfg 是一些amx的設置,plugins.ini是插件的調用配置管理,users.ini 是用戶配置文件,用戶的一些許可權都是在這里設置的。amxmodx\doc 裡面有個幫助文件,那裡可以學到更多關於amx的管理和使用,amxmodx\plugins 是一些插件的源碼文件的存放位置,大致介紹各個文件夾放在什麼位置,等下偶會詳細解釋最主要的amx.cfg 和plugins.ini還有 users.ini的配置!

addons\Booster 這個是伺服器加速插件,推薦一定要開啟,那樣伺服器才能運行在一個高速的狀態下;開啟於關閉我會在後面介紹;

addons\cdeath 這個是CD反作弊伺服器版的文件,很多朋友都不知道怎麼樣使用,偶等下在介紹吧!

addons\metamod 下的 plugins.ini addons\amxmodx\configs 下的 plugins.ini 又不同,這個plugins.ini 是所有插件的基礎,另外一個只是針對amx載入的插件!

所以接下來可能要花很長的時間和篇幅對以下插件進行講解:

addons\metamod\plugins.ini
addons\amxmodx\configs\amxx.cfg
addons\amxmodx\configs\plugins.ini
addons\amxmodx\configs\users.ini

現在我開始講解一下所有插件的根基,addons\metamod\plugins.ini 的配置吧!

win32 addons\booster\booster_mm.dll 這個是伺服器的加速插件,如果不載入這個東西的話,伺服器最高不超過99Fps
;win32 dlls\chicken_mm.dll 這個是一個娛樂用的,也就是變成小雞的插件。
;win32 addons\amx\dlls\amx_mm.dll 這個是載入amx的插件,如果不載入的話,很多基於amx的插件就用不了,比如死亡
;win32 addons\amx\dlls\fun_ms.dll 這個也是死亡和魔獸伺服器中必須要用到的插件
;win32 addons\amx\dlls\csstats_ms.dll 這個也是死亡和魔獸伺服器中必須要用到的插件
;win32 addons\amx\dlls\war3_ms.dll 這個是Amx的一個子插件,魔獸插件,可以在該plugins.ini 中配置,也可以在另外那個plugins.ini (addons\amxmodx\configs\plugins.ini )中載入但是就只能載入一個,重復的不算
;win32 dlls\monster_mm.dll 這個也是Amx的一個子插件,同樣可以在這里配置也可以在另外那個 plugins.ini 中配置
;win32 addons/wwcl/dlls/pcawwclconfig_mm.dll WWCL 這個是一個規則插件,某種程度上也能防到某些玩家作弊
win32 addons/cdeath/cdmod.dll 這個就是大名鼎鼎的 Cheating-Death CD反作弊的插件,不過現在最新的4.29注意載入的話,會使伺服器出錯,在後面我會詳細介紹一下最新版本的CD如何載入!

所有的插件以「;」(半形模式下的分號) 開啟和關閉 也就是說,你要開啟某個插件的話,就不能在該行之前用這個符號,如果不想開啟某個插件的話,就在該行 即win32的前面,加上一個這個,就能讓那個插件不運行了!
比如:
我想屏蔽ChickenMod 1.0.5.1插件,只需要在win32 dlls\chicken_mm.dll這行行首加入;注釋符號屏蔽掉這行即可,即將win32 dlls\chicken_mm.dll改為;win32 dlls\chicken_mm.dll
這樣我們在啟動伺服器時,伺服器就不會啟動ChickenMod 1.0.5.1插件插件。如果想再次開啟ChickenMod 1.0.5.1插件,只需要把此行行首的;符號去掉並保存plugins.ini文件即可。其他插件的屏蔽/開啟也是如此。

也許大家這里看不是很明白,我找了張圖出來,大家看看參考下:

這個圖不是安裝了Dcoo這個版本的時候帶的,是小凡cs1.5紀念版中有的,放出來的意義是讓大家更直觀的了解各個命令行的意思!
該版本下的這個文件的內容太簡單了,不過基本功能倒是沒丟失,如下

; 說明:
; 開啟某個模塊請去掉前面的分號
; 關閉某個模塊請在前面加上分號

;////////////////////////////////////////////////////////////
;// --------------------- Booster ------------------------ //
;////////////////////////////////////////////////////////////
; 請按自己的CPU選擇你需要的程序, 以下2個只能開啟一個
win32 addons/Booster/booster_mm.dll
;win32 addons/Booster/booster_686_mm.dll

;////////////////////////////////////////////////////////////
;// ------------------- AMX Mod X ------------------------ //
;////////////////////////////////////////////////////////////
win32 addons/amxmodx/dlls/amxmodx_mm.dll
; linux 請按自己的CPU選擇你需要的程序, 以下2個只能開啟一個
linux addons/amxmodx/dlls/amxmodx_mm_i386.so
;linux addons/amxmodx/dlls/amxmodx_mm_amd64.so

;////////////////////////////////////////////////////////////
;// --------------- Cheating Death ----------------------- //
;////////////////////////////////////////////////////////////
; win32 請按自己的CPU選擇你需要的程序, 以下5個只能開啟一個
win32 addons/CDeath/cdmod.dll
;win32 addons/CDeath/cdmod_i486.dll
;win32 addons/CDeath/cdmod_i586.dll
;win32 addons/CDeath/cdmod_k7.dll
;win32 addons/CDeath/cdmod_p4.dll
; linux 請按自己的CPU選擇你需要的程序, 以下5個只能開啟一個
linux addons/CDeath/cdmod_i386.so
;linux addons/CDeath/cdmod_i586.so
;linux addons/CDeath/cdmod_i686.so
;linux addons/CDeath/cdmod_k7.so
;linux addons/CDeath/cdmod_p4.so

有點亂,大家就只要注意沒分號的部分吧!linux不在本帖的討論范圍內,偶對linux的伺服器不了解,雖然現在也在學習中
接下來就是amxx.cfg和plugins.ini 還有users.ini 的配置講解了,先從amxx.cfg開始好了:)

其實amxx.cfg文件裡面已經有很多的提示了,我就大概說一下吧!先來看偶安裝的這個Dcoo中amxx.cfg各部分的參數:

// AMX MOD X 配置文件.
echo Executing AMX Mod X Configuration File

// 用戶的默認許可權,可以用此定義為普通的玩家也加上各種許可權,相關許可權請參考uers.ini文件的許可權說明
這個就是玩家的默認許可權,相關的許可權在users.ini 中有設置
// AMX的遠程登陸總密碼(所有op都一樣),首次配置時必須修改。
// setinfo信息會將密碼保存在config.cfg文件里。(為了避免泄露密碼,請在結束游戲後刪除自己的config.cfg)
// (管理員登陸時請控制台里輸入 setinfo _pw "管理員密碼",或者直接寫入自己的config.cfg文件中)
amx_password_field "_pw" 這個就是amx遠程OP的密碼,一定要改的,別和server.cfg中的密碼混淆就行
// 伺服器的記錄模式選項
// 0 - 禁止許可權登陸,所有的玩家都沒有任何的許可權
// 1 - 正常模式
// 2 - kick所有users.ini文件上無帳號的玩家
amx_mode 1 伺服器的記錄模式,一般默認就行了。
// 在op執行某個命令時是否顯示op的行動
// 0 - 關閉
// 1 - 不顯示OP的行動
// 2 - 顯示OP的行動
amx_show_activity 2
// 伺服器定時在下方滾動顯示伺服器信息,以秒為單位
amx_scrollmsg "歡迎來到 %hostname% -- 該伺服器使用了 AMX Mod X 管理插件" 600
這里就是一些在游戲中看到的滾動的字的設置位置,可以多設置幾條,但是要注意最後那裡時間,不能相同,否則就只顯示頭一條!
// clanmod風格的伺服器MOTD彩色信息,後面的顏色RGB代碼可以自己修改
amx_imessage "歡迎來到 %hostname%" "000255100"
amx_imessage "這個伺服器使用了 AMX Mod X 管理插件\n下載地址 http://www.amxmodx.org" "000100255"
這個就是在游戲中,時不時顯示在屏幕中央的一些文字,注意是不滾動的哦!同樣也可以多寫幾條,也要注意時間,最後那些 RGB代碼 則是這里文字在游戲中顯示的顏色,具體的代碼我也不太了解,畢竟偶只對游戲有興趣,偶又不是做設計一天和那些顏色打交道的。
// 信息顯示的間隔時間,以秒為單位
amx_freq_imessage 180

// 這個選項聊天間隔時間的設置,防止server因聊天信息過多導致lag,以秒為單位)
amx_flood_time 0.75
// 預留的管理員通道數,沒有許可權的玩家進入此通道時會被kick(具體細節看插件原碼)
amx_reservation 0
// 剩餘時間顯示的設置
// a - 以文本方式顯示
// b - 用語音來提示
// c - 只使用語音,不顯示文本
// d - 不顯示詳細的時間格式,僅用語音提示
// e - 如果時間小於現在的設置,用語音和文本進行提示
amx_time_display "ab 1200" "ab 600" "ab 300" "ab 180" "ab 60" "bcde 11"
// 當用戶使用 "say thetime" 和 "say timeleft" 時使用語音通報
amx_time_voice 1
// 兩個vote事件之間的最小延遲時間,以秒為單位。(為了防止惡意投票,請將間隔設置長些)
amx_vote_delay 10
// 一個VOTE事件持續的最長時間
amx_vote_time 10
// 顯示玩家投票的選擇結果
amx_vote_answers 1
// 投票成功所需要的百分比數(0.40為超過40%即投票成功,以此類推)
amx_votekick_ratio 0.40
amx_voteban_ratio 0.40
amx_votemap_ratio 0.40
amx_vote_ratio 0.02
// 最長可以延長正在游戲的地圖的時間(好象是以分鍾為單位)
amx_extendmap_max 90
// 每次默認延長15分鍾
amx_extendmap_step 15
// 排行模式
// 0 - 昵稱
// 1 - authid
// 2 - ip
csstats_rank 1
// 排行文件最大尺寸
csstats_maxsize 3500
// 顯示HUD統計的持續時間
amx_statsx_ration 12.0
// HUD統計信息在凍結時間里的顯示時長
// 如設為負數表示在凍結時間結束前多少秒清除HUD統計信息
amx_statsx_freeze -2.0
//設定為0時,將不允許客戶端選擇語言
amx_client_languages 1
// 插件調試模式
// 0 - 不調試
// 1 - 選擇模式,在 plugins.ini 中需要調試的插件後加 debug
// 2 - 全部插件都在調試模式下
// 注意 - 調試模式下會影響 JIT (Just In Time)運行
amx_debug 1

基本就注意,因為這個文件本身已經帶了詳細的註解,偶有的解釋還顯得多餘了呢!
現在來看看 users.ini 中的一些配置好了!

該文件和amxx.cfg在同一個目錄下,目錄中內容如下:

; 用戶配置文件
; 文件位置: $moddir/addons/amxmodx/configs/users.ini
; 每行前的 ; 表示注釋該行
; 許可權標記:
; a - immunity (不能被 踢/封/處死/傷害 或者其他的命令影響)
; b - reservation (可通過預留通道加入伺服器)
; c - amx_kick command (擁有KICK許可權)
; d - amx_ban and amx_unban commands (擁有ban的許可權)
; e - amx_slay and amx_slap commands (擁有強行殺死某人的許可權)
; f - amx_map command (擁有更換地圖的許可權)
; g - amx_cvar command (可以設置amx的設置參數,但並不是所有的都可以)
; h - amx_cfg command (可以載入某個AMX的CFG設置文件許可權)
; i - amx_chat and other chat commands (可以以管理員身份發布消息)
; j - amx_vote and other vote commands (可以發起一個投票事件)
; k - access to sv_password cvar (可以更改為伺服器加密碼)
; l - access to amx_rcon command and rcon_password cvar (by amx_cvar command)(可以用RCON命令來以OP身份登陸伺服器)
; m - custom level A (自定義管理級別,為附加的其他插件預留的許可權等級)
; n - custom level B
; o - custom level C
; p - custom level D
; q - custom level E
; r - custom level F
; s - custom level G
; t - custom level H
; u - menu access (擁有打開MENU管理菜單的許可權)
; z - user (普通用戶許可權)
; 帳號類型:
; a - disconnect player on invalid password (此用戶的id進入伺服器時需要檢測密碼)
; b - clan tag (此用戶的id帶有戰隊標簽)
; c - this is steamid/wonid (此用戶*steamid/wonid進入伺服器)
; d - this is ip (此用戶*ip進入伺服器)
; e - password is not checked (only name/ip/steamid needed)(此用戶進入時不檢查密碼,只需要id或者ip或者steamid)
; 密碼:
; 在自己的autoexec.cfg里加入: setinfo _pw "<管理員密碼>"
; 此處 _pw 代表的是參數 amx_password_field 設定的密碼
; 管理員帳號格式:
; <名字|ip|steamid> <管理員密碼> <許可權等級> <帳號類型>

閱讀全文

與hud源碼相關的資料

熱點內容
盒馬app買東西怎麼送 瀏覽:119
編譯原理國產 瀏覽:691
在線用pdf轉word 瀏覽:424
咪咕app怎麼發表文章 瀏覽:209
phpsftp上傳 瀏覽:936
php可以幹嘛 瀏覽:879
梁箍筋加密區需要滿綁扎嗎 瀏覽:330
程序員半個月工資多少 瀏覽:821
雲伺服器租賃還是私有 瀏覽:752
php七牛視頻上傳 瀏覽:14
php五星 瀏覽:311
使用api訪問外部文件夾 瀏覽:220
自來水加密閥能控制水量嗎 瀏覽:351
移動花卡定向app怎麼訂 瀏覽:429
php調用txt 瀏覽:260
西安軟體公司程序員鼓勵師 瀏覽:135
預制樁的加密區怎麼區分 瀏覽:86
ea安裝游戲選擇文件夾 瀏覽:872
linuxapache負載均衡配置 瀏覽:651
pac文件編譯軟體 瀏覽:713