Aleks11

Labirinth v.0.1|Vinny

Nov 20th, 2011
589
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. //--------------------------------------------------------------------------------------------------
  2. //--------------------------------------------------------------------------------------------------
  3. //--------------------------------------Labirinth v.0.1---------------------------------------------
  4. //--------------------------------------------------------------------------------------------------
  5. //------------------------------------------By Vinny------------------------------------------------
  6. //--------------------------------------------------------------------------------------------------
  7. #include <a_samp>
  8.  
  9. #define makeeven(%1) (%1 & 0xFE)
  10. #define myrand(%1) (%1?random(%1):0)
  11. #define myevenrand(%1) (myrand(%1) & 0xFE)
  12. #define evenmax(%1) (%1 & 0xFE)
  13. #define evenaverage(%1) ((evenmax(%1)/2)&0xFE)
  14. #define myoddrand(%1) (myrand(%1) | 0x01)
  15.  
  16. new a[256*16], cycle = 0, nobj = 0;
  17.  
  18. public OnPlayerCommandText(playerid, cmdtext[]) {
  19. if (!strcmp(cmdtext, "/creat")) {
  20. nobj = 4;
  21. CreateObject(4938, 3500.0, 0.0, 10.0, 0.0, 0.0, 0.0);
  22. CreateObject(4938, 3500.0+180, 0-180.0, 10.0, 0.0, 0.0, 0.0);
  23. CreateObject(4938, 3500.0, 0.0-180.0, 10.0, 0.0, 0.0, 0.0);
  24. CreateObject(4938, 3500.0+180.0, 0.0, 10.0, 0.0, 0.0, 0.0);
  25. createLab(3405, 80, 30, 58, 80);
  26. printf("%d", nobj);
  27. return 1;
  28. }
  29. if (!strcmp(cmdtext, "/ts")) {
  30. SetPlayerPos(playerid, 3410.0, 90.0, 12.0);
  31. CreateVehicle(522, 3405.0, 88.0, 12.0, 0.0, -1, -1, 99999);
  32. return 1;
  33. }
  34. if (!strcmp(cmdtext, "/c1")) {
  35. SetPlayerCameraPos(playerid, 3500.0, 0.0, 200.0);
  36. SetPlayerCameraLookAt(playerid, 3500.0, 5.0, 0.0);
  37. return 1;
  38. }
  39. if (!strcmp(cmdtext, "/c2")) {
  40. SetPlayerCameraPos(playerid, 3500.0+180.0, -180.0, 200.0);
  41. SetPlayerCameraLookAt(playerid, 3500.0+180.0, -180.0+5.0, 0.0);
  42. return 1;
  43. }
  44. if (!strcmp(cmdtext, "/c3")) {
  45. SetPlayerCameraPos(playerid, 3500.0, 0.0-180.0, 200.0);
  46. SetPlayerCameraLookAt(playerid, 3500.0, 0.0-180.0+5.0, 0.0);
  47. return 1;
  48. }
  49. if (!strcmp(cmdtext, "/c4")) {
  50. SetPlayerCameraPos(playerid, 3500.0+180.0, 0.0, 200.0);
  51. SetPlayerCameraLookAt(playerid, 3500.0+180.0, 5.0, 0.0);
  52. return 1;
  53. }
  54. if (!strcmp(cmdtext, "/cr")) {
  55. SetCameraBehindPlayer(playerid);
  56. return 1;
  57. }
  58. return 0;
  59. }
  60.  
  61. public OnFilterScriptExit() {
  62. for (new i=0;i <= nobj;i++)
  63. DestroyObject(i);
  64. }
  65.  
  66. stock createLab(x, y, w, h, len) {
  67. new size;
  68. len = (len == 0)?70:len;
  69. h++; w++;
  70. size = h * w;
  71. cycle = 0;
  72. for (new i=0;i < 256*16;i++)
  73. a[i] = 0;
  74. createborder(size, w, h);
  75. createdoors(size,w);
  76. new i = 0, z = 0;
  77. cycle += size + size / 2;
  78. while (getrandom(w,h, i) > 0) {
  79. if (a[i] == 1) continue;
  80. z = getdirection(w);
  81. do {
  82. if (a[i] == 0) a[i] = 1;
  83. i += z;
  84. if (random(100) > len) break;
  85. } while (a[i] == 0);
  86. }
  87. new tx = x;
  88. for (i = 0;i < size;i++) {
  89. if (i > 0 && i % w == 0) {
  90. y -= 6;
  91. x = tx;
  92. }
  93. if (a[i] == 1 && nobj < MAX_OBJECTS) {
  94. CreateObject(16096, x, y, 12.5, 0.0, 0.0, 0.0, 400.0);
  95. nobj++;
  96. }
  97. x += 6;
  98. }
  99. }
  100.  
  101. stock createborder(size, w, h) {
  102. for (new i=0;i < size; i++) {
  103. if ((i < w) ||
  104. (i % w == 0) ||
  105. (i % w == (w - 1)) ||
  106. (i > w * (h - 1)))
  107. a[i] = 1;
  108. }
  109. }
  110.  
  111. stock createdoors(size, w) {
  112. new t;
  113. do{ t = oddbetween(0,w); }while(t == 0 || t == w);
  114. a[t] = 0x2F;
  115. do{ t = oddbetween(size - w, size); }while(t == size || a[t] == 0);
  116. a[t] = 0x2F;
  117. }
  118.  
  119. stock getdirection(w) {
  120. new z = random(4);
  121. return ((z == 0)?-1:(z==1)?1:(z==2)?w:-w);
  122. }
  123.  
  124. stock oddbetween(n1, n2) {
  125. new t = myoddrand(n2);
  126. return ((t > n1)?t:oddbetween(n1, n2));
  127. }
  128.  
  129. stock evenbetween(n1, n2) {
  130. new t = myevenrand(n2);
  131. return ((t > n1)?t:evenbetween(n1, n2));
  132. }
  133.  
  134. stock getrandom(w, h, &x) {
  135. new row = evenbetween(0, h),
  136. col = evenbetween(0, w);
  137. x = w * row + col;
  138. if ((x % w) % 2 != 0)
  139. getrandom(w, h, x);
  140. return cycle--;
  141. }
  142.  
Advertisement
Add Comment
Please, Sign In to add comment