Advertisement
Guest User

Untitled

a guest
Jul 13th, 2014
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.37 KB | None | 0 0
  1.  
  2. /*
  3. CREATE TABLE IF NOT EXISTS `name_change_history` (
  4. `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  5. `aid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  6. `cid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  7. `old_name` VARCHAR(25) NOT NULL DEFAULT '',
  8. `new_name` VARCHAR(25) NOT NULL DEFAULT '',
  9. `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
  10. PRIMARY KEY( `id` )
  11. ) ENGINE=MyISAM;
  12. */
  13.  
  14. // prontera,139,230,6 script Name Change Service 402,{
  15. prontera,155,181,6 script Name Change Service 402,{
  16. function charname_check;
  17.  
  18. .@gm_level = getgmlevel();
  19. .@aid = getcharid(3);
  20. .@cid = getcharid(0);
  21. .@player_name$ = strcharinfo(0);
  22.  
  23. mes "Welcome to the Name Change Service!";
  24. mes "You wan't to change your name?";
  25. mes " ";
  26. switch( select( "Change Name","History",( .@gm_level < .gm_level )?"":"^FF0000[GM]^000000 Check Player History","Cancel" ) ){
  27. case 1:
  28. if( .char_name_history ){
  29. // last name change interval
  30. if( .change_name_interval ){
  31. query_sql( "SELECT DATEDIFF( NOW(),`time` ),`time` FROM `name_change_history` WHERE `cid` = "+.@cid+" ORDER BY `time` DESC LIMIT 1",.@days,.@time$ );
  32. mes "^FF0000Last Name Change :^000000";
  33. if( .@time$ == "" ){
  34. mes "^777777 none^000000";
  35. }
  36. else{
  37. mes "^777777"+.@time$+" ("+(( !.@days )?"~24 hour": .@days+" days" )+")^000000";
  38. if( .@days < .change_name_interval ){
  39. mes "Minimum interval: ^0055FFevery "+.change_name_interval+" days^000000.";
  40. close;
  41. }
  42. }
  43. }
  44. // max name change attempt
  45. if( .max_change_name ){
  46. query_sql( "SELECT COUNT( `time` ) FROM `name_change_history` WHERE `cid` = "+.@cid+" ORDER BY `time` DESC LIMIT 1",.@count );
  47. mes "^FF0000Total Attempt : ^777777"+.@count+"/^FF0000"+.max_change_name+" times^000000";
  48. if( .@count > .max_change_name ){
  49. // mes "You reach the max attempts of ^0055FF"+.change_name_inteval+" times^000000.";
  50. close;
  51. }
  52. else{
  53. dispbottom "[Change Name Service] Left "+( .max_change_name - .@count )+" Attempt.";
  54. }
  55. }
  56. }
  57.  
  58. if( .item_size || .zeny_cost ){
  59. next;
  60. mes "^0055FF[ Check Requirement ]^000000";
  61. mes "You need:";
  62. }
  63. if( .item_size )
  64. for( .@i = 0; .@i < .item_size; .@i += 2 ){
  65. mes " ~ "+.item[.@i+1]+" x "+getitemname( .item[.@i] );
  66. if( countitem( .item[.@i] ) < .item[.@i+1] )
  67. .@fail++;
  68. }
  69. if( .zeny_cost ){
  70. mes " ~ "+F_InsertComma( .zeny_cost )+" Zeny.";
  71. if( Zeny < .zeny_cost )
  72. .@fail++;
  73. }
  74.  
  75. if( !.@fail ){
  76. if( getcharid(1) ){
  77. mes "Please leave your party.";
  78. }
  79. else if( getcharid(2) ){
  80. mes "Please leave your Guild.";
  81. }
  82. else{
  83. mes " ";
  84. mes "^0055FF* Requirement Check Passed.^000000";
  85. next;
  86. mes "^0055FF[ Change Name ]^000000";
  87. mes "Input the name you want.";
  88. mes "^777777( enter 'CANCEL' to stop )^000000";
  89. do{
  90. input .@name$;
  91. if( .@name$ == "CANCEL" ) close;
  92. }while( charname_check( .@name$ ) );
  93.  
  94. next;
  95. mes "^0055FF[ Confirmation ]^000000";
  96. mes "Current Name :";
  97. mes "^0055FF"+.@player_name$+"^000000";
  98. mes " ";
  99. mes "New Name :";
  100. mes "^0055FF"+.@name$+"^000000";
  101. if( select( "Confirm, change to new name.","Cancel" ) == 1 ){
  102. if( .zeny_cost )
  103. Zeny -= .zeny_cost;
  104. if( .item_size )
  105. for( .@i = 0; .@i < .item_size; .@i += 2 )
  106. delitem .item[.@i],.item[.@i+1];
  107.  
  108. .@name$ = escape_sql( .@name$ );
  109. atcommand "@kick "+.@player_name$;
  110. detachrid;
  111. sleep 500;
  112. query_sql( "UPDATE `char` SET `name` = '"+.@name$+"' WHERE `char_id` = "+.@cid+" LIMIT 1" );
  113. if( .char_name_history )
  114. query_sql( "INSERT INTO `name_change_history` ( `aid`,`cid`,`old_name`,`new_name`,`time` ) VALUES ( "+.@aid+","+.@cid+",'"+.@player_name$+"','"+.@name$+"',NOW() )" );
  115. end;
  116. }
  117. }
  118. }
  119. break;
  120. case 3:
  121. next;
  122. mes "^0055FF[ Name Change History ]^000000";
  123. mes "Enter Player Name:";
  124. input .@name$;
  125. query_sql( "SELECT `char_id`,`name` FROM `char` WHERE `name` LIKE '%"+.@name$+"%' LIMIT 100",.@char_id,.@name_list$ );
  126. .@name_list_size = getarraysize( .@name_list$ );
  127. if( !.@name_list_size ){
  128. mes "No player found with name ^FF0000"+.@name$+"^000000.";
  129. close;
  130. }
  131. else if( .@name_list_size > 1 ){
  132. mes "^777777Select a Player...^000000";
  133. for( .@i = 0; .@i < .@name_list_size; .@i++ )
  134. mes "^0055FF["+.@i+".] ^FF0000"+.@name_list$[.@i]+"^000000";
  135. input .@pick,0,.@name_list_size;
  136. }
  137. .@player_name$ = .@name_list$[.@pick];
  138. .@cid = .@char_id[.@pick];
  139. case 2:
  140. next;
  141. mes "^0055FF[ Last 30 Name Change History ]^000000";
  142. mes "Player: ^0055FF"+.@player_name$+"^000000";
  143. query_sql( "SELECT `new_name`,`time` FROM `name_change_history` WHERE `cid` = "+.@cid+" ORDER BY `time` DESC LIMIT 30",.@new_name$,.@time$ );
  144. .@new_name_size = getarraysize( .@new_name$ );
  145. if( .@new_name_size ){
  146. for( .@i = 0; .@i < .@new_name_size; .@i++ ){
  147. mes "---- ^FF0000"+.@time$[.@i]+"^000000 ----";
  148. mes " ~ ^777777"+.@new_name$[.@i]+"^000000";
  149. }
  150. }
  151. else{
  152. mes "No name change record found.";
  153. }
  154. default: break;
  155. }
  156. close;
  157.  
  158. function charname_check {
  159. .@name$ = getarg(0);
  160.  
  161. .@player_name$ = strcharinfo(0);
  162. .@name_length = getstrlen( .@name$ );
  163.  
  164. // new name checking
  165. if( .@player_name$ == .@name$ ){
  166. message .@player_name$,"It's your current name.";
  167. return 1;
  168. }
  169. // name length checking
  170. if( .@name_length < .name_length[0] || .@name_length > .name_length[1] ){
  171. message .@player_name$,"Name must between "+.name_length[0]+" ~ "+.name_length[1]+" letters.";
  172. return 1;
  173. }
  174. // name mode checking
  175. if( .char_name_option ){
  176. for( .@i = 0; .@i < .@name_length; .@i++ ){
  177. .@charAt$ = charat( .@name$,.@i );
  178. .@compare = compare( .char_name_letters$,.@charAt$ );
  179. if( ( .char_name_option == 1 && !.@compare ) || ( .char_name_option == 2 && .@compare ) ){
  180. message .@player_name$,"Invalid character: '"+.@charAt$+"'";
  181. return 1;
  182. }
  183. }
  184. }
  185. // space checking
  186. if( charat( .@name$,0 ) == " " || charat( .@name$,( .@name_length - 1 ) ) == " " ){
  187. message .@player_name$,"Cant use spaces at begin/end of your name.";
  188. return 1;
  189. }
  190. // if( countstr( .@name$," " ) ){
  191. if( countstr( .@name$," " ) ){
  192. message .@player_name$,"Cant have 2 or more spaces togther in your name.";
  193. return 1;
  194. }
  195. // check is name exist
  196. query_sql( "SELECT `account_id` FROM `char` WHERE name='"+escape_sql( .@name$ )+"'",.@aid );
  197. if( .@aid ){
  198. message .@player_name$,"Name '"+.@name$+"' is already taken.";
  199. return 1;
  200. }
  201. message .@player_name$,"Name '"+.@name$+"' is available.";
  202. return 0;
  203. }
  204.  
  205. OnInit:
  206. // GM Level to check History
  207. .gm_level = 99;
  208.  
  209. // item required + amount
  210. setarray .item,7623,1;
  211. .item_size = getarraysize( .item ) - 1;
  212.  
  213. // zeny required
  214. .zeny_cost = 10000000;
  215.  
  216. // length of new name
  217. setarray .name_length,4,23;
  218.  
  219. // Char Name check
  220. // 0 - disable
  221. // 1 - only letters/symbols in 'char_name_letters' are allowed
  222. // 2 - letters/symbols in 'char_name_letters' option are forbidden
  223. .char_name_option = 1;
  224. .char_name_letters$ = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890^°!§$%&/()=?′`+*~#'-_.:,;<>|{[]}";
  225.  
  226. // can change how many time ( 0 = unlimit )
  227. .max_change_name = 100;
  228. // can change name interval every X days ( 0 = disable )
  229. .change_name_interval = 0;
  230. // save change name history
  231. .char_name_history = 1;
  232. end;
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement