看板 mud_sanc 關於我們 聯絡資訊
※ 引述《aiggkimd (口古月)》之銘言: : 我一開始實驗單樣物品n個,用hlead貼的結果沒反應..複製貼上改掉道具也不能..痾 : int return_obj(string str) : { : object ob,ppl=this_player(); : mixed obs=all_inventory(ppl); : int i,u; : i=0; : foreach(ob in obs) : if(ob->query("mushroom")) : i++; 你可以在這裡加個 write("i="+i+"\n"); 判斷一下 i 是多少. : if (i<2) : { : write("你要收集滿兩個才能兌換唷!!\n"); : return 1; : } : for(u=0;u<3;u++) : { : ob=present("mushroom",ppl); : ob->remove(); : } : write("這是你要的東西,拿去吧!!!\n"); : return 1; : } : 結果都顯示"你要收集滿兩個才能兌換唷"...沒成功. : 測試2,我拿蘑菇跟骨頭來實驗,用小保貼的改2樣各n個來試 : int return_obj(string str) : { : object ob,ppl=this_player(); : mixed obs=all_inventory(ppl); : int i,j; : i=0; : j=0; : foreach(ob in obs) : { 在這裡加個 write(ob->query("short")+"\n"); 看看 foreach 是不是會玩家身上的每個物品都 write 出來. : if(ob->query("mushroom")) : i++; : if(ob->query("bone")) : j++; : } 這裡加個 write("i,j="+i+","+j+"\n"); 我是覺得你 data mushroom 跟 data bone 一下, 我猜應該 是 mushroom 的 data 中沒有 mushroom 這個參數, 或者是 bone 的 data 中沒有 bone 這個參數. 應該是這個原因. : if(i>=2 && j>=2) : write("這是你要的東西,拿去吧!!!\n"); : else write("你東西要收集滿才能兌換唷!!\n"); : return 1; : } : 結果只會顯示"你東西要收集滿才能兌換唷"....都失敗了.. : 請問哪邊要修正? : 還有一次移除兩種東西 : ob=present("mushroom",ppl) && ob=present("bone",ppl) ob=present("mushroom",ppl) 當你執行這個判斷時 ob 就是 mushroom 了, 以致於當你又執行 ob=present("bone",ppl) 的判斷時, ob 就變成了 bone. 也就是說 ob = XXXX 時, 放左邊的變數永遠是右邊去 cover 的. 但是用這種方法, 道具必須要有特殊的 ID, 因為在聖殿裡頭 叫 mushroom 跟叫 bone 的道具很多. : ob->remove(); : 這樣寫可以?? : 但是這樣好像只會移除一組而已..假如npc各要2組的話 : for(k=0;k<3;k++) : { : ob=present("mushroom",ppl) && ob=present("bone",ppl) : ob->remove(); : 這樣不曉得行不行.. : 小保貼的方法2就可以用,但是成功後的移除不曉得怎寫比較好 : 像蘑菇跟骨頭各兩個都移除掉..試不出來 : 目前就這樣..移除的部分還在研究 : int return_obj(string str) : { : object ob1,ob2,ppl=this_player(); : if(ob1=present("mushroom 2",ppl) && : ob2=present("bone 2",ppl)) : { : write("這是你要的東西,拿去吧!!!\n"); : } : else write("你東西要收集滿才能兌換唷!!\n"); : return 1; : } : 現在有點混亂..請示一下,謝謝.. 要順便移除的話就要兩個 foreach, 第二個 foreach... // 上面已經做完判斷, 確定玩家身上有這些東西 foreach(ob in obs) { if(ob->query("mushroom") && i-->0) ob->remove(); if(ob->query("bone") && j-->0) ob->remove(); } 這樣刪完 i 個 mushroom 及 j 個 bone 後它就不會再刪了. Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.109.82
aiggkimd :thx 05/27 23:06