OK論壇

 找回密碼
 註冊
查看: 761|回復: 0

請問 可否將打怪驗證加入 點陣線方式驗證?

 關閉 [複製鏈接]
  • TA的每日心情
    擦汗
    2021-1-6 02:09 AM
  • 簽到天數: 261 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2014-1-21 21:13:04 | 顯示全部樓層 |閱讀模式
    線上打怪驗證:
    1. //----------------------------------------------------------------------------------------------------
    2. geffen.gat,156,80,1        script        Login_Looks_OnInit#555        -1,{

    3. OnInit:
    4. //----- 是否開啟線上驗證 (預設 開啟) -----
    5.         set $@OnlineBotTest,1;

    6. //----- 是否開啟系統提示 (預設 開啟) On/Off -----
    7.         set $@NpcShowOnOff,1;

    8. //====================================================//

    9. //--- Script 執行時的相關設定 , 請各伺服器依情況斟酌 ---

    10. //----- 不需驗證的最小GM權限 (預設 40 等) -----
    11.         set $@GameManagement,40;

    12. //----- 線上驗證可錯誤次數 (預設 3 次) -----
    13.         set $@KickOnlineWrong,3;

    14. //----- 線上驗證的驗證碼長度 (預設 6 碼) -----
    15.         set $@OnlineNumber,6;

    16. //====================================================//

    17. //----- 反外掛程式的驗證碼主函式 -----
    18.         setarray $@BotName$[1],"1","1","2","3","4","5","6","7","8","9"
    19.                                 ,"1","2","3","4","5","6","7","8","9"
    20.                                 ,"1","2","3","4","5","6","7","8","9"
    21.                                 ,"1","2","3","4","5","6","7","8","9"
    22.                                 ,"1","2","3","4","5","6","7","8","9"
    23.                                 ,"1","2","3","4","5","6","7","8","9"
    24.                                 ,"1","2";        }

    25. //====================================================//

    26. -        script        OnNPCKillEvent        -1,{

    27. OnNPCKillEvent:
    28.         if ( $@OnlineBotTest != 1 ) {        end;        }
    29.         set KillMod,KillMod+1;

    30. //線上驗證部份
    31.         if ( KillMod >= 1 ) {
    32.         if ( KillMod >= 400 ) {
    33.         if ( getgmlevel() >= $@GameManagement ) {
    34.         mes "[反外掛程式]";
    35.         mes "GM大大不需驗證偵測!!";
    36.         mes "請您按下 Enter 鍵,繼續遊戲吧。";
    37.         set KillMod,0;
    38.         close;        }
    39.         set @CheckCRF,callfunc("CheckCRF_Event");
    40.         atcommand strcharinfo(0)+":@option 02 00 64 ";

    41. Online_Bot_Test:
    42.         set @OnlineWrong,@OnlineWrong+1;
    43.         set @OnlineBot1$,"";
    44.         for ( set @i,0; @i < $@OnlineNumber; set @i,@i + 1 ) {
    45.         set @OnlineBot1$,@OnlineBot1$+$@BotName$[rand(61)];        }
    46.         mes "[反外掛程式]";
    47.         mes "您好!為了降低外掛對伺服器的侵擾,";
    48.         mes "我們需要驗證才能讓您繼續遊戲,";
    49.         mes "請您正確輸入下面的驗證碼。";
    50.         mes "??????????";
    51.         mes "?驗證碼:?^FF0000"+@OnlineBot1$+"^000000?";
    52.         mes "??????????";
    53.         next;
    54.         input @OnlineBot2$;
    55.         if(@OnlineBot2$==@OnlineBot1$) goto ite;
    56.         if(@OnlineBot2$!=@OnlineBot1$) {

    57. //驗證輸入錯誤
    58.         if(@OnlineWrong == $@KickOnlineWrong) {
    59.         callfunc "SetCRF_Event";
    60.         atcommand strcharinfo(0)+":@kick "+strcharinfo(0);
    61.         close;        }

    62. //驗證輸入剩餘次數
    63.         mes "[反外掛程式]";
    64.         mes "重新輸入次數:^FF0000剩餘 "+($@KickOnlineWrong-@OnlineWrong)+" 次^000000";
    65.         next;
    66.         goto Online_Bot_Test;        }


    67. ite:
    68.         callfunc "SetCRF_Event";
    69.         mes "[反外掛程式]";
    70.         mes "您已偵測完畢,並非外掛程式!!";
    71.         mes "請您按下 Enter 鍵,繼續遊戲謝謝。";
    72.         set @CheckCRF,0;
    73.         set KillMod,0;
    74.         set @OnlineWrong,0;
    75.         close;        }        }
    76.         if ( KillMod == 1 ) dispbottom "您再繼續屠殺 400隻怪物系統將會對您進行線上驗證。假設你若突中登出..紀錄不會因此消除!";
    77.         end;
    78. }

    79. //====================================================//

    80. function        script        CheckCRF_Event        {
    81.         set @CheckCRF,0;
    82.         if ( checkfalcon() || checkcart() || checkriding() ) set @CheckCRF,1;
    83.         if ( checkoption(0x80) ) set @CheckCRF,2;
    84.         if ( checkoption(0x100) ) set @CheckCRF,3;
    85.         if ( checkoption(0x200) ) set @CheckCRF,4;
    86.         if ( checkoption(0x400) ) set @CheckCRF,5;
    87.         return @CheckCRF;        }

    88. //====================================================//

    89. function        script        SetCRF_Event        {
    90.         atcommand strcharinfo(0)+":@option 00 00 00 ";
    91.         if ( @CheckCRF == 1 ) {
    92.         if ( getskilllv(39) >=1 ) setcart;
    93.         if ( getskilllv(63) >= 1 ) setriding;
    94.         if ( getskilllv(127) >= 1 ) setfalcon;        }
    95.         if ( @CheckCRF == 2 ) setcart 2;
    96.         if ( @CheckCRF == 3 ) setcart 3;
    97.         if ( @CheckCRF == 4 ) setcart 4;
    98.         if ( @CheckCRF == 5 ) setcart 5;
    99.         return;        }

    100. //====================================================//
    複製代碼
    登入時的點陣線驗證:
    1. /*
    2.  作者:鐵板
    3. */
    4. -        script        檢查        -1,{

    5. OnInit:

    6. set $ylen,11;//垂直位移最大量 至少7
    7. set $xlen,5;//數字水平間格最大量
    8. set $totaltime,60;// 除4  =15秒
    9. setarray $stt$," ","●";//數字底 - 需全型
    10. setarray $st$,"■"," ";//空白底 - 需全型
    11. end;

    12. OnPCLoginEvent:
    13.         if(getgmlevel())
    14.                 end;
    15. function        logincheck        ;
    16. pcblockmove getcharid(3),1;
    17. logincheck(getcharid(3));//無限次驗證->輸入正確
    18. logincheck(getcharid(3),3);//驗證5次->5次滿,踢除
    19. pcblockmove getcharid(3),0;
    20. end;

    21. OnWhisperGlobal:
    22. if(atoi(@whispervar0$)==getd("@an"+getcharid(3))||getd("@logincheck"+getcharid(3)))
    23.         setd "@logincheck"+getcharid(3),1;
    24. else
    25.         dispbottom "驗證碼錯誤";
    26. end;

    27.         function        logincheck        {
    28.         setd "@logincheck"+getarg(0),0;
    29.         set @type,rand(getarraysize($stt$));
    30.                 function        turn        {
    31.                         setarray.@li0[1],0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0;
    32.                         setarray.@li1[1],0,1,0,1,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0;
    33.                         setarray.@li2[1],0,1,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,0,0,1,1,1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,1,0;
    34.                         setarray.@li3[1],0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0;
    35.                         setarray.@li4[1],0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,0,1,0;
    36.                         while(set(.@i,.@i+1)<6)
    37.                                 set .@re$,.@re$+(getd(getarg(0)+"["+(.@i+getarg(1)*5)+"]")?$stt$[@type]:$st$[@type]);
    38.                         return .@re$;
    39.                 }

    40.                 function        cud        {
    41.                         return getarg(0)+getarg(1)-($ylen-5);
    42.                 }

    43.                 function        crl        {
    44.                         while(set(.@i,.@i+1)-1<getarg(0))
    45.                                 set .@str$,.@str$+$st$[getarg(1)];
    46.                         return .@str$;
    47.                 }

    48.                 getmapxy(.@map$,.@x,.@y,0,strcharinfo(0));

    49.                 while(set(.@a,.@a+1)<6){
    50.                         setd ".@an"+.@a,rand(10);
    51.                         setd ".@ud"+.@a,rand($ylen-6);
    52.                         setd ".@rl"+.@a,(.@a==5)?6-.@to:rand($xlen-1);
    53.                         set .@to,.@to+getd(".@rl"+.@a);
    54.                 set .@an$,.@an$+getd(".@an"+.@a);       
    55.                 }

    56.                 while(set(.@p,.@p+1)+set(.@s,0)+atoi(set(.@li$,""))<$ylen+1){
    57.                         while(set(.@s,.@s+1)<6)
    58.                                 set .@li$,.@li$+turn(".@li"+cud(.@p,getd(".@ud"+.@s)),getd(".@an"+.@s))+crl(getd(".@rl"+.@s),@type);
    59.                 dispbottom ""+.@li$;
    60.                 }

    61.                 setd "@an"+getarg(0),.@an$;
    62.                 announce "請在密頻輸入[npc:檢查]再輸入驗證碼 ",bc_self,0x00FFFF;

    63.                 while($totaltime-set(.@ti,.@ti+2)&&sleep2(500)){
    64.                         itemskill "WZ_EARTHSPIKE",$totaltime-.@ti;
    65.                         if(getd("@logincheck"+getarg(0))) return;
    66.                         else if(getarg(1,0) && getarg(1,0)-getarg(2,1)==0 &&$totaltime-.@ti==2) atcommand "@kick "+strcharinfo(0);
    67.                 }

    68.                 warp .@map$,.@x,.@y;
    69.                 announce "驗證逾時,更換驗證碼"+(getarg(1,0)?"        剩於驗證次數 : "+(getarg(1,0)-getarg(2,1)):""),bc_self,0xFF6600;
    70.                 logincheck(getarg(0),getarg(1,0),getarg(2,1)+1);
    71.         }

    72. }
    複製代碼
    有辦法 將 打怪驗證的驗證方式 改成 點陣線驗證嗎@@?

    又或著 直接將 登入的點陣線驗證 添加 打x隻 mob 後 需要點陣線的驗證

    不知道有沒有辦法辦到!
    回復

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-5-22 02:11 PM , Processed in 0.054774 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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