[wizs] 如何簡易判斷玩家 a 與 b 在相同區域?

看板 mud_sanc
作者 laechan (揮淚斬馬雲)
時間 2024-10-13 09:29:31
留言 0 ( 0推 0噓 0→ )
傳統做法很麻煩。 首先 a 與 b 必定有所在環境,假設叫 enva 及 envb。 那傳統做法就是判斷 enva 及 envb 是否位於相同的區域目錄, 這適用九成以上的同區域判斷。 問題是以前光是要做這樣的判斷就得寫不短的判斷式。 所以我決定在 /std/ob/room.c 新增一個新的函數 varargs string room_path(int c) { string f; int s; f=base_name(this_object()); s=strlen(f); while(s-->0) if(f[s..s]=="/") break; // 結尾要不要 / return c ? f[0..s] : f[0..s-1]; } 測試結果 > look [/u/l/laechan/workroom ] = 天上界 = 朝霧盡散,合煦的朝陽掛在東方的高空中,大地一片欣欣向容。 天空中的雲全部消散了,只剩下一望無垠天空. 明顯出口有: 無 Lv255.副本管理員─綾兒(Instance manager, Satin) > call here;room_path 房間(/u/l/laechan/workroom)-> room_path() = "/u/l/laechan" 這樣要判斷 a 與 b 是否在相同區域時,可以這樣寫 envb=environment(b); // a 通常是 this_player() 所以不需判斷 enva 是否存在 paths=environment(a)->room_path(); if(envb && paths==(string)envb->room_path()) 以上在最近一次系統重開後即適用。 進一步來說,則可以讓 questing 支援這樣的判斷,例如 questing("room_path",... 但是這樣不會讓呼叫變簡單。 下次系統重開後將新增組隊打怪效益並測試。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.120.231 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1728782974.A.117.html

留言

※ 編輯: laechan (114.33.120.231 臺灣), 10/13/2024 09:36:17

最新文章

[PS5 ] 售PS5數位主機1218B
gamesale tom19830924
2024-11-18 01:27:14
[PS4] 徵 PS4 pro
gamesale orzsto
2024-11-18 01:19:20
[PS5] 徵PlayStation Portal
gamesale fantasyaire
2024-11-18 00:13:26
[閒聊] 11/18閒聊
nba_fantasy magicjohnson
2024-11-18 00:09:14
[繁GO] 本週御主任務11/18~11/24
6 6 fate_go rafeel
2024-11-18 00:03:25
[日GO] 本週御主任務11/18~11/24
fate_go rafeel
2024-11-18 00:00:25
[NS ] 售漆彈大作戰2
gamesale cumcumcum
2024-11-17 23:59:24
Re: [問題] DQ3 HD-2D 金字塔三樓
1 1 nswitch toyotomico
2024-11-17 23:52:04
Re: [閒聊] 疑似台服誇張洗分影片
5 8 lol seysem
2024-11-17 23:48:09
[wizs] 預計新增 unboxing 指令
mud_sanc laechan
2024-11-17 23:35:33