Назад

Аккаунт локер

Автор: MaXi: Дата: 01.10.2011

Помогите из этого скрипта

prontera,155,155,4	script	Security Guard	852,{
set @name$, "[^FF0000Security Guard^000000]";
query_sql "SELECT status FROM antihack WHERE account_id='"+getcharid(3)+"'", .@stat$;
if(getgmlevel() >= 99){goto L_GM;}
goto L_start;

L_start:
if(.@stat$ == "A"){goto L_done;}
mes @name$;
mes "Looks like your account is not protected.";
mes "I can secure it with a ^FF0000security password^000000";
next;
if(select("Sounds cool:Boring")!=1){mes @name$; mes "Don't blame me if you get hacked!"; close;}
mes @name$;
mes "Alright then!";
mes "Please enter your desired security password";
next;
if(input(.@tempass$,1,32) == 1)
{
mes @name$;
mes "Password too long.";
mes "Max char: ^FF000032^000000";
close;
}
mes @name$;
mes "Okay, now please re-enter it.";
next;
input .@confirmpass$;
if(.@confirmpass$ != .@tempass$)
{
mes @name$;
mes "Password does not match!";
close;
}
mes @name$;
mes "Alright, that's good enough!";
mes "Are you sure you want this password?";
next;
if(select("Yes:No")!=1){mes @name$; mes "Too bad. See you around then!"; close;}
query_sql "INSERT INTO antihack(se_password,account_id,status,date) VALUES('"+escape_sql(.@confirmpass$)+"','"+getcharid(3)+"','A',NOW())";
mes @name$;
mes "Changes has been saved!";
mes "Thank you for your cooperation!";
close;

L_done:
mes @name$;
mes "Welcome back!";
mes "Is there anything I can do for you?";
next;
switch(select("Change my pass","Delete my pass"))
{
case 1:
query_sql "SELECT se_password FROM antihack WHERE account_id='"+getcharid(3)+"'", .@pass$;
mes @name$;
mes "Please enter your current password";
next;
input .@password$;
if(.@password$ != .@pass$){mes @name$; mes "Sorry! Incorrect password"; close;}
mes @name$;
mes "Enter your desired password.";
next;
if(input(.@tempass$,1,32) == 1)
{
mes @name$;
mes "Password too long!";
mes "Max char: ^FF000032^000000";
close;
}
mes @name$;
mes "Now then.. Please re-enter it.";
next;
input .@confirmpass$;
if(.@confirmpass$ != .@tempass$)
{
mes @name$;
mes "Password does not match!";
close;
}
mes @name$;
mes "That should be good enough..";
mes "Are you sure you want to change your password?";
next;
if(select("Yes:No") != 1){mes @name$; mes "Alright, talk to me when you need something"; close;}
query_sql "UPDATE antihack SET se_password='"+escape_sql(.@confirmpass$)+"' WHERE account_id='"+getcharid(3)+"'";
mes @name$;
mes "Okay!";
mes "Changes has been saved!";
break;
case 2:
mes @name$;
mes "Durr.. well, I can't do that just like that. I have to ask for your password first.";
next;
query_sql "SELECT se_password FROM antihack WHERE account_id='"+getcharid(3)+"'", .@pass$;
input .@password$;
next;
if(.@password$ != .@pass$){mes @name$; mes "Sorry, that was incorrect!"; close;}
mes @name$;
mes "Okay correct.";
mes "Are you sure you want to delete it though?";
next;
if(select("Yes:No")!=1){mes @name$; mes "Whew, thank goodness."; close;}
query_sql "DELETE FROM antihack WHERE account_id='"+getcharid(3)+"'";
mes @name$;
mes "Deleted.";
}
close;

L_GM:
mes @name$;
mes "Hello master!";
mes "What would you like to do?";
next;
if(select("Admin Mode:Access NPC") != 1){goto L_start;}
mes @name$;
mes "Please select an action";
next;
switch(select("View a pass","Delete a pass","Change a pass"))
{
case 1:
mes @name$;
mes "Please input an account ID";
next;
input .@id;
set .@count,query_sql("SELECT se_password FROM antihack WHERE account_id='"+escape_sql(.@id)+"'", .@pass$);
if(!.@count){mes @name$; mes "The account ID either doesn't exist or don't have a security password"; close;}
mes @name$;
mes "The security password for this account is:";
mes "^FF0000"+.@pass$+"^000000";
break;
case 2:
mes @name$;
mes "Please input an account ID";
next;
input .@id;
set .@count,query_sql("SELECT se_password FROM antihack WHERE account_id='"+escape_sql(.@id)+"'", .@pass$);
if(!.@count){mes @name$; mes "The account ID either doesn't exist or don't have a security password"; close;}
mes @name$;
mes "Are you sure you want to delete his/her password?";
next;
if(select("Yes:No")!=1){mes @name$; mes "Okay, goodbye."; close;}
query_sql "DELETE FROM antihack WHERE account_id='"+escape_sql(.@id)+"'";
mes @name$;
mes "security password of account id: ^FF0000"+.@id+"^000000 has been deleted!";
break;
case 3:
mes @name$;
mes "Please input an account ID";
next;
input .@id;
set .@count,query_sql("SELECT se_password FROM antihack WHERE account_id='"+escape_sql(.@id)+"'", .@pass$);
if(!.@count){mes @name$; mes "The account ID either doesn't exist or don't have a security password"; close;}
mes @name$;
mes "What do you desire as password for this account?";
next;
if(input(.@newpass$,1,32) == 1){mes @name$; mes "Password too long!"; mes "Max char: ^FF000032^000000"; close;}
mes @name$;
mes "Are you sure you want to change ^FF0000"+.@pass$+"^000000 into ^FF0000"+.@newpass$+"^000000 ?";
next;
if(select("Yes:No")!=1){close;}
query_sql "UPDATE antihack SET se_password='"+escape_sql(.@newpass$)+"' WHERE account_id='"+escape_sql(.@id)+"'";
mes @name$;
mes "security password of account ^FF0000"+.@id+"^000000 has been updated!";
}
close;

OnInit:
delwaitingroom "Security Guard";
waitingroom "Anti-Hacking NPC",0;
end;

OnPCLoginEvent:
query_sql "SELECT `status` FROM antihack WHERE account_id='"+getcharid(3)+"'", .@stat$;
if(.@stat$ != "A"){end;}
query_sql "SELECT se_password FROM antihack WHERE account_id='"+getcharid(3)+"'", .@pass$;
set @name$,"[^FF0000Security Guard^000000]";
mes @name$;
mes "You have ^FF00008 seconds^000000 to enter your security password!";
attachnpctimer;
initnpctimer "Security Guard";
input .@try$;
next;
if(.@try$ != .@pass$){mes @name$; mes "Incorrect password!"; stopnpctimer "Security Guard"; atcommand "@kick "+strcharinfo(0);}
else
{
stopnpctimer "Security Guard";
mes @name$;
mes "Thank you for cooperating!";
close;
}

OnTimer8000:
stopnpctimer "Security Guard";
atcommand "@kick "+strcharinfo(0);
end;
}


Перенести Sql запросы в этот
//******Account Locker*******//
//*****By: Miland******//
//***Current Version: v1.0***//
//***** Post some suggestions *****//

- script AccountLocker -1,{

OnPCLoginEvent:
if (#setpw == 1) goto P_insert;
if (#dontp == 1) end;
mes "[Account Locker]";
mes "{Хочешь защитить свой аккаунт от взломщиков?";
mes "{Если 3 раза пароль вести не правильно злоумышленник будет выкинут с сервера";
mes "{Предеча вещей и денег не возможна";
next;
menu "Да",P_check,"Нет",-;
mes "[Account Locker]";
mes "Вы уверены?";
mes "Я прошу это только один раз,больше не буду !!";
next;
menu "Хорошо я хочу поставить пароль.",P_check,"Не хочу",-;
mes "[Account Locker]";
mes "Okay !!";
set #dontp,1;
close;

P_Check:
sc_start sc_berserk, 1000000000, 1;
mes "[Account Locker]";
mes "Введите пароль вашего для Account Locker, что вы хотите. Может быть буквы или цифры. CASE SENSITIVE.";
next;
input #lockpw$;
next;
mes "[Account Locker]";
mes "Проверка Пароля.";
mes "Пожалуйста, введите пароль, который вы уже вводили не давно.";
input #lockvpw$;
if (#lockvpw$ != #lockpw$) {
next;
mes "[Account Locker]";
mes "Проверка пароля- вы ввели неверный.";
next;
goto P_Check;
} else {
next;
mes "[Account Locker]";
mes "Спасибо. Пожалуйста, помните пароль, которые вы ввели. Я буду просить его снова каждый раз когда вы зайдёте.";
set #setpw,1;
sc_end sc_berserk;
close;
}


P_insert:
sc_start sc_berserk, 1000000000, 1;
mes "[Account Locker]";
mes "Введите ваш секретный пароль!";
next;
input #insertlp$;
if (#insertlp$ == #lockpw$) goto P_pass;
mes "[Account Locker]";
mes "Неверный пароль. Попробуйте еще раз.";
next;
input #insertlp$;
if (#insertlp$ == #lockpw$) goto P_pass;
mes "[Account Locker]";
mes "Неверный пароль. Попробуйте еще раз.";
next;
mes "[Account Locker]";
mes "Неверный пароль. Попробуйте еще раз.";
if (#insertlp$ == #lockpw$) goto P_pass;
atcommand "@kick "+strcharinfo(0);
end;

P_pass:
sc_end sc_berserk;
close;
}


Буду благодарен)
А то я с скриптами не очень дружу:mellow:

Автор: MaXi: Дата: 01.11.2011

Цитата Kill Spirit;29862:
А смысл? # переменные можно найти в global_reg_value и от части они могут заменить тебе запросы в базу.


Окей тогда как поменять пароль во втором скрипте?

Автор: ValikDRV: Дата: 01.11.2011

x,y,n[TAB]script[TAB]NPC Name[TAB]npc_id,{
mes "[Account Locker]";
mes "Привет! Хоч сменить секретный пароль???";
next;
switch(select("Да:Нет")) {
case 1: // Да
mes "[Account Locker]";
mes "Введи свой прежний пароль!";
input #insertlp$;
if (#insertlp$ != #lockpw$) {
mes "Пароли не совпадают!!!";
close;
} else {
mes "[Account Locker]";
mes "Введи новый пароль.";
next;
input #lockpw$;
mes "[Account Locker]";
mes "Пароль изменен!";
close;
}
case 2: close;
}
}


юзай!