call.pwn 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. public OnFilterScriptInit() {
  2. for(new objectid = 1; objectid <= MAX_OBJECTS; objectid ++) {
  3. if( !IsValidObject(objectid) ) {
  4. continue;
  5. }
  6. if( GetModelName(GetObjectModel(objectid), g_CommentString, sizeof g_CommentString) ) {
  7. strpack(g_ObjectData[objectid-1][OBJECT_DATA_COMMENT], g_CommentString, sizeof g_CommentString); // Set Object Comment
  8. }
  9. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] = MAX_MATERIALINDEX_MODCOUNT;
  10. for(new materialindex; materialindex < MAX_OBJECT_INDEX; materialindex ++) {
  11. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_NONE;
  12. }
  13. }
  14. #if defined obj_OnFilterScriptInit
  15. obj_OnFilterScriptInit();
  16. #endif
  17. }
  18. #if defined _ALS_OnFilterScriptInit
  19. #undef OnFilterScriptInit
  20. #else
  21. #define _ALS_OnFilterScriptInit
  22. #endif
  23. #define OnFilterScriptInit obj_OnFilterScriptInit
  24. #if defined obj_OnFilterScriptInit
  25. forward obj_OnFilterScriptInit();
  26. #endif
  27. public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ) {
  28. if( type == SELECT_OBJECT_GLOBAL_OBJECT && IsValidObject(objectid) ) {
  29. CancelEdit(playerid);
  30. g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_OBJECT;
  31. g_PlayerData[playerid][PLAYER_DATA_EDIT_ID] = objectid;
  32. ShowObjectDialog(playerid, DIALOGID_OBJECT_MAIN);
  33. }
  34. #if defined obj_OnPlayerSelectObject
  35. return obj_OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ);
  36. #else
  37. return 0;
  38. #endif
  39. }
  40. #if defined _ALS_OnPlayerSelectObject
  41. #undef OnPlayerSelectObject
  42. #else
  43. #define _ALS_OnPlayerSelectObject
  44. #endif
  45. #define OnPlayerSelectObject obj_OnPlayerSelectObject
  46. #if defined obj_OnPlayerSelectObject
  47. forward obj_OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ);
  48. #endif
  49. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
  50. if( !playerobject && objectid == GetPlayerEditObject(playerid) ) {
  51. switch(response) {
  52. case EDIT_RESPONSE_FINAL: {
  53. SetObjectPos(objectid, fX, fY, fZ);
  54. SetObjectRot(objectid, fRotX, fRotY, fRotZ);
  55. ShowObjectDialog(playerid, DIALOGID_OBJECT_MAIN);
  56. }
  57. case EDIT_RESPONSE_CANCEL: {
  58. SetObjectPos(objectid, g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_X], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_Y], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_Z]);
  59. SetObjectRot(objectid, g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_RX], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_RY], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_RZ]);
  60. ShowObjectDialog(playerid, DIALOGID_OBJECT_MAIN);
  61. }
  62. case EDIT_RESPONSE_UPDATE: {
  63. SetObjectPos(objectid, fX, fY, fZ);
  64. SetObjectRot(objectid, fRotX, fRotY, fRotZ);
  65. }
  66. }
  67. }
  68. #if defined obj_OnPlayerEditObject
  69. return obj_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
  70. #else
  71. return 0;
  72. #endif
  73. }
  74. #if defined _ALS_OnPlayerEditObject
  75. #undef OnPlayerEditObject
  76. #else
  77. #define _ALS_OnPlayerEditObject
  78. #endif
  79. #define OnPlayerEditObject obj_OnPlayerEditObject
  80. #if defined obj_OnPlayerEditObject
  81. forward obj_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
  82. #endif
  83. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  84. switch(dialogid) {
  85. case DIALOGID_OBJECT_MAIN: {
  86. new objectid = GetPlayerEditObject(playerid);
  87. if( !IsValidObject(objectid) ) {
  88. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  89. }
  90. if( !response ) {
  91. return 1;
  92. }
  93. switch(listitem) {
  94. case LISTITEM_OBJECT_GOTO: {
  95. new Float:x, Float:y, Float:z;
  96. GetObjectPos(objectid, x, y, z);
  97. if( g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] ) {
  98. StopPlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID]);
  99. SetPlayerObjectPos(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID], x, y, z);
  100. } else {
  101. SetPlayerPos(playerid, x, y, z);
  102. }
  103. }
  104. case LISTITEM_OBJECT_GET: {
  105. new Float:x, Float:y, Float:z;
  106. GetPlayerPos(playerid, x, y, z);
  107. SetObjectPos(objectid, x, y, z);
  108. }
  109. case LISTITEM_OBJECT_COORD: {
  110. return ShowObjectDialog(playerid, DIALOGID_OBJECT_COORD), 1;
  111. }
  112. case LISTITEM_OBJECT_MOVE: {
  113. if( g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_IDTYPE] == ID_TYPE_NONE ) {
  114. GetObjectPos(objectid, g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_X], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_Y], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_Z]);
  115. GetObjectRot(objectid, g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_RX], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_RY], g_ObjectData[objectid-1][OBJECT_DATA_MEMORY_RZ]);
  116. EditObject(playerid, objectid);
  117. SendClientMessage(playerid, RGBA_ORANGE, "Click & Drag Edit: {FFFFFF}Hold ~k~~PED_SPRINT~ to look around and press ESC to cancel.");
  118. } else {
  119. CancelSelectTextDraw(playerid);
  120. ToggleOffsetEdit(playerid, true);
  121. }
  122. return 1;
  123. }
  124. case LISTITEM_OBJECT_ATTACH_SELECT: {
  125. g_PlayerData[playerid][PLAYER_DATA_EDIT_ATTACHOBJECT] = objectid;
  126. }
  127. case LISTITEM_OBJECT_ATTACH_APPLY: {
  128. new attach_objectid = g_PlayerData[playerid][PLAYER_DATA_EDIT_ATTACHOBJECT];
  129. if( IsValidObject(attach_objectid) && attach_objectid != objectid ) {
  130. g_ObjectData[attach_objectid-1][OBJECT_DATA_ATTACH_IDTYPE] = ID_TYPE_OBJECT;
  131. g_ObjectData[attach_objectid-1][OBJECT_DATA_ATTACH_ID] = objectid;
  132. ApplyObjectAttachData(attach_objectid);
  133. g_PlayerData[playerid][PLAYER_DATA_EDIT_ATTACHOBJECT] = INVALID_OBJECT_ID;
  134. g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_OBJECT;
  135. g_PlayerData[playerid][PLAYER_DATA_EDIT_ID] = attach_objectid;
  136. }
  137. }
  138. case LISTITEM_OBJECT_ATTACH_REMOVE: {
  139. new new_objectid = RecreateObject(objectid, .copy_attachto = false);
  140. if( new_objectid == INVALID_OBJECT_ID ) {
  141. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be unattached / re-created!");
  142. }
  143. }
  144. case LISTITEM_OBJECT_MATERIALS_COPY: {
  145. g_PlayerData[playerid][PLAYER_DATA_EDIT_MATERIALOBJ] = objectid;
  146. }
  147. case LISTITEM_OBJECT_MATERIALS_PASTE: {
  148. new copy_from_objectid = g_PlayerData[playerid][PLAYER_DATA_EDIT_MATERIALOBJ];
  149. if( IsValidObject(copy_from_objectid) && copy_from_objectid != objectid ) {
  150. for(new matidx; matidx < MAX_OBJECT_INDEX; matidx ++) {
  151. DefaultObjectMaterialIndexData(objectid, matidx);
  152. MigrateObjectMaterialIndexData(copy_from_objectid, objectid, matidx);
  153. }
  154. new new_objectid = RecreateObject(objectid);
  155. if( new_objectid == INVALID_OBJECT_ID ) {
  156. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be textured / texted / re-created!");
  157. }
  158. }
  159. }
  160. case LISTITEM_OBJECT_DUPLICATE: {
  161. new new_objectid = CopyObject(objectid);
  162. if( new_objectid == INVALID_OBJECT_ID ) {
  163. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be duplicated!");
  164. } else {
  165. if( !CopyObjectAttachments(objectid, new_objectid) ) {
  166. SendClientMessage(playerid, RGBA_RED, "WARNING: All attachments could not be duplicated!");
  167. }
  168. g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_OBJECT;
  169. g_PlayerData[playerid][PLAYER_DATA_EDIT_ID] = new_objectid;
  170. }
  171. }
  172. case LISTITEM_OBJECT_RECREATE: {
  173. new new_objectid = RecreateObject(objectid);
  174. if( new_objectid == INVALID_OBJECT_ID ) {
  175. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be re-created!");
  176. }
  177. }
  178. case LISTITEM_OBJECT_REMOVE: {
  179. DestroyObject(objectid);
  180. return 1;
  181. }
  182. case LISTITEM_OBJECT_COMMENT: {
  183. return ShowObjectDialog(playerid, DIALOGID_OBJECT_COMMENT), 1;
  184. }
  185. case LISTITEM_OBJECT_COMMENT_RESET: {
  186. GetModelName(GetObjectModel(objectid), g_CommentString, sizeof g_CommentString);
  187. strpack(g_ObjectData[objectid-1][OBJECT_DATA_COMMENT], g_CommentString, MAX_COMMENT_LEN+1); // Set Object Comment
  188. }
  189. case LISTITEM_OBJECT_INDEX_START..LISTITEM_OBJECT_INDEX_END: {
  190. g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX] = (listitem - LISTITEM_OBJECT_INDEX_START);
  191. return ShowObjectDialog(playerid, DIALOGID_OBJECT_INDEX), 1;
  192. }
  193. }
  194. return ShowObjectDialog(playerid, dialogid), 1;
  195. }
  196. case DIALOGID_OBJECT_COORD: {
  197. new objectid = GetPlayerEditObject(playerid);
  198. if( !IsValidObject(objectid) ) {
  199. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  200. }
  201. if(!response) {
  202. return ShowObjectDialog(playerid, DIALOGID_OBJECT_MAIN), 1;
  203. }
  204. new cmd[10], Float:value;
  205. if(sscanf(inputtext, "s[10]f", cmd, value)) {
  206. return ShowObjectDialog(playerid, dialogid), 1;
  207. }
  208. new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;
  209. switch( g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_IDTYPE] ) {
  210. case ID_TYPE_OBJECT, ID_TYPE_VEHICLE: {
  211. x = g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_X];
  212. y = g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Y];
  213. z = g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Z];
  214. rx = g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RX];
  215. ry = g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RY];
  216. rz = g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RZ];
  217. }
  218. default: {
  219. GetObjectPos(objectid, x, y, z);
  220. GetObjectRot(objectid, rx, ry, rz);
  221. }
  222. }
  223. if(!strcmp(cmd, "x", true)) {
  224. x = value;
  225. } else if(!strcmp(cmd, "y", true)) {
  226. y = value;
  227. } else if(!strcmp(cmd, "z", true)) {
  228. z = value;
  229. } else if(!strcmp(cmd, "rx", true)) {
  230. rx = value;
  231. } else if(!strcmp(cmd, "ry", true)) {
  232. ry = value;
  233. } else if(!strcmp(cmd, "rz", true)) {
  234. rz = value;
  235. } else {
  236. return ShowObjectDialog(playerid, dialogid), 1;
  237. }
  238. switch( g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_IDTYPE] ) {
  239. case ID_TYPE_OBJECT, ID_TYPE_VEHICLE: {
  240. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_X] = x;
  241. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Y] = y;
  242. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Z] = z;
  243. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RX] = rx;
  244. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RY] = ry;
  245. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RZ] = rz;
  246. ApplyObjectAttachData(objectid);
  247. }
  248. default: {
  249. SetObjectPos(objectid, x, y, z);
  250. SetObjectRot(objectid, rx, ry, rz);
  251. }
  252. }
  253. return ShowObjectDialog(playerid, dialogid), 1;
  254. }
  255. case DIALOGID_OBJECT_COMMENT: {
  256. new objectid = GetPlayerEditObject(playerid);
  257. if( !IsValidObject(objectid) ) {
  258. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  259. }
  260. if(!response) {
  261. ShowObjectDialog(playerid, DIALOGID_OBJECT_MAIN);
  262. } else {
  263. strpack(g_ObjectData[objectid-1][OBJECT_DATA_COMMENT], inputtext, MAX_COMMENT_LEN+1); // Set Object Comment
  264. ShowObjectDialog(playerid, dialogid);
  265. }
  266. return 1;
  267. }
  268. case DIALOGID_OBJECT_INDEX: {
  269. new objectid = GetPlayerEditObject(playerid);
  270. if( !IsValidObject(objectid) ) {
  271. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  272. }
  273. if(!response) {
  274. return ShowObjectDialog(playerid, DIALOGID_OBJECT_MAIN), 1;
  275. }
  276. switch(listitem) {
  277. case LISTITEM_OINDEX_REMOVE: {
  278. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][ g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX] ] = MATERIALINDEX_TYPE_NONE;
  279. new new_objectid = RecreateObject(objectid);
  280. if( new_objectid == INVALID_OBJECT_ID ) {
  281. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be materialindex reset / re-created!");
  282. }
  283. }
  284. case LISTITEM_OINDEX_MAT: {
  285. SelectTextDraw(playerid, SELECT_TD_COLOR);
  286. return ShowPlayerTextdrawMode(playerid, TDMODE_TEXTURELIST), 1;
  287. }
  288. case LISTITEM_OINDEX_MAT_COLOR_S: {
  289. SelectTextDraw(playerid, SELECT_TD_COLOR);
  290. return ShowPlayerTextdrawMode(playerid, TDMODE_COLORLIST_TEXTURE), 1;
  291. }
  292. case LISTITEM_OINDEX_MAT_COLOR_A: {
  293. return ShowObjectDialog(playerid, DIALOGID_COLORALPHA_TEXTURE), 1;
  294. }
  295. case LISTITEM_OINDEX_MAT_COLOR_R: {
  296. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  297. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXTURE ) {
  298. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXTURE;
  299. DefaultObjectMaterialIndexData(objectid, materialindex);
  300. }
  301. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_COLOR][materialindex] = 0x0;
  302. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  303. new new_objectid = RecreateObject(objectid);
  304. if( new_objectid == INVALID_OBJECT_ID ) {
  305. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be color reset / re-created!");
  306. }
  307. } else {
  308. ApplyObjectMaterialIndexData(objectid, materialindex);
  309. }
  310. }
  311. case LISTITEM_OINDEX_TXT: {
  312. return ShowObjectDialog(playerid, DIALOGID_OBJECT_TEXT), 1;
  313. }
  314. case LISTITEM_OINDEX_TXT_MATSIZE: {
  315. return ShowObjectDialog(playerid, DIALOGID_OBJECT_MATSIZE), 1;
  316. }
  317. case LISTITEM_OINDEX_TXT_FONTFACE: {
  318. SelectTextDraw(playerid, SELECT_TD_COLOR);
  319. return ShowPlayerTextdrawMode(playerid, TDMODE_FONTLIST), 1;
  320. }
  321. case LISTITEM_OINDEX_TXT_FONTSIZE: {
  322. return ShowObjectDialog(playerid, DIALOGID_OBJECT_FONTSIZE), 1;
  323. }
  324. case LISTITEM_OINDEX_TXT_ISBOLD: {
  325. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  326. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  327. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  328. DefaultObjectMaterialIndexData(objectid, materialindex);
  329. }
  330. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_ISBOLD][materialindex] = !g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_ISBOLD][materialindex];
  331. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  332. new new_objectid = RecreateObject(objectid);
  333. if( new_objectid == INVALID_OBJECT_ID ) {
  334. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be texted / re-created!");
  335. }
  336. } else {
  337. ApplyObjectMaterialIndexData(objectid, materialindex);
  338. }
  339. }
  340. case LISTITEM_OINDEX_TXT_ALIGN: {
  341. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  342. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  343. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  344. DefaultObjectMaterialIndexData(objectid, materialindex);
  345. }
  346. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_ALIGNMENT][materialindex] ++;
  347. if( !IsValidMaterialAlignment(g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_ALIGNMENT][materialindex]) ) {
  348. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_ALIGNMENT][materialindex] = 0;
  349. }
  350. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  351. new new_objectid = RecreateObject(objectid);
  352. if( new_objectid == INVALID_OBJECT_ID ) {
  353. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be texted / re-created!");
  354. }
  355. } else {
  356. ApplyObjectMaterialIndexData(objectid, materialindex);
  357. }
  358. }
  359. case LISTITEM_OINDEX_TXT_FONTCOLOR_S: {
  360. SelectTextDraw(playerid, SELECT_TD_COLOR);
  361. return ShowPlayerTextdrawMode(playerid, TDMODE_COLORLIST_FONTFACE), 1;
  362. }
  363. case LISTITEM_OINDEX_TXT_FONTCOLOR_A: {
  364. return ShowObjectDialog(playerid, DIALOGID_COLORALPHA_FONTFACE), 1;
  365. }
  366. case LISTITEM_OINDEX_TXT_BACKCOLOR_S: {
  367. SelectTextDraw(playerid, SELECT_TD_COLOR);
  368. return ShowPlayerTextdrawMode(playerid, TDMODE_COLORLIST_FONTBACK), 1;
  369. }
  370. case LISTITEM_OINDEX_TXT_BACKCOLOR_O: {
  371. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  372. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  373. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  374. DefaultObjectMaterialIndexData(objectid, materialindex);
  375. }
  376. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_COLOR][materialindex] = SetARGBAlpha(g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_COLOR][materialindex], 0xFF);
  377. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  378. new new_objectid = RecreateObject(objectid);
  379. if( new_objectid == INVALID_OBJECT_ID ) {
  380. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be colored / re-created!");
  381. }
  382. } else {
  383. ApplyObjectMaterialIndexData(objectid, materialindex);
  384. }
  385. }
  386. case LISTITEM_OINDEX_TXT_BACKCOLOR_T: {
  387. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  388. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  389. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  390. DefaultObjectMaterialIndexData(objectid, materialindex);
  391. }
  392. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_COLOR][materialindex] = 0x0;
  393. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  394. new new_objectid = RecreateObject(objectid);
  395. if( new_objectid == INVALID_OBJECT_ID ) {
  396. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be texted / re-created!");
  397. }
  398. } else {
  399. ApplyObjectMaterialIndexData(objectid, materialindex);
  400. }
  401. }
  402. }
  403. return ShowObjectDialog(playerid, dialogid), 1;
  404. }
  405. case DIALOGID_OBJECT_MATSIZE: {
  406. new objectid = GetPlayerEditObject(playerid);
  407. if( !IsValidObject(objectid) ) {
  408. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  409. }
  410. if(!response) {
  411. return ShowObjectDialog(playerid, DIALOGID_OBJECT_INDEX), 1;
  412. }
  413. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  414. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  415. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  416. DefaultObjectMaterialIndexData(objectid, materialindex);
  417. }
  418. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_SIZE][materialindex] = (listitem + 1) * 10;
  419. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  420. new new_objectid = RecreateObject(objectid);
  421. if( new_objectid == INVALID_OBJECT_ID ) {
  422. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be texted / re-created!");
  423. }
  424. } else {
  425. ApplyObjectMaterialIndexData(objectid, materialindex);
  426. }
  427. return ShowObjectDialog(playerid, dialogid), 1;
  428. }
  429. case DIALOGID_OBJECT_TEXT: {
  430. new objectid = GetPlayerEditObject(playerid);
  431. if( !IsValidObject(objectid) ) {
  432. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  433. }
  434. if(!response) {
  435. return ShowObjectDialog(playerid, DIALOGID_OBJECT_INDEX), 1;
  436. }
  437. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  438. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  439. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  440. DefaultObjectMaterialIndexData(objectid, materialindex);
  441. }
  442. strpack(g_ObjectText[objectid-1][materialindex], inputtext, MAX_OBJECT_TEXT+1);
  443. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  444. new new_objectid = RecreateObject(objectid);
  445. if( new_objectid == INVALID_OBJECT_ID ) {
  446. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be texted / re-created!");
  447. }
  448. } else {
  449. ApplyObjectMaterialIndexData(objectid, materialindex);
  450. }
  451. return ShowObjectDialog(playerid, dialogid), 1;
  452. }
  453. case DIALOGID_OBJECT_FONTSIZE: {
  454. new objectid = GetPlayerEditObject(playerid);
  455. if( !IsValidObject(objectid) ) {
  456. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  457. }
  458. if(!response) {
  459. return ShowObjectDialog(playerid, DIALOGID_OBJECT_INDEX), 1;
  460. }
  461. new fontsize;
  462. if( sscanf(inputtext, "i", fontsize) ) {
  463. SendClientMessage(playerid, RGBA_RED, "ERROR: You did not enter a numeric value into the textfield!");
  464. return ShowObjectDialog(playerid, dialogid), 1;
  465. }
  466. if( fontsize < 0 || fontsize > MAX_OBJECT_FONTSIZE ) {
  467. SendClientMessage(playerid, RGBA_RED, "ERROR: You did not enter a valid fontsize into the textfield!");
  468. return ShowObjectDialog(playerid, dialogid), 1;
  469. }
  470. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  471. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  472. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  473. DefaultObjectMaterialIndexData(objectid, materialindex);
  474. }
  475. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_FONTSIZE][materialindex] = fontsize;
  476. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  477. new new_objectid = RecreateObject(objectid);
  478. if( new_objectid == INVALID_OBJECT_ID ) {
  479. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be texted / re-created!");
  480. }
  481. } else {
  482. ApplyObjectMaterialIndexData(objectid, materialindex);
  483. }
  484. return ShowObjectDialog(playerid, dialogid), 1;
  485. }
  486. case DIALOGID_COLORALPHA_TEXTURE, DIALOGID_COLORALPHA_FONTFACE: {
  487. new objectid = GetPlayerEditObject(playerid);
  488. if( !IsValidObject(objectid) ) {
  489. return 1;
  490. }
  491. if( !response ) {
  492. return ShowObjectDialog(playerid, DIALOGID_OBJECT_INDEX), 1;
  493. }
  494. new alpha;
  495. if( sscanf(inputtext, "i", alpha) && sscanf(inputtext, "h", alpha) ) {
  496. SendClientMessage(playerid, RGBA_RED, "ERROR: You must enter a decimal or hexadecimal value!");
  497. return ShowObjectDialog(playerid, dialogid), 1;
  498. }
  499. if( alpha < 0x00 || alpha > 0xFF ) {
  500. SendClientMessage(playerid, RGBA_RED, "ERROR: You must enter a value between 0 - 255!");
  501. return ShowObjectDialog(playerid, dialogid), 1;
  502. }
  503. new materialindex = g_PlayerData[playerid][PLAYER_DATA_EDIT_OBJMATIDX];
  504. if( !IsValidMaterialIndex(materialindex) ) {
  505. return 1;
  506. }
  507. switch( dialogid ) {
  508. case DIALOGID_COLORALPHA_TEXTURE: {
  509. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXTURE ) {
  510. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXTURE;
  511. DefaultObjectMaterialIndexData(objectid, materialindex);
  512. }
  513. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_COLOR][materialindex] = SetARGBAlpha(g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_COLOR][materialindex], alpha);
  514. }
  515. case DIALOGID_COLORALPHA_FONTFACE: {
  516. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] != MATERIALINDEX_TYPE_TEXT ) {
  517. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_TYPE][materialindex] = MATERIALINDEX_TYPE_TEXT;
  518. DefaultObjectMaterialIndexData(objectid, materialindex);
  519. }
  520. g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_FONTCOLOR][materialindex] = SetARGBAlpha(g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_FONTCOLOR][materialindex], alpha);
  521. }
  522. }
  523. if( g_ObjectData[objectid-1][OBJECT_DATA_MATINDEX_MODCOUNT] >= MAX_MATERIALINDEX_MODCOUNT ) {
  524. new new_objectid = RecreateObject(objectid);
  525. if( new_objectid == INVALID_OBJECT_ID ) {
  526. SendClientMessage(playerid, RGBA_RED, "ERROR: This object could not be colored / re-created!");
  527. }
  528. } else {
  529. ApplyObjectMaterialIndexData(objectid, materialindex);
  530. }
  531. return ShowObjectDialog(playerid, dialogid), 1;
  532. }
  533. }
  534. #if defined obj_OnDialogResponse
  535. return obj_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
  536. #else
  537. return 0;
  538. #endif
  539. }
  540. #if defined _ALS_OnDialogResponse
  541. #undef OnDialogResponse
  542. #else
  543. #define _ALS_OnDialogResponse
  544. #endif
  545. #define OnDialogResponse obj_OnDialogResponse
  546. #if defined obj_OnDialogResponse
  547. forward obj_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  548. #endif