[閒聊] RO的獵人老鷹->寵物系統

看板mud作者 (準農夫)時間4年前 (2019/07/30 13:25), 4年前編輯推噓2(200)
留言2則, 2人參與, 4年前最新討論串1/2 (看更多)
實例影片: https://youtu.be/9L5XtcGnGiU
以下code是es2內建的, 只是原始碼我一直沒看到他的應用~ 後來就寫個寵物系統給他:(有興趣的稍微看一下,應該就懂了) mapping *read_table(string file) { string *line, *field, *format; mapping *data; int i, rn, fn; line = explode(read_file(file), "\n"); data = ({}); for(i=0; i<sizeof(line); i++) { if( line[i]=="" || line[i][0]=='#' ) continue; if( !pointerp(field) ) { field = explode( line[i], ":" ); continue; } if( !pointerp(format) ) { format = explode( line[i], ":" ); continue; } break; } for( rn = 0, fn = 0; i<sizeof(line); i++) { if( line[i]=="" || line[i][0]=='#' ) continue; if( !fn ) data += ({ allocate_mapping(sizeof(field)) }); sscanf( line[i], format[fn], data[rn][field[fn]] ); fn = (++fn) % sizeof(field); if( !fn ) ++rn; } return data; } 之後只要在目錄上多寫個檔案link: //data/pet/招式表 #招式 level:message:damage %d:%s:%d 5 閃電衝擊 100 10 [勁]閃電衝擊 200 15 [夠勁]閃電衝擊 250 那之後就會有等級,學會招式跟傷害 接下來在pet物件上寫下: mapping save_add = ([]); void update_level() { object ob,me; string message; int i,count,level,damage; mapping *data = read_table("/data/pet/招式表"); ob = this_object(); me = find_player( dbase["master_id"] ); for( i=0; i<sizeof(data) ; i++) { if( dbase["level"] == data[i]["level"] ) { level = data[i]["level"]; message = data[i]["message"]; damage = data[i]["damage"]; message_vision(HIR"\n$N領悟了一招「"+message+"」!\n"NOR,ob); if( wizardp(me) ) message_vision(HIR"傷害值:"+damage+"等級:"+level+"。\n"NOR,me); if( !count = sizeof(save_add) ) count = 0; save_add[count] = data[i]; save(); break; } } } 接下來, 看你是需要餵食跟還是跟玩家經驗直一起成長up_level 然後領悟招式save()下來就可以了... 攻擊招式perform()我是寫在寵物heart_beat()身上: int perform(object master) { int i,num,level,damage; string *killer= master->query_killer(); object *enemy= master->query_enemy(); num = random(sizeof(save_add)); if( !level = save_add[num]["level"] ) return 0; //通通打!! for( i=0; i<sizeof(enemy); i++ ){ if( member_array( enemy[i]->query("id"), killer )!=-1 ){ damage = random(save_add[num]["damage"]/2) + save_add[num]["damage"]/2; message_vision(HIR"轟~轟~轟~\n$N使出一招"NOR+level+NOR"級奧義" +HIM"「"NOR+save_add[num]["message"]+HIM"」" +HIC"讓$n造成("HIR+damage+HIC")的傷害!\n"NOR,this_object(),enemy[i]); enemy[i]->receive_damage("kee",damage); } } return 1; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.74.11.254 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/mud/M.1564464303.A.756.html ※ 編輯: taily (211.74.11.254 臺灣), 07/30/2019 13:29:52

07/30 14:45, 4年前 , 1F
推推
07/30 14:45, 1F

07/30 15:09, 4年前 , 2F
推推,大心分享
07/30 15:09, 2F
文章代碼(AID): #1TFzIlTM (mud)
文章代碼(AID): #1TFzIlTM (mud)