忘光了,複習 - 聖殿英雄傳說 MUD

Gary avatar
By Gary
at 2020-12-25T22:18

Table of Contents

這篇應該會一直編到星期日。現況是對 javascript 的程式撰寫算熟了,
對 asp 的部份原本忘光了,但最近在公司寫了兩支網頁檔邊複習,有想
起六七成左右,mud coding .. 我忘光的部份是純程式的部份,物件設定
、物件函數則大多還記得。

以下的東西不一定對,之後有發現錯的話會修正。


mud javascript asp
----------------------------------------------------------------------------
mixed tmps=({}); var tmps=[]; dim xxx = Array(給初始大小)
tmps+=({"xxx"}); tmps.push("xxx"); ?

mapping tmps; var tmps={}; set tmps = Server.CreateObject
└全域宣告的話需另外做 ("Scripting.Dictionary")
初始化 偷懶的話用 Session 暫存也可以

以js取得絕對路徑檔名 files=Server.MapPath(files)

tmp=read_file(files); fso=New ActiveXObject set fso = Server.CreateObject
write_file(files,tmp); ("Scripting.File ("Scripting.FileSystem
SystemObject"); Object")
fs=fso.OpenTextFile set fs = fso.OpenTextFile
(files,1); (files,1)
tmp=fs.ReadAll(); tmp = fs.ReadAll
fs.close fs.close
fs=fso.OpenTextFile set fs = fso.OpenTextFile
(files,8); (files,8)
fs.write(tmp); fs.write(tmp)

tt=keys(tmps); tt=Object.keys(tmps); tt = tmps.Keys
j=sizeof(tt); j=tt.length; j = tt.Count
str=""; str=""; str = ""
for(i=0;i<j;i++) for(i=0;i<j;i++) for i = 0 to j-1?
if(i%2==1) if(i%2==1) if i mod 2 = 1 then
str+=tmps[tt[i]]; str+=tmps[tt[i]]; str = str & tmps(tt(i))
end if
next

write(str); document.write(str); response.write str

tmps=explode(str,"\n"); tmps=str.split("\n"); tmps = split(str,vbcrlf)
str=implode(tmps,"\n"); str=tmps.join("\n"); str = join(tmps,vbcrlf)
replace_string(str, str.replace(/a/g,"b"); str = replace(str,"a","b")
"a","b");
substr 也可以

if(strsrch(str,"xxx")) if(str.indexOf("xxx")) if InStr(str,"xxx") > 0 then
{ {
return ; return ; response.end
} } end if

void xxx() function xxx() sub xxx function xxx
{} {} end sub end function
忘記怎麼傳值了

ss=str[1..3]; ss=str.substr(1,2); ss = mid(str,1,2)
大概,每次都記不住

s=strlen(str); s=str.length; s = len(ss)

s=atoi(str); s=parseInt(str); s = CInt(str)

str=identify(x); str=JSON.stringify(x); ?

sscanf(str,"%s %s", str.scanf(str,"%s %s", ? 忘了是否有這東西
s1,s2); s1,s2); ??嗯,不確定
我都偷懶用 split

xxx=sort_array(xxx, xxx.sort(function(a,b) 我好像都偷懶用氣泡排序法
(: sort_xxx :)); { ... }); 或是用陣列先把鍵值的順序定好


mapping x=([
"1":"xx",
"2":"xx",
]);

mixed x=({"1","2"});


inherit ROOM;

void create()
{
::create();
seteuid(getuid(this_object()));

set("light",1);
set("short","一間房間");
set("long",@LONG
這是一間房間,貼著一張告示(note)。

LONG
);
set("exits",([
"north":__DIR__"002",
"south":__DIR__"003",
]));
set("exits/east",__DIR__"004");
set("item_desc/note",@LONG
這是一張A4大小的告示。
LONG
);
set("objects",([SM"dove":3,]));
set_npcs(({"... 呃忘記怎麼設定了..}));
reset();
}

void init()
{
add_action("drink_xxx","drink");
add_action("jump_xxx","jump");
}

int drink_xxx(string str)
{
if(!str || str=="")
return notify_fail("你要喝什麼?\n");

if(str!="water")
return notify_fail("drink: 這裡沒有 "+str+" 這個東西可以喝喔!\n");

return notify_fail("drink: 你喝了一口水,感覺舒服多了。\n");
}

int jump_xxx(string str)
{
object ppl=this_player();

write(HIW"你縱身一躍,跳到了另一個房間!\n"NOR);

ppl->move_player(__DIR__"005","SNEAK");

tell_room(environment(ppl),ppl->query("short")+"突然出現在這個地方!!\n");

return 1;
}

mixed usr=users();
foreach(ppl in usr)
if(ppl && interactive(ppl))
tell_object(ppl,"再一分鐘就要關機了,請趕快 quit!\n");

tmps=keys((mapping)ppl->query("skill"));
str="";
foreach(sk in tmps)
str+=sprintf("%-36s : %-d\n",skill_name(sk)+"("+capitalize(sk)+")",
ppl->query("skill/"+sk)); ^^^^^^^^^^這裡忘了
lower_case 倒是還記得

r=random(100);

switch(r)
{
case 1: ...; break;
case 2:
case 3: ,,,; break;
default: ...; break;
}

if(a && b && c)
if(a || b || c)
if((a && b) || (c && d))

while(i++<50)
{
}

for(i=0;i<100;i++)
{
if(xxx) continue;
else if(ooo) break;
}

simul_efun 跟 efun 有些也忘光了都要回想一下

simul_efun 的部份

string files,str,tmp;
int a,b,x,i,j;
mixed tmps=({}),objs;
object me,ppl,obj;

files=file_name(this_object());
files=base_name(this_object());

me=this_player();
if(!wizardp(me))
return notify_fail("你不是巫師喔!\n");

varargs mixed questing(string kind,string names,string quest_num,mixed vars)

tell_object(me,"test.\n");
tell_room(environment(me),"test",({me}));
write("test.\n");
say("test.\n");
shout("test.\n");
show(me,ppl,"$N對$O擊出一記肘擊!");

int save_room()
{
save_object(base_name(this_object()));
return 1;
}

int restore_room()
{
restore_object(base_name(this_object())+".o");
return 1;
}

if(sscanf(str,"%s %s",s1,s2)==2)
{
...
}

tmps=sort_array(tmps,(: sort_tmps :));

int sort_tmps(string s1,string s2)
{
int a1=atoi(s1),a2=atoi(s2);
return strcmp(s1,s2);
a1>a2 ? return 1 : a1<a2 ? return -1 : return 0;
}

int t=time();
string times=ctime(t);

ppl->shut("$N對$O使出一記肘擊",5000,1000,"dam",tar);
ppl->shut2("$N對$O使出一記肘擊",5000,1000,"dam",tar);


常用的 efun,虛擬物品系統,家族系統,天空城農場系統,
大樂透系統,投票系統,... 這些忘光了,但這些系統大部份
的主程式不需要再動,只需要動設定值,或是動腳本即可。

到星期六早上為止,自覺大概想起六成左右。


--
Tags: 線上

All Comments

Jacky avatar
By Jacky
at 2020-12-26T14:40
看起來不用到星期日應該星期六就可以想起怎麼coding
Hamiltion avatar
By Hamiltion
at 2020-12-29T07:30
再複習一次
Charlotte avatar
By Charlotte
at 2021-01-02T06:10
小寶 佩服你堅持了20年
Jake avatar
By Jake
at 2021-01-06T19:19

CY微博公布死靈金卡

Michael avatar
By Michael
at 2020-12-25T18:16
https://i.imgur.com/eQz8OcJ.jpg 死靈金卡,311→333,三頭獵犬 【謝幕曲】召喚1個「費用為5,攻擊力為2,謝幕曲能力為 『召喚1個「費用為7,攻擊力為3,沒有謝幕曲能力的三頭獵犬」』 的三頭獵犬」到戰場上。 - ...

12月28日 13:00~16:00 伺服器維護公告

Joe avatar
By Joe
at 2020-12-25T14:16
情報來源:https://shadowverse.com/cht/news/detail.php?announce_id=1707 情報懶人包:猛虎、龍笛buff https://i.imgur.com/BAcpGND.png https://i.imgur.com/UfxteUY.png 情報詳細內 ...

Luisthepanda 精靈傳說

Skylar Davis avatar
By Skylar Davis
at 2020-12-25T09:10
情報來源:https://www.youtube.com/watch?v=ilVsBUNElKw 情報詳細內容: Tweyen, Dark Huntress 精靈傳說隨從 4/3/3→4/5/5(?) [必殺] [入場曲] 使敵方一名隨從於下個回合無法進行攻擊。 [奧義10] 使這個從者進化。給 ...

Tempostorm 龍族金

Vanessa avatar
By Vanessa
at 2020-12-25T08:50
情報來源:https://tempostorm.com/articles/EA-cardreveal-2 情報詳細內容: http://cdn.tempostorm.com/articles/razia_1.png http://cdn.tempostorm.com/articles/razia_2.p ...

主線劇情 暴雷注意

Ursula avatar
By Ursula
at 2020-12-24T22:57
主角群在跟傑希爾文西戰鬥時全滅 只剩下失控的依魯凱諾跟死了同伴對世界徹底絕望的峇妮 艾希連德凜克為了換個身體,所以搞了這一大堆 原本只想靠儀式,但沒想到亞里莎比想像中強 亞里莎宰了艾希的肉體,艾希詛咒發動,索取亞里莎的肉體為代價 亞里莎中間原本有個選項是射殺另外一個沒有寫名字的對象 但直接被說目前還沒有資 ...