Re: [建议] 副本相关

楼主: laechan (挥泪斩马云)   2014-04-24 07:32:17
备忘一下
1.增加 instance_multi 字段。单人模式不会有这个字段。
2.在 instance_rooms.c 补完副本过关资料的储存(已完成一半)
3.在 questing("instance") 新增两组 set/delete/query
原则一项修改的篇幅过长时,下一项修改就写成另外一篇。
============================================================
instance_ob.c 已经加上 instance_multi 参数,这参数在呼叫
create_instance 时就要给,没给就默认为单人模式,相关的函
数例如 questing、instance_rooms.c 也已更动。
questing("instance","create","laechan/001",
({"laechan",({laechan}),"normal/hard1/hard2/hard3","single/multi"}));
没有第三个字段以后,就默认为 normal、single。
没有第四个字段以后,就默认为 single。
所以最简单的呼叫就是跟之前一样,如下:
questing("instance","create","laechan/001",({"laechan",({laechan}));
并修改 instance_room.c,当房间没有 multi 参数时,玩家会被
踢出,并 log 到 /open/wizs/log/instance.log。
==========================================================
先补完了 questing("instance","set/query/delete") 的部份。
questing("instance","set/query/delete","laechan/001",({参数群}))
参数群接的参数如下
({"normal/hard1/hard2/hard3",0/1,creator_id,破关所花的时间})
破关时间是否纪录,完全取决于副本脚本物件的 instance_check
是否呼叫 questing("instance","set"),有呼叫就代表想纪录,
则通常呼叫的型式如下..
data=room->query_ob_data();
t=time()-(int)data["instance_times"];
n=questing("instance","set",data["instance_id1"]+"/"+data["instance_id2"],
({data["instance_diff"],(int)data["instance_multi"],
data["instance_player"],t}));
底下说明传回的 n 所代表的意义:
n=1 : 没有意义
n=2 : 玩家初次突破 diff-multi 这个组合
n=3 : 玩家此次更新了 diff-multi 这个组合的最短时间纪录
当 n>1 时 t 就是玩家破关所花的时间(秒数)。
另外,底下的呼叫允许 wiz 无条件变更资料
call instance_rooms;instance_data;"set";"laechan";"001";({参数群});1
^^
有带 1 那个最后一个字段的参数时,将无条件把破关时间设进
去,这时如果破关时间设为 -1 则代表初始化破关时间。
目前有考虑将“谁”破了这个这个也纪录进去。
以上已实装。
Laechan

Links booklink

Contact Us: admin [ a t ] ucptt.com