Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- CREATE TABLE IF NOT EXISTS `name_change_history` (
- `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
- `aid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
- `cid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
- `old_name` VARCHAR(25) NOT NULL DEFAULT '',
- `new_name` VARCHAR(25) NOT NULL DEFAULT '',
- `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY( `id` )
- ) ENGINE=MyISAM;
- */
- // prontera,139,230,6 script Name Change Service 402,{
- prontera,155,181,6 script Name Change Service 402,{
- function charname_check;
- .@gm_level = getgmlevel();
- .@aid = getcharid(3);
- .@cid = getcharid(0);
- .@player_name$ = strcharinfo(0);
- mes "Welcome to the Name Change Service!";
- mes "You wan't to change your name?";
- mes " ";
- switch( select( "Change Name","History",( .@gm_level < .gm_level )?"":"^FF0000[GM]^000000 Check Player History","Cancel" ) ){
- case 1:
- if( .char_name_history ){
- // last name change interval
- if( .change_name_interval ){
- query_sql( "SELECT DATEDIFF( NOW(),`time` ),`time` FROM `name_change_history` WHERE `cid` = "+.@cid+" ORDER BY `time` DESC LIMIT 1",.@days,.@time$ );
- mes "^FF0000Last Name Change :^000000";
- if( .@time$ == "" ){
- mes "^777777 none^000000";
- }
- else{
- mes "^777777"+.@time$+" ("+(( !.@days )?"~24 hour": .@days+" days" )+")^000000";
- if( .@days < .change_name_interval ){
- mes "Minimum interval: ^0055FFevery "+.change_name_interval+" days^000000.";
- close;
- }
- }
- }
- // max name change attempt
- if( .max_change_name ){
- query_sql( "SELECT COUNT( `time` ) FROM `name_change_history` WHERE `cid` = "+.@cid+" ORDER BY `time` DESC LIMIT 1",.@count );
- mes "^FF0000Total Attempt : ^777777"+.@count+"/^FF0000"+.max_change_name+" times^000000";
- if( .@count > .max_change_name ){
- // mes "You reach the max attempts of ^0055FF"+.change_name_inteval+" times^000000.";
- close;
- }
- else{
- dispbottom "[Change Name Service] Left "+( .max_change_name - .@count )+" Attempt.";
- }
- }
- }
- if( .item_size || .zeny_cost ){
- next;
- mes "^0055FF[ Check Requirement ]^000000";
- mes "You need:";
- }
- if( .item_size )
- for( .@i = 0; .@i < .item_size; .@i += 2 ){
- mes " ~ "+.item[.@i+1]+" x "+getitemname( .item[.@i] );
- if( countitem( .item[.@i] ) < .item[.@i+1] )
- .@fail++;
- }
- if( .zeny_cost ){
- mes " ~ "+F_InsertComma( .zeny_cost )+" Zeny.";
- if( Zeny < .zeny_cost )
- .@fail++;
- }
- if( !.@fail ){
- if( getcharid(1) ){
- mes "Please leave your party.";
- }
- else if( getcharid(2) ){
- mes "Please leave your Guild.";
- }
- else{
- mes " ";
- mes "^0055FF* Requirement Check Passed.^000000";
- next;
- mes "^0055FF[ Change Name ]^000000";
- mes "Input the name you want.";
- mes "^777777( enter 'CANCEL' to stop )^000000";
- do{
- input .@name$;
- if( .@name$ == "CANCEL" ) close;
- }while( charname_check( .@name$ ) );
- next;
- mes "^0055FF[ Confirmation ]^000000";
- mes "Current Name :";
- mes "^0055FF"+.@player_name$+"^000000";
- mes " ";
- mes "New Name :";
- mes "^0055FF"+.@name$+"^000000";
- if( select( "Confirm, change to new name.","Cancel" ) == 1 ){
- if( .zeny_cost )
- Zeny -= .zeny_cost;
- if( .item_size )
- for( .@i = 0; .@i < .item_size; .@i += 2 )
- delitem .item[.@i],.item[.@i+1];
- .@name$ = escape_sql( .@name$ );
- atcommand "@kick "+.@player_name$;
- detachrid;
- sleep 500;
- query_sql( "UPDATE `char` SET `name` = '"+.@name$+"' WHERE `char_id` = "+.@cid+" LIMIT 1" );
- if( .char_name_history )
- query_sql( "INSERT INTO `name_change_history` ( `aid`,`cid`,`old_name`,`new_name`,`time` ) VALUES ( "+.@aid+","+.@cid+",'"+.@player_name$+"','"+.@name$+"',NOW() )" );
- end;
- }
- }
- }
- break;
- case 3:
- next;
- mes "^0055FF[ Name Change History ]^000000";
- mes "Enter Player Name:";
- input .@name$;
- query_sql( "SELECT `char_id`,`name` FROM `char` WHERE `name` LIKE '%"+.@name$+"%' LIMIT 100",.@char_id,.@name_list$ );
- .@name_list_size = getarraysize( .@name_list$ );
- if( !.@name_list_size ){
- mes "No player found with name ^FF0000"+.@name$+"^000000.";
- close;
- }
- else if( .@name_list_size > 1 ){
- mes "^777777Select a Player...^000000";
- for( .@i = 0; .@i < .@name_list_size; .@i++ )
- mes "^0055FF["+.@i+".] ^FF0000"+.@name_list$[.@i]+"^000000";
- input .@pick,0,.@name_list_size;
- }
- .@player_name$ = .@name_list$[.@pick];
- .@cid = .@char_id[.@pick];
- case 2:
- next;
- mes "^0055FF[ Last 30 Name Change History ]^000000";
- mes "Player: ^0055FF"+.@player_name$+"^000000";
- query_sql( "SELECT `new_name`,`time` FROM `name_change_history` WHERE `cid` = "+.@cid+" ORDER BY `time` DESC LIMIT 30",.@new_name$,.@time$ );
- .@new_name_size = getarraysize( .@new_name$ );
- if( .@new_name_size ){
- for( .@i = 0; .@i < .@new_name_size; .@i++ ){
- mes "---- ^FF0000"+.@time$[.@i]+"^000000 ----";
- mes " ~ ^777777"+.@new_name$[.@i]+"^000000";
- }
- }
- else{
- mes "No name change record found.";
- }
- default: break;
- }
- close;
- function charname_check {
- .@name$ = getarg(0);
- .@player_name$ = strcharinfo(0);
- .@name_length = getstrlen( .@name$ );
- // new name checking
- if( .@player_name$ == .@name$ ){
- message .@player_name$,"It's your current name.";
- return 1;
- }
- // name length checking
- if( .@name_length < .name_length[0] || .@name_length > .name_length[1] ){
- message .@player_name$,"Name must between "+.name_length[0]+" ~ "+.name_length[1]+" letters.";
- return 1;
- }
- // name mode checking
- if( .char_name_option ){
- for( .@i = 0; .@i < .@name_length; .@i++ ){
- .@charAt$ = charat( .@name$,.@i );
- .@compare = compare( .char_name_letters$,.@charAt$ );
- if( ( .char_name_option == 1 && !.@compare ) || ( .char_name_option == 2 && .@compare ) ){
- message .@player_name$,"Invalid character: '"+.@charAt$+"'";
- return 1;
- }
- }
- }
- // space checking
- if( charat( .@name$,0 ) == " " || charat( .@name$,( .@name_length - 1 ) ) == " " ){
- message .@player_name$,"Cant use spaces at begin/end of your name.";
- return 1;
- }
- // if( countstr( .@name$," " ) ){
- if( countstr( .@name$," " ) ){
- message .@player_name$,"Cant have 2 or more spaces togther in your name.";
- return 1;
- }
- // check is name exist
- query_sql( "SELECT `account_id` FROM `char` WHERE name='"+escape_sql( .@name$ )+"'",.@aid );
- if( .@aid ){
- message .@player_name$,"Name '"+.@name$+"' is already taken.";
- return 1;
- }
- message .@player_name$,"Name '"+.@name$+"' is available.";
- return 0;
- }
- OnInit:
- // GM Level to check History
- .gm_level = 99;
- // item required + amount
- setarray .item,7623,1;
- .item_size = getarraysize( .item ) - 1;
- // zeny required
- .zeny_cost = 10000000;
- // length of new name
- setarray .name_length,4,23;
- // Char Name check
- // 0 - disable
- // 1 - only letters/symbols in 'char_name_letters' are allowed
- // 2 - letters/symbols in 'char_name_letters' option are forbidden
- .char_name_option = 1;
- .char_name_letters$ = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890^°!§$%&/()=?′`+*~#'-_.:,;<>|{[]}";
- // can change how many time ( 0 = unlimit )
- .max_change_name = 100;
- // can change name interval every X days ( 0 = disable )
- .change_name_interval = 0;
- // save change name history
- .char_name_history = 1;
- end;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement