OK論壇

 找回密碼
 註冊
查看: 1002|回復: 7

關於會員系統自動計時問題

[複製鏈接]
  • TA的每日心情
    無聊
    2018-5-1 01:54 PM
  • 簽到天數: 11 天

    連續簽到: 1 天

    [LV.3]偶爾看看II

    發表於 2018-4-11 11:16:15 | 顯示全部樓層 |閱讀模式


    程式碼有點攏長,直接上傳檔案上來。

    這是我爬文時找到的會員系統腳本,裡面功能很符合我的需求
    唯獨增減會員部分,必須全手動新增跟移除

    我想要能夠在新增時可以設定時間,時間到時系統會自動移除會員。
    有參考了一些文章跟有設定計時的腳本,但是似乎那些語法都在開機端重啟後,就會重新計時,沒辦法維持原本的計時。

    想請問各位大大,該如何去修改此腳本,達到我的需求。

    本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有帳號?註冊

    x

    評分

    參與人數 1積分 -30 現金 -30 積極性 -30 違規 +1 收起 理由
    逍遙天子 -30 -30 -30 + 1 閒置主題

    查看全部評分

    回復

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2018-4-11 11:34:07 | 顯示全部樓層
    本帖最後由 z0202520 於 2018-4-11 11:37 AM 編輯

    有兩種方法
    第一種使用資料庫將 member_list 表,增加時間欄位
    在每次會員登入時啟用計時器綁定玩家,計時時間到就移除會員資格
    記得登出事件也要寫,在登出時抓取當下時間去更新 member_list 的時間欄位

    第二種使用遊戲內角色變數,跟上述做法差不多
    只差在不用去動到表格的結構

    計時器語法
    1. addtimer <ticks>,"NPC::OnLabel";
    複製代碼
    對了,若你是由GM新增會員的話,要用上述計時器語法時
    要先映射到該玩家才能使用,配合下列語法使用
    1. isloggedin(<account id>{,<char id>})
    複製代碼
    1. attachrid(<account ID>)
    複製代碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2018-5-1 01:54 PM
  • 簽到天數: 11 天

    連續簽到: 1 天

    [LV.3]偶爾看看II

     樓主| 發表於 2018-4-11 11:36:57 | 顯示全部樓層
    z0202520 發表於 2018-4-11 11:34 AM
    有兩種方法
    第一種使用資料庫將 member_list 表,增加時間欄位
    在每次會員登入時啟用計時器綁定玩家,計時 ...

    感謝解答!

    我比較傾向資料庫的做法,這樣日後也方便統計會員數量。

    增加欄位以後如何去跟NPC做連結,煩請大神指點
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2018-4-11 11:43:58 | 顯示全部樓層
    本帖最後由 z0202520 於 2018-4-11 11:45 AM 編輯
    0924006254 發表於 2018-4-11 11:36 AM
    感謝解答!

    我比較傾向資料庫的做法,這樣日後也方便統計會員數量。

    在資料表增加 expiration_time 然後用這語法撈就可以了
    query_sql("SELECT `expiration_time` FROM `member_list` WHERE `account_id`= "+getcharid(3),.@expiration_time);

    重點要看你要怎麼設計,時間要用純日期格式存?還是Unix Time?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2018-5-1 01:54 PM
  • 簽到天數: 11 天

    連續簽到: 1 天

    [LV.3]偶爾看看II

     樓主| 發表於 2018-4-11 11:58:28 | 顯示全部樓層
    本帖最後由 0924006254 於 2018-4-11 12:12 PM 編輯
    z0202520 發表於 2018-4-11 11:43 AM
    在資料表增加 expiration_time 然後用這語法撈就可以了
    query_sql("SELECT `expiration_time` FROM `mem ...

    我想要修改的

    新增會員功能

    目前是
    選擇 帳號
      或  AID
           新增


    想改成

       選擇  帳號
       或     AID
      next
      設定   時間  YYYY/MM/DD
         或   多少天

    查詢會員名單

    目前
    顯示  AID  帳號

    想改成
    顯示  AID  帳號  到期日YYYY/MM/DD 剩餘 ?? 日

    以上是GM設置時想要修改的


    ------------------------------------------------------------------------------------------


    以下是玩家部分

    點選NPC時  顯示  會員到期日  YYYY/MM/DD    剩餘 ?? 日



    -------------------------------------------------------------------------------------------

    在資料表增加 expiration_time 然後用這語法撈就可以了
    query_sql("SELECT `expiration_time` FROM `member_list` WHERE `account_id`= "+getcharid(3),.@expiration_time);

    這段語法是讓NPC抓取SQL的時間嗎?  那後面運用上是直接讓NPC判斷 @expiration_time這個就可以嗎?


    純日期格式存,Unix Time 差別在哪裡?

    抱歉~ 新手上路,很多不懂的,煩請大神多多包涵,正在努力學習中!!
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2018-4-11 12:48:37 | 顯示全部樓層
    本帖最後由 z0202520 於 2018-4-11 04:51 PM 編輯
    0924006254 發表於 2018-4-11 11:58 AM
    我想要修改的

    新增會員功能

    建議先去搞懂SQL語法的使用吧,沒有很難的說。
    另外因為你沒有給我資料表格的結構
    所以我從腳本裡面推測,你最後一個欄位應該是 state
    若不是的話再自己改一下 AFTER 後的資料欄位名稱

    如果你資料庫名稱是用 ragnarok 的話,執行下面SQL語法可以新增欄位
    1. ALTER TABLE `ragnarok`.`member_list`
    2. ADD COLUMN `expiration_time` TIMESTAMP NOT NULL AFTER `state`;
    複製代碼
    然後在你輸入完玩家的時間設定後,這邊預設是分鐘為單位,存入的變數是 .@minute
    1. query_sql "INSERT INTO `member_list` VALUES ("+getcharid(3)+", 1, 0, NOW() + INTERVAL "+.@mintue+" MINUTE)";
    複製代碼
    顯示的時候就可以用下列方式撈資料
    1. query_sql("SELECT `expiration_time` FROM `member_list` WHERE `account_id`= "+getcharid(3),.@expiration_time);
    複製代碼
    然後再將秒數換算成天數/小時/分鐘來做顯示

    另外你剛剛說的是存入 @expiration_time 就可以嗎?
    請注意好變數的型態 .@ 跟 @ 又不太一樣了
    這個型態不搞清楚的話會有很多問題的

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2018-5-1 01:54 PM
  • 簽到天數: 11 天

    連續簽到: 1 天

    [LV.3]偶爾看看II

     樓主| 發表於 2018-4-11 14:04:53 | 顯示全部樓層
    z0202520 發表於 2018-4-11 12:48 PM
    建議先去搞懂SQL語法的使用吧,沒有很難的說。
    另外因為你沒有給我資料表格的結構
    所以我從腳本裡面推測 ...

    好的!!!  非常感謝大神指導,有什麼問題我再問你~~  我先來去試試看
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2018-4-11 16:54:00 | 顯示全部樓層
    0924006254 發表於 2018-4-11 02:04 PM
    好的!!!  非常感謝大神指導,有什麼問題我再問你~~  我先來去試試看

    對了,使用 TIMESTAMP 的話,它是以現在的時間換算成秒數
    所以你會有一個很大的數字,那是代表從 1970 年到現在為止的秒數
    可以配合 gettimetick(2) 來取得目前遊戲伺服器的 unix time 然後相減給 addtimer 語法用

    評分

    參與人數 1積分 +66 現金 +66 積極性 +66 收起 理由
    逍遙天子 + 66 + 66 + 66 我很贊同

    查看全部評分

    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-4-19 08:57 PM , Processed in 0.089819 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表