Advertisement
Guest User

Untitled

a guest
Feb 18th, 2018
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.08 KB | None | 0 0
  1. dialog <- {
  2. active = null,
  3. texture = Texture(0, 0, 500, 500, "DLG_CONVERSATION.TGA"),
  4. draw = {},
  5. text = {},
  6. maxPosition = 6,
  7. drawPosition = 0,
  8. position = 0
  9. }
  10.  
  11. function dialog::create(id, ...){
  12. if(active!=null) destroy();
  13. setFreeze(true);
  14. draw[0] <- Draw(0, 0, "QWERTYUIOPASDFGHJKLZXCVBNM");
  15.  
  16. local textureHeight = 0,
  17. textureY = getResolution().y/2-textureHeight,
  18. drawHeight = draw[0].heightPx;
  19.  
  20. if(vargv.len()>=maxPosition) textureHeight = drawHeight*maxPosition;
  21. else textureHeight = drawHeight*vargv.len();
  22.  
  23. draw.rawdelete([0]);
  24. texture.setPositionPx(0, textureY);
  25. texture.setSizePx(getResolution().x, textureHeight);
  26. texture.visible = true;
  27.  
  28. local longestDraw = 0;
  29.  
  30. for(local i = 0; i<vargv.len(); ++i){
  31. text[i] <- vargv[i];
  32. if(i<maxPosition){
  33. draw[i] <- Draw(0, 0, vargv[i]);
  34. if(draw[i].widthPx>longestDraw) longestDraw = draw[i].widthPx;
  35. }
  36. }
  37.  
  38. local resolutionXHalf = (getResolution().x/2)-(longestDraw/2);
  39. for(local i = 0; i<draw.len(); ++i){
  40. draw[i].setPositionPx(resolutionXHalf, texture.getPositionPx().y+(drawHeight*i));
  41. draw[i].visible = true;
  42. }
  43.  
  44. draw[0].setColor(255, 255, 0);
  45. active = id;
  46. }
  47.  
  48. function dialog::update(id, text)
  49. {
  50. draw[id].text = text;
  51. }
  52.  
  53. function dialog::destroy(){
  54. texture.visible = false;
  55. for(local i = 0; i<draw.len(); ++i){
  56. draw[i].visible = false;
  57. }
  58. if(position!=0 && position<maxPosition) draw[position].setColor(255, 255, 255);
  59. drawPosition = 0;
  60. position = 0;
  61. draw.clear();
  62. text.clear();
  63. active = null;
  64. setFreeze(false);
  65. }
  66.  
  67. function dialog::switcher(select){
  68. draw[drawPosition].setColor(255, 255, 255);
  69. if(select){
  70. position++;
  71. if(drawPosition<(maxPosition-1)) drawPosition++;
  72. else if(position>=maxPosition && drawPosition==(maxPosition-1)){
  73. for(local i = 0; i<maxPosition; i++){
  74. draw[i].text = text[(position-maxPosition+i)+1];
  75. }
  76. }
  77. }
  78. else{
  79. if(drawPosition==0){
  80. for(local i = 0; i<maxPosition; i++){
  81. draw[i].text = text[(position+i)-1];
  82. }
  83. }
  84. position--;
  85. if(drawPosition>0) drawPosition--;
  86. }
  87. draw[drawPosition].setColor(255, 255, 0);
  88. }
  89.  
  90. function dialog::show(id, ...){
  91. switch(id){
  92. case 0:
  93. Chat.print(194, 178, 128, "Zarejestrowano konto. Wybierz płeć postaci.");
  94. create(0, "Mężczyzna", "Kobieta");
  95. break;
  96. case 1:
  97. Chat.print(194, 178, 128, "Wybierz kolor skóry.");
  98. create(1, "Biały", "Biały opalony", "Latynoski", "Czarny");
  99. break;
  100. case 2: create(2, "Punkty trafień", "Siła", "Zręczność", "Broń jednoręczna", "Broń dwuręczna", "Łucznictwo",
  101. "Kusznictwo", "Opuść"); break;
  102. case 3: create(3, "Ryba 2 szt. zł.", "Chleb 3 szt. zł.", "Miód 5 szt. zł", "Ser 5 szt. zł.", "Opuść"); break;
  103. case 4: create(4, "Mikstura szybkości 3 szt. zł.", "Esencja lecznicza 15 szt. zł.", "Eliksir leczniczy 25 szt. zł", "Podwójny Młot 25 szt. zł", "Opuść"); break;
  104. case 5: create(5, "Strój obywatela 100 szt. zł.", "Skórzany pancerz 220 szt. zł", "Pancerz Diega 600 szt. zł.", "Zbroja magnata 12000 szt. zł", "Zbroja z pancerzy pełzaczy 13000 szt. zł", "Opuść"); break;
  105. case 6: create(6, "Laga 12 szt. zł.", "Zardzewiały topór 110 szt. zł.", "Nóż na wilki 170 szt. zł.", "Zardzewiały miecz dwuręczny 800 szt. zł", "Dobry krótki miecz 1200 szt. zł", "Miażdżydeska 9500 szt. zł.", "Kordelas 10000 szt. zł.", "Opuść"); break;
  106. case 7: create(7, "25 strzał 25 szt. zł.", "25 bełtów 25 szt. zł.", "Krótki łuk 70 szt. zł.", "Kusza myśliwska 90 szt. zł.", "Opuść"); break;
  107. case 8: create(8, "Zdeponuj przedmiot", "Odbierz przedmiot", "Opuść"); break;
  108. case 9:
  109. local eq = getEq(), i = 0, func = "create(9,";
  110. if(eq.len()>0){
  111. foreach(item in eq){
  112. if(i<30) func += format("\"%s - %d sztuk\",", item.instance.toupper(), item.amount);
  113. else break;
  114. ++i;
  115. }
  116. func += "\"Opuść\");";
  117. local compiledScript = compilestring(func);
  118. compiledScript();
  119. }else{
  120. Chat.print(192, 192, 192, ">Nie posiadasz więcej itemów w ekwipunku.");
  121. dialog.destroy();
  122. }
  123. break;
  124. case 10:
  125. local deposit = split(vargv[0], "."), eq, func = "create(10,";
  126. for(local i = 0; i<deposit.len(); ++i){
  127. eq = split(deposit[i], ":");
  128. func += format("\"%s - %s sztuk\",", Items.name(eq[0].tointeger()), eq[1]);
  129. }
  130. func += "\"Opuść\");";
  131. local compiledScript = compilestring(func);
  132. compiledScript();
  133. break;
  134. case 11: create(11, "Krótki miecz straży 100 szt. zł.", "Lekki pancerz straży 700 szt. zł.", "Ciężki pancerz straży 13500 szt. zł.", "Opuść"); break;
  135. case 12: create(12, "Miecz paladyna 9700 szt. zł.", "Miecz dwuręczny paladyna 12000 szt. zł.", "Pancerz rycerza 20000 szt. zł", "Pancerz paladyna 35000 szt. zł.", "Opuść"); break;
  136. case 13: create(13, "Rejestracja", "Zaloguj", "Wyjdź z Gry"); break;
  137. case 14: create(14, "Nick : ", "Hasło : ", "Zatwierdź" ,"Wróć"); break;
  138. case 15: create(15, "Nick : ", "Hasło : ", "Zatwierdź" ,"Wróć"); break;
  139. case 16:
  140. Chat.print(194, 178, 128, "Wybierz rase.");
  141. create(16, "Człowiek", "Krasnolud", "Elf");
  142. break;
  143. }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement