微信扫一扫 分享朋友圈

已有 4049 人浏览分享

[服務器疑問] 請問如何讓轉蛋機中獎帶綠廣?

  [複製鏈接]

集團新軍

Rank: 1

59

威望

326

金錢

202

A幣
主題
16
帖子
52
精華
1
綜合社群主題發文量
35
電玩社群主題發文量
0
娛樂社群主題發文量
0
技術社群主題發文量
0
閱讀權限
10
註冊時間
2018-5-15

贊助感謝勳章精華作者勳章

  • TA的每日心情

    2018-9-7 18:26
  • 簽到天數: 58 天

    連續簽到: 0 天

    [LV.5]常住居民I

    as071186 發表於  2018-7-30 04:21:53 | 顯示全部樓層 | 閱讀模式
    如題
    爬了4天的文 找不太到相關詳細資訊
    又卡關了

    綠廣的部分
    以下是端內原有的源碼
    應該是不會有什麼問題
    不過資訊還是給詳細點好 XD
    綠廣源碼.PNG

    以下是去小馬爬文爬到的轉蛋機JS
    為了方便閱讀物品代碼只留一個
    轉蛋JS.PNG

    說實話 有一半的函數都不懂....
    找了好幾天的資料
    也沒有找到相關的資訊QQ
    目前這套JS是可以成功綠廣的
    但是上廣物品無法控制
    我的理解應該是要由
    物品代碼 權重 true OR false
    這邊來控制
    但是實際測試後
    那個true OR false
    只控制到cm.worldMessage("玩家 「" + cm.getName() + "」" + "從轉蛋機轉到了#!"+GItem[0]+"#,大家一起恭喜他吧!" );<---這一句

    這次問題比較繁瑣
    主要是想請教怎麼修改才能自己控制上廣物品
    (如果能教學一下那些不懂的語法是更好XD)

    希望有好好陳述出問題
    再麻煩各位前輩們指點迷津了 ~~~
    共收到 0 A幣
    打賞榜
    暫無
    暫無
    暫無
    暫無
    ----
    暫無
    ----
    暫無
    ----
    暫無
    ----
    HI

    區域版主

    Rank: 10Rank: 10Rank: 10

    83

    威望

    362

    金錢

    232

    A幣
    主題
    13
    帖子
    85
    精華
    0
    綜合社群主題發文量
    29
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    100
    註冊時間
    2016-5-29
  • TA的每日心情

    2020-10-7 21:54
  • 簽到天數: 30 天

    連續簽到: 0 天

    [LV.5]常住居民I

    雨濛濛 發表於 2018-7-30 09:41:37 | 顯示全部樓層
    有點亂...下次可以code複製..這樣子我很難說明...
    首先是 看看源碼的問題
    1. final byte rareness = GameConstants.gachaponRareItem(item.getItemId());
    複製代碼
    看看這行 利用CTRL+左鍵點進去 裡面是轉蛋機轉到會廣播的物品ID<--方法1
    第2如果是要用true   false控制 要在原碼內加<boolean broad> <--方法2
    簡單就好!

    區域版主

    Rank: 10Rank: 10Rank: 10

    83

    威望

    362

    金錢

    232

    A幣
    主題
    13
    帖子
    85
    精華
    0
    綜合社群主題發文量
    29
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    100
    註冊時間
    2016-5-29
  • TA的每日心情

    2020-10-7 21:54
  • 簽到天數: 30 天

    連續簽到: 0 天

    [LV.5]常住居民I

    雨濛濛 發表於 2018-7-30 10:12:59 | 顯示全部樓層
    本帖最後由 雨濛濛 於 2018-7-30 10:14 編輯

    回復 1# as071186
    1. Math.random() * 1000+1 //1~1000隨機取數字 所以總共有999數字
    複製代碼

    GachItem.length //陣列長度
    看第26行 A += B     rate += GachItem[1] //這1是你陣列的3 不知道為甚麼請回去看上面。
    (rate_cur < rate)   A<? =false , B<? =true
    29行 cm.gXXXXXXitem <-語法 (GItem[0] ,1) <-[陣列] 數量
    不會顯是名稱在前面加個##t吧
    簡單就好!

    集團新軍

    Rank: 1

    59

    威望

    326

    金錢

    202

    A幣
    主題
    16
    帖子
    52
    精華
    1
    綜合社群主題發文量
    35
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2018-5-15

    贊助感謝勳章精華作者勳章

  • TA的每日心情

    2018-9-7 18:26
  • 簽到天數: 58 天

    連續簽到: 0 天

    [LV.5]常住居民I

     樓主| as071186 發表於 2018-7-30 15:38:03 | 顯示全部樓層
    1. public int gainGachaponItem(int id, int quantity) {
    2.         return gainGachaponItem(id, quantity, c.getPlayer().getMap().getStreetName() + " - " + c.getPlayer().getMap().getMapName());     //就是這句錯誤
    3.     }
    4.     public int gainGachaponItem(int id, int quantity, final String msg ,final boolean broad ) {
    5.         try {
    6.             if (!MapleItemInformationProvider.getInstance().itemExists(id)) {
    7.                 return -1;
    8.             }
    9.          
    10.            
    11.             final IItem item = MapleInventoryManipulator.addbyId_Gachapon(c, id, (short) quantity);
    12.             

    13.             if (item == null) {
    14.                 return -1;
    15.             }
    16. final byte rareness = GameConstants.gachaponRareItem(item.getItemId());
    17.             if (rareness > 0 || broad ) {
    18.                 World.Broadcast.broadcastMessage(MaplePacketCreator.getGachaponMega("[" + msg + "] " + c.getPlayer().getName(), " : 從轉蛋機轉到了!", item, rareness,c.getChannel()-1).getBytes());
    19.             }
    20.             
    21.                 int amount = 1;
    22.             if  (quantity > 0) {
    23. c.getSession().write(MaplePacketCreator.getShowItemGain(item.getItemId(), (short)amount));
    24.        c.getSession().write(MaplePacketCreator.getShowItemGain(item.getItemId(), (short)amount, true));
    25.             }else{
    26.     c.getSession().write(MaplePacketCreator.getShowItemGain(item.getItemId(),(short)item.getQuantity()));   
    27.        c.getSession().write(MaplePacketCreator.getShowItemGain(item.getItemId(),(short)item.getQuantity(), true));   
    28.                }   
    29.             return item.getItemId();
    30.       
    31.         } catch (Exception e) {
    32.             e.printStackTrace();
    33.         }
    34.         return -1;
    35.     }
    複製代碼
    boolean broad的方法我有在馬論看到過
    複製到我的源碼後會出現一個錯誤
    而我自己的除錯能力只有(){};而已XD
    一直看不出問題是出在哪

    綠廣物品清單幫助很大
    JS方面有比較理解一點了
    我再自己多思考看看
    顯示名稱的問題還是沒辦法解 #t有嘗試過
    不過沒關係
    我主要是要綠廣就好 哈哈
    萬分感謝
    HI

    區域版主

    Rank: 10Rank: 10Rank: 10

    83

    威望

    362

    金錢

    232

    A幣
    主題
    13
    帖子
    85
    精華
    0
    綜合社群主題發文量
    29
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    100
    註冊時間
    2016-5-29
  • TA的每日心情

    2020-10-7 21:54
  • 簽到天數: 30 天

    連續簽到: 0 天

    [LV.5]常住居民I

    雨濛濛 發表於 2018-7-30 17:40:20 | 顯示全部樓層
    1. public int gainGachaponItem(int id, int quantity) {
    2.         return gainGachaponItem(id, quantity, c.getPlayer().getMap().getStreetName() + " - " + c.getPlayer().getMap().getMapName(), false);
    複製代碼
    簡單就好!

    集團新軍

    Rank: 1

    59

    威望

    326

    金錢

    202

    A幣
    主題
    16
    帖子
    52
    精華
    1
    綜合社群主題發文量
    35
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2018-5-15

    贊助感謝勳章精華作者勳章

  • TA的每日心情

    2018-9-7 18:26
  • 簽到天數: 58 天

    連續簽到: 0 天

    [LV.5]常住居民I

     樓主| as071186 發表於 2018-7-31 03:35:52 | 顯示全部樓層
    感謝
    最後可以再請教一個問題嗎
    JS該怎麼去定義綠廣是否上廣的true or false呢?
    抱歉 函數會的太少><
    HI

    站長

    Rank: 12Rank: 12Rank: 12

    1762

    威望

    2943

    金錢

    106

    A幣
    主題
    1315
    帖子
    2440
    精華
    3
    綜合社群主題發文量
    262
    電玩社群主題發文量
    1
    娛樂社群主題發文量
    4
    技術社群主題發文量
    26
    閱讀權限
    200
    註冊時間
    2013-1-28

    我是傳奇贊助感謝勳章精華作者勳章

  • TA的每日心情

    2023-10-27 16:33
  • 簽到天數: 381 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    TWAICL 發表於 2018-7-31 09:16:11 | 顯示全部樓層
    回復 6# as071186


     接下來玩JS,都是在玩一個邏輯問題,你已經知道有方法是能讓中獎物帶綠廣,
     那也就是說,你要讓你的JS有"判斷物品是否為能上廣"的條件,
     雖然我不曉得為甚麼你的端口沒有參考的轉蛋腳本,但這邊可以給你參考基本
     的寫法:
    1. if (mode == 1 && cm.haveItem(4031749)) {
    2.        if (chance > 0 && chance <= 50) {
    3.         if(!cm.canHold(icomum)) return;   
    4.                 cm.gainItem(物品代碼陣列A, 1, true);
    5.         } else{
    6.         if(!cm.canHold(iraro)) return;   
    7.         cm.gainItem(物品代碼陣列B, 1, true);
    8.         cm.GachaMessagePQ(物品代碼陣列B, true);
    9.         }
    複製代碼

     這是我們伺服器的寫法,邏輯很簡單,告訴腳本那些物品被抽到是要上廣,
     那些物品抽到就默默抽到就好,請看IF跟ELSE所塞的部分,你思考一下。

    集團新軍

    Rank: 1

    59

    威望

    326

    金錢

    202

    A幣
    主題
    16
    帖子
    52
    精華
    1
    綜合社群主題發文量
    35
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2018-5-15

    贊助感謝勳章精華作者勳章

  • TA的每日心情

    2018-9-7 18:26
  • 簽到天數: 58 天

    連續簽到: 0 天

    [LV.5]常住居民I

     樓主| as071186 發表於 2018-7-31 16:15:00 | 顯示全部樓層
    本帖最後由 as071186 於 2018-7-31 16:17 編輯

    回復 7# TWAICL

    這是直接分成要上廣&不上廣是比較好理解沒錯
    但有沒有辦法做成"判斷"的呢?
    例如這個腳本
    1. var status = -1;
    2. var GachItem = new Array(
    3.                 [2049100,1000,true] // 這邊的true or false可控制是否上廣
    4.                 );
    5.                 //物品ID,機率,是否上廣
    6. function start() {
    7.     action(1, 0, 0);
    8. }
    9. function action(mode, type, selection) {
    10.     else if (status == 1) {
    11.         var item;
    12.         var rate = 0;
    13.         var rate_cur = Math.floor(Math.random() *1000+1);
    14.         var gain = false;
    15.         for(var i = 0 ; i < GachItem.length ; i++){
    16.             var GItem = GachItem[i];
    17.             rate += GItem[1];
    18.             if (rate_cur < rate) {
    19.                 if(GItem[2]){
    20.                     item = cm.gainGachaponItem(GItem[0], 1);
    21.                     cm.worldMessage("玩家 「" + cm.getName() + "」" + "從轉蛋機轉到了#t" + GItem[0] + "#,大家一起恭喜他吧!" );//可由上方的true or false控制是否上廣
    22.                 }
    23.                 else
    24.                     item = cm.gainGachaponItem(GItem[0], 1);
    25.                 gain = true;
    26.                 break;
    27.             }
    28.         }
    29. }
    複製代碼
    第21行的 是可以控制是否上廣的
    但我單純從這個JS實在看不出什麼端倪....
    不知道為什麼可以控制
    完全不相干的語句我都砍掉了
    HI

    站長

    Rank: 12Rank: 12Rank: 12

    1762

    威望

    2943

    金錢

    106

    A幣
    主題
    1315
    帖子
    2440
    精華
    3
    綜合社群主題發文量
    262
    電玩社群主題發文量
    1
    娛樂社群主題發文量
    4
    技術社群主題發文量
    26
    閱讀權限
    200
    註冊時間
    2013-1-28

    我是傳奇贊助感謝勳章精華作者勳章

  • TA的每日心情

    2023-10-27 16:33
  • 簽到天數: 381 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    TWAICL 發表於 2018-7-31 17:50:35 | 顯示全部樓層
    我所提供的方法就是判斷,你要得判斷是要你寫出來,不是靠腳本自己動腦想出來,而你貼的跟我所給的並無差別。而你要搞清楚,每個SRC方法使用方式不同,你如果想研究他這是怎麼運行的,你就該打開SRC看,而不是看JS,JS是成品,又如果你想透過JS研究,你就該直接看他是甚麼道具不會上廣,那這個不會上廣的道具是被帶入JS的哪個判斷去。

    站長

    Rank: 12Rank: 12Rank: 12

    1762

    威望

    2943

    金錢

    106

    A幣
    主題
    1315
    帖子
    2440
    精華
    3
    綜合社群主題發文量
    262
    電玩社群主題發文量
    1
    娛樂社群主題發文量
    4
    技術社群主題發文量
    26
    閱讀權限
    200
    註冊時間
    2013-1-28

    我是傳奇贊助感謝勳章精華作者勳章

  • TA的每日心情

    2023-10-27 16:33
  • 簽到天數: 381 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    TWAICL 發表於 2018-7-31 18:01:05 | 顯示全部樓層
     我想你應該是想要解釋為甚麼他會上廣,但這不是因為腳本自己判斷,
    而是人為設定告訴伺服器這件物品是要上廣的物品。


     請看 if(GItem[2]) 這個判斷,這邊是true則執行IF底下的內容,

     裡面的其中一個方法 cm.worldMessage 本身就是有全頻廣播的功能,
    你把上下兩種不同方法混在一起看當然會看不懂。


     反之,如果是false,則執行 else 裡面的方法,我們可以看到就是很單純的
    只執行 cm.gainGachaponItem 這個方法,單純把物品給玩家。


     因此邏輯來說,是一模一樣的。

    站長

    Rank: 12Rank: 12Rank: 12

    1762

    威望

    2943

    金錢

    106

    A幣
    主題
    1315
    帖子
    2440
    精華
    3
    綜合社群主題發文量
    262
    電玩社群主題發文量
    1
    娛樂社群主題發文量
    4
    技術社群主題發文量
    26
    閱讀權限
    200
    註冊時間
    2013-1-28

    我是傳奇贊助感謝勳章精華作者勳章

  • TA的每日心情

    2023-10-27 16:33
  • 簽到天數: 381 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    TWAICL 發表於 2018-7-31 18:05:16 | 顯示全部樓層

    區域版主

    Rank: 10Rank: 10Rank: 10

    83

    威望

    362

    金錢

    232

    A幣
    主題
    13
    帖子
    85
    精華
    0
    綜合社群主題發文量
    29
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    100
    註冊時間
    2016-5-29
  • TA的每日心情

    2020-10-7 21:54
  • 簽到天數: 30 天

    連續簽到: 0 天

    [LV.5]常住居民I

    雨濛濛 發表於 2018-7-31 18:47:47 | 顯示全部樓層
    就是陣列的判定 012 2剛好是控制開關..
    簡單就好!

    集團新軍

    Rank: 1

    59

    威望

    326

    金錢

    202

    A幣
    主題
    16
    帖子
    52
    精華
    1
    綜合社群主題發文量
    35
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2018-5-15

    贊助感謝勳章精華作者勳章

  • TA的每日心情

    2018-9-7 18:26
  • 簽到天數: 58 天

    連續簽到: 0 天

    [LV.5]常住居民I

     樓主| as071186 發表於 2018-7-31 21:19:25 | 顯示全部樓層
    好的 這下完全明白了~~~
    感謝兩位前輩的耐心指導
    是我自己邏輯不太好XD
    感激不盡!
    HI
    您需要登錄後才可以回帖 登錄 | 註冊會員

    本版積分規則

    52

    發文

    326

    金錢

    202

    A幣

    ----------榮譽勳章----------

    贊助感謝勳章 精華作者勳章

    熱門推薦
    圖文推薦
    • 聯繫我們

    小黑屋|AICL社群娛樂集團

    GMT+8, 2024-4-29 19:11 , 網路刷新 0.115700 秒 .

    歡迎來到 AICL網路社群

    版權AICL社群所有 2011-2021.

    Total:123 Today:213 Online:322