doors.pwn 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Dynamic Door System
  11. Next Generation Gaming, LLC
  12. (created by Next Generation Gaming Development Team)
  13. * Copyright (c) 2016, Next Generation Gaming, LLC
  14. *
  15. * All rights reserved.
  16. *
  17. * Redistribution and use in source and binary forms, with or without modification,
  18. * are not permitted in any case.
  19. *
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  24. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  25. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  26. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  27. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  28. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  29. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  30. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  31. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. */
  33. #include <YSI\y_hooks>
  34. hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  35. if(arrAntiCheat[playerid][ac_iFlags][AC_DIALOGSPOOFING] > 0) return 1;
  36. if(dialogid == DOORLOCK)
  37. {
  38. if(response)
  39. {
  40. new i = GetPVarInt(playerid, "Door");
  41. if(isnull(inputtext)) return SendClientMessage(playerid, COLOR_GREY, "You did not enter anything" );
  42. if(strlen(inputtext) > 24) return SendClientMessageEx(playerid, COLOR_GREY, "The password can not be greater than 24 characters.");
  43. if(strcmp(inputtext, DDoorsInfo[i][ddPass], true) == 0)
  44. {
  45. if(DDoorsInfo[i][ddLocked] == 0)
  46. {
  47. DDoorsInfo[i][ddLocked] = 1;
  48. SendClientMessageEx(playerid, COLOR_WHITE, "Password accepted, doors locked.");
  49. }
  50. else
  51. {
  52. DDoorsInfo[i][ddLocked] = 0;
  53. SendClientMessageEx(playerid, COLOR_WHITE, "Password accepted, doors unlocked.");
  54. }
  55. SaveDynamicDoor(i);
  56. }
  57. else SendClientMessageEx(playerid, COLOR_WHITE, "Password declined.");
  58. }
  59. }
  60. return 0;
  61. }
  62. stock CreateDynamicDoor(doorid)
  63. {
  64. if(IsValidDynamicPickup(DDoorsInfo[doorid][ddPickupID])) DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  65. if(IsValidDynamicPickup(DDoorsInfo[doorid][ddPickupID_int])) DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID_int]);
  66. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  67. if(IsValidDynamicArea(DDoorsInfo[doorid][ddAreaID])) DestroyDynamicArea(DDoorsInfo[doorid][ddAreaID]);
  68. if(IsValidDynamicArea(DDoorsInfo[doorid][ddAreaID_int])) DestroyDynamicArea(DDoorsInfo[doorid][ddAreaID_int]);
  69. if(DDoorsInfo[doorid][ddExteriorX] == 0.0) return 1;
  70. new string[128];
  71. if(DDoorsInfo[doorid][ddType] != 0) format(string, sizeof(string), "%s | Owner: %s\nID: %d", DDoorsInfo[doorid][ddDescription], StripUnderscore(DDoorsInfo[doorid][ddOwnerName]), doorid);
  72. else format(string, sizeof(string), "%s\nID: %d", DDoorsInfo[doorid][ddDescription], doorid);
  73. switch(DDoorsInfo[doorid][ddColor])
  74. {
  75. case -1:{ /* Disable 3d Textdraw */ }
  76. case 1:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWWHITE, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  77. case 2:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWPINK, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  78. case 3:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWRED, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  79. case 4:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWBROWN, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  80. case 5:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWGRAY, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  81. case 6:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWOLIVE, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  82. case 7:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWPURPLE, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  83. case 8:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWORANGE, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  84. case 9:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWAZURE, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  85. case 10:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWGREEN, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  86. case 11:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWBLUE, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  87. case 12:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_TWBLACK, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  88. default:{DDoorsInfo[doorid][ddTextID] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]+1,10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], -1);}
  89. }
  90. switch(DDoorsInfo[doorid][ddPickupModel])
  91. {
  92. case -1: { /* Disable Pickup */ }
  93. case 1:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1210, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  94. case 2:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1212, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  95. case 3:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1239, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  96. case 4:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1240, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  97. case 5:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1241, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  98. case 6:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1242, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  99. case 7:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1247, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  100. case 8:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1248, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  101. case 9:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1252, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  102. case 10:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1253, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  103. case 11:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1254, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  104. case 12:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1313, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  105. case 13:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1272, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  106. case 14:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1273, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  107. case 15:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1274, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  108. case 16:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1275, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  109. case 17:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1276, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  110. case 18:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1277, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  111. case 19:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1279, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  112. case 20:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1314, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  113. case 21:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1316, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  114. case 22:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1317, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  115. case 23:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1559, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  116. case 24:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1582, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  117. case 25:{DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(2894, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);}
  118. default:
  119. {
  120. DDoorsInfo[doorid][ddPickupID] = CreateDynamicPickup(1318, 23, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddExteriorVW]);
  121. }
  122. }
  123. DDoorsInfo[doorid][ddPickupID_int] = CreateDynamicPickup(1559, 23, DDoorsInfo[doorid][ddInteriorX], DDoorsInfo[doorid][ddInteriorY], DDoorsInfo[doorid][ddInteriorZ], DDoorsInfo[doorid][ddInteriorVW]);
  124. DDoorsInfo[doorid][ddAreaID] = CreateDynamicSphere(DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], 2.5, .worldid = DDoorsInfo[doorid][ddExteriorVW], .interiorid = DDoorsInfo[doorid][ddExteriorInt]);
  125. DDoorsInfo[doorid][ddAreaID_int] = CreateDynamicSphere(DDoorsInfo[doorid][ddInteriorX], DDoorsInfo[doorid][ddInteriorY], DDoorsInfo[doorid][ddInteriorZ], 2.5, .worldid = DDoorsInfo[doorid][ddInteriorVW], .interiorid = DDoorsInfo[doorid][ddInteriorInt]);
  126. Streamer_SetIntData(STREAMER_TYPE_AREA, DDoorsInfo[doorid][ddAreaID], E_STREAMER_EXTRA_ID, doorid);
  127. Streamer_SetIntData(STREAMER_TYPE_AREA, DDoorsInfo[doorid][ddAreaID_int], E_STREAMER_EXTRA_ID, doorid);
  128. format(szMiscArray, sizeof(szMiscArray), "[DDoor] Created Door: %d | Exterior Area ID: %d | Interior Area ID: %d", doorid, DDoorsInfo[doorid][ddAreaID], DDoorsInfo[doorid][ddAreaID_int]);
  129. Log("debug/door_ddoor.log", szMiscArray);
  130. return 1;
  131. }
  132. stock SaveDynamicDoor(doorid)
  133. {
  134. new string[1024];
  135. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `ddoors` SET \
  136. `Description`='%e', \
  137. `Owner`=%d, \
  138. `OwnerName`='%e', \
  139. `CustomInterior`=%d, \
  140. `ExteriorVW`=%d, \
  141. `ExteriorInt`=%d, \
  142. `InteriorVW`=%d, \
  143. `InteriorInt`=%d, \
  144. `ExteriorX`=%f, \
  145. `ExteriorY`=%f, \
  146. `ExteriorZ`=%f, \
  147. `ExteriorA`=%f, \
  148. `InteriorX`=%f, \
  149. `InteriorY`=%f, \
  150. `InteriorZ`=%f, \
  151. `InteriorA`=%f,",
  152. DDoorsInfo[doorid][ddDescription],
  153. DDoorsInfo[doorid][ddOwner],
  154. DDoorsInfo[doorid][ddOwnerName],
  155. DDoorsInfo[doorid][ddCustomInterior],
  156. DDoorsInfo[doorid][ddExteriorVW],
  157. DDoorsInfo[doorid][ddExteriorInt],
  158. DDoorsInfo[doorid][ddInteriorVW],
  159. DDoorsInfo[doorid][ddInteriorInt],
  160. DDoorsInfo[doorid][ddExteriorX],
  161. DDoorsInfo[doorid][ddExteriorY],
  162. DDoorsInfo[doorid][ddExteriorZ],
  163. DDoorsInfo[doorid][ddExteriorA],
  164. DDoorsInfo[doorid][ddInteriorX],
  165. DDoorsInfo[doorid][ddInteriorY],
  166. DDoorsInfo[doorid][ddInteriorZ],
  167. DDoorsInfo[doorid][ddInteriorA]
  168. );
  169. mysql_format(MainPipeline, string, sizeof(string), "%s \
  170. `CustomExterior`=%d, \
  171. `Type`=%d, \
  172. `Rank`=%d, \
  173. `VIP`=%d, \
  174. `Famed`=%d, \
  175. `DPC`=%d, \
  176. `Allegiance`=%d, \
  177. `GroupType`=%d, \
  178. `Faction`=%d, \
  179. `Admin`=%d, \
  180. `Wanted`=%d, \
  181. `VehicleAble`=%d, \
  182. `Color`=%d, \
  183. `PickupModel`=%d, \
  184. `Pass`='%e', \
  185. `Locked`=%d, \
  186. `LastLogin`=%d, \
  187. `Expire`=%d, \
  188. `Inactive`=%d, \
  189. `Ignore`=%d, \
  190. `Counter`=%d \
  191. WHERE `id`=%d",
  192. string,
  193. DDoorsInfo[doorid][ddCustomExterior],
  194. DDoorsInfo[doorid][ddType],
  195. DDoorsInfo[doorid][ddRank],
  196. DDoorsInfo[doorid][ddVIP],
  197. DDoorsInfo[doorid][ddFamed],
  198. DDoorsInfo[doorid][ddDPC],
  199. DDoorsInfo[doorid][ddAllegiance],
  200. DDoorsInfo[doorid][ddGroupType],
  201. DDoorsInfo[doorid][ddFaction],
  202. DDoorsInfo[doorid][ddAdmin],
  203. DDoorsInfo[doorid][ddWanted],
  204. DDoorsInfo[doorid][ddVehicleAble],
  205. DDoorsInfo[doorid][ddColor],
  206. DDoorsInfo[doorid][ddPickupModel],
  207. DDoorsInfo[doorid][ddPass],
  208. DDoorsInfo[doorid][ddLocked],
  209. DDoorsInfo[doorid][ddLastLogin],
  210. DDoorsInfo[doorid][ddExpire],
  211. DDoorsInfo[doorid][ddInactive],
  212. DDoorsInfo[doorid][ddIgnore],
  213. DDoorsInfo[doorid][ddCounter],
  214. doorid+1
  215. ); // Array starts from zero, MySQL starts at 1 (this is why we are adding one).
  216. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  217. }
  218. stock LoadDynamicDoor(doorid)
  219. {
  220. new string[128];
  221. mysql_format(MainPipeline, string, sizeof(string), "SELECT * FROM `ddoors` WHERE `id`=%d", doorid+1); // Array starts at zero, MySQL starts at 1.
  222. mysql_tquery(MainPipeline, string, "OnLoadDynamicDoor", "i", doorid);
  223. }
  224. stock LoadDynamicDoors()
  225. {
  226. printf("[LoadDynamicDoors] Loading data from database...");
  227. mysql_tquery(MainPipeline, "SELECT * FROM `ddoors`", "OnLoadDynamicDoors", "");
  228. }
  229. forward OnLoadDynamicDoor(index);
  230. public OnLoadDynamicDoor(index)
  231. {
  232. new rows;
  233. cache_get_row_count(rows);
  234. for(new row; row < rows; row++)
  235. {
  236. cache_get_value_name_int(row, "id", DDoorsInfo[index][ddSQLId]);
  237. cache_get_value_name(row, "Description", DDoorsInfo[index][ddDescription], 128);
  238. cache_get_value_name_int(row, "Owner", DDoorsInfo[index][ddOwner]);
  239. cache_get_value_name(row, "OwnerName", DDoorsInfo[index][ddOwnerName], 42);
  240. cache_get_value_name_int(row, "CustomExterior", DDoorsInfo[index][ddCustomExterior]);
  241. cache_get_value_name_int(row, "CustomInterior", DDoorsInfo[index][ddCustomInterior]);
  242. cache_get_value_name_int(row, "ExteriorVW", DDoorsInfo[index][ddExteriorVW]);
  243. cache_get_value_name_int(row, "ExteriorInt", DDoorsInfo[index][ddExteriorInt]);
  244. cache_get_value_name_int(row, "InteriorVW", DDoorsInfo[index][ddInteriorVW]);
  245. cache_get_value_name_int(row, "InteriorInt", DDoorsInfo[index][ddInteriorInt]);
  246. cache_get_value_name_float(row, "ExteriorX", DDoorsInfo[index][ddExteriorX]);
  247. cache_get_value_name_float(row, "ExteriorY", DDoorsInfo[index][ddExteriorY]);
  248. cache_get_value_name_float(row, "ExteriorZ", DDoorsInfo[index][ddExteriorZ]);
  249. cache_get_value_name_float(row, "ExteriorA", DDoorsInfo[index][ddExteriorA]);
  250. cache_get_value_name_float(row, "InteriorX", DDoorsInfo[index][ddInteriorX]);
  251. cache_get_value_name_float(row, "InteriorY", DDoorsInfo[index][ddInteriorY]);
  252. cache_get_value_name_float(row, "InteriorZ", DDoorsInfo[index][ddInteriorZ]);
  253. cache_get_value_name_float(row, "InteriorA", DDoorsInfo[index][ddInteriorA]);
  254. cache_get_value_name_int(row, "Type", DDoorsInfo[index][ddType]);
  255. cache_get_value_name_int(row, "Rank", DDoorsInfo[index][ddRank]);
  256. cache_get_value_name_int(row, "VIP", DDoorsInfo[index][ddVIP]);
  257. cache_get_value_name_int(row, "Famed", DDoorsInfo[index][ddFamed]);
  258. cache_get_value_name_int(row, "DPC", DDoorsInfo[index][ddDPC]);
  259. cache_get_value_name_int(row, "Allegiance", DDoorsInfo[index][ddAllegiance]);
  260. cache_get_value_name_int(row, "GroupType", DDoorsInfo[index][ddGroupType]);
  261. cache_get_value_name_int(row, "Faction", DDoorsInfo[index][ddFaction]);
  262. cache_get_value_name_int(row, "Admin", DDoorsInfo[index][ddAdmin]);
  263. cache_get_value_name_int(row, "Wanted", DDoorsInfo[index][ddWanted]);
  264. cache_get_value_name_int(row, "VehicleAble", DDoorsInfo[index][ddVehicleAble]);
  265. cache_get_value_name_int(row, "Color", DDoorsInfo[index][ddColor]);
  266. cache_get_value_name_int(row, "PickupModel", DDoorsInfo[index][ddPickupModel]);
  267. cache_get_value_name(row, "Pass", DDoorsInfo[index][ddPass], 24);
  268. cache_get_value_name_int(row, "Locked", DDoorsInfo[index][ddLocked]);
  269. cache_get_value_name_int(row, "LastLogin", DDoorsInfo[index][ddLastLogin]);
  270. cache_get_value_name_int(row, "Expire", DDoorsInfo[index][ddExpire]);
  271. cache_get_value_name_int(row, "Inactive", DDoorsInfo[index][ddInactive]);
  272. cache_get_value_name_int(row, "Ignore", DDoorsInfo[index][ddIgnore]);
  273. cache_get_value_name_int(row, "Counter", DDoorsInfo[index][ddCounter]);
  274. if(DDoorsInfo[index][ddExteriorX] != 0.0) CreateDynamicDoor(index);
  275. }
  276. return 1;
  277. }
  278. forward OnLoadDynamicDoors();
  279. public OnLoadDynamicDoors()
  280. {
  281. new i, rows;
  282. cache_get_row_count(rows);
  283. while(i < rows)
  284. {
  285. /*DDoorsInfo[i][ddSQLId] = cache_get_field_content_int(i, "id", MainPipeline);
  286. cache_get_field_content(i, "Description", DDoorsInfo[i][ddDescription], MainPipeline, 128);
  287. DDoorsInfo[i][ddOwner] = cache_get_field_content_int(i, "Owner", MainPipeline);
  288. cache_get_field_content(i, "OwnerName", DDoorsInfo[i][ddOwnerName], MainPipeline, 42);
  289. DDoorsInfo[i][ddCustomExterior] = cache_get_field_content_int(i, "CustomExterior", MainPipeline);
  290. DDoorsInfo[i][ddCustomInterior] = cache_get_field_content_int(i, "CustomInterior", MainPipeline);
  291. DDoorsInfo[i][ddExteriorVW] = cache_get_field_content_int(i, "ExteriorVW", MainPipeline);
  292. DDoorsInfo[i][ddExteriorInt] = cache_get_field_content_int(i, "ExteriorInt", MainPipeline);
  293. DDoorsInfo[i][ddInteriorVW] = cache_get_field_content_int(i, "InteriorVW", MainPipeline);
  294. DDoorsInfo[i][ddInteriorInt] = cache_get_field_content_int(i, "InteriorInt", MainPipeline);
  295. DDoorsInfo[i][ddExteriorX] = cache_get_field_content_float(i, "ExteriorX", MainPipeline);
  296. DDoorsInfo[i][ddExteriorY] = cache_get_field_content_float(i, "ExteriorY", MainPipeline);
  297. DDoorsInfo[i][ddExteriorZ] = cache_get_field_content_float(i, "ExteriorZ", MainPipeline);
  298. DDoorsInfo[i][ddExteriorA] = cache_get_field_content_float(i, "ExteriorA", MainPipeline);
  299. DDoorsInfo[i][ddInteriorX] = cache_get_field_content_float(i, "InteriorX", MainPipeline);
  300. DDoorsInfo[i][ddInteriorY] = cache_get_field_content_float(i, "InteriorY", MainPipeline);
  301. DDoorsInfo[i][ddInteriorZ] = cache_get_field_content_float(i, "InteriorZ", MainPipeline);
  302. DDoorsInfo[i][ddInteriorA] = cache_get_field_content_float(i, "InteriorA", MainPipeline);
  303. DDoorsInfo[i][ddType] = cache_get_field_content_int(i, "Type",MainPipeline);
  304. DDoorsInfo[i][ddRank] = cache_get_field_content_int(i, "Rank", MainPipeline);
  305. DDoorsInfo[i][ddVIP] = cache_get_field_content_int(i, "VIP", MainPipeline);
  306. DDoorsInfo[i][ddFamed] = cache_get_field_content_int(i, "Famed", MainPipeline);
  307. DDoorsInfo[i][ddDPC] = cache_get_field_content_int(i, "DPC", MainPipeline);
  308. DDoorsInfo[i][ddAllegiance] = cache_get_field_content_int(i, "Allegiance", MainPipeline);
  309. DDoorsInfo[i][ddGroupType] = cache_get_field_content_int(i, "GroupType", MainPipeline);
  310. DDoorsInfo[i][ddFaction] = cache_get_field_content_int(i, "Faction", MainPipeline);
  311. DDoorsInfo[i][ddAdmin] = cache_get_field_content_int(i, "Admin", MainPipeline);
  312. DDoorsInfo[i][ddWanted] = cache_get_field_content_int(i, "Wanted", MainPipeline);
  313. DDoorsInfo[i][ddVehicleAble] = cache_get_field_content_int(i, "VehicleAble", MainPipeline);
  314. DDoorsInfo[i][ddColor] = cache_get_field_content_int(i, "Color", MainPipeline);
  315. DDoorsInfo[i][ddPickupModel] = cache_get_field_content_int(i, "PickupModel", MainPipeline);
  316. cache_get_field_content(i, "Pass", DDoorsInfo[i][ddPass], MainPipeline, 24);
  317. DDoorsInfo[i][ddLocked] = cache_get_field_content_int(i, "Locked", MainPipeline);
  318. DDoorsInfo[i][ddLastLogin] = cache_get_field_content_int(i, "LastLogin", MainPipeline);
  319. DDoorsInfo[i][ddExpire] = cache_get_field_content_int(i, "Expire", MainPipeline);
  320. DDoorsInfo[i][ddInactive] = cache_get_field_content_int(i, "Inactive", MainPipeline);
  321. DDoorsInfo[i][ddIgnore] = cache_get_field_content_int(i, "Ignore", MainPipeline);
  322. DDoorsInfo[i][ddCounter] = cache_get_field_content_int(i, "Counter", MainPipeline);
  323. if(DDoorsInfo[i][ddExteriorX] != 0.0) CreateDynamicDoor(i);*/
  324. LoadDynamicDoor(i);
  325. i++;
  326. }
  327. if(i > 0) printf("[LoadDynamicDoors] %d doors rehashed/loaded.", i);
  328. else printf("[LoadDynamicDoors] Failed to load any doors.");
  329. return 1;
  330. }
  331. stock SaveDynamicDoors()
  332. {
  333. for(new i = 0; i < MAX_DDOORS; i++)
  334. {
  335. SaveDynamicDoor(i);
  336. }
  337. return 1;
  338. }
  339. stock RehashDynamicDoor(doorid)
  340. {
  341. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  342. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  343. DDoorsInfo[doorid][ddSQLId] = -1;
  344. DDoorsInfo[doorid][ddOwner] = -1;
  345. DDoorsInfo[doorid][ddCustomInterior] = 0;
  346. DDoorsInfo[doorid][ddExteriorVW] = 0;
  347. DDoorsInfo[doorid][ddExteriorInt] = 0;
  348. DDoorsInfo[doorid][ddInteriorVW] = 0;
  349. DDoorsInfo[doorid][ddInteriorInt] = 0;
  350. DDoorsInfo[doorid][ddExteriorX] = 0.0;
  351. DDoorsInfo[doorid][ddExteriorY] = 0.0;
  352. DDoorsInfo[doorid][ddExteriorZ] = 0.0;
  353. DDoorsInfo[doorid][ddExteriorA] = 0.0;
  354. DDoorsInfo[doorid][ddInteriorX] = 0.0;
  355. DDoorsInfo[doorid][ddInteriorY] = 0.0;
  356. DDoorsInfo[doorid][ddInteriorZ] = 0.0;
  357. DDoorsInfo[doorid][ddInteriorA] = 0.0;
  358. DDoorsInfo[doorid][ddCustomExterior] = 0;
  359. DDoorsInfo[doorid][ddType] = 0;
  360. DDoorsInfo[doorid][ddRank] = 0;
  361. DDoorsInfo[doorid][ddVIP] = 0;
  362. DDoorsInfo[doorid][ddAllegiance] = 0;
  363. DDoorsInfo[doorid][ddGroupType] = 0;
  364. DDoorsInfo[doorid][ddFaction] = 0;
  365. DDoorsInfo[doorid][ddAdmin] = 0;
  366. DDoorsInfo[doorid][ddWanted] = 0;
  367. DDoorsInfo[doorid][ddVehicleAble] = 0;
  368. DDoorsInfo[doorid][ddColor] = 0;
  369. DDoorsInfo[doorid][ddPickupModel] = 0;
  370. DDoorsInfo[doorid][ddLocked] = 0;
  371. LoadDynamicDoor(doorid);
  372. }
  373. stock RehashDynamicDoors()
  374. {
  375. printf("[RehashDynamicDoors] Deleting dynamic doors from server...");
  376. for(new i = 0; i < MAX_DDOORS; i++)
  377. {
  378. RehashDynamicDoor(i);
  379. }
  380. //LoadDynamicDoors();
  381. }
  382. forward OnSetDDOwner(playerid, doorid);
  383. public OnSetDDOwner(playerid, doorid)
  384. {
  385. if(IsPlayerConnected(playerid))
  386. {
  387. new rows;
  388. new string[128], playername[MAX_PLAYER_NAME];
  389. cache_get_row_count(rows);
  390. if(rows)
  391. {
  392. cache_get_value_name_int(0, "id", DDoorsInfo[doorid][ddOwner]);
  393. cache_get_value_name(0, "Username", playername, MAX_PLAYER_NAME);
  394. strcat((DDoorsInfo[doorid][ddOwnerName][0] = 0, DDoorsInfo[doorid][ddOwnerName]), playername, MAX_PLAYER_NAME);
  395. format(string, sizeof(string), "Successfully set the owner to %s.", playername);
  396. SendClientMessageEx(playerid, COLOR_WHITE, string);
  397. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  398. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  399. CreateDynamicDoor(doorid);
  400. SaveDynamicDoor(doorid);
  401. format(string, sizeof(string), "%s has edited door ID %d's owner to %s (SQL ID: %d).", GetPlayerNameEx(playerid), doorid, playername, DDoorsInfo[doorid][ddOwner]);
  402. Log("logs/ddedit.log", string);
  403. }
  404. else SendClientMessageEx(playerid, COLOR_GREY, "That account name does not appear to exist.");
  405. }
  406. return 1;
  407. }
  408. CMD:changedoorpass(playerid, params[])
  409. {
  410. for(new i = 0; i < sizeof(DDoorsInfo); i++) {
  411. if (IsPlayerInRangeOfPoint(playerid,3.0,DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]) && PlayerInfo[playerid][pVW] == DDoorsInfo[i][ddExteriorVW] || IsPlayerInRangeOfPoint(playerid,3.0,DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]) && PlayerInfo[playerid][pVW] == DDoorsInfo[i][ddInteriorVW])
  412. {
  413. new doorpass[24];
  414. if(sscanf(params, "s[24]", doorpass)) { SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /changedoorpass [pass]"); SendClientMessageEx(playerid, COLOR_WHITE, "To remove the password on the door set the password to 'none'."); return 1; }
  415. if(DDoorsInfo[i][ddType] == 2 && DDoorsInfo[i][ddFaction] != INVALID_GROUP_ID && PlayerInfo[playerid][pLeader] == DDoorsInfo[i][ddFaction])
  416. {
  417. format(DDoorsInfo[i][ddPass], 24, "%s", doorpass);
  418. SendClientMessageEx(playerid, COLOR_WHITE, "You have changed the password of this door.");
  419. SaveDynamicDoor(i);
  420. }
  421. else if(DDoorsInfo[i][ddType] == 1 && DDoorsInfo[i][ddOwner] == GetPlayerSQLId(playerid))
  422. {
  423. format(DDoorsInfo[i][ddPass], 24, "%s", doorpass);
  424. SendClientMessageEx(playerid, COLOR_WHITE, "You have changed the password of this door.");
  425. SaveDynamicDoor(i);
  426. }
  427. else SendClientMessageEx(playerid, COLOR_GREY, "You cannot change the password on this lock.");
  428. }
  429. }
  430. return 1;
  431. }
  432. CMD:lockdoor(playerid, params[])
  433. {
  434. for(new i = 0; i < sizeof(DDoorsInfo); i++) {
  435. if (IsPlayerInRangeOfPoint(playerid,3.0,DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]) && PlayerInfo[playerid][pVW] == DDoorsInfo[i][ddExteriorVW] || IsPlayerInRangeOfPoint(playerid,3.0,DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]) && PlayerInfo[playerid][pVW] == DDoorsInfo[i][ddInteriorVW])
  436. {
  437. if(DDoorsInfo[i][ddType] == 2 && DDoorsInfo[i][ddFaction] != INVALID_GROUP_ID && PlayerInfo[playerid][pLeader] == DDoorsInfo[i][ddFaction])
  438. {
  439. if(DDoorsInfo[i][ddLocked] == 0) {
  440. DDoorsInfo[i][ddLocked] = 1;
  441. SendClientMessageEx(playerid, COLOR_WHITE, "This door has been locked.");
  442. }
  443. else if(DDoorsInfo[i][ddLocked] == 1)
  444. {
  445. DDoorsInfo[i][ddLocked] = 0;
  446. SendClientMessageEx(playerid, COLOR_GREY, "This door has been unlocked.");
  447. }
  448. }
  449. else if(DDoorsInfo[i][ddType] == 1 && DDoorsInfo[i][ddOwner] == GetPlayerSQLId(playerid))
  450. {
  451. if(DDoorsInfo[i][ddLocked] == 0)
  452. {
  453. DDoorsInfo[i][ddLocked] = 1;
  454. SendClientMessageEx(playerid, COLOR_WHITE, "This door has been locked.");
  455. }
  456. else if(DDoorsInfo[i][ddLocked] == 1)
  457. {
  458. DDoorsInfo[i][ddLocked] = 0;
  459. SendClientMessageEx(playerid, COLOR_GREY, "This door has been unlocked.");
  460. }
  461. }
  462. else SendClientMessageEx(playerid, COLOR_GREY, "You cannot lock this door.");
  463. }
  464. }
  465. return 1;
  466. }
  467. CMD:doorpass(playerid, params[])
  468. {
  469. for(new i = 0; i < sizeof(DDoorsInfo); i++) {
  470. if (IsPlayerInRangeOfPoint(playerid,3.0,DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]) && PlayerInfo[playerid][pVW] == DDoorsInfo[i][ddExteriorVW] || IsPlayerInRangeOfPoint(playerid,3.0,DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]) && PlayerInfo[playerid][pVW] == DDoorsInfo[i][ddInteriorVW]) {
  471. if(DDoorsInfo[i][ddPass] < 1)
  472. return SendClientMessageEx(playerid, COLOR_GREY, "This door isn't allowed to be locked");
  473. if(strcmp(DDoorsInfo[i][ddPass], "None", true) == 0)
  474. return SendClientMessageEx(playerid, COLOR_GREY, "This door isn't allowed to be locked");
  475. ShowPlayerDialogEx(playerid, DOORLOCK, DIALOG_STYLE_INPUT, "Door Security","Enter the password for this door","Login","Cancel");
  476. SetPVarInt(playerid, "Door", i);
  477. }
  478. }
  479. return 1;
  480. }
  481. CMD:goindoor(playerid, params[])
  482. {
  483. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pShopTech] >= 1)
  484. {
  485. new string[48], doornum;
  486. if(sscanf(params, "d", doornum)) return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /goindoor [doornumber]");
  487. if(doornum <= 0 || doornum >= MAX_DDOORS)
  488. {
  489. format(string, sizeof(string), "Door ID must be between 1 and %d.", MAX_DDOORS - 1);
  490. return SendClientMessageEx(playerid, COLOR_GREY, string);
  491. }
  492. SetPlayerInterior(playerid,DDoorsInfo[doornum][ddInteriorInt]);
  493. SetPlayerPos(playerid,DDoorsInfo[doornum][ddInteriorX],DDoorsInfo[doornum][ddInteriorY],DDoorsInfo[doornum][ddInteriorZ]);
  494. SetPlayerFacingAngle(playerid,DDoorsInfo[doornum][ddInteriorA]);
  495. PlayerInfo[playerid][pInt] = DDoorsInfo[doornum][ddInteriorInt];
  496. PlayerInfo[playerid][pVW] = DDoorsInfo[doornum][ddInteriorVW];
  497. SetPlayerVirtualWorld(playerid, DDoorsInfo[doornum][ddInteriorVW]);
  498. if(DDoorsInfo[doornum][ddCustomInterior]) Player_StreamPrep(playerid, DDoorsInfo[doornum][ddInteriorX],DDoorsInfo[doornum][ddInteriorY],DDoorsInfo[doornum][ddInteriorZ], FREEZE_TIME);
  499. }
  500. return 1;
  501. }
  502. CMD:gotodoor(playerid, params[])
  503. {
  504. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pShopTech] >= 1)
  505. {
  506. new string[48], doornum;
  507. if(sscanf(params, "d", doornum)) return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /gotodoor [doornumber]");
  508. if(doornum <= 0 || doornum >= MAX_DDOORS)
  509. {
  510. format(string, sizeof(string), "Door ID must be between 1 and %d.", MAX_DDOORS - 1);
  511. return SendClientMessageEx(playerid, COLOR_GREY, string);
  512. }
  513. SetPlayerInterior(playerid,DDoorsInfo[doornum][ddExteriorInt]);
  514. SetPlayerPos(playerid,DDoorsInfo[doornum][ddExteriorX],DDoorsInfo[doornum][ddExteriorY],DDoorsInfo[doornum][ddExteriorZ]);
  515. SetPlayerFacingAngle(playerid,DDoorsInfo[doornum][ddExteriorA]);
  516. PlayerInfo[playerid][pInt] = DDoorsInfo[doornum][ddExteriorInt];
  517. SetPlayerVirtualWorld(playerid, DDoorsInfo[doornum][ddExteriorVW]);
  518. PlayerInfo[playerid][pVW] = DDoorsInfo[doornum][ddExteriorVW];
  519. if(DDoorsInfo[doornum][ddCustomExterior]) Player_StreamPrep(playerid, DDoorsInfo[doornum][ddExteriorX],DDoorsInfo[doornum][ddExteriorY],DDoorsInfo[doornum][ddExteriorZ], FREEZE_TIME);
  520. }
  521. return 1;
  522. }
  523. CMD:ddstatus(playerid, params[])
  524. {
  525. new doorid;
  526. if(sscanf(params, "i", doorid))
  527. {
  528. SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /ddstatus [doorid]");
  529. return 1;
  530. }
  531. if (PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pShopTech] >= 1)
  532. {
  533. new string[128];
  534. format(string,sizeof(string),"|___________ Door Status (ID: %d · Name: %s) ___________|", doorid, DDoorsInfo[doorid][ddDescription]);
  535. SendClientMessageEx(playerid, COLOR_GREEN, string);
  536. format(string, sizeof(string), "(Ext) X: %f | Y: %f | Z: %f | (Int) X: %f | Y: %f | Z: %f", DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], DDoorsInfo[doorid][ddInteriorX], DDoorsInfo[doorid][ddInteriorY], DDoorsInfo[doorid][ddInteriorZ]);
  537. SendClientMessageEx(playerid, COLOR_WHITE, string);
  538. format(string, sizeof(string), "Pickup ID: %d | Custom Int: %d | Custom Ext: %d | Exterior VW: %d | Exterior Int: %d | Interior VW: %d | Interior Int: %d", DDoorsInfo[doorid][ddPickupID], DDoorsInfo[doorid][ddCustomInterior], DDoorsInfo[doorid][ddCustomExterior], DDoorsInfo[doorid][ddExteriorVW], DDoorsInfo[doorid][ddExteriorInt], DDoorsInfo[doorid][ddInteriorVW], DDoorsInfo[doorid][ddInteriorInt]);
  539. SendClientMessageEx(playerid, COLOR_WHITE, string);
  540. format(string, sizeof(string), "Type: %d | Rank: %d | VIP: %d | Allegiance: %d | Group Type: %d | Faction: %d | Admin: %d | Wanted: %d", DDoorsInfo[doorid][ddType], DDoorsInfo[doorid][ddRank], DDoorsInfo[doorid][ddVIP], DDoorsInfo[doorid][ddAllegiance], DDoorsInfo[doorid][ddGroupType], DDoorsInfo[doorid][ddFaction], DDoorsInfo[doorid][ddAdmin], DDoorsInfo[doorid][ddWanted]);
  541. SendClientMessageEx(playerid, COLOR_WHITE, string);
  542. format(string, sizeof(string), "Vehiclable: %d | Locked: %d | Password: %s", DDoorsInfo[doorid][ddVehicleAble], DDoorsInfo[doorid][ddLocked], DDoorsInfo[doorid][ddPass]);
  543. SendClientMessageEx(playerid, COLOR_WHITE, string);
  544. }
  545. else
  546. {
  547. SendClientMessageEx(playerid, COLOR_GRAD1, "You are not authorized to use that command.");
  548. }
  549. return 1;
  550. }
  551. CMD:ddnear(playerid, params[])
  552. {
  553. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pShopTech] >= 1)
  554. {
  555. new option;
  556. if(!sscanf(params, "d", option))
  557. {
  558. new string[64];
  559. format(string, sizeof(string), "* Listing all dynamic doors within 30 meters of you in VW %d...", option);
  560. SendClientMessageEx(playerid, COLOR_RED, string);
  561. for(new i, szMessage[128]; i < MAX_DDOORS; i++)
  562. {
  563. if(strcmp(DDoorsInfo[i][ddDescription], "None", true) != 0)
  564. {
  565. if(option == -1)
  566. {
  567. if(IsPlayerInRangeOfPoint(playerid, 30, DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]))
  568. {
  569. format(szMessage, sizeof(szMessage), "(Interior) DDoor ID %d | %f from you | Interior: %d", i, GetPlayerDistanceFromPoint(playerid, DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]), DDoorsInfo[i][ddInteriorInt]);
  570. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  571. }
  572. if(IsPlayerInRangeOfPoint(playerid, 30, DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]))
  573. {
  574. format(szMessage, sizeof(szMessage), "(Exterior) DDoor ID %d | %f from you | Interior: %d", i, GetPlayerDistanceFromPoint(playerid, DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]), DDoorsInfo[i][ddExteriorInt]);
  575. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  576. }
  577. }
  578. else
  579. {
  580. if(IsPlayerInRangeOfPoint(playerid, 30, DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]) && DDoorsInfo[i][ddInteriorVW] == option)
  581. {
  582. format(szMessage, sizeof(szMessage), "(Interior) DDoor ID %d | %f from you | Interior: %d", i, GetPlayerDistanceFromPoint(playerid, DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]), DDoorsInfo[i][ddInteriorInt]);
  583. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  584. }
  585. if(IsPlayerInRangeOfPoint(playerid, 30, DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]) && DDoorsInfo[i][ddExteriorVW] == option)
  586. {
  587. format(szMessage, sizeof(szMessage), "(Exterior) DDoor ID %d | %f from you | Interior: %d", i, GetPlayerDistanceFromPoint(playerid, DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]), DDoorsInfo[i][ddExteriorInt]);
  588. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  589. }
  590. }
  591. }
  592. }
  593. }
  594. else
  595. {
  596. SendClientMessageEx(playerid, COLOR_RED, "* Listing all dynamic doors within 30 meters of you...");
  597. for(new i, szMessage[128]; i < MAX_DDOORS; i++)
  598. {
  599. if(strcmp(DDoorsInfo[i][ddDescription], "None", true) != 0)
  600. {
  601. if(IsPlayerInRangeOfPoint(playerid, 30, DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]) && DDoorsInfo[i][ddInteriorVW] == GetPlayerVirtualWorld(playerid))
  602. {
  603. format(szMessage, sizeof(szMessage), "(Interior) DDoor ID %d | %f from you | Virtual World: %d | Interior: %d", i, GetPlayerDistanceFromPoint(playerid, DDoorsInfo[i][ddInteriorX], DDoorsInfo[i][ddInteriorY], DDoorsInfo[i][ddInteriorZ]), DDoorsInfo[i][ddInteriorVW], DDoorsInfo[i][ddInteriorInt]);
  604. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  605. }
  606. if(IsPlayerInRangeOfPoint(playerid, 30, DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]) && DDoorsInfo[i][ddExteriorVW] == GetPlayerVirtualWorld(playerid))
  607. {
  608. format(szMessage, sizeof(szMessage), "(Exterior) DDoor ID %d | %f from you | Virtual World: %d | Interior: %d", i, GetPlayerDistanceFromPoint(playerid, DDoorsInfo[i][ddExteriorX], DDoorsInfo[i][ddExteriorY], DDoorsInfo[i][ddExteriorZ]), DDoorsInfo[i][ddExteriorVW], DDoorsInfo[i][ddExteriorInt]);
  609. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  610. }
  611. }
  612. }
  613. }
  614. }
  615. else
  616. {
  617. SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use that command.");
  618. }
  619. return 1;
  620. }
  621. CMD:ddnext(playerid, params[])
  622. {
  623. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pShopTech] >= 1)
  624. {
  625. SendClientMessageEx(playerid, COLOR_RED, "* Listing next available dynamic door...");
  626. for(new x;x<MAX_DDOORS;x++)
  627. {
  628. if(DDoorsInfo[x][ddExteriorX] == 0.0) // If the door is at blueberry!
  629. {
  630. new string[128];
  631. format(string, sizeof(string), "%d is available to use.", x);
  632. SendClientMessageEx(playerid, COLOR_WHITE, string);
  633. break;
  634. }
  635. }
  636. }
  637. else
  638. {
  639. SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use that command.");
  640. return 1;
  641. }
  642. return 1;
  643. }
  644. CMD:ddname(playerid, params[]) {
  645. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pShopTech] >= 1)
  646. {
  647. new
  648. szName[128],
  649. iDoorID;
  650. if(sscanf(params, "ds[128]", iDoorID, szName)) {
  651. return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /ddname [doorid] [name]");
  652. }
  653. else if(!(0 <= iDoorID <= MAX_DDOORS)) {
  654. return SendClientMessageEx(playerid, COLOR_GREY, "Invalid door specified.");
  655. }
  656. else if(strfind(szName, "\r") != -1 || strfind(szName, "\n") != -1) {
  657. return SendClientMessageEx(playerid, COLOR_GREY, "Newline characters are forbidden.");
  658. }
  659. strcat((DDoorsInfo[iDoorID][ddDescription][0] = 0, DDoorsInfo[iDoorID][ddDescription]), szName, 128);
  660. SendClientMessageEx(playerid, COLOR_WHITE, "You have successfully changed the name of this door.");
  661. DestroyDynamicPickup(DDoorsInfo[iDoorID][ddPickupID]);
  662. if(IsValidDynamic3DTextLabel(DDoorsInfo[iDoorID][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[iDoorID][ddTextID]);
  663. CreateDynamicDoor(iDoorID);
  664. SaveDynamicDoor(iDoorID);
  665. format(szName, sizeof(szName), "%s has edited door ID %d's name to %s.", GetPlayerNameEx(playerid), iDoorID, DDoorsInfo[iDoorID][ddDescription]);
  666. Log("logs/ddedit.log", szName);
  667. }
  668. else return SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use that command.");
  669. return 1;
  670. }
  671. CMD:ddowner(playerid, params[])
  672. {
  673. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pFactionModerator] >= 2 || PlayerInfo[playerid][pShopTech] >= 1)
  674. {
  675. new playername[MAX_PLAYER_NAME], doorid, szName[128];
  676. if(sscanf(params, "ds[24]", doorid, playername)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /ddowner [door] [player name]");
  677. if(DDoorsInfo[doorid][ddType] != 1) return SendClientMessageEx(playerid, COLOR_GRAD1, "This door is not owned by a player!");
  678. new giveplayerid = ReturnUser(playername);
  679. if(PlayerInfo[giveplayerid][pLevel] == 1 && PlayerInfo[giveplayerid][pAdmin] < 2) return SendClientMessageEx(playerid, COLOR_RED, "You can't use /ddowner on level 1's");
  680. if(IsPlayerConnected(giveplayerid))
  681. {
  682. strcat((DDoorsInfo[doorid][ddOwnerName][0] = 0, DDoorsInfo[doorid][ddOwnerName]), GetPlayerNameEx(giveplayerid), 24);
  683. DDoorsInfo[doorid][ddOwner] = GetPlayerSQLId(giveplayerid);
  684. SendClientMessageEx(playerid, COLOR_WHITE, "You have successfully changed the owner of this door.");
  685. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  686. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  687. CreateDynamicDoor(doorid);
  688. SaveDynamicDoor(doorid);
  689. format(szName, sizeof(szName), "%s has edited door ID %d's owner to %s (SQL ID: %d).", GetPlayerNameEx(playerid), doorid, GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid));
  690. Log("logs/ddedit.log", szName);
  691. }
  692. else
  693. {
  694. new query[128], tmpName[24];
  695. mysql_escape_string(playername, tmpName);
  696. mysql_format(MainPipeline, query,sizeof(query), "SELECT `id`, `Username` FROM `accounts` WHERE `Username` = '%s'", tmpName);
  697. mysql_tquery(MainPipeline, query, "OnSetDDOwner", "ii", playerid, doorid);
  698. }
  699. }
  700. else return SendClientMessageEx(playerid, COLOR_GRAD1, "You are not authorized to use that command!");
  701. return 1;
  702. }
  703. CMD:ddpass(playerid, params[])
  704. {
  705. if(PlayerInfo[playerid][pAdmin] < 4 && PlayerInfo[playerid][pASM] < 1 && PlayerInfo[playerid][pShopTech] < 1) return SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use that command.");
  706. new string[128],
  707. doorid,
  708. doorpass[24];
  709. if(sscanf(params, "ds[24]", doorid, doorpass)) { SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /ddPass [doorid] [pass]"); SendClientMessageEx(playerid, COLOR_WHITE, "To remove the password on the door set the password to 'none' "); return 1; }
  710. format(DDoorsInfo[doorid][ddPass], 24, "%s", doorpass);
  711. SendClientMessageEx(playerid, COLOR_WHITE, "You have changed the password of that door.");
  712. SaveDynamicDoor(doorid);
  713. format(string, sizeof(string), "%s has edited DoorID %d's password to %s.", GetPlayerNameEx(playerid), doorid, doorpass);
  714. Log("logs/ddedit.log", string);
  715. return 1;
  716. }
  717. CMD:ddedit(playerid, params[])
  718. {
  719. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1 || PlayerInfo[playerid][pShopTech] >= 1)
  720. {
  721. new string[128], choice[32], doorid, amount;
  722. if(sscanf(params, "s[32]dD", choice, doorid, amount))
  723. {
  724. SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /ddedit [name] [doorid] [amount]");
  725. SendClientMessageEx(playerid, COLOR_GREY, "Available names: Exterior, Interior, CustomInterior, CustomExterior, Type, Rank, VIP, Famed");
  726. SendClientMessageEx(playerid, COLOR_GREY, "Allegiance, GroupType, Faction, Wanted, Admin, VehicleAble, Color, PickupModel, Delete");
  727. return 1;
  728. }
  729. if(doorid >= MAX_DDOORS)
  730. {
  731. SendClientMessageEx( playerid, COLOR_WHITE, "Invalid Door ID!");
  732. return 1;
  733. }
  734. if(strcmp(choice, "interior", true) == 0)
  735. {
  736. new Float:pos[3];
  737. GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  738. format(szMiscArray, sizeof(szMiscArray), "%s has edited DoorID %d's Interior (B: %f, %f, %f | A: %f, %f, %f)", GetPlayerNameEx(playerid), doorid, DDoorsInfo[doorid][ddInteriorX], DDoorsInfo[doorid][ddInteriorY], DDoorsInfo[doorid][ddInteriorZ], pos[0], pos[1], pos[2]);
  739. Log("logs/ddedit.log", szMiscArray);
  740. GetPlayerPos(playerid, DDoorsInfo[doorid][ddInteriorX], DDoorsInfo[doorid][ddInteriorY], DDoorsInfo[doorid][ddInteriorZ]);
  741. GetPlayerFacingAngle(playerid, DDoorsInfo[doorid][ddInteriorA]);
  742. DDoorsInfo[doorid][ddInteriorInt] = GetPlayerInterior(playerid);
  743. DDoorsInfo[doorid][ddInteriorVW] = GetPlayerVirtualWorld(playerid);
  744. SendClientMessageEx(playerid, COLOR_WHITE, "You have changed the interior!");
  745. SaveDynamicDoor(doorid);
  746. CreateDynamicDoor(doorid);
  747. return 1;
  748. }
  749. else if(strcmp(choice, "custominterior", true) == 0)
  750. {
  751. if(DDoorsInfo[doorid][ddCustomInterior] == 0)
  752. {
  753. DDoorsInfo[doorid][ddCustomInterior] = 1;
  754. SendClientMessageEx(playerid, COLOR_WHITE, "Door set to custom interior!");
  755. }
  756. else
  757. {
  758. DDoorsInfo[doorid][ddCustomInterior] = 0;
  759. SendClientMessageEx(playerid, COLOR_WHITE, "Door set to normal (not custom) interior!");
  760. }
  761. SaveDynamicDoor(doorid);
  762. format(string, sizeof(string), "%s has edited DoorID %d's CustomInterior.", GetPlayerNameEx(playerid), doorid);
  763. Log("logs/ddedit.log", string);
  764. return 1;
  765. }
  766. else if(strcmp(choice, "customexterior", true) == 0)
  767. {
  768. if(DDoorsInfo[doorid][ddCustomExterior] == 0)
  769. {
  770. DDoorsInfo[doorid][ddCustomExterior] = 1;
  771. SendClientMessageEx(playerid, COLOR_WHITE, "Door set to custom exterior!");
  772. }
  773. else
  774. {
  775. DDoorsInfo[doorid][ddCustomExterior] = 0;
  776. SendClientMessageEx(playerid, COLOR_WHITE, "Door set to normal (not custom) exterior!");
  777. }
  778. SaveDynamicDoor(doorid);
  779. CreateDynamicDoor(doorid);
  780. format(string, sizeof(string), "%s has edited DoorID %d's CustomExterior.", GetPlayerNameEx(playerid), doorid);
  781. Log("logs/ddedit.log", string);
  782. return 1;
  783. }
  784. else if(strcmp(choice, "exterior", true) == 0)
  785. {
  786. new Float:pos[3];
  787. GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  788. format(szMiscArray, sizeof(szMiscArray), "%s has edited DoorID %d's Exterior (B: %f, %f, %f | A: %f, %f, %f)", GetPlayerNameEx(playerid), doorid, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ], pos[0], pos[1], pos[2]);
  789. Log("logs/ddedit.log", szMiscArray);
  790. GetPlayerPos(playerid, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]);
  791. GetPlayerFacingAngle(playerid, DDoorsInfo[doorid][ddExteriorA]);
  792. DDoorsInfo[doorid][ddExteriorVW] = GetPlayerVirtualWorld(playerid);
  793. DDoorsInfo[doorid][ddExteriorInt] = GetPlayerInterior(playerid);
  794. SendClientMessageEx(playerid, COLOR_WHITE, "You have changed the exterior!");
  795. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  796. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  797. SaveDynamicDoor(doorid);
  798. CreateDynamicDoor(doorid);
  799. }
  800. else if(strcmp(choice, "type", true) == 0)
  801. {
  802. DDoorsInfo[doorid][ddType] = amount;
  803. format(string, sizeof(string), "You have changed the type to %d.", amount);
  804. SendClientMessageEx(playerid, COLOR_WHITE, string);
  805. switch(DDoorsInfo[doorid][ddType])
  806. {
  807. case 1:
  808. {
  809. if(DDoorsInfo[doorid][ddOwner] != -1 && strcmp(DDoorsInfo[doorid][ddOwnerName], "Nobody", false) != 0)
  810. {
  811. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  812. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  813. }
  814. else SendClientMessageEx(playerid, COLOR_GREY, "Use /ddowner to update the owner of this door.");
  815. }
  816. case 2:
  817. {
  818. if(DDoorsInfo[doorid][ddFaction] != INVALID_GROUP_ID)
  819. {
  820. DDoorsInfo[doorid][ddOwner] = -1;
  821. strcat((DDoorsInfo[doorid][ddOwnerName][0] = 0, DDoorsInfo[doorid][ddOwnerName]), arrGroupData[DDoorsInfo[doorid][ddFaction]][g_szGroupName], 42);
  822. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  823. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  824. }
  825. else SendClientMessageEx(playerid, COLOR_GREY, "Use /ddedit faction to update the owner of this door.");
  826. }
  827. default:
  828. {
  829. strcat((DDoorsInfo[doorid][ddOwnerName][0] = 0, DDoorsInfo[doorid][ddOwnerName]), "Nobody", 42);
  830. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  831. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  832. }
  833. }
  834. SaveDynamicDoor(doorid);
  835. CreateDynamicDoor(doorid);
  836. format(string, sizeof(string), "%s has edited DoorID %d's type.", GetPlayerNameEx(playerid), doorid);
  837. Log("logs/ddedit.log", string);
  838. return 1;
  839. }
  840. else if(strcmp(choice, "rank", true) == 0)
  841. {
  842. DDoorsInfo[doorid][ddRank] = amount;
  843. format(string, sizeof(string), "You have changed the rank to %d.", amount);
  844. SendClientMessageEx(playerid, COLOR_WHITE, string);
  845. SaveDynamicDoor(doorid);
  846. format(string, sizeof(string), "%s has edited DoorID %d's rank.", GetPlayerNameEx(playerid), doorid);
  847. Log("logs/ddedit.log", string);
  848. return 1;
  849. }
  850. else if(strcmp(choice, "vip", true) == 0)
  851. {
  852. DDoorsInfo[doorid][ddVIP] = amount;
  853. format(string, sizeof(string), "You have changed the VIP Level to %d.", amount);
  854. SendClientMessageEx(playerid, COLOR_WHITE, string);
  855. SaveDynamicDoor(doorid);
  856. format(string, sizeof(string), "%s has edited DoorID %d's VIP Level.", GetPlayerNameEx(playerid), doorid);
  857. Log("logs/ddedit.log", string);
  858. return 1;
  859. }
  860. else if(strcmp(choice, "famed", true) == 0)
  861. {
  862. DDoorsInfo[doorid][ddFamed] = amount;
  863. format(string, sizeof(string), "You have changed the Famed Level to %d.", amount);
  864. SendClientMessageEx(playerid, COLOR_WHITE, string);
  865. SaveDynamicDoor(doorid);
  866. format(string, sizeof(string), "%s has edited DoorID %d's Famed Level.", GetPlayerNameEx(playerid), doorid);
  867. Log("logs/ddedit.log", string);
  868. return 1;
  869. }
  870. else if(strcmp(choice, "dpc", true) == 0)
  871. {
  872. if(DDoorsInfo[doorid][ddDPC] == 0)
  873. {
  874. DDoorsInfo[doorid][ddDPC] = 1;
  875. SendClientMessageEx(playerid, COLOR_WHITE, "Door set to DPC!");
  876. }
  877. else
  878. {
  879. DDoorsInfo[doorid][ddDPC] = 0;
  880. SendClientMessageEx(playerid, COLOR_WHITE, "Door set to normal (no longer DPC)!");
  881. }
  882. SaveDynamicDoor(doorid);
  883. format(string, sizeof(string), "%s has set DoorID %d's DPC value.", GetPlayerNameEx(playerid), doorid);
  884. Log("logs/ddedit.log", string);
  885. return 1;
  886. }
  887. else if(strcmp(choice, "allegiance", true) == 0)
  888. {
  889. DDoorsInfo[doorid][ddAllegiance] = amount;
  890. format(string, sizeof(string), "You have changed the Allegiance to %d.", amount);
  891. SendClientMessageEx(playerid, COLOR_WHITE, string);
  892. SaveDynamicDoor(doorid);
  893. format(string, sizeof(string), "%s has edited DoorID %d's Allegiance to %d.", GetPlayerNameEx(playerid), doorid, amount);
  894. Log("logs/ddedit.log", string);
  895. return 1;
  896. }
  897. else if(strcmp(choice, "grouptype", true) == 0)
  898. {
  899. DDoorsInfo[doorid][ddGroupType] = amount;
  900. format(string, sizeof(string), "You have changed the Group Type to %d.", amount);
  901. SendClientMessageEx(playerid, COLOR_WHITE, string);
  902. SaveDynamicDoor(doorid);
  903. format(string, sizeof(string), "%s has edited DoorID %d's Group Type to %d.", GetPlayerNameEx(playerid), doorid, amount);
  904. Log("logs/ddedit.log", string);
  905. return 1;
  906. }
  907. else if(strcmp(choice, "faction", true) == 0)
  908. {
  909. DDoorsInfo[doorid][ddFaction] = amount-1;
  910. format(string, sizeof(string), "You have changed the Faction to %d.", amount);
  911. SendClientMessageEx(playerid, COLOR_WHITE, string);
  912. if(DDoorsInfo[doorid][ddType] == 2)
  913. {
  914. strcat((DDoorsInfo[doorid][ddOwnerName][0] = 0, DDoorsInfo[doorid][ddOwnerName]), arrGroupData[DDoorsInfo[doorid][ddFaction]][g_szGroupName], 42);
  915. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  916. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  917. CreateDynamicDoor(doorid);
  918. }
  919. else
  920. {
  921. format(string, sizeof(string), "Use '/ddedit type %d 2' to update the owner of this door.", doorid);
  922. SendClientMessageEx(playerid, COLOR_GREY, string);
  923. }
  924. SaveDynamicDoor(doorid);
  925. format(string, sizeof(string), "%s has edited DoorID %d's Faction.", GetPlayerNameEx(playerid), doorid);
  926. Log("logs/ddedit.log", string);
  927. return 1;
  928. }
  929. else if(strcmp(choice, "admin", true) == 0)
  930. {
  931. DDoorsInfo[doorid][ddAdmin] = amount;
  932. format(string, sizeof(string), "You have changed the Admin Level to %d.", amount);
  933. SendClientMessageEx(playerid, COLOR_WHITE, string);
  934. SaveDynamicDoor(doorid);
  935. format(string, sizeof(string), "%s has edited DoorID %d's Admin Level.", GetPlayerNameEx(playerid), doorid);
  936. Log("logs/ddedit.log", string);
  937. return 1;
  938. }
  939. else if(strcmp(choice, "wanted", true) == 0)
  940. {
  941. DDoorsInfo[doorid][ddWanted] = amount;
  942. format(string, sizeof(string), "You have changed the Wanted to %d.", amount);
  943. SendClientMessageEx(playerid, COLOR_WHITE, string);
  944. SaveDynamicDoor(doorid);
  945. format(string, sizeof(string), "%s has edited DoorID %d's Wanted.", GetPlayerNameEx(playerid), doorid);
  946. Log("logs/ddedit.log", string);
  947. return 1;
  948. }
  949. else if(strcmp(choice, "vehicleable", true) == 0)
  950. {
  951. DDoorsInfo[doorid][ddVehicleAble] = amount;
  952. format(string, sizeof(string), "You have changed the VehicleAble to %d.", amount);
  953. SendClientMessageEx(playerid, COLOR_WHITE, string);
  954. SaveDynamicDoor(doorid);
  955. format(string, sizeof(string), "%s has edited DoorID %d's VehicleAble.", GetPlayerNameEx(playerid), doorid);
  956. Log("logs/ddedit.log", string);
  957. return 1;
  958. }
  959. else if(strcmp(choice, "color", true) == 0)
  960. {
  961. DDoorsInfo[doorid][ddColor] = amount;
  962. format(string, sizeof(string), "You have changed the Color to %d.", amount);
  963. SendClientMessageEx(playerid, COLOR_WHITE, string);
  964. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  965. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  966. SaveDynamicDoor(doorid);
  967. CreateDynamicDoor(doorid);
  968. format(string, sizeof(string), "%s has edited DoorID %d's Color.", GetPlayerNameEx(playerid), doorid);
  969. Log("logs/ddedit.log", string);
  970. return 1;
  971. }
  972. else if(strcmp(choice, "pickupmodel", true) == 0)
  973. {
  974. DDoorsInfo[doorid][ddPickupModel] = amount;
  975. format(string, sizeof(string), "You have changed the PickupModel to %d.", amount);
  976. SendClientMessageEx(playerid, COLOR_WHITE, string);
  977. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  978. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  979. SaveDynamicDoor(doorid);
  980. CreateDynamicDoor(doorid);
  981. format(string, sizeof(string), "%s has edited DoorID %d's PickupModel.", GetPlayerNameEx(playerid), doorid);
  982. Log("logs/ddedit.log", string);
  983. return 1;
  984. }
  985. else if(strcmp(choice, "delete", true) == 0)
  986. {
  987. if(strcmp(DDoorsInfo[doorid][ddDescription], "None", true) == 0) {
  988. format(string, sizeof(string), "DoorID %d does not exist.", doorid);
  989. SendClientMessageEx(playerid, COLOR_WHITE, string);
  990. return 1;
  991. }
  992. if(IsValidDynamicPickup(DDoorsInfo[doorid][ddPickupID])) DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  993. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  994. DDoorsInfo[doorid][ddDescription] = 0;
  995. DDoorsInfo[doorid][ddCustomInterior] = 0;
  996. DDoorsInfo[doorid][ddExteriorVW] = 0;
  997. DDoorsInfo[doorid][ddExteriorInt] = 0;
  998. DDoorsInfo[doorid][ddInteriorVW] = 0;
  999. DDoorsInfo[doorid][ddInteriorInt] = 0;
  1000. DDoorsInfo[doorid][ddExteriorX] = 0;
  1001. DDoorsInfo[doorid][ddExteriorY] = 0;
  1002. DDoorsInfo[doorid][ddExteriorZ] = 0;
  1003. DDoorsInfo[doorid][ddExteriorA] = 0;
  1004. DDoorsInfo[doorid][ddInteriorX] = 0;
  1005. DDoorsInfo[doorid][ddInteriorY] = 0;
  1006. DDoorsInfo[doorid][ddInteriorZ] = 0;
  1007. DDoorsInfo[doorid][ddInteriorA] = 0;
  1008. DDoorsInfo[doorid][ddCustomExterior] = 0;
  1009. DDoorsInfo[doorid][ddType] = 0;
  1010. DDoorsInfo[doorid][ddRank] = 0;
  1011. DDoorsInfo[doorid][ddVIP] = 0;
  1012. DDoorsInfo[doorid][ddFamed] = 0;
  1013. DDoorsInfo[doorid][ddDPC] = 0;
  1014. DDoorsInfo[doorid][ddAllegiance] = 0;
  1015. DDoorsInfo[doorid][ddGroupType] = 0;
  1016. DDoorsInfo[doorid][ddFaction] = 0;
  1017. DDoorsInfo[doorid][ddAdmin] = 0;
  1018. DDoorsInfo[doorid][ddWanted] = 0;
  1019. DDoorsInfo[doorid][ddVehicleAble] = 0;
  1020. DDoorsInfo[doorid][ddColor] = 0;
  1021. DDoorsInfo[doorid][ddPass] = 0;
  1022. DDoorsInfo[doorid][ddLocked] = 0;
  1023. SaveDynamicDoor(doorid);
  1024. format(string, sizeof(string), "You have deleted DoorID %d.", doorid);
  1025. SendClientMessageEx(playerid, COLOR_WHITE, string);
  1026. format(string, sizeof(string), "%s has deleted DoorID %d.", GetPlayerNameEx(playerid), doorid);
  1027. Log("logs/ddedit.log", string);
  1028. return 1;
  1029. }
  1030. }
  1031. else return SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use that command.");
  1032. return 1;
  1033. }
  1034. CMD:ddmove(playerid, params[])
  1035. {
  1036. if(PlayerInfo[playerid][pAdmin] < 4 && PlayerInfo[playerid][pASM] < 1) return SendClientMessageEx(playerid, COLOR_GREY, "You are not authorized to use this command.");
  1037. new doorid, giveplayerid, fee, minfee, choice[16];
  1038. if(sscanf(params, "s[16]dudd", choice, doorid, giveplayerid, fee, minfee))
  1039. {
  1040. SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /ddmove <Choice> <DoorID> <playerid> <Fine (Percent)> <min. fine>");
  1041. SendClientMessageEx(playerid, COLOR_GREY, "Choice: Exterior | Interior");
  1042. SendClientMessageEx(playerid, COLOR_GREY, "NOTE: Set fine as 0 if you don't want to fine this player.");
  1043. return 1;
  1044. }
  1045. if(doorid >= MAX_DDOORS) return SendClientMessageEx( playerid, COLOR_WHITE, "Invalid Door ID!");
  1046. new string[128];
  1047. new totalwealth = PlayerInfo[giveplayerid][pAccount] + GetPlayerCash(giveplayerid);
  1048. if(PlayerInfo[giveplayerid][pPhousekey] != INVALID_HOUSE_ID && HouseInfo[PlayerInfo[giveplayerid][pPhousekey]][hOwnerID] == GetPlayerSQLId(giveplayerid)) totalwealth += HouseInfo[PlayerInfo[giveplayerid][pPhousekey]][hSafeMoney];
  1049. if(PlayerInfo[giveplayerid][pPhousekey2] != INVALID_HOUSE_ID && HouseInfo[PlayerInfo[giveplayerid][pPhousekey2]][hOwnerID] == GetPlayerSQLId(giveplayerid)) totalwealth += HouseInfo[PlayerInfo[giveplayerid][pPhousekey2]][hSafeMoney];
  1050. if(PlayerInfo[giveplayerid][pPhousekey3] != INVALID_HOUSE_ID && HouseInfo[PlayerInfo[giveplayerid][pPhousekey3]][hOwnerID] == GetPlayerSQLId(giveplayerid)) totalwealth += HouseInfo[PlayerInfo[giveplayerid][pPhousekey3]][hSafeMoney];
  1051. if(fee > 0)
  1052. {
  1053. fee = totalwealth / 100 * fee;
  1054. if(PlayerInfo[giveplayerid][pDonateRank] == 3)
  1055. {
  1056. fee = fee / 100 * 95;
  1057. }
  1058. if(PlayerInfo[giveplayerid][pDonateRank] >= 4)
  1059. {
  1060. fee = fee / 100 * 85;
  1061. }
  1062. }
  1063. if(strcmp(choice, "interior", true) == 0)
  1064. {
  1065. GetPlayerPos(playerid, DDoorsInfo[doorid][ddInteriorX], DDoorsInfo[doorid][ddInteriorY], DDoorsInfo[doorid][ddInteriorZ]);
  1066. GetPlayerFacingAngle(playerid, DDoorsInfo[doorid][ddInteriorA]);
  1067. DDoorsInfo[doorid][ddInteriorInt] = GetPlayerInterior(playerid);
  1068. DDoorsInfo[doorid][ddInteriorVW] = GetPlayerVirtualWorld(playerid);
  1069. SendClientMessageEx(playerid, COLOR_WHITE, "You have changed the interior!");
  1070. SaveDynamicDoor(doorid);
  1071. format(string, sizeof(string), "%s has edited DoorID %d's Interior.", GetPlayerNameEx(playerid), doorid);
  1072. Log("logs/ddedit.log", string);
  1073. if(minfee > fee && minfee > 0)
  1074. {
  1075. GivePlayerCashEx(giveplayerid, TYPE_ONHAND, -minfee);
  1076. format(string, sizeof(string), "AdmCmd: %s(%d) was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), number_format(minfee), GetPlayerNameEx(playerid));
  1077. Log("logs/admin.log", string);
  1078. format(string, sizeof(string), "AdmCmd: %s was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), number_format(minfee), GetPlayerNameEx(playerid));
  1079. SendClientMessageToAllEx(COLOR_LIGHTRED, string);
  1080. }
  1081. else if(fee > 0)
  1082. {
  1083. GivePlayerCashEx(giveplayerid, TYPE_ONHAND, -fee);
  1084. format(string, sizeof(string), "AdmCmd: %s(%d) was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), number_format(fee), GetPlayerNameEx(playerid));
  1085. Log("logs/admin.log", string);
  1086. format(string, sizeof(string), "AdmCmd: %s was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), number_format(fee), GetPlayerNameEx(playerid));
  1087. SendClientMessageToAllEx(COLOR_LIGHTRED, string);
  1088. }
  1089. }
  1090. else if(strcmp(choice, "exterior", true) == 0)
  1091. {
  1092. GetPlayerPos(playerid, DDoorsInfo[doorid][ddExteriorX], DDoorsInfo[doorid][ddExteriorY], DDoorsInfo[doorid][ddExteriorZ]);
  1093. GetPlayerFacingAngle(playerid, DDoorsInfo[doorid][ddExteriorA]);
  1094. DDoorsInfo[doorid][ddExteriorVW] = GetPlayerVirtualWorld(playerid);
  1095. DDoorsInfo[doorid][ddExteriorInt] = GetPlayerInterior(playerid);
  1096. SendClientMessageEx(playerid, COLOR_WHITE, "You have changed the exterior!");
  1097. DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]);
  1098. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]);
  1099. SaveDynamicDoor(doorid);
  1100. format(string, sizeof(string), "%s has edited DoorID %d's Exterior.", GetPlayerNameEx(playerid), doorid);
  1101. Log("logs/ddedit.log", string);
  1102. if(minfee > fee && minfee > 0)
  1103. {
  1104. GivePlayerCashEx(giveplayerid, TYPE_ONHAND, -minfee);
  1105. format(string, sizeof(string), "AdmCmd: %s(%d) was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), number_format(minfee), GetPlayerNameEx(playerid));
  1106. Log("logs/admin.log", string);
  1107. format(string, sizeof(string), "AdmCmd: %s was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), number_format(minfee), GetPlayerNameEx(playerid));
  1108. SendClientMessageToAllEx(COLOR_LIGHTRED, string);
  1109. }
  1110. else if(fee > 0)
  1111. {
  1112. GivePlayerCashEx(giveplayerid, TYPE_ONHAND, -fee);
  1113. format(string, sizeof(string), "AdmCmd: %s(%d) was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), number_format(fee), GetPlayerNameEx(playerid));
  1114. Log("logs/admin.log", string);
  1115. format(string, sizeof(string), "AdmCmd: %s was fined $%s by %s, reason: Dynamic Door Move", GetPlayerNameEx(giveplayerid), number_format(fee), GetPlayerNameEx(playerid));
  1116. SendClientMessageToAllEx(COLOR_LIGHTRED, string);
  1117. }
  1118. }
  1119. CreateDynamicDoor(doorid);
  1120. return 1;
  1121. }
  1122. forward DeleteDynamicDoor(doorid, adminid);
  1123. public DeleteDynamicDoor(doorid, adminid)
  1124. {
  1125. format(DDoorsInfo[doorid][ddDescription], 128, "None");
  1126. DDoorsInfo[doorid][ddOwner] = -1;
  1127. format(DDoorsInfo[doorid][ddOwnerName], MAX_PLAYER_NAME, "Nobody");
  1128. if(IsValidDynamicPickup(DDoorsInfo[doorid][ddPickupID])) DestroyDynamicPickup(DDoorsInfo[doorid][ddPickupID]), DDoorsInfo[doorid][ddPickupID] = -1;
  1129. if(IsValidDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[doorid][ddTextID]), DDoorsInfo[doorid][ddTextID] = Text3D:-1;
  1130. DDoorsInfo[doorid][ddCustomInterior] = 0;
  1131. DDoorsInfo[doorid][ddExteriorVW] = 0;
  1132. DDoorsInfo[doorid][ddExteriorInt] = 0;
  1133. DDoorsInfo[doorid][ddInteriorVW] = 0;
  1134. DDoorsInfo[doorid][ddInteriorInt] = 0;
  1135. DDoorsInfo[doorid][ddExteriorX] = 0.0;
  1136. DDoorsInfo[doorid][ddExteriorY] = 0.0;
  1137. DDoorsInfo[doorid][ddExteriorZ] = 0.0;
  1138. DDoorsInfo[doorid][ddExteriorA] = 0.0;
  1139. DDoorsInfo[doorid][ddInteriorX] = 0.0;
  1140. DDoorsInfo[doorid][ddInteriorY] = 0.0;
  1141. DDoorsInfo[doorid][ddInteriorZ] = 0.0;
  1142. DDoorsInfo[doorid][ddInteriorA] = 0.0;
  1143. DDoorsInfo[doorid][ddCustomExterior] = 0;
  1144. DDoorsInfo[doorid][ddType] = 0;
  1145. DDoorsInfo[doorid][ddRank] = 0;
  1146. DDoorsInfo[doorid][ddVIP] = 0;
  1147. DDoorsInfo[doorid][ddFamed] = 0;
  1148. DDoorsInfo[doorid][ddDPC] = 0;
  1149. DDoorsInfo[doorid][ddAllegiance] = 0;
  1150. DDoorsInfo[doorid][ddGroupType] = 0;
  1151. DDoorsInfo[doorid][ddFaction] = 0;
  1152. DDoorsInfo[doorid][ddAdmin] = 0;
  1153. DDoorsInfo[doorid][ddWanted] = 0;
  1154. DDoorsInfo[doorid][ddVehicleAble] = 0;
  1155. DDoorsInfo[doorid][ddColor] = 0;
  1156. DDoorsInfo[doorid][ddPickupModel] = 0;
  1157. DDoorsInfo[doorid][ddPass][0] = 0;
  1158. DDoorsInfo[doorid][ddLocked] = 0;
  1159. DDoorsInfo[doorid][ddLastLogin] = 0;
  1160. DDoorsInfo[doorid][ddExpire] = 0;
  1161. DDoorsInfo[doorid][ddInactive] = 0;
  1162. DDoorsInfo[doorid][ddIgnore] = 0;
  1163. DDoorsInfo[doorid][ddCounter] = 0;
  1164. SaveDynamicDoor(doorid);
  1165. szMiscArray[0] = 0;
  1166. format(szMiscArray, sizeof(szMiscArray), "%s has deleted door id %d", adminid != INVALID_PLAYER_ID ? GetPlayerNameEx(adminid) : ("(Inactive Player Resource System)"), doorid);
  1167. Log("logs/ddedit.log", szMiscArray);
  1168. return 1;
  1169. }