fivw1230 發表於 2010-9-17 09:11:45

防雙開道管 可用於 你不希望有人雙開進入的某個地圖 限定SQL...

昨天心血來潮 就開始搏命的研究 修改XD

我的寫法是
利用
"OnTouch:"功能      <-- 玩家進入觸發範圍時執行某事件,用法如下的『範例1』    範例請到下面的帖子觀看吧.....
↑是引用這個帖子的http://www.lollipop168.com/archiver/?tid-209.html
然後 就在各個道館的裁判下(是下面嗎??(邏輯來說是下面)..
例 我裁判的位子分別是 "guild_vs1,50,49,4"、"guild_vs2,50,49,4"、"guild_vs3,50,49,4"、"guild_vs4,50,49,4"、"guild_vs5,50,49,4"
於是..我寫了5個 NPC代號/外觀為"-1"的NPC 座標 都跟上面的裁判位子一致
由於 OnTouch 功能 不支援 function 的方式所以只能一個一個做...通通都貼上來 會很長 所以就不貼了...
至於座標 我相信 只要是有稍稍摸過腳本的人都會改....
guild_vs1,50,49,4    script    檢測IP#1    -1,2,2,{
      end;
OnTouch:
      if(@No_Twp_Ip == 1 ) { end; }
      mes "[檢測IP]";
      mes "IP檢測中.....。";
      mes "請稍等...。";
      next;
    //取得登入者IP
    query_sql("SELECT last_ip FROM `login` WHERE account_id = "+getcharid(3)+"", .@LastIp$);

    //檢查同IP帳號
    query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+.@LastIp$+"'", .@AccountId);

    //檢查同IP在線人數
    for( set .@i ,0; .@i   <getarraysize(.@AccountId);   set .@i,.@i+1 ) {
      if( isloggedin ( .@AccountId[.@i] ) ) set .@j,.@j+1 ;
      if( .@j > 1 ) {
            mes "抱歉,^FF6600" + strcharinfo(0) + "^000000,IP[^FF6600" + .@LastIp$ + "^000000]";
            mes "^FF0000相同的IP,系統中已有 1 位在線上.";
            mes "防止雙開系統將送你回主城!^000000";
            sleep2(3000);
            warp "payon.gat",197,219;
            end;
      }
    }
      mes "抱歉,^FF6600" + strcharinfo(0) + "^000000,IP[^FF6600" + .@LastIp$ + "^000000]";
      mes "^FF0000相同的IP,系統中僅有 1 位在線上.";
      mes "防止雙開系統將結束檢測,謝謝合作。^000000";
      set @No_Twp_Ip,@No_Twp_Ip+1;
      close;
end;
}
ps.上面的查詢ip腳本是轉載自某個大大寫的 (對不起把你忘了~"~)

至於 腳本最前面要加上這個 "if(@No_Twp_Ip == 1 ) { end; }" 判斷式是因為

避免 二次驗證 總不能要玩家忍受 打個道管 只要經過裁判附近 就要跟防雙開 NPC 對話一次吧@@"要是我 我也會發瘋XD

還有一點一定要注意..報名NPC 一定要加上 "set @No_Twp_Ip,0;" 這句 把驗證紀錄歸零
千萬不要放在領獎NPC裡面 ... (如果打倒掛彩出場不就等於 第二次 免驗證...?
至於 要放在哪裡通常放在 玩家與NPC 對話之前應該都沒有問題 就是

set @No_Twp_Ip,0;這個位子 通常都可以
mes "您和您的隊伍想參加嗎?";
mes "須先繳納 ^22DD22"+$@camoney+"^000000 元的報名費";

因為道館的腳本 眾多 我也不能保證不會出錯

我改的這個腳本 有一個很怪的問題 就是 只要 伺服器上 有另一個玩家 跟你一樣的IP 不論是否在打管 都會視為 雙開(不讓你進去道管...)

如果還是不董....就下載 夾帶檔案吧.......不過 還是有些小地方需要修改就是了...

pilimo 發表於 2010-9-17 15:26:23

我的話
我會把判斷IP那整大段 放在要進入道管地圖的NPC上面。

komotomm 發表於 2010-9-22 23:53:37

用IP防雙開從之前就有一些奇怪的問題
例如我就碰過用IP分享器 明明二個人顯示的IP不一樣
例: 一個 127.0.0.1 一個 127.0.0.2
但是系統還是會把他判定為同IP
真的不知道該怎麼去解決這個問題

fivw1230 發表於 2010-9-24 06:06:49

這個 我也很無解... 可能是分享器的問題吧....?:100+:

這個問題 我現在也不能馬上研究 前幾天 另一台電腦被借走了:104:

喬治叔叔 發表於 2010-10-1 09:19:32

:91:這玩意兒太棒了!我剛測試過 超好用的!
不過我是放置在領獎處!
讓你開雙窗也白搭!!太讚了!!

喬治叔叔 發表於 2010-10-1 23:51:45

不好意思 請問大大!
若我要無限次搜查IP
是不是將"if(@No_Twp_Ip == 1 ) { end; }"刪除即可無限次數檢查IP!
頁: [1]
查看完整版本: 防雙開道管 可用於 你不希望有人雙開進入的某個地圖 限定SQL...