UID91047
帖子
精華
主題
積分197
現金
積極性
威望
違規
熱心
推廣次數
閱讀權限5
註冊時間2008-6-7
在線時間 小時
最後登錄1970-1-1
TA的每日心情 | 慵懶 2020-1-27 03:33 PM |
---|
簽到天數: 4 天 連續簽到: 1 天 [LV.2]偶爾看看I
|

樓主 |
發表於 2009-7-5 13:50:20
|
顯示全部樓層
//====================================================//
//====================================================//
//==製作人 : 陳小修 (SkyTwo) Eathena ==//
//==更新日期 : 西元2008/08/19 Script ==//
//==腳本版號 : 繁體中文 v1.0 正式版 ==//
//==腳本名稱 : 登入控制平台 ==//
//== ==//
//==腳本出處 : http://srogm.no-ip.info/forum ==//
//== ==//
//==各位大哥大姐轉載請保留以上,萬分感激。 ==//
//====================================================//
//====================================================//
- script Login_Looks_OnInit -1,{ OnInit:
//--- 開啟或關閉某個 Script , 1 = 開啟 , 0 = 關閉 ---
//----- 是否開啟登入驗證 (預設 開啟) -----
set $@LoginBotTest,0;
//----- 是否開啟線上驗證 (預設 開啟) -----
set $@OnlineBotTest,0;
//----- 是否開啟防盜密碼鎖 (預設 開啟) -----
set $@NpcCharPass,1;
//----- 是否開啟緊急傳送 (預設 開啟) -----
set $@NpcWarpOnOff,1;
//----- 是否開啟MVP魔物死亡提示 (預設 開啟) -----
set $@Kill_MVP_Mod,0;
//----- 是否開啟管理員上下線提示 (預設 開啟) -----
set $@G_On_Offline,0;
//----- 是否開啟一般玩家上下線提示 (預設 關閉) -----
set $@P_On_Offline,0;
//====================================================//
//--- Script 執行時的相關設定 , 請各伺服器依情況斟酌 ---
//----- 不需驗證的最小GM權限 (預設 40 ) -----
set $@GameManagement,40;
//----- 防盜密碼可錯誤次數 (預設 2 次) -----
set $@KickPassWrong,2;
//----- 登入驗證可錯誤次數 (預設 3 次) -----
set $@KickLoginWrong,3;
//----- 線上驗證可錯誤次數 (預設 3 次) -----
set $@KickOnlineWrong,3;
//----- 緊急傳送的執行費用 (預設 400 Zeny) -----
set $@WarpZeny,400;
//----- 登入驗證的驗證碼長度 (預設 6 碼) -----
set $@LoginNumber,6;
//----- 線上驗證的驗證碼長度 (預設 6 碼) -----
set $@OnlineNumber,6;
//----- 線上驗證的魔物數量 (預設 512 隻) -----
set $@OnlineKillMods,512;
//----- 擊倒MVP魔物所能獲得的MVP點數 (預設 1 點) -----
//----- Ps:不想啟用此功能請設定為 0 -----
set $@MVP_Point,1;
//====================================================//
//----- 反外掛程式的驗證碼樣式 -----
//----- Ps:可在 BCC.txt 文件內尋找樣式 -----
setarray $@BotCheckCode$[1],"0","1","2","3","4","5","6","7","8","9";
//====================================================//
set $@BCC_Num,(getarraysize($@BotCheckCode$)-1);
}
//====================================================//
function script StartSelect {
//可在此處加入伺服器公告
//
//例如: mes "[伺服器公告]";
// mes "非常感謝您的使用";
// mes "為了伺服器明朗開闊的未來";
// mes "我們將會盡最大的努力,";
// mes "希望各位玩家也能夠配合,";
// mes "以上是伺服器的公告內容。";
// next;
switch(select("開始遊戲","防盜密碼鎖","緊急傳送 On/Off")) {
case 1:
callfunc "StartPlayGame";
case 2:
callfunc "Npc_CharPass";
case 3:
callfunc "Npc_WarpOnOff";
}
}
//====================================================//
- script OnPCLoginEvent -1,{
OnPCLoginEvent:
set @CheckCRF,callfunc("CheckCRF_Event");
atcommand "@option 02 00 64 ";
set @Char_Pass_Num,getstrlen(#Char_Pass$);
set @PassWrong,0;
set @LoginWrong,0;
if ( $@G_On_Offline == 1 && getgmlevel() != 0 ) {
announce "公告 : GM "+strcharinfo(0)+" 登入於伺服器中!!",15;
}
if ( @Char_Pass_Num < 4 || @Char_Pass_Num > 12 ) goto Login_Bot_Test;
Char_Password:
set @PassWrong,@PassWrong+1;
mes "[防盜密碼鎖]";
mes "您的帳號有申請防盜密碼,";
mes "當驗證完才能夠開始遊戲。";
mes "請您輸入您的^FF0000防盜密碼^000000";
next;
set @Pass$,0;
input @Pass_$;
if ( @Pass_$ != #Char_Pass$ ) {
if ( @PassWrong == $@KickPassWrong ) {
callfunc "SetCRF_Event";
atcommand "@kick "+strcharinfo(0);
close;
}
mes "[防盜密碼鎖]";
mes "重新輸入次數:^FF0000剩餘 "+($@KickPassWrong-@PassWrong)+" 次^000000";
next;
goto Char_Password;
}
set @Pass$,0;
Login_Bot_Test:
if ( $@LoginBotTest != 1 ) {
callfunc "StartSelect";
}
if ( getgmlevel() >= $@GameManagement ) {
mes "[反外掛程式]";
mes "GM大大不需驗證偵測!!";
mes "請您按下 Enter 鍵,開始遊戲吧。";
next;
callfunc "StartSelect";
}
set @LoginWrong,@LoginWrong+1;
set @LoginBot1$,"";
for ( set @i,0; @i < $@LoginNumber; set @i,@i + 1 ) {
set @LoginBot1$,@LoginBot1$+$@BotCheckCode$[rand(1,$@BCC_Num)];
}
mes "[反外掛程式]";
mes "您好為降低外掛對伺服器的侵擾,";
mes "我們需要驗證才能讓您開始遊戲,";
mes "請您正確輸入下面的驗證碼。";
mes " ";
mes "驗證碼:^FF0000"+@LoginBot1$+"^000000";
next;
input @LoginBot2$;
if(@LoginBot2$!=@LoginBot1$) {
if(@LoginWrong == $@KickLoginWrong) {
callfunc "SetCRF_Event";
atcommand "@kick "+strcharinfo(0);
close;
}
mes "[反外掛程式]";
mes "重新輸入次數:^FF0000剩餘 "+($@KickLoginWrong-@LoginWrong)+" 次^000000";
next;
goto Login_Bot_Test;
}
if ( $@P_On_Offline == 1 ) {
announce "公告 : 玩家 "+strcharinfo(0)+" 登入於伺服器中!!",15;
}
mes "[反外掛程式]";
mes "您已偵測完畢,並非外掛程式!!";
mes "請您按下 Enter 鍵,開始遊戲謝謝。";
next;
callfunc "StartSelect";
}
//====================================================//
- script OnPCLogoutEvent -1,{
OnPCLogoutEvent:
if ( getgmlevel() >= $@GameManagement ) {
if ( $@G_On_Offline == 1 ) {
announce "公告 : GM "+strcharinfo(0)+" 已登出伺服器!!",15;
}
if ( #WarpOnOff == 1 ) {
set Zeny,Zeny - $@WarpZeny;
warp "SavePoint",0,0;
}
end;
}
if ( $@P_On_Offline == 1 ) {
announce "公告 : 玩家 "+strcharinfo(0)+" 已登出伺服器!!",15;
}
if ( #WarpOnOff == 1 ) {
set Zeny,Zeny - $@WarpZeny;
warp "SavePoint",0,0;
}
end;
}
//====================================================//
- script OnNPCKillEvent -1,{
OnPCKillEvent:
set Kill_Play_COUNTER,Kill_Play_COUNTER+1;
end;
OnNPCKillEvent:
if ( killedrid == 1038 || killedrid == 1039 || killedrid == 1046 || killedrid == 1059 ||
killedrid == 1086 || killedrid == 1087 || killedrid == 1112 || killedrid == 1115 ||
killedrid == 1147 || killedrid == 1150 || killedrid == 1157 || killedrid == 1159 ||
killedrid == 1190 || killedrid == 1251 || killedrid == 1252 || killedrid == 1272 ||
killedrid == 1312 || killedrid == 1373 || killedrid == 1389 || killedrid == 1418 ||
killedrid == 1492 || killedrid == 1511 || killedrid == 1583 || killedrid == 1623 ||
killedrid == 1630 || killedrid == 1658 || killedrid == 1685 || killedrid == 1688 ||
killedrid == 1708 || killedrid == 1719 || killedrid == 1734 || killedrid == 1751 ||
killedrid == 1768 || killedrid == 1779 || killedrid == 1785 || killedrid == 1874 ||
killedrid == 1885 ) {
set @Killedrid_MVP,1;
set Kill_MVP_COUNTER,Kill_MVP_COUNTER+1;
} else {
set @Killedrid_MVP,0;
set Kill_Mod_COUNTER,Kill_Mod_COUNTER+1;
}
if ( $@Kill_MVP_Mod == 1 && @Killedrid_MVP == 1 ) {
announce "公告 : 恭喜玩家 [" + strcharinfo(0) + "] 將野生的 ["+ getmonsterinfo(killedrid,MOB_NAME) + "] 打倒,他已成為MVP!",bc_all,0x00FFFF;
}
if ( $@MVP_Point > 0 && @Killedrid_MVP == 1 ) {
set #MVPPoint,#MVPPoint+$@MVP_Point;
dispbottom "您的 MVP Point 點數已累積 " + #MVPPoint + " 點。";
}
if ( $@OnlineBotTest != 1 ) {
end;
}
set @KillMod,@KillMod+1;
if ( @KillMod >= $@OnlineKillMods ) {
if ( getgmlevel() >= $@GameManagement ) {
mes "[反外掛程式]";
mes "GM大大不需驗證偵測!!";
mes "請您按下 Enter 鍵,繼續遊戲吧。";
set @KillMod,0;
close;
}
set @OnlineWrong,0;
set @CheckCRF,callfunc("CheckCRF_Event");
atcommand "@option 02 00 64 ";
Online_Bot_Test:
set @OnlineWrong,@OnlineWrong+1;
set @OnlineBot1$,"";
for ( set @i,0; @i < $@OnlineNumber; set @i,@i + 1 ) {
set @OnlineBot1$,@OnlineBot1$+$@BotCheckCode$[rand(1,$@BCC_Num)];
}
mes "[反外掛程式]";
mes "您好為降低外掛對伺服器的侵擾,";
mes "我們需要驗證才能讓您繼續遊戲,";
mes "請您正確輸入下面的驗證碼。";
mes " ";
mes "驗證碼:^FF0000"+@OnlineBot1$+"^000000";
next;
input @OnlineBot2$;
if(@OnlineBot2$!=@OnlineBot1$) {
if(@OnlineWrong == $@KickOnlineWrong) {
callfunc "SetCRF_Event";
atcommand "@kick "+strcharinfo(0);
close;
}
mes "[反外掛程式]";
mes "重新輸入次數:^FF0000剩餘 "+($@KickOnlineWrong-@OnlineWrong)+" 次^000000";
next;
goto Online_Bot_Test;
}
callfunc "SetCRF_Event";
mes "[反外掛程式]";
mes "您已偵測完畢,並非外掛程式!!";
mes "請您按下 Enter 鍵,繼續遊戲謝謝。";
set @CheckCRF,0;
set @KillMod,0;
set @OnlineWrong,0;
close;
}
end;
}
//====================================================//
function script Npc_CharPass {
if ( $@NpcCharPass != 1 ) {
mes "[防盜密碼鎖]";
mes "伺服器未開啟^FF0000防盜密碼鎖^000000功能!!";
mes "系統將會幫您自動返回主選單!!";
goto Char_Exit;
}
mes "[防盜密碼鎖]";
set @Char_Pass_Num,getstrlen(#Char_Pass$);
if ( @Char_Pass_Num >= 4 && @Char_Pass_Num <= 12 ) {
mes "您的帳號目前有申請防盜密碼,";
mes "請問您想要什麼服務呢?";
next;
menu "修改防盜密碼",Char_Change,"移除防盜密碼",Char_Delete,"退出防盜密碼",Char_Exit;
} else {
mes "您的帳號目前尚未設定防盜密碼";
mes "請問您想設定防盜密碼嗎?";
next;
menu "什麼是防盜密碼",Char_Help,"設定防盜密碼",Char_Hypothesis,"退出防盜密碼",Char_Exit;
}
Char_Change:
mes "[防盜密碼鎖]";
mes "請輸入您所設定的 ^FF0000舊密碼^000000";
input @Pass$;
set @Pass_Num,getstrlen(@Pass$);
next;
if ( @Pass$ == #Char_Pass$ ) goto Char_Hypothesis;
mes "[防盜密碼鎖]";
mes "密碼錯誤,你不能設置新密碼!";
goto Char_Exit;
Char_Hypothesis:
mes "[防盜密碼鎖]";
mes "請輸入您想設定的^FF0000防盜密碼^000000!";
mes "範圍 4 ∼ 12 個^FF0000數字^000000+^FF0000英文字^000000";
mes " ";
mes "輸入全部^FF0000數字^000000或全部^FF0000英文字^000000也能唷!";
set @Pass$,0;
input @Pass$;
set @Pass_Num,getstrlen(@Pass$);
next;
if ( @Pass_Num < 4 ) {
mes "[防盜密碼鎖]";
mes "您設定的密碼長度太短了!";
mes "您設定的密碼長度為["+@Pass_Num+"]";
goto Char_Exit;
}
if ( @Pass_Num > 12 ) {
mes "[防盜密碼鎖]";
mes "您設定的密碼長度太長了!";
mes "您設定的密碼長度為["+@Pass_Num+"]";
goto Char_Exit;
}
mes "[防盜密碼鎖]";
set #Char_Pass$,@Pass$;
mes "您的 ^FF0000防盜密碼^000000 申請已通過,";
mes "謝謝您使用此服務!";
goto Char_Exit;
Char_Delete:
mes "[防盜密碼鎖]";
mes "請輸入您所設定的 ^FF0000防盜密碼^000000";
input @Pass$;
set @Pass_Num,getstrlen(@Pass$);
next;
if ( @Pass$ == #Char_Pass$ ) {
set #Char_Pass$,0;
mes "[防盜密碼鎖]";
mes "您的 ^FF0000移除防盜密碼^000000 申請已通過,";
mes "謝謝您使用此服務!";
goto Char_Exit;
}
mes "[防盜密碼鎖]";
mes "密碼錯誤,你不能移除防盜密碼!";
goto Char_Exit;
Char_Help:
mes "[防盜密碼鎖]";
mes "防盜密碼可以確保";
mes "您帳號之人物的物品安全!";
next;
mes "[防盜密碼鎖]";
mes "請問您想設定防盜密碼了嗎?";
next;
menu "我想要設定",Char_Hypothesis,"我不想設定",Char_Exit;
Char_Exit:
next;
callfunc "StartSelect";
}
//====================================================//
function script Npc_WarpOnOff {
if ( $@NpcWarpOnOff != 1 ) {
mes "[緊急傳送]";
mes "伺服器未開啟^FF0000緊急傳送^000000功能!!";
mes "系統將會幫您自動返回主選單!!";
next;
callfunc "StartSelect";
}
mes "[緊急傳送]";
mes "請問您要什麼服務嗎?";
next;
switch(select("什麼是緊急傳送","緊急傳送 On/Off","退出緊急傳送")) {
case 1:
mes "[緊急傳送]";
mes "^FF0000緊急傳送^000000可以在您卡點時";
mes "做登出伺服器動作就可以";
mes "幫助您順利解決卡點問題!!";
mes "但開啟^FF0000緊急傳送^000000後每次登出時";
mes "系統將會自動扣除您 "+$@WarpZeny+" Zeny";
next;
callfunc "Npc_WarpOnOff";
case 2:
if ( #WarpOnOff == 1 ) {
set #WarpOnOff,0;
dispbottom "緊急傳送已關閉。";
callfunc "Npc_WarpOnOff";
}
set #WarpOnOff,1;
dispbottom "緊急傳送已開啟。";
callfunc "Npc_WarpOnOff";
case 3:
next;
callfunc "StartSelect";
}
}
//====================================================//
function script CheckCRF_Event {
set @CheckCRF,0;
if ( checkfalcon() || checkcart() || checkriding() ) set @CheckCRF,1;
if ( checkoption(0x80) ) set @CheckCRF,2;
if ( checkoption(0x100) ) set @CheckCRF,3;
if ( checkoption(0x200) ) set @CheckCRF,4;
if ( checkoption(0x400) ) set @CheckCRF,5;
return @CheckCRF;
}
//====================================================//
function script SetCRF_Event {
atcommand "@option 00 00 00 ";
if ( @CheckCRF == 1 ) {
if ( getskilllv(39) > 0 ) setcart;
if ( getskilllv(63) > 0 ) setriding;
if ( getskilllv(127) > 0 ) setfalcon;
}
if ( @CheckCRF == 2 && getskilllv(39) > 0 ) setcart 2;
if ( @CheckCRF == 3 && getskilllv(39) > 0 ) setcart 3;
if ( @CheckCRF == 4 && getskilllv(39) > 0 ) setcart 4;
if ( @CheckCRF == 5 && getskilllv(39) > 0 ) setcart 5;
return;
}
//====================================================//
function script StartPlayGame {
callfunc "SetCRF_Event";
set @CheckCRF,0;
if ( CharJobLv > 0 )dispbottom "您的轉生次數已累積 " + CharJobLv + " 次。";
if ( (Kill_Mod_COUNTER+Kill_MVP_COUNTER) > 0 )dispbottom "您的獵殺次數已累積 " + (Kill_Mod_COUNTER+Kill_MVP_COUNTER) + " 次。 [MVP:"+Kill_MVP_COUNTER+"]";
if ( Kill_Play_COUNTER > 0 )dispbottom "您的殺敵次數已累積 " + Kill_Play_Num + " 次。";
if ( PC_DIE_COUNTER > 0 )dispbottom "您的死亡次數已累積 " + PC_DIE_COUNTER + " 次。";
if ( RESRVPTS > 0 )dispbottom "您的卡普拉點數已累積 " + RESRVPTS + " 點。";
if ( #CASHPOINTS > 0 )dispbottom "您的 CASH 點數已累積 " + #CASHPOINTS + " 點。";
if ( #MVPPoint > 0 )dispbottom "您的 MVP Point 點數已累積 " + #MVPPoint + " 點。";
close;
}
//====================================================// |
|