→ aiggkimd :thx 05/27 23:06
※ 引述《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