OK論壇

 找回密碼
 註冊
查看: 1259|回復: 8

檢測帳號的脚本指令?

[複製鏈接]
  • TA的每日心情
    慵懶
    2019-11-17 08:51 PM
  • 簽到天數: 91 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2014-11-23 18:14:51 | 顯示全部樓層 |閱讀模式
    10積分
    前陣子伺服器不穩定 造成大量資料毀損
    所以想寫個NPC做補償發放 但是一直找不到
    「限制帳號只能領取x次」的判定寫法

    我用的是SeAr-1.10.152

    求哪位大大解惑 10積分獻上

    最佳答案

    查看完整內容

    沒用過sear,但是以ea來說:
    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2020-10-27 09:10 PM
  • 簽到天數: 2555 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-11-23 18:14:52 | 顯示全部樓層
    本帖最後由 he01204046 於 2014-11-23 09:36 PM 編輯

    沒用過sear,但是以ea來說:
    1. //我借用卡普拉的圖示和位置,詳細你要自己改
    2. //#ReceiveCompensation 用來記錄該帳號已經領取的次數(帳號永久變數)
    3. //$@CompensationNumber 可以領取獎勵的次數(伺服器暫存變數)

    4. prontera.gat,282,200,2    script    補償發放員    114,{
    5.     mes "[補償發放員]";
    6.     mes "補償發放員為你服務。";
    7.     mes "請選擇你要的功能。";
    8.     next;
    9.     menu "領取補償",-,"離開",ExitScript;
    10.     if(#ReceiveCompensation < $@CompensationNumber)
    11.     {
    12.         //給相關道具
    13.         set #ReceiveCompensation,#ReceiveCompensation+1; //領取次數+1
    14.     }else{
    15.         //已達領取上限
    16.         mes "[補償發放員]";
    17.         mes "很抱歉呢!";
    18.         mes "每個帳號只能補償:"+$@CompensationNumber+"次。";
    19.         next;
    20.     }

    21. ExitScript:
    22.     close;

    23. OnInit:
    24.     set $@CompensationNumber,3; //這邊設定一個帳號領3次
    25.     end;
    26. }
    複製代碼
    回復

    使用道具 舉報

  • TA的每日心情
    慵懶
    2019-11-17 08:51 PM
  • 簽到天數: 91 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2014-11-23 21:47:39 | 顯示全部樓層
    he01204046 發表於 2014-11-23 09:35 PM
    沒用過sear,但是以ea來說:

    所以是自訂一個變數 ReceiveCompensation 然後給予上限X
    玩家領取之後系統寫入消耗一個餘額
    那這樣不是會判定是角色而不是帳號?!
    回復

    使用道具 舉報

  • TA的每日心情
    慵懶
    2022-10-12 06:09 AM
  • 簽到天數: 1186 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-11-23 21:55:33 | 顯示全部樓層
    kai21300 發表於 2014-11-23 09:47 PM
    所以是自訂一個變數 ReceiveCompensation 然後給予上限X
    玩家領取之後系統寫入消耗一個餘額
    那這樣不是 ...

    #=帳號

    回復

    使用道具 舉報

  • TA的每日心情
    慵懶
    2019-11-17 08:51 PM
  • 簽到天數: 91 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2014-11-24 02:45:38 | 顯示全部樓層
    本帖最後由 kai21300 於 2014-11-24 04:25 AM 編輯

    如果我還要加上判定account ID要怎麼寫?
    第二層防護,避免有人洗帳號,而且只限制真正有損失的舊帳號(老玩家)

    用這個是嗎?
    query_sql("SELECT account_id FROM `login` WHERE account_id = "+getcharid(3)+"", .@accountid);

    我會這樣寫:
    1. mes "[補償發放員]";
    2.         mes "檢查資格...";
    3.                         if ( #ReceiveCompensation >= $@CompensationNumber) {
    4.                         mes "資格未通過...";
    5.                         mes "不好意思, ";
    6.                         mes "每個帳號只能領取"+$@CompensationNumber+"次補償!";
    7.                         close;
    8.                         }
    9.                                 if ( .@accountid > 3000150) {
    10.                                 mes "資格未通過...";
    11.                                 mes "不好意思, 系統檢查你的帳號並沒有在這次補償名內";
    12.                                 mes "如有問題, 請找GM處理!";
    13.                                 close;
    14.                                 }
    15.         mes "資格通過...";
    16.         mes "請問你要選擇什麼補償方案?";
    17.         next;
    18.         menu "我還沒考慮清楚",ExitS,"方案一",RCY1,"方案二",RCY2;
    複製代碼
    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2023-12-30 04:16 AM
  • 簽到天數: 1322 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-11-24 05:01:51 | 顯示全部樓層
    用 loginlog 判斷第一次登入時間  就知是不是新帳號了
    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2020-10-27 09:10 PM
  • 簽到天數: 2555 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-12-1 16:29:52 | 顯示全部樓層
    判斷登入次數

    1. //我借用卡普拉的圖示和位置,詳細你要自己改
    2. //#ReceiveCompensation 用來記錄該帳號已經領取的次數(帳號永久變數)
    3. //$@CompensationNumber 可以領取獎勵的次數(伺服器暫存變數)
    4. //$@CanGetLoginCountMin 可以領取獎勵的最低登入次數(伺服器暫存變數)

    5. prontera.gat,282,200,2    script    補償發放員    114,{
    6.         deletearray .@loginCount[0],200;
    7.         query_sql("SELECT logincount  FROM `login` WHERE `account_id` = "+getcharid(3)+" ",.@loginCount);
    8.         if(.@loginCount[0] < $@CanGetLoginCountMin)
    9.         {
    10.           mes "[補償發放員]";
    11.           mes "很抱歉,領取獎勵的只能是老玩家唷。";
    12.           close;
    13.         }
    14.   mes "[補償發放員]";
    15.   mes "補償發放員為你服務。";
    16.   mes "請選擇你要的功能。";
    17.   next;
    18.   menu "領取補償",-,"離開",ExitScript;
    19.   if(#ReceiveCompensation < $@CompensationNumber)
    20.   {
    21.       //給相關道具
    22.       set #ReceiveCompensation,#ReceiveCompensation+1; //領取次數+1
    23.   }else{
    24.       //已達領取上限
    25.       mes "[補償發放員]";
    26.       mes "很抱歉呢!";
    27.       mes "每個帳號只能補償:"+$@CompensationNumber+"次。";
    28.       next;
    29.   }

    30. ExitScript:
    31.    close;

    32. OnInit:
    33.   set $@CompensationNumber,3; //這邊設定一個帳號領3次
    34.   set $@CanGetLoginCountMin,100; //該帳號最少要登入100次以上才能領取獎勵(要用這方法不要讓玩家知道你判斷是用登入次數,因為這可以靠重登來洗)
    35.   end;
    36. }
    複製代碼
    回復

    使用道具 舉報

  • TA的每日心情
    慵懶
    2019-11-17 08:51 PM
  • 簽到天數: 91 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2014-12-2 10:21:47 | 顯示全部樓層
    最後我還是用query_sql("SELECT account_id FROM `login` WHERE account_id = "+getcharid(3)+"", .@accountid);
    判斷登入數被發現會被洗...
    只是我還是不懂這句話的意思 (這句從別的腳本取來的)
    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2020-10-27 09:10 PM
  • 簽到天數: 2555 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-12-2 15:16:52 | 顯示全部樓層
    本帖最後由 he01204046 於 2014-12-2 03:21 PM 編輯
    kai21300 發表於 2014-12-2 10:21 AM
    最後我還是用query_sql("SELECT account_id FROM `login` WHERE account_id = "+getcharid(3)+"", .@accoun ...

    你這段語法根本...

    getcharid(3) = 取得帳號AID

    然後你又去資料庫取得一次帳號AID...

    這段語法根本沒意義啊!!

    要用就改這樣:


    1. //我借用卡普拉的圖示和位置,詳細你要自己改
    2. //#ReceiveCompensation 用來記錄該帳號已經領取的次數(帳號永久變數)
    3. //$@CompensationNumber 可以領取獎勵的次數(伺服器暫存變數)
    4. //$@CanGetAccountIDMax 可以領取獎勵的最高帳號AID(伺服器暫存變數)

    5. prontera.gat,282,200,2    script    補償發放員    114,{
    6.   if(getcharid(3) > $@CanGetAccountIDMax)
    7.   {
    8.     mes "[補償發放員]";
    9.     mes "資格未通過...";
    10.     mes "不好意思, 系統檢查你的帳號並沒有在這次補償名內";
    11.     mes "如有問題, 請找GM處理!";
    12.     close;
    13.   }
    14.   mes "[補償發放員]";
    15.   mes "補償發放員為你服務。";
    16.   mes "請選擇你要的功能。";
    17.   next;
    18.   menu "領取補償",-,"離開",ExitScript;
    19.   if(#ReceiveCompensation < $@CompensationNumber)
    20.   {
    21.       //給相關道具
    22.       set #ReceiveCompensation,#ReceiveCompensation+1; //領取次數+1
    23.   }else{
    24.       //已達領取上限
    25.       mes "[補償發放員]";
    26.       mes "很抱歉呢!";
    27.       mes "每個帳號只能補償:"+$@CompensationNumber+"次。";
    28.       next;
    29.   }

    30. ExitScript:
    31.    close;

    32. OnInit:
    33.   set $@CompensationNumber,3; //這邊設定一個帳號領3次
    34.   set $@CanGetAccountIDMax,3000150; //帳號AID超過多少就不能領取
    35.   end;
    36. }

    複製代碼
    回復

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-4-25 07:25 PM , Processed in 0.047452 second(s), 18 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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