魔獸世界c語言怎麼編寫
⑴ 魔獸世界是用什麼語言編寫的
魔獸世界用的BigWorld游戲引擎,主要還是C++吧。腳本語言是Lua。
大部分游戲對性能要求都挺高,目前大型游戲基本都是C++的。
⑵ 請問像魔獸世界這樣的游戲是用什麼語言編寫的
大型的網路游戲一般都使用C語言來寫,因為使用java或C++等其他語言運行速度或是代碼效率都比不上C。在游戲核心的地方,比如游戲引擎中運算處理比較多的地方,會直接用匯編語言來寫,最大的優化代碼的效率,避免出現游戲不流暢的問題。魔獸世界應該也差不多吧,具體使用的工具不太清楚,但記得好像曾經有個高手告訴我魔獸的主要代碼是用vc6.0寫的,不知道是不是真的,僅供參考吧。
⑶ WOW的宏是用哪種編程語言寫的
用的是暴雪提供的WOW UI介面具體教程參考http://bbs.ngacn.cc/read.php?tid=1014862&fpage=1http://bbs.ngacn.cc/read.php?tid=1841944&fpage=1
⑷ 請問高手,怎樣開發一個魔獸世界插件軟體編程
Lua 程序設計初步
作者: 沐楓 (第二人生成員)
版權所有轉載請註明原出處
在這篇文章中,我想向大家介紹如何進行Lua程序設計。我假設大家都學過至少一門編程語言,比如Basic或C,特別是C。因為Lua的最大用途是在宿主程序中作為腳本使用的。
Lua 的語法比較簡單,學習起來也比較省力,但功能卻並不弱。
在Lua中,一切都是變數,除了關鍵字。請記住這句話。
I. 首先是注釋
寫一個程序,總是少不了注釋的。
在Lua中,你可以使用單行注釋和多行注釋。
單行注釋中,連續兩個減號"--"表示注釋的開始,一直延續到行末為止。相當於C++語言中的"//"。
多行注釋中,由"--[["表示注釋開始,並且一直延續到"]]"為止。這種注釋相當於C語言中的"/*…*/"。在注釋當中,"[["和"]]"是可以嵌套的。
II. Lua編程
經典的"Hello world"的程序總是被用來開始介紹一種語言。在Lua中,寫一個這樣的程序很簡單:
print("Hello world")
在Lua中,語句之間可以用分號";"隔開,也可以用空白隔開。一般來說,如果多個語句寫在同一行的話,建議總是用分號隔開。
Lua 有好幾種程序控制語句,如:
條件控制:if 條件 then … elseif 條件 then … else … end
While循環:while 條件 do … end
Repeat循環:repeat … until 條件
For循環:for 變數 = 初值,終點值,步進 do … end
For循環:for 變數1,變數2,… ,變數N in表或枚舉函數 do … end
注意一下,for的循環變數總是只作用於for的局部變數,你也可以省略步進值,這時候,for循環會使用1作為步進值。
你可以用break來中止一個循環。
如果你有程序設計的基礎,比如你學過Basic,C之類的,你會覺得Lua也不難。但Lua有幾個地方是明顯不同於這些程序設計語言的,所以請特別注意。
.語句塊
語句塊在C++中是用"{"和"}"括起來的,在Lua中,它是用do 和 end 括起來的。比如:
do print("Hello") end
你可以在 函數 中和 語句塊 中定局部變數。
.賦值語句
賦值語句在Lua被強化了。它可以同時給多個變數賦值。
例如:
a,b,c,d=1,2,3,4
甚至是:
a,b=b,a -- 多麼方便的交換變數功能啊。
在默認情況下,變數總是認為是全局的。假如你要定義局部變數,則在第一次賦值的時候,需要用local說明。比如:
local a,b,c = 1,2,3 -- a,b,c都是局部變數
.數值運算
和C語言一樣,支持 +, -, *, /。但Lua還多了一個"^"。這表示指數乘方運算。比如2^3 結果為8, 2^4結果為16。
連接兩個字元串,可以用".."運處符。如:
"This a " .. "string." -- 等於 "this a string"
.比較運算
< > <= >= == ~=
分別表示 小於,大於,不大於,不小於,相等,不相等
所有這些操作符總是返回true或false。
對於Table,Function和Userdata類型的數據,只有 == 和 ~=可以用。相等表示兩個變數引用的是同一個數據。比如:
a={1,2}
b=a
print(a==b, a~=b) -- true, false
a={1,2}
b={1,2}
print(a==b, a~=b) -- false, true
.邏輯運算
and, or, not
其中,and 和 or 與C語言區別特別大。
在這里,請先記住,在Lua中,只有false和nil才計算為false,其它任何數據都計算為true,0也是true!
and 和 or的運算結果不是true和false,而是和它的兩個操作數相關。
a and b:如果a為false,則返回a;否則返回b
a or b:如果 a 為true,則返回a;否則返回b
舉幾個例子:
print(4 and 5) --> 5
print(nil and 13) --> nil
print(false and 13) --> false
print(4 or 5) --> 4
print(false or 5) --> 5
在Lua中這是很有用的特性,也是比較令人混洧的特性。
我們可以模擬C語言中的語句:x = a? b : c,在Lua中,可以寫成:x = a and b or c。
最有用的語句是: x = x or v,它相當於:if not x then x = v end 。
.運算符優先順序,從高到低順序如下:
^
not - (一元運算)
* /
+ -
..(字元串連接)
< > <= >= ~= ==
and
or
III. 關鍵字
關鍵字是不能做為變數的。Lua的關鍵字不多,就以下幾個:
and break do else elseif
end false for function if
in local nil not or
repeat return then true until while
IV. 變數類型
怎麼確定一個變數是什麼類型的呢?大家可以用type()函數來檢查。Lua支持的類型有以下幾種:
Nil 空值,所有沒有使用過的變數,都是nil。nil既是值,又是類型。
Boolean 布爾值
Number 數值,在Lua里,數值相當於C語言的double
String 字元串,如果你願意的話,字元串是可以包含''字元的
Table 關系表類型,這個類型功能比較強大,我們在後面慢慢說。
Function 函數類型,不要懷疑,函數也是一種類型,也就是說,所有的函數,它本身就是一個變數。
Userdata 嗯,這個類型專門用來和Lua的宿主打交道的。宿主通常是用C和C++來編寫的,在這種情況下,Userdata可以是宿主的任意數據類型,常用的有Struct和指針。
Thread 線程類型,在Lua中沒有真正的線程。Lua中可以將一個函數分成幾部份運行。如果感興趣的話,可以去看看Lua的文檔。
V. 變數的定義
所有的語言,都要用到變數。在Lua中,不管你在什麼地方使用變數,都不需要聲明,並且所有的這些變數總是全局變數,除非,你在前面加上"local"。
這一點要特別注意,因為你可能想在函數里使用局部變數,卻忘了用local來說明。
至於變數名字,它是大小寫相關的。也就是說,A和a是兩個不同的變數。
定義一個變數的方法就是賦值。"="操作就是用來賦值的
我們一起來定義幾種常用類型的變數吧。
A. Nil
正如前面所說的,沒有使用過的變數的值,都是Nil。有時候我們也需要將一個變數清除,這時候,我們可以直接給變數賦以nil值。如:
var1=nil -- 請注意 nil 一定要小寫
B. Boolean
布爾值通常是用在進行條件判斷的時候。布爾值有兩種:true 和 false。在Lua中,只有false和nil才被計算為false,而所有任何其它類型的值,都是true。比如0,空串等等,都是true。不要被C語言的習慣所誤導,0在Lua中的的確確是true。你也可以直接給一個變數賦以Boolean類型的值,如:
varboolean = true
C. Number
在Lua中,是沒有整數類型的,也不需要。一般情況下,只要數值不是很大(比如不超過100,000,000,000,000),是不會產生舍入誤差的。在很多CPU上,實數的運算並不比整數慢。
實數的表示方法,同C語言類似,如:
4 0.4 4.57e-3 0.3e12 5e+20
D. String
字元串,總是一種非常常用的高級類型。在Lua中,你可以非常方便的定義很長很長的字元串。
字元串在Lua中有幾種方法來表示,最通用的方法,是用雙引號或單引號來括起一個字元串的,如:
"This is a string."
和C語言相同的,它支持一些轉義字元,列表如下:
a bell
back space
f form feed
newline
carriage return
horizontal tab
v vertical tab
\ backslash
" double quote
' single quote
[ left square bracket
] right square bracket
由於這種字元串只能寫在一行中,因此,不可避免的要用到轉義字元。加入了轉義字元的串,看起來實在是不敢恭維,比如:
"one line
next line
"in quotes", 'in quotes'"
一大堆的""符號讓人看起來很倒胃口。如果你與我有同感,那麼,我們在Lua中,可以用另一種表示方法:用"[["和"]]"將多行的字元串括起來,如:
page = [[
<HTML>
<HEAD>
<TITLE>An HTML Page</TITLE>
</HEAD>
<BODY>
<A HREF="http://www.lua.org
此網頁不屬於NGA網站,NGA不保證其安全性
繼續訪問 取消 不再提示我[ http://www.lua.org ]">Lua</A>
[[a text between double brackets]]
</BODY>
</HTML>
]]
值得注意的是,在這種字元串中,如果含有單獨使用的"[["或"]]"就仍然得用"["或"]"來避免歧義。當然,這種情況是極少會發生的。
E. Table
關系表類型,這是一個很強大的類型。我們可以把這個類型看作是一個數組。只是C語言的數組,只能用正整數來作索引;在Lua中,你可以用任意類型來作數組的索引,除了nil。同樣,在C語言中,數組的內容只允許一種類型;在Lua中,你也可以用任意類型的值來作數組的內容,除了nil。
Table的定義很簡單,它的主要特徵是用"{"和"}"來括起一系列數據元素的。比如:
T1 = {} -- 定義一個空表
T1[1]=10 -- 然後我們就可以象C語言一樣來使用它了。
T1["John"]={Age=27, Gender="Male"}
這一句相當於:
T1["John"]={} -- 必須先定義成一個表,還記得未定義的變數是nil類型嗎
T1["John"]["Age"]=27
T1["John"]["Gender"]="Male"
當表的索引是字元串的時候,我們可以簡寫成:
T1.John={}
T1.John.Age=27
T1.John.Gender="Male"
或
T1.John{Age=27, Gender="Male"}
這是一個很強的特性。
在定義表的時候,我們可以把所有的數據內容一起寫在"{"和"}"之間,這樣子是非常方便,而且很好看。比如,前面的T1的定義,我們可以這么寫:
T1=
{
10, -- 相當於 [1] = 10
[100] = 40,
John= -- 如果你原意,你還可以寫成:["John"] =
{
Age=27, -- 如果你原意,你還可以寫成:["Age"] =27
Gender=Male -- 如果你原意,你還可以寫成:["Gender"] =Male
},
20 -- 相當於 [2] = 20
}
看起來很漂亮,不是嗎?我們在寫的時候,需要注意三點:
第一,所有元素之間,總是用逗號","隔開;
第二,所有索引值都需要用"["和"]"括起來;如果是字元串,還可以去掉引號和中括弧;
第三,如果不寫索引,則索引就會被認為是數字,並按順序自動從1往後編;
表類型的構造是如此的方便,以致於常常被人用來代替配置文件。是的,不用懷疑,它比ini文件要漂亮,並且強大的多。
F. Function
函數,在Lua中,函數的定義也很簡單。典型的定義如下:
function add(a,b) -- add 是函數名字,a和b是參數名字
return a+b -- return 用來返回函數的運行結果
end
請注意,return語言一定要寫在end之前。假如你非要在中間放上一句return,那麼請寫成:do return end。
還記得前面說過,函數也是變數類型嗎?上面的函數定義,其實相當於:
add = function (a,b) return a+b end
當你重新給add賦值時,它就不再表示這個函數了。你甚至可以賦給add任意數據,包括nil (這樣,你就清除了add變數)。Function是不是很象C語言的函數指針呢?
和C語言一樣,Lua的函數可以接受可變參數個數,它同樣是用"…"來定義的,比如:
function sum (a,b,…)
如果想取得…所代表的參數,可以在函數中訪問arg局部變數(表類型)得到。
如 sum(1,2,3,4)
則,在函數中,a = 1, b = 2, arg = {3, 4}
更可貴的是,它可以同時返回多個結果,比如:
function s()
return 1,2,3,4
end
a,b,c,d = s() -- 此時,a = 1, b = 2, c = 3, d = 4
前面說過,表類型可以擁有任意類型的值,包括函數!因此,有一個很強大的特性是,擁有函數的表,哦,我想更恰當的應該說是對象吧。Lua可以使用面向對象編程了。不信?那我舉例如下:
t =
{
Age = 27
add = function(self, n) self.Age = self.Age+n end
}
print(t.Age) -- 27
t.add(t, 10)
print(t.Age) -- 37
不過,t.add(t,10) 這一句實在是有點土對吧?沒關系,在Lua中,你可以簡寫成:
t:add(10) -- 相當於 t.add(t,10)
G. Userdata 和 Thread
這兩個類型的話題,超出了本文的內容,就不打算細說了。
VI. 結束語
就這么結束了嗎?當然不是,接下來,需要用Lua解釋器,來幫助你理解和實踐了。這篇小文只是幫助你大體了解Lua的語法。如果你有編程基礎,相信會很快對Lua上手了。
就象C語言一樣,Lua提供了相當多的標准函數來增強語言的功能。使用這些標准函數,你可以很方便的操作各種數據類型,並處理輸入輸出。有關這方面的信息,你可以參考《Programming in Lua 》一書,你可以在網路上直接觀看電子版,網址為:http://www.lua.org/pil/index.html
此網頁不屬於NGA網站,NGA不保證其安全性
繼續訪問 取消 不再提示我[ http://www.lua.org/pil/index.html ]
當然,Lua的最強大的功能是能與宿主程序親蜜無間的合作,因此,下一篇文章,我會告訴大家,如何在你的程序中使用Lua語言作為腳本,使你的程序和Lua腳本進行交互。
BBS.NGACN.COM
[姚姚]
[1 樓] 豬小小 2005-06-29 14:11
級別: Veteran
發帖: 721
威望: 13
財富: 13
使用流程
1. 函數的使用
以下程序演示了如何在Lua中使用函數, 及局部變數
例e02.lua
-- functions
function pythagorean(a, b)
local c2 = a^2 + b^2
return sqrt(c2)
end
print(pythagorean(3,4))
運行結果
5
程序說明
在Lua中函數的定義格式為:
function 函數名(參數)
...
end
與Pascal語言不同, end不需要與begin配對, 只需要在函數結束後打個end就可以了.
本例函數的作用是已知直角三角形直角邊, 求斜邊長度. 參數a,b分別表示直角邊長,
在函數內定義了local形變數用於存儲斜邊的平方. 與C語言相同, 定義在函數內的代
碼不會被直接執行, 只有主程序調用時才會被執行.
local表示定義一個局部變數, 如果不加local剛表示c2為一個全局變數, local的作用域
是在最里層的end和其配對的關鍵字之間, 如if ... end, while ... end等。全局變數的
作用域是整個程序。
2. 循環語句
例e03.lua
-- Loops
for i=1,5 do
print("i is now " .. i)
end
運行結果
i is now 1
i is now 2
i is now 3
i is now 4
i is now 5
程序說明
這里偶們用到了for語句
for 變數 = 參數1, 參數2, 參數3 do
循環體
end
變數將以參數3為步長, 由參數1變化到參數2
例如:
for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end
這里print("i is now " .. i)中,偶們用到了..,這是用來連接兩個字元串的,
偶在(1)的試試看中提到的,不知道你們答對了沒有。
雖然這里i是一個整型量,Lua在處理的時候會自動轉成字元串型,不需偶們費心。
3. 條件分支語句
例e04.lua
-- Loops and conditionals
for i=1,5 do
print(「i is now 「 .. i)
if i < 2 then
print(「small」)
elseif i < 4 then
print(「medium」)
else
print(「big」)
end
end
運行結果
i is now 1
small
i is now 2
medium
i is now 3
medium
i is now 4
big
i is now 5
big
程序說明
if else用法比較簡單, 類似於C語言, 不過此處需要注意的是整個if只需要一個end,
哪怕用了多個elseif, 也是一個end.
例如
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a*b
elseif op == "/" then
r = a/b
else
error("invalid operation")
end
4.試試看
Lua中除了for循環以外, 還支持多種循環, 請用while...do和repeat...until改寫本文中的for程序
BBS.NGACN.COM
[姚姚]
[2 樓] 豬小小 2005-06-29 14:20
級別: Veteran
發帖: 721
威望: 13
財富: 13
數組的使用
1.簡介
Lua語言只有一種基本數據結構, 那就是table, 所有其他數據結構如數組啦,
類啦, 都可以由table實現.
2.table的下標
例e05.lua
-- Arrays
myData = {}
myData[0] = 「foo」
myData[1] = 42
-- Hash tables
myData[「bar」] = 「baz」
-- Iterate through the
-- structure
for key, value in myData do
print(key .. 「=「 .. value)
end
輸出結果
0=foo
1=42
bar=baz
程序說明
首先定義了一個table myData={}, 然後用數字作為下標賦了兩個值給它. 這種
定義方法類似於C中的數組, 但與數組不同的是, 每個數組元素不需要為相同類型,
就像本例中一個為整型, 一個為字元串.
程序第二部分, 以字元串做為下標, 又向table內增加了一個元素. 這種table非常
像STL裡面的map. table下標可以為Lua所支持的任意基本類型, 除了nil值以外.
Lua對Table佔用內存的處理是自動的, 如下面這段代碼
a = {}
a["x"] = 10
b = a -- `b' refers to the same table as `a'
print(b["x"]) --> 10
b["x"] = 20
print(a["x"]) --> 20
a = nil -- now only `b' still refers to the table
b = nil -- now there are no references left to the table
b和a都指向相同的table, 只佔用一塊內存, 當執行到a = nil時, b仍然指向table,
而當執行到b=nil時, 因為沒有指向table的變數了, 所以Lua會自動釋放table所佔內存
3.Table的嵌套
Table的使用還可以嵌套,如下例
例e06.lua
-- Table 『constructor』
myPolygon = {
color=「blue」,
thickness=2,
npoints=4;
{x=0, y=0},
{x=-10, y=0},
{x=-5, y=4},
{x=0, y=4}
}
-- Print the color
print(myPolygon[「color」])
-- Print it again using dot
-- notation
print(myPolygon.color)
-- The points are accessible
-- in myPolygon[1] to myPolygon[4]
-- Print the second point』s x
-- coordinate
print(myPolygon[2].x)
程序說明
首先建立一個table, 與上一例不同的是,在table的constructor裡面有{x=0,y=0},
這是什麼意思呢? 這其實就是一個小table, 定義在了大table之內, 小table的
table名省略了.
最後一行myPolygon[2].x,就是大table裡面小table的訪問方式.
BBS.NGACN.COM
[姚姚]
[3 樓] yhcs 2005-06-29 14:25
級別: 警告等級2
發帖: 89
威望: -9
這個要頂,好文收藏!
[4 樓] 豬小小 2005-06-29 14:38
級別: Veteran
發帖: 721
威望: 13
財富: 13
其他還有一些高級編寫資料,但在魔獸限制255字的情況下估計也用不到。所以這里不貼了。
BBS.NGACN.COM
[姚姚]
[5 樓] camus 2005-06-29 21:52
級別: Civilian
發帖: 171
威望: 1
財富: 1
變數的問題:
(1)lua似乎是不需要聲明變數的,想用哪個變數那麼用的時候直接賦值就可以了。根據賦值的類型那麼變數就被自動定了類型了。 這樣說對么? (當然,後面文章說到了這個例子:雖然這里i是一個整型量,Lua在處理的時候會自動轉成字元串型,不需偶們費心。 -_-)
(2)
文章里這樣說:假如你要定義局部變數,則在第一次賦值的時候,需要用local說明。
那麼我在寫宏的時候經常直接賦值比如 mp=UnitMana("player")/UnitManaMax("player") ,那麼這個mp就成了全局變數咯?
+++++++++++++++++++++++
邏輯運算的問題
(2)一般寫宏的時候,and,or都有比較運算,所以還能理解,這里直接兩個數值進行邏輯運算有點懵了,
沒繞明白,比如說第一句就不太清楚,有false和nil的都清楚,因為給出了規則。樓主能解釋一下么?
(3)
a and b:如果a為false,則返回a;否則返回b
a or b:如果 a 為true,則返回a;否則返回b
這個規則怎麼解釋,還是說lua就是這樣規定的沒什麼解釋的
++++++++++++++++++++
結構的問題
(4)文章中說到了if...then....elseif....
可是現在寫宏的時候很多人是if....then....if....then....if...這樣嵌套的,也符合標准吧?
++++++++++++++++++
最後,謝謝樓主提供好文,,,,
BBS.NGACN.COM
i miss you so much,that's true,,,,
[6 樓] 豬小小 2005-06-30 01:39
級別: Veteran
發帖: 721
威望: 13
財富: 13
1、沒錯,所有未經聲明的變數都是全局的。。。。甚至包括你在function里定義的變數。我已經實驗過,比如在一個宏里定義了一個變數a並賦值1,運行後,如果在另一個宏里也使用了變數a,宏里要是不重新賦值就調用的話,a的值就會還是你之前所使用的那個宏里賦的值1。
但一般不用擔心沖突,因為大多情況下,大多人在一個宏內使用一個新變數都會習慣重新賦值,一般不會引起太大的問題。但如果你是真正需要一些全局變數並能方便的識別他,可以這樣,在宏中把作為局部變數的都用小寫字母,要用做全局變數的用大寫字母,因為Lua是嚴格區分大小寫的,所以這樣你就可以方便使用局部變數和全局變數了。
2、3、這個的確有點讓人糊塗。。。我來這樣解釋把,其實你說的比較運算就是邏輯運算,都是一樣。只是Lua擴大了and和or 的使用范圍。
其實通常and和or所能使用的范圍僅僅是布爾型的數值,所能得到的結果也是只有布爾型。即and和or只能對false和true進行運算,其結果也同樣不是false就是true。運算情況如下:
false and true = false true and false= false
false and false = false true and true = true
false or true = true true or false = true
false or false = false true or true = true
但Lua擴大了and和or 所能運算的數據類型,為了使其也能運算其他類型的數據。所以才做出了這個方便的定義(當然,你說糊塗的定義也行)
a and b:如果a為false,則返回a;否則返回b
a or b:如果 a 為true,則返回a;否則返回b
現在我們可以用false和true替換a和b運算試試:
a=false b=true
false and true = false
false or true = true
a=true b=false
true and false = false
true or false = true
a=false b=false
false and false =false
false or false = false
a=true b=true
true and true = true
true or true =true
看到了把,其實結果和我們之前正常的邏輯運算是一樣的。Lua僅僅是擴大的and和or所能使用的范圍而已。因為Lua本身對數據類型的定義沒有苛刻的要求,所以她的運算也要能適應各種類型的數據才方便。(其實這也算不上什麼解釋,她就是這樣的定義的,方便還是糊塗就是一念之間,哈哈)
3、當然符合標准啊,嵌套歸嵌套的用法,elseif歸elseif。這兩種用法是不同的啊,雖然結果可能一樣。但有些情況嵌套方便就用嵌套,elseif方便就用elseif羅。
BBS.NGACN.COM
[姚姚]
[7 樓] 夏日晴天 2005-06-30 07:12
級別: 警告等級1
發帖: 481
威望: -3
瘋掉了。。。。。。。。。。。。。。。。。。。難道只有電腦高手才能玩這個游戲啊
BBS.NGACN.COM
三大願望:[七區不卡][跨服戰場不排隊][9城開TBC]
[8 樓] szsharo 2005-06-30 09:47
級別: Civilian
發帖: 44
威望: 0
下面是引用夏日晴天於2005-06-30 07:12發表的:
瘋掉了。。。。。。。。。。。。。。。。。。。難道只有電腦高手才能玩這個游戲啊
wow的精髓就是保證各個不同的人群都能找到自己的樂趣,
電腦高手未必有泡菜的鍵盤熟練,泡菜也未必知道插件和宏~ 並不妨礙各自的樂趣~
只要表干擾別人就好~
暴雪是一幫天才的組合,偶崇拜了10年了:P
樓主是高手,難得還這么有耐心,PFPF~
本想把自己的整合插件效果圖發上來的,實在是懶得去找圖片空間,以後吧~
我用的是大腳+flexbar+titan+Gather+supermacro+LAX+moveanything+...
昨天大腳更新了,偶點開了新功能,被告知interface使用超過20M內存,強制退出遊戲~
@@ 至今大汗不已~~~
另,使用SuperMacro這個插件可以允許將一個宏腳本的最長位元組增加到1023,
允許將快捷鍵直接綁定到宏上(而不是拉到動作條後再綁定),允許使用其它宏的名稱來
調用其它的宏。安裝後即可使用。 可以解決小小MM說的位元組限制問題。
[ 此貼被szsharo在2005-07-24 10:00重新編輯 ]
BBS.NGACN.COM
術士素優雅高貴的職業,尤其素帥氣的侏儒術士~:P
[9 樓] 最接近神的牛 2005-06-30 10:35
級別: Civilian
發帖: 5
威望: 1
財富: 1
高人
⑸ 現在一些大型游戲,如傳奇、魔獸世界等是用什麼編程語言編出來的
所有的伺服器程序都是用:
主要部分都是用C\C++編寫,然後再用一寫腳本語言
現在非常流行的腳本語言是Python,它和C++搭配簡直天衣無縫,甚至C++委員會都決定將Python嵌入下一代C++標准中..
客戶端也是使用C++,大部分使用微軟的D什麼x的圖形庫,3D游戲的話,一般每個游戲,有他們公司的的3D庫,也就是所謂的3D引擎..
我有熱血傳奇02年編寫的傳奇源代碼,附有開發文檔是用VC++6.0,開發的,使用了巨多的類..
⑹ 魔獸世界NPC語言
簡明血精靈語培訓材料(別問我哪裡搞來的-。-)
al diel shala 一路順風(祝福、告別語)
anar'alah belore 以日光的名義(既可以用於戰吼,也可用於立誓)
anaria shola 有何貴干(公務場合的招呼語)
anu belore dela'na 願日光指引你(只出現在雙方都是血精靈或者高等精靈的場合下。用這句話問候暗夜精靈尤其不明智。)
bal'a dash,malanore 你好,旅行者。(問候語)
bash'a no falor talah! 享受真正的死亡冰域罷!(不太使用的戰吼,通常出現在面對亡靈軍隊的時候)
doral ana'diel? 近況如何(問候語)
medivh 守秘者(用作人名,特質提瑞斯法最後的守護者麥迪文medivh)
selama ashal'anore 為人民的正義而戰!(用於立誓和告別的場合。)
shin fallah na!他們快要突破防線了!(字面意思)
shorel'aran 再會(告別)
sin'dorei 血之子(血精靈的特稱,血之子民。)
sinu a'manore 見到你很高興(問候語)
sunstrider 白天行動的人。(用作任命,特指逐日者家族,這個家族最後的繼承人是凱爾薩斯@!逐日者王子。)
[::艾澤拉斯國家地理 BBS.NGACN.CC::]
belore 代表 太陽。例句:anar'alah belore以及 anu belore dela'na
danil 代表 山峰。例如 quel'danil
diel 代表 行進。例句:al diel shala 和 doral ana'diel
dorei 代表 出生、孩子、或者精靈。kaldorei,quel'dorei和sin'dorei是很好的例子。(這也是達納蘇斯詞彙)
常用詞彙:
malanore 代表 旅者。 例句:bal'a dash, malanore。
quel 代表 高等/偉大。quel'danil, quel'dorei, quel'lithien, quel'thalas, 以及quel'zram。(這也是達納蘇斯詞彙)
ronae 代表 平靜的/和平的
serrar 代表 劍
shala 代表 平安。al diel shala.
sin 代表 鮮血。sin'dorei。有趣的是這個詞彙是英語中原罪的意思。
shin 代表 隕落。shin sin'dorei和shin fallah na(我們的敵人來了。)
thalas 代表 家園/王國。quel'thalas。
zaram 可能代表 劍。 quel'zaram(奎爾塞拉)
⑺ c語言怎麼編寫
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char fun(char *a,char *b)
{
char *t;
strcpy(t,a);
strcpy(a,b);
strcpy(b,t);
}
struct st{
char a[6][20];
};
int main()
{
struct st s[111];
int n,x[111],k=0,ts,sum=0;
scanf("%d",&n);
printf("學號 姓名 數學 物理 英語 計算機 ");
for(int i=0;i<n;i++)
{
sum=0;
for(int j=0;j<6;j++)
{
scanf("%s",s[i].a[j]);
if(j!=0&&j!=1)
{
sum+=atoi(s[i].a[j]);
}
}
x[k++]=sum/3;
}
for(int i=0;i<k;i++)
{
for(int j=0;j<k-i-1;j++)
{
if(x[j]>x[j+1])
{
ts=x[j];
x[j]=x[j+1];
x[j+1]=ts;
for(int l=0;l<6;l++)
fun(s[j].a[l],s[j+1].a[l]);
}
}
}
printf("學號 姓名 數學 物理 英語 計算機 平均成績 ");
for(int i=0;i<n;i++)
{
for(int j=0;j<6;j++)
{
printf("%s",s[i].a[j]);
for(int k=0;k<8-strlen(s[i].a[j]);k++)
printf(" ");
}
printf("%8d ",x[i]);
}
return 0;
}
⑻ 求寫個c語言的小程序,一鍵登陸魔獸世界的
java ,c#,或者vb吧。c還是算了。。。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace WowLoader1
{
class Program
{
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
const int WM_KEYDOWN = 0x100;
const int WM_KEYUP = 0x101;
const int WM_CHAR = 0x102;
static string path = @"游戲路徑";
static string name = "你的賬號";
static string password = "你的密碼";
public static void SendString(IntPtr handle, string str)
{
foreach (char c in str)
{
SendMessage(handle, WM_KEYDOWN, c, 0);
SendMessage(handle, WM_CHAR, c, 0);
SendMessage(handle, WM_KEYUP, c, 0);
}
}
static void Main(string[] args)
{
Process pro = Process.Start(path);
pro.WaitForInputIdle(-1);
System.Threading.Thread.Sleep(1000);
SendString(pro.MainWindowHandle,name);
SendString(pro.MainWindowHandle, "\t");
SendString(pro.MainWindowHandle, password);
SendString(pro.MainWindowHandle, "\r");
}
}
}
⑼ 如何用c語言編寫魔獸世界
這個,魔獸世界是千人級的大團隊歷時兩年多,再加上十年多的維護才有的今天。如果你問的是游戲C語言游戲編程,那麼你可以學學OpenGL或者MFC
⑽ 魔獸世界怎麼編寫宏,求高手詳細指導··
魔獸世界的宏命令多用於把爆發性的技能或飾品綁定在一起,可以一次性開啟多個技能,達到最大化輸出的效果,宏命令的編寫方法如下:
第一步,進入游戲後,按ESC調出主菜單。