Re: [閒聊] 新增紀錄之石(Record Stone)

看板mud_sanc (Sanctuary - 聖殿)作者 (揮淚斬馬雲)時間8年前 (2017/05/03 07:59), 8年前編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《hlead (希多)》之銘言: : 新增下列物件(可在羅德斯及罪惡城道具店購買): : -------------------------------------------------------- : 紀錄之石(Record Stone) : -------------------------------------------------------- : 單位:顆 : 重量:20 : 價格:168168 : 掉落:無 : 據說是從遠古時代流傳至今的一顆神秘石頭,裡面蘊藏著強大的 : 魔力,可以將人物目前所在地的時空資訊紀錄在人物的身上。 : 使用方法:use stone。 : -------------------------------------------------------- : 功用: : 可在罪惡城的神之廣場及羅德斯的巨型高塔使用。 : 使用後 recall 處會變更,以後 recall 都會到該地點。 : 上述兩個房間新增參數: : set("recall_location","lodoos"); // 配合紀錄之石(Record Stone)使用。 : 指令 recall 變更: : else // 新增 record_data/recall_location 判斷。 Norr in 106/05/02 : { : string reLocal = me->query("record_data/recall_location"); : if(reLocal == "sin_city") : me->move_player("/d/ppl/norr/sin_city/room/192","SNEAK"); : else if(reLocal == "lodoos") : me->move_player("/d/wiz/room/disc","SNEAK"); : else : me->move_player("/d/wiz/room/disc","SNEAK"); : } 補充一下 ob use 的部份(指令 /cmds/std/_ob.c) else if(sscanf(str,"use %s",tmp)==1) { vobjs=me->query_vobjs(); tmps=keys(vobjs); tmps=sort_array(tmps,(: sort_vobjs :)); x=atoi(tmp); if(x>0) { y=sizeof(tmps); if(y<1) return notify_fail("你的物品欄一個東西也沒有。\n"); if(x>y) return notify_fail("你的物品欄沒有第 "+x+" 件物品喔.\n"); tmp=tmps[x-1]; tmps=questing("vobjs","replace","mton",({tmp})); tmp=tmps[0]; } //tmp這時變為該物品的"名字" // ({"mark","name","unit","kind","value","carry","sell","trade","desc"}) tmps2=questing("vobjs","query_array",tmp); //tmps2這時變為該物品的陣列資料, 例如 tmps2[0]就是其編號 if(sizeof(tmps2)<8) return notify_fail("沒有"+tmp+"這個東西喔。\n"); if(!vobjs[tmps2[0]]) return notify_fail("你沒有"+tmp+"這個東西喔。\n"); //當desc被設定為 檔名型式 時 如 /std/new_ob/s/s001 if(tmps2[8][0..0]=="/") { tmps2[8]=substr(tmps2[8],"\n",""); env=find_object_or_load(tmps2[8]); // Laechan@Sanc add in 2013/09/13 // 不想動舊有的 ob_use_func 所以新增一個, 兩者共存時 // 會以 use_func 為主, 並把需要的所有資訊全部傳過去 //如果該指向的檔名,其物件檔案內有 use_func 函數時 //玩家下 ob use 該物品編號或名字 時,就會呼叫該函數 if(function_exists("use_func",env)) { me->vobjs("add",tmps2[0],-1); //預設使用後該物品數量會 -1 env->use_func(me,environment(me),tmps2); //並無條件 return 1(即支援 move、move_player 函數的呼叫) return 1; } //名稱叫 use_func 或 ob_use_func 皆可 else if(function_exists("ob_use_func",env)) { me->vobjs("add",tmps2[0],-1); env->ob_use_func(me); return 1; } return notify_fail("ob use: "+tmp+" 這個東西可能有問題,現在不能使用喔.\n"); } return notify_fail("ob use: "+tmp+" 這個東西不能使用喔.\n"); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.252.81.122 ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1493769557.A.E4C.html

05/03 08:00, , 1F
因為數量會減1,所以在 use_func 內記得把物品再+1
05/03 08:00, 1F

05/03 08:01, , 2F
基本上是否預設-1是可討論的
05/03 08:01, 2F
例如說真的寫幾種不同的 use function,通常一種物品只會帶 一個 use function,某些 use function 就不扣物品數量: 通常版: use_func、ob_use_func 特殊版: special_use_func (類似自定特殊攻擊的 special_fun 做法) 中午前我評估看看能否這樣寫。 ※ 編輯: laechan (111.252.81.122), 05/03/2017 08:04:46
文章代碼(AID): #1P2HrLvC (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #1P2HrLvC (mud_sanc)