Advertisement
Guest User

Untitled

a guest
Oct 11th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.19 KB | None | 0 0
  1. let MENU_INDEX_SELECTION = 1;
  2. let MENU_NAME_ENTRY = 2;
  3. let menuMode = MENU_INDEX_SELECTION;
  4.  
  5. @Initialize{
  6. SetAutoDeleteObject(true);
  7. LoadReplayList;
  8.  
  9. TBackground;
  10. TReplayIndexSelection;
  11. }
  12.  
  13. @MainLoop{
  14. yield;
  15. }
  16.  
  17.  
  18. task TReplayIndexSelection{
  19. let cursorY = 0;
  20. let page = 0;
  21. let countMaxItem = REPLAY_INDEX_DIGIT_MAX - REPLAY_INDEX_DIGIT_MIN + 1;
  22. let countItemPerPage = 10;
  23. let pageMax = trunc((countMaxItem - 1) / countItemPerPage);
  24. pageMax = max(pageMax, 1);
  25. let lastPageMaxCursorY = trunc(countMaxItem / countItemPerPage);
  26.  
  27. ascent(let iItem in 0..countItemPerPage){
  28. TMenuItem(iItem);
  29. }
  30.  
  31. while(GetVirtualKeyState(VK_OK) != KEY_FREE || GetVirtualKeyState(VK_CANCEL) != KEY_FREE){yield;}
  32.  
  33. let frameKeyHold = 0;
  34.  
  35. while(menuMode == MENU_INDEX_SELECTION){
  36.  
  37. if(GetVirtualKeyState(VK_OK) == KEY_PUSH){
  38. menuMode = MENU_NAME_ENTRY;
  39. let index = page * countItemPerPage + cursorY + 1;
  40. TNameEntry(index);
  41.  
  42. break;
  43. }
  44.  
  45. if(GetVirtualKeyState(VK_UP) == KEY_PUSH || GetVirtualKeyState(VK_UP) == KEY_HOLD){
  46. frameKeyHold++;
  47. if(GetVirtualKeyState(VK_UP) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  48. cursorY--;
  49. }
  50. }else if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH || GetVirtualKeyState(VK_DOWN) == KEY_HOLD){
  51. frameKeyHold++;
  52. if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  53. cursorY++;
  54. }
  55. }else if(GetVirtualKeyState(VK_LEFT) == KEY_PUSH || GetVirtualKeyState(VK_LEFT) == KEY_HOLD){
  56. frameKeyHold++;
  57. if(GetVirtualKeyState(VK_LEFT) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  58. page--;
  59. }
  60. }else if(GetVirtualKeyState(VK_RIGHT) == KEY_PUSH || GetVirtualKeyState(VK_RIGHT) == KEY_HOLD){
  61. frameKeyHold++;
  62. if(GetVirtualKeyState(VK_RIGHT) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  63. page++;
  64. }
  65. }else{
  66. frameKeyHold = 0;
  67. }
  68.  
  69. if(page < 0){
  70. page = pageMax;
  71. }else if(page > pageMax){
  72. page = 0;
  73. }
  74.  
  75. if(page != pageMax){
  76. if(cursorY < 0){
  77. cursorY = countItemPerPage - 1;
  78. }else if(cursorY >= countItemPerPage){
  79. cursorY = 0;
  80. }
  81. }else{
  82. if(cursorY < 0){
  83. cursorY = lastPageMaxCursorY - 1;
  84. }else if(cursorY >= lastPageMaxCursorY){
  85. cursorY = 0;
  86. }
  87. }
  88.  
  89. yield;
  90. }
  91.  
  92. task TMenuItem(itemY){
  93. let objText = CreateTextObject(64, 64 + 30 * itemY, 18, "");
  94. let objSelect = CreateTextObject1(64, 64 + 30 * itemY, 18, "");
  95.  
  96. let oldPage = -1;
  97. while(menuMode == MENU_INDEX_SELECTION){
  98. if(page != oldPage){
  99. let index = page * countItemPerPage + itemY + 1;
  100. let text = rtos("00", index) ~ " ";
  101. if(IsValidReplayIndex(index)){
  102. text = text ~ vtos("-8s", GetReplayInfo(index, REPLAY_USER_NAME)) ~ " ";
  103. text = text ~ GetReplayInfo(index, REPLAY_DATE_TIME) ~ " ";
  104. text = text ~ rtos("000000000000", GetReplayInfo(index, REPLAY_TOTAL_SCORE)) ~ " ";
  105. }else{
  106. text = text ~ "No Data";
  107. }
  108. ObjText_SetText(objText, text);
  109. ObjText_SetText(objSelect, text);
  110. oldPage = page;
  111. }
  112.  
  113. if(page == pageMax && itemY >= lastPageMaxCursorY){
  114. Obj_SetVisible(objText, false);
  115. Obj_SetVisible(objSelect, false);
  116. }else{
  117. Obj_SetVisible(objText, true);
  118. Obj_SetVisible(objSelect, itemY == cursorY);
  119. }
  120.  
  121. yield;
  122. }
  123. Obj_Delete(objText);
  124. Obj_Delete(objSelect);
  125. }
  126. }
  127.  
  128. task TNameEntry(replayIndex){
  129. let wrongInd = 0;
  130. let mark =[];
  131. let Len = 0;
  132.  
  133. let strTextIn =
  134. [
  135. ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P"],
  136. ["Q","R","S","T","U","V","W","X","Y","Z",".",",",":",";","_","@"],
  137. ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"],
  138. ["q","r","s","t","u","v","w","x","y","z","+","-","/","*","=","%"],
  139. ["0","1","2","3","4","5","6","7","8","9","0","!","?","'","\"","$"],
  140. ["(",")","{","}","&osb;","&csb;","<",">","&","#","|","~","^"," "," ","Done"]
  141. ];
  142.  
  143. let strTextView =
  144. [
  145. ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P"],
  146. ["Q","R","S","T","U","V","W","X","Y","Z",".",",",":",";","_","@"],
  147. ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"],
  148. ["q","r","s","t","u","v","w","x","y","z","+","-","/","*","=","%"],
  149. ["0","1","2","3","4","5","6","7","8","9","0","!","?","'","\"","$"],
  150. ["(",")","{","}","&osb;","&csb;","<",">","&","#","|","~","^"," "," ","Done"]
  151. ];
  152.  
  153. let cursorX = 0;
  154. let cursorY = 0;
  155. let maxCursorX = length(strTextIn[0]);
  156. let maxCursorY = length(strTextIn);
  157.  
  158. ascent(let iY in 0..maxCursorY){
  159. ascent(let iX in 0 .. maxCursorX){
  160. TMenuItem(iX, iY);
  161. }
  162. }
  163.  
  164. let userName = "";
  165. let objName = CreateTextObject(160, 96, 28, "");
  166.  
  167. TNameCursor;
  168.  
  169. while(GetVirtualKeyState(VK_OK) != KEY_FREE || GetVirtualKeyState(VK_CANCEL) != KEY_FREE){yield;}
  170.  
  171. let frameKeyHold = 0;
  172. while(menuMode == MENU_NAME_ENTRY){
  173. if(GetVirtualKeyState(VK_OK) == KEY_PULL){
  174.  
  175. let nameLength = length(userName);
  176. if(cursorX == maxCursorX-1 && cursorY == maxCursorY-1){
  177. if(nameLength == 0){
  178. userName = "No Name";
  179. }else{
  180. SaveReplay(replayIndex, userName);
  181. SetScriptResult(RESULT_END);
  182. CloseScript(GetOwnScriptID());
  183. return;
  184. }
  185. }else if(Len < 8){
  186. userName = userName ~ strTextIn[cursorY][cursorX];
  187. Len ++;
  188. if(cursorX == 4 && cursorY == 5){
  189. mark = mark ~ [length(userName)];
  190. wrongInd ++;
  191. }else if(cursorX == 5 && cursorY == 5){
  192. wrongInd ++;
  193. mark = mark ~ [length(userName)];
  194. }
  195. }
  196. }
  197.  
  198. if(GetVirtualKeyState(VK_CANCEL) == KEY_PULL){
  199. if(Len > 0){
  200. Len --;
  201. }
  202.  
  203. let nameLength = length(userName);
  204. if(nameLength > 0)
  205. {
  206. if(length(mark) > 0){
  207. let i = 0;
  208. loop(length(mark)){
  209. if(nameLength == mark[i]){
  210. let number = 1;
  211. loop(5){
  212. userName = erase(userName, nameLength - number);
  213. number ++;
  214. }
  215. mark = erase(mark, length(mark) - 1);
  216. wrongInd --;
  217. }
  218. i ++;
  219. }
  220. }else{
  221. userName = erase(userName, nameLength - 1);
  222. }
  223. }
  224. }
  225.  
  226. ObjText_SetText(objName, userName);
  227.  
  228. if(GetVirtualKeyState(VK_UP) == KEY_PUSH || GetVirtualKeyState(VK_UP) == KEY_HOLD){
  229. frameKeyHold++;
  230. if(GetVirtualKeyState(VK_UP) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  231. cursorY--;
  232. }
  233. }
  234. else if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH || GetVirtualKeyState(VK_DOWN) == KEY_HOLD){
  235. frameKeyHold++;
  236. if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  237. cursorY++;
  238. }
  239. }
  240. else if(GetVirtualKeyState(VK_LEFT) == KEY_PUSH || GetVirtualKeyState(VK_LEFT) == KEY_HOLD){
  241. frameKeyHold++;
  242. if(GetVirtualKeyState(VK_LEFT) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  243. cursorX--;
  244. }
  245. }
  246. else if(GetVirtualKeyState(VK_RIGHT) == KEY_PUSH || GetVirtualKeyState(VK_RIGHT) == KEY_HOLD){
  247. frameKeyHold++;
  248. if(GetVirtualKeyState(VK_RIGHT) == KEY_PUSH || frameKeyHold == 20 || (frameKeyHold > 20 && (frameKeyHold % 10 == 0))){
  249. cursorX++;
  250. }
  251. }else{
  252. frameKeyHold = 0;
  253. }
  254.  
  255. if(cursorX < 0){
  256. cursorX = maxCursorX-1;
  257. }else if(cursorX >= maxCursorX){
  258. cursorX = 0;
  259. }
  260.  
  261. if(cursorY < 0){
  262. cursorY = maxCursorY-1;
  263. }else if(cursorY >= maxCursorY){
  264. cursorY = 0;
  265. }
  266.  
  267. yield;
  268. }
  269.  
  270. task TMenuItem(itemX, itemY){
  271. let objText = CreateTextObject(120 + itemX * 24, 200 + itemY * 24, 22, strTextView[itemY][itemX]);
  272. let objSelect = CreateTextObject(120 + itemX * 24, 200 + itemY * 24, 22, strTextView[itemY][itemX]);
  273. ObjRender_SetBlendType(objSelect, BLEND_ADD_RGB);
  274.  
  275. while(menuMode == MENU_NAME_ENTRY){
  276. Obj_SetVisible(objSelect, itemX == cursorX && itemY == cursorY);
  277. yield;
  278. }
  279. Obj_Delete(objText);
  280. Obj_Delete(objSelect);
  281. }
  282.  
  283. task TNameCursor{
  284. let objCursor = CreateTextObject(0, 96, 28, "_");
  285. while(menuMode == MENU_NAME_ENTRY){
  286. let nameLength = length(userName) - 4*wrongInd;
  287. ObjRender_SetX(objCursor, 160 + nameLength * 17);
  288. Obj_SetVisible(objCursor, Len < 8);
  289. yield;
  290. }
  291. Obj_Delete(objCursor);
  292. }
  293. }
  294.  
  295. function CreateTextObject(mx, my, size, text){
  296. let obj = ObjText_Create();
  297. ObjText_SetText(obj, text);
  298. ObjText_SetFontSize(obj, size);
  299. ObjText_SetFontBold(obj, true);
  300. ObjText_SetFontColorTop(obj, 100, 100, 100);
  301. ObjText_SetFontColorBottom(obj, 100, 100, 100);
  302. ObjText_SetFontBorderType(obj, BORDER_FULL);
  303. ObjText_SetFontBorderColor(obj,0, 0, 0);
  304. ObjText_SetFontBorderWidth(obj, 1);
  305. Obj_SetRenderPriorityI(obj, 10);
  306. ObjRender_SetX(obj, mx);
  307. ObjRender_SetY(obj, my);
  308. return obj;
  309. }
  310.  
  311. function CreateTextObject1(mx, my, size, text){
  312. let obj = ObjText_Create();
  313. ObjText_SetText(obj, text);
  314. ObjText_SetFontSize(obj, size);
  315. ObjText_SetFontBold(obj, true);
  316. ObjText_SetFontColorTop(obj, 255, 255, 255);
  317. ObjText_SetFontColorBottom(obj, 255, 255, 255);
  318. ObjText_SetFontBorderType(obj, BORDER_FULL);
  319. ObjText_SetFontBorderColor(obj,0, 0, 0);
  320. ObjText_SetFontBorderWidth(obj, 1);
  321. Obj_SetRenderPriorityI(obj, 10);
  322. ObjRender_SetX(obj, mx);
  323. ObjRender_SetY(obj, my);
  324. return obj;
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement