作者laechan (揮淚斬馬雲)
看板mud_sanc
標題[閒聊] 忘光了,複習
時間Fri Dec 25 22:18:43 2020
這篇應該會一直編到星期日。現況是對 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,虛擬物品系統,家族系統,天空城農場系統,
大樂透系統,投票系統,... 這些忘光了,但這些系統大部份
的主程式不需要再動,只需要動設定值,或是動腳本即可。
到星期六早上為止,自覺大概想起六成左右。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.66.104 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/mud_sanc/M.1608905926.A.EB1.html
1F:→ laechan : 看起來不用到星期日應該星期六就可以想起怎麼coding 12/25 22:26
※ 編輯: laechan (114.33.66.104 臺灣), 12/26/2020 09:14:52
2F:→ laechan : 再複習一次 12/29 08:56
3F:→ ablegod : 小寶 佩服你堅持了20年 12/31 00:23
4F:推 iluy : 01/07 21:35