Advertisement
ShomyScript

Untitled

Mar 6th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.07 KB | None | 0 0
  1. #include < a_samp >
  2. #include < YSI\y_ini >
  3. #include < YSI\y_commands >
  4. #include < sscanf2 >
  5.  
  6. enum {
  7.  
  8. DIALOG_AKTORPANEL,
  9. DIALOG_KREIRAJAKTORA1,
  10. DIALOG_KREIRAJAKTORA2,
  11. DIALOG_AKTORANIMACIJA,
  12. DIALOG_IZMENIAKTORA,
  13. DIALOG_IZMENIPOZICIJU,
  14. DIALOG_IZMENIANIMACIJU,
  15. DIALOG_IZMENISKIN,
  16. DIALOG_IZMENIIME,
  17. DIALOG_IZBRISIAKTORA,
  18. DIALOG_BRISANJEAKTORA
  19. }
  20.  
  21. #define AKTOR_FILE "/Aktori/%d.ini"
  22. #define MAX_AKTORI 300
  23.  
  24. enum AKTOR_INFO {
  25.  
  26. Float:aktorX,
  27. Float:aktorY,
  28. Float:aktorZ,
  29. Float:aktorA,
  30. aktorskin,
  31. aktorime[ 40 ],
  32. aktoranimacija,
  33. aktorid
  34. }
  35.  
  36. new AktorInfo[ MAX_AKTORI ][ AKTOR_INFO ], KreiraAktora[ MAX_PLAYERS ], Text3D:AktorLabel[ sizeof(AktorInfo) ];
  37.  
  38. public OnFilterScriptInit() {
  39.  
  40. print("===========================\n\n- Aktor system by Shomy -\n- Ucitan -\n\n===========================");
  41. for(new i; i < MAX_AKTORI; i++) {
  42. new jFile[ 50 ], str[ 40 ];
  43. format(jFile, sizeof(jFile), AKTOR_FILE, i);
  44. if(fexist(jFile)) {
  45. INI_ParseFile(jFile, "LoadActors", .bExtra = true, .extra = i);
  46. format(str, sizeof(str), "%s", AktorInfo[ i ][ aktorime ]);
  47. AktorInfo[ i ][ aktorid ] = CreateActor(AktorInfo[ i ][ aktorskin ], AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ], AktorInfo[ i ][ aktorZ ], AktorInfo[ i ][ aktorA ]);
  48. AktorLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ], AktorInfo[ i ][ aktorZ ], 10.0, 0);
  49. switch(AktorInfo[ i ][ aktoranimacija ]) {
  50. case 1: {
  51. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"BEACH", "bather", 4.0, 1, 0, 0, 0, 0);
  52. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"BEACH", "bather", 4.0, 1, 0, 0, 0, 0);
  53. }
  54. case 2: {
  55. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"INT_OFFICE","OFF_Sit_Type_Loop", 4.0, 1, 0, 0, 0, 0);
  56. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"INT_OFFICE","OFF_Sit_Type_Loop", 4.0, 1, 0, 0, 0, 0);
  57. }
  58. case 3: {
  59. ApplyActorAnimation(AktorInfo[ i ][ aktorid ], "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1);
  60. ApplyActorAnimation(AktorInfo[ i ][ aktorid ], "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1);
  61. }
  62. }
  63. }
  64. }
  65. return 1;
  66. }
  67.  
  68. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  69.  
  70. if(dialogid == DIALOG_AKTORPANEL) {
  71. if(!response) return 1;
  72. switch(listitem) {
  73. case 0: return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
  74. case 1: return ShowPlayerDialog(playerid, DIALOG_AKTORANIMACIJA, DIALOG_STYLE_LIST, "{0077C7}ANIMACIJA {FFFFFF}AKTORA", "Lezanje\nSedenje\nCross arms", "Izaberi", "Izlaz");
  75. case 2: return ShowPlayerDialog(playerid, DIALOG_IZMENIAKTORA, DIALOG_STYLE_LIST, "{0077C7}IZMENI {FFFFFF}AKTORA", "Promeni poziciju\nPromeni skin\nPromeni ime\nPromeni animaciju", "Izaberi", "Izlaz");
  76. case 3: return ShowPlayerDialog(playerid, DIALOG_IZBRISIAKTORA, DIALOG_STYLE_LIST, "{0077C7}IZBRISI {FFFFFF}AKTORA", "Najblizeg aktora\nID aktora", "Izaberi", "Izlaz");
  77. }
  78. }
  79. else if(dialogid == DIALOG_KREIRAJAKTORA1) {
  80. if(!response) return 1;
  81. new skinid, i = NextAktorID(MAX_AKTORI), Float:X, Float:Y, Float:Z, Float:A;
  82. if(sscanf(inputtext, "d", skinid)) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
  83. if(skinid > 311) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{FF1414}NEPOSTOJECI ID SKINA {FFFFFF}(0-311)", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
  84. GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, A);
  85. AktorInfo[ i ][ aktorX ] = X; AktorInfo[ i ][ aktorY ] = Y; AktorInfo[ i ][ aktorZ ] = Z; AktorInfo[ i ][ aktorA ] = A;
  86. AktorInfo[ i ][ aktorskin ] = skinid;
  87. AktorInfo[ i ][ aktoranimacija ] = 0;
  88. KreiraAktora[ playerid ] = i;
  89. ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA2, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ime aktora.\nPrimer: Shomy", "U redu", "Izlaz");
  90. }
  91. else if(dialogid == DIALOG_KREIRAJAKTORA2) {
  92. if(!response) return 1;
  93. new aktornick[ 40 ], str[ 56 ], i = KreiraAktora[ playerid ];
  94. if(sscanf(inputtext, "s[40]", aktornick)) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA2, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ime aktora.\nPrimer: Shomy", "U redu", "Izlaz");
  95. AktorInfo[ i ][ aktorime ] = aktornick;
  96. AktorInfo[ i ][ aktorid ] = CreateActor(AktorInfo[ i ][ aktorskin ], AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ], AktorInfo[ i ][ aktorZ ], AktorInfo[ i ][ aktorA ]);
  97. SetPlayerPos(playerid, AktorInfo[ i ][ aktorX ]+2, AktorInfo[ i ][ aktorY ]+2, AktorInfo[ i ][ aktorZ ]);
  98. format(str, sizeof(str), "%s {0077C7}[ID %d]", aktornick, i);
  99. AktorLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ], AktorInfo[ i ][ aktorZ ]+1.0, 10.0, 0);
  100. SaveAktor(i);
  101. SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Ukoliko zelite da dodate aktoru animaciju - {0077C7}/aktorpanel");
  102. }
  103. else if(dialogid == DIALOG_IZMENIAKTORA) {
  104. if(!response) return 1;
  105. switch(listitem) {
  106. case 0: return ShowPlayerDialog(playerid, DIALOG_IZMENIPOZICIJU, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}POZICIJE", "Unesite ID aktora.", "U redu", "Izlaz");
  107. case 1: return ShowPlayerDialog(playerid, DIALOG_IZMENISKIN, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}SKINA", "Unesite ID skina.\n{FF1414}NAPOMENA: {FFFFFF}Menja skin aktoru najblizem Vama.", "U redu", "Izlaz");
  108. case 2: return ShowPlayerDialog(playerid, DIALOG_IZMENIIME, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}IMENA", "Unesite novo ime.\n{FF1414}NAPOMENA: {FFFFFF}Menja ime aktoru najblizem Vama.", "U redu", "Izlaz");
  109. case 3: return ShowPlayerDialog(playerid, DIALOG_IZMENIANIMACIJU, DIALOG_STYLE_LIST, "{0077C7}Menja animaciju aktoru najblizem Vama", "Animacija 1\n Animacija 2\nAnimacija 3", "Izaberi","Izlaz");
  110. }
  111. }
  112. else if(dialogid == DIALOG_IZMENIPOZICIJU) {
  113. if(!response) return 1;
  114. new i, Float:X, Float:Y, Float:Z, Float:A, str[ 60 ];
  115. if(sscanf(inputtext, "d", i)) return ShowPlayerDialog(playerid, DIALOG_IZMENIPOZICIJU, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}POZICIJE", "Unesite ID aktora.", "U redu", "Izlaz");
  116. GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, A);
  117. SetPlayerPos(playerid, X+2, Y+2, Z);
  118. SetActorPos(AktorInfo[ i ][ aktorid ], X, Y, Z);
  119. SetActorFacingAngle(AktorInfo[ i ][ aktorid ], A);
  120. Delete3DTextLabel(AktorLabel[ i ]);
  121. format(str, sizeof(str), "%s {0077C7}[ID %d]", AktorInfo[ i ][ aktorime ], i);
  122. AktorLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z+1.0, 10.0, 0);
  123. AktorInfo[ i ][ aktorX ] = X; AktorInfo[ i ][ aktorY ] = Y; AktorInfo[ i ][ aktorZ ] = Z; AktorInfo[ i ][ aktorA ] = A;
  124. SaveAktor(i);
  125. SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Uspesno ste promenili poziciju aktoru.");
  126. }
  127. else if(dialogid == DIALOG_IZMENISKIN) {
  128. if(!response) return 1;
  129. new skinid, i = GetNearestAktor(playerid);
  130. if(i == -1) return SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Niste blizu aktora.");
  131. if(sscanf(inputtext, "d", skinid)) return ShowPlayerDialog(playerid, DIALOG_IZMENISKIN, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}SKINA", "Unesite ID skina.\n{FF1414}NAPOMENA: {FFFFFF}Menja skin aktoru najblizem Vama.", "U redu", "Izlaz");
  132. if(skinid > 311) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{FF1414}NEPOSTOJECI ID SKINA {FFFFFF}(0-311)", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
  133. DestroyActor(AktorInfo[ i ][ aktorid ]);
  134. AktorInfo[ i ][ aktorid ] = CreateActor(skinid, AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ] , AktorInfo[ i ][ aktorZ ], AktorInfo[ i ][ aktorA ]);
  135. AktorInfo[ i ][ aktorskin ] = skinid;
  136. SaveAktor(i);
  137. SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Uspesno ste promenili skin aktoru.");
  138. }
  139. else if(dialogid == DIALOG_IZMENIIME) {
  140. if(!response) return 1;
  141. new actime[ 40 ], str[ 60 ], i = GetNearestAktor(playerid);
  142. if(i == -1) return SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Niste blizu aktora.");
  143. if(sscanf(inputtext, "s[40]", actime)) return ShowPlayerDialog(playerid, DIALOG_IZMENIIME, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}IMENA", "Unesite novo ime.\n{FF1414}NAPOMENA: {FFFFFF}Menja ime aktoru najblizem Vama.", "U redu", "Izlaz");
  144. format(str, sizeof(str), "%s {0077C7}[ID %d]", actime, i);
  145. Update3DTextLabelText(AktorLabel[ i ], 0xFFFFFFFF, str);
  146. AktorInfo[ i ][ aktorime ] = actime;
  147. SaveAktor(i);
  148. SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Uspesno ste promenili ime aktoru.");
  149. }
  150. else if(dialogid == DIALOG_IZBRISIAKTORA) {
  151. if(!response) return 1;
  152. switch(listitem) {
  153. case 0: {
  154. if(GetNearestAktor(playerid) == -1) return SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Niste blizu aktora.");
  155. new i = GetNearestAktor(playerid), aktorFile[ 60 ], str[ 60 ];
  156. DestroyActor(AktorInfo[ i ][ aktorid ]);
  157. Delete3DTextLabel(AktorLabel[ i ]);
  158. AktorInfo[ i ][ aktorX ] = 0.0; AktorInfo[ i ][ aktorY ] = 0.0; AktorInfo[ i ][ aktorZ ] = 0.0; AktorInfo[ i ][ aktorA ] = 0.0;
  159. format(str, sizeof(str), "[AKTOR SYSTEM] {FFFFFF}Uspesno ste obrisali aktora ID %d.", i);
  160. SendClientMessage(playerid, 0x0077C7FF, str);
  161. format(aktorFile, sizeof(aktorFile), AKTOR_FILE, i);
  162. if(fexist(aktorFile)) { fremove(aktorFile); }
  163. }
  164. case 1: return ShowPlayerDialog(playerid, DIALOG_BRISANJEAKTORA, DIALOG_STYLE_INPUT, "{0077C7}BRISANJE {FFFFFF}AKTORA", "Unesite ID aktora.","U redu","Izlaz");
  165. }
  166. }
  167. else if(dialogid == DIALOG_BRISANJEAKTORA) {
  168. if(!response) return 1;
  169. new i, str[ 60 ], aktorFile[ 60 ];
  170. if(sscanf(inputtext, "%d", i)) return ShowPlayerDialog(playerid, DIALOG_BRISANJEAKTORA, DIALOG_STYLE_INPUT, "{0077C7}BRISANJE {FFFFFF}AKTORA", "Unesite ID aktora.","U redu","Izlaz");
  171. DestroyActor(AktorInfo[ i ][ aktorid ]);
  172. Delete3DTextLabel(AktorLabel[ i ]);
  173. AktorInfo[ i ][ aktorX ] = 0.0; AktorInfo[ i ][ aktorY ] = 0.0; AktorInfo[ i ][ aktorZ ] = 0.0; AktorInfo[ i ][ aktorA ] = 0.0;
  174. format(str, sizeof(str), "[AKTOR SYSTEM] {FFFFFF}Uspesno ste obrisali aktora ID %d.", i);
  175. SendClientMessage(playerid, 0x0077C7FF, str);
  176. format(aktorFile, sizeof(aktorFile), AKTOR_FILE, i);
  177. if(fexist(aktorFile)) { fremove(aktorFile); }
  178. }
  179. else if(dialogid == DIALOG_AKTORANIMACIJA) {
  180. if(!response) return 1;
  181. new i = GetNearestAktor(playerid);
  182. if(i == -1) return SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Niste blizu aktora.");
  183. switch(listitem) {
  184. case 0: {
  185. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"BEACH", "bather", 4.0, 1, 0, 0, 0, 0);
  186. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"BEACH", "bather", 4.0, 1, 0, 0, 0, 0);
  187. AktorInfo[ i ][ aktoranimacija ] = 1;
  188. SaveAktor(i);
  189. }
  190. case 1: {
  191. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"INT_OFFICE","OFF_Sit_Type_Loop", 4.0, 1, 0, 0, 0, 0);
  192. ApplyActorAnimation(AktorInfo[ i ][ aktorid ],"INT_OFFICE","OFF_Sit_Type_Loop", 4.0, 1, 0, 0, 0, 0);
  193. AktorInfo[ i ][ aktoranimacija ] = 2;
  194. SaveAktor(i);
  195. }
  196. case 2: {
  197. ApplyActorAnimation(AktorInfo[ i ][ aktorid ], "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1);
  198. ApplyActorAnimation(AktorInfo[ i ][ aktorid ], "COP_AMBIENT", "Coplook_loop", 4.0, 0, 1, 1, 1, -1);
  199. AktorInfo[ i ][ aktoranimacija ] = 3;
  200. SaveAktor(i);
  201. }
  202. }
  203. }
  204. return 1;
  205. }
  206.  
  207. YCMD:aktorpanel(playerid, params[], help) {
  208.  
  209. #pragma unused help
  210. #pragma unused params
  211.  
  212. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste ulogovani kao RCON admin.");
  213. ShowPlayerDialog(playerid, DIALOG_AKTORPANEL, DIALOG_STYLE_LIST, "{0077C7}AKTOR {FFFFFF}PANEL", "Kreiraj aktora\nDodaj aktoru animaciju\nIzmeni aktora\nIzbrisi aktora","Izaberi","Izlaz");
  214. return 1;
  215. }
  216. GetNearestAktor( playerid ) {
  217. for( new b = 1; b < sizeof(AktorInfo); b++) {
  218. if( IsPlayerInRangeOfPoint( playerid, 4.0, AktorInfo[ b ][ aktorX ], AktorInfo[ b ][ aktorY ], AktorInfo[ b ][ aktorZ ] ) ) return b; }
  219. return -1;
  220. }
  221. stock NextAktorID(const len) {
  222. new id = (-1);
  223. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  224. provjera = ( loop+1 );
  225. format( Data_, ( sizeof Data_ ), AKTOR_FILE, provjera );
  226. if(!fexist(Data_)) {
  227. id = ( provjera );
  228. break; } }
  229. return ( id );
  230. }
  231. stock SaveAktor(id) {
  232. new aktorFile[ 60 ];
  233. format(aktorFile, sizeof(aktorFile), AKTOR_FILE, id);
  234. new INI:File = INI_Open(aktorFile);
  235. INI_WriteString(File, "Ime", AktorInfo[ id ][ aktorime ]);
  236. INI_WriteFloat(File, "Lokacija_X", AktorInfo[ id ][ aktorX ]);
  237. INI_WriteFloat(File, "Lokacija_Y", AktorInfo[ id ][ aktorY ]);
  238. INI_WriteFloat(File, "Lokacija_Z", AktorInfo[ id ][ aktorZ ]);
  239. INI_WriteFloat(File, "Rotacija_A", AktorInfo[ id ][ aktorA ]);
  240. INI_WriteInt(File, "Skin", AktorInfo[ id ][ aktorskin ]);
  241. INI_Close(File);
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement