網路遊美國

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 14|回復: 0

[寫程式] 道具該怎麼寫?

[複製鏈接]
  • TA的每日心情
    開心
    2022-2-17 08:27
  • 簽到天數: 14 天

    [LV.3]考上駕照

    39

    主題

    86

    帖子

    4124

    積分

    管理員

    Rank: 10Rank: 10Rank: 10

    積分
    4124

    站長人氣達人

    發表於 2022-2-11 12:36:08 | 顯示全部樓層 |閱讀模式
    <?php
    // 這段代碼的作用防止文件直接調用,每個道具文件都必須在開頭加入
    if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
    }
    // 用户点擊使用後,執行的代碼
    if(submitcheck('usesubmit')) {
       
        // 驗證資料是否填寫完全,這裏驗證$tid(帖子id)是否填寫
    if(empty($tid)) {
      showmessage('magics_info_nonexistence');
    }
       
        // 取得帖子的相關資料
    $thread = getpostinfo($tid, 'tid', array('fid'));
        // 驗證帖子所在的版塊是否有使用道具的權限
    checkmagicperm($magicperm['forum'], $thread['fid']);
       
        // 道具的執行代碼
    $db->query("UPDATE {$tablepre}threads SET closed='1', moderated='1' WHERE tid='$tid'");
    $expiration = $timestamp + 86400;
        // 使用道具代碼
    usemagic($magicid, $magic['num']);
        // 記錄道具使用日誌
    updatemagiclog($magicid, '2', '1', '0', $tid);
        // 記錄道具使用對象(這裏指主題)日誌
    updatemagicthreadlog($tid, $magicid, $magic['identifier'], $expiration);
        // 顯示道具使用信息
    showmessage('magics_operation_succeed', 'magic.php?action=user');
    }
    // 生成道具界面顯示代碼
    function showmagic() {
    global $tid, $lang;
    magicshowtype($lang['option'], 'top');
    magicshowsetting($lang['target_tid'], 'tid', $tid, 'text');
    magicshowtype('', 'bottom');
    }
    ?>  
    以上就是一個簡單道具的编寫格式,其中紅色注釋部分是一個道具必須有的,當然裏面的一些代碼可以根據道具類型的不同做一些改動,比如取得帖子資料的語句,如果是對用户的操作,可以改為取用户資料。相關這些操作我們已經内置了一些自定義函數,通過這些自定義函數你就可以輕鬆調用你想調用的資料了,下面我們就來說說這些自定義函數。
    道具系统自帶函數
    所有的自定函數都在include/magic.func.php文件裏面,下面我對這些函數一一做解釋


    // 道具權限驗證函數
    $perms有權限的groupid或者fid的序列,中間用\t隔開
    $id要驗證fid或者groupid
    checkmagicperm($perms, $id)
    // 獲得道具函數
    $magicid道具id,
    $magicnum道具獲得數量
    $weight 道具重量
    $totalweight 用户擁有道具總重量
    $uid 獲得道具用户的uid
    $maxmagicsweight 該用户所擁有的道具最大重量
    getmagic($magicid, $magicnum, $weight, $totalweight, $uid, $maxmagicsweight)
    // 查詢用户擁有道具最大重量函數
    $uid 查詢用户uid
    $magicarray 道具數據數组
    getmagicweight($uid, $magicarray)
    // 查詢帖子信息函數
    $id 帖子或者主題的pid或者tid
    $type 查詢的類型 tid代表主題 pid代表帖子
    $colsarray 要查詢的字段 數據類型數组
    getpostinfo($id, $type, $colsarray = '')
    // 查詢用户信息函數
    $username 查詢用户名
    $colsarray 要查詢的字段 數據類型數组
    getuserinfo($username, $colsarray = '')
    // 贈送道具函數
    $username 要贈送對象的用户名
    $magicid 贈送道具道具id
    $magicnum 贈送道具的單個數量
    $totalnum 贈送道具的總數量
    $totalprice 贈送道具的總價格
    givemagic($username, $magicid, $magicnum, $totalnum, $totalprice)
    // 道具随機函數
    $odds 成功的機率,例如10成功的機率就是10%
    magicrand($odds)
    // 道具市场道具操作函數
    $magicid 道具id
    $marketnum 道具市場道具數量
    $magicnum 道具數量
    marketmagicnum($magicid, $marketnum, $magicnum)
    // 道具操作驗證函數(用户驗證道具使用對象是否被版主操作過)
    $tid 帖子id
    magicthreadmod($tid)
    // 道具界面生成函數
    magicshowsetting($setname, $varname, $value, $type = 'radio', $width = '20%')
    magicshowtips($tips, $title)
    magicshowtype($name, $type = '')
    // 道具使用函數
    $magicid 道具id
    $totalnum 被使用道具的用户擁有總數量
    $num 使用數量
    usemagic($magicid, $totalnum, $num = 1)


    // 道具使用對象日誌(主要用于使用對象主題時)
    $tid 主題tid
    $magicid 道具id
    $action 動作標識
    $expiration 道具有效期
    $extra 是否記錄用户名 1為不記錄,0為記錄
    updatemagicthreadlog($tid, $magicid, $action, $expiration, $extra = 0)
    // 道具使用日誌
    $magicid 道具id
    $action 動作標識 1為購買 2為使用 3為贈送 4為道具市場出售 5為道具市場購買
    $amount 道具操作數量
    $price道具操作價格
    $targettid 道具使用對象tid
    $targetpid 道具使用對象pid
    $targetuid 道具使用對象uid
    updatemagiclog($magicid, $action, $amount, $price, $targettid = 0, $targetpid = 0, $targetuid = 0)





    上一篇:最新版的Discuz X3.4 UTF8 繁體版
    下一篇:道具也可以扣分?
    回復

    使用道具 舉報

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

    本版積分規則

    Archiver|手機版|小黑屋|網路遊美國

    GMT-8, 2024-11-19 17:38 , Processed in 0.094146 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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