1
0

bars.inc 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. #if defined BARS_INCLUDED
  2. #endinput
  3. #endif
  4. #define BARS_INCLUDED
  5. static str[144];
  6. enum _BarEnum
  7. {
  8. Float:BarX,
  9. Float:BarY,
  10. Float:BarZ,
  11. BarCreated,
  12. BarVW,
  13. BarPickup,
  14. Text3D:BarLabel
  15. }
  16. new DynBars[MAX_BARS][_BarEnum];
  17. SaveBars() {
  18. new idx = 0;
  19. new File:file;
  20. file = fopen("bars.cfg", io_write);
  21. fclose(file);
  22. file = fopen("bars.cfg", io_append);
  23. new writeformat[512];
  24. if( file ) {
  25. while(idx < MAX_BARS ) {
  26. format( writeformat, sizeof( writeformat ), "%f|%f|%f|%d|%d\n", DynBars[idx][BarX], DynBars[idx][BarY], DynBars[idx][BarZ], DynBars[idx][BarVW], DynBars[idx][BarCreated] );
  27. fwrite( file, writeformat );
  28. idx++;
  29. }
  30. fclose( file );
  31. }
  32. else {
  33. print( "[error] Failed to find bars.cfg (saving)" );
  34. }
  35. return 1;
  36. }
  37. //returns free bar slot, else max = invalid
  38. GetFreeBarID() {
  39. for( new i; i < MAX_BARS; i++ ) {
  40. if( !DynBars[i][BarCreated] ) {
  41. return i;
  42. }
  43. }
  44. return MAX_BARS;
  45. }
  46. LoadBars()
  47. {
  48. new output[5][30];
  49. new fileOutput[512];
  50. new File:file = fopen( "bars.cfg", io_read );
  51. if( file ) {
  52. new idx = 0;
  53. while( idx < MAX_BARS ) {
  54. fread( file, fileOutput );
  55. split( fileOutput, output, '|' );
  56. DynBars[idx][BarX] = floatstr( output[0] );
  57. DynBars[idx][BarY] = floatstr( output[1] );
  58. DynBars[idx][BarZ] = floatstr( output[2] );
  59. DynBars[idx][BarVW] = strvalEx( output[3] );
  60. DynBars[idx][BarCreated] = strvalEx( output[4] );
  61. if( DynBars[idx][BarCreated] ) {
  62. DynBars[idx][BarPickup] = CreateDynamicPickup( 1239, 1, DynBars[idx][BarX], DynBars[idx][BarY], DynBars[idx][BarZ], DynBars[idx][BarVW] );
  63. DynBars[idx][BarLabel] = CreateDynamic3DTextLabel("BAR\n{FFFFFF}/getdrink", 0x6E88FFFF, DynBars[idx][BarX], DynBars[idx][BarY], DynBars[idx][BarZ] +0.85, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DynBars[idx][BarVW], -1, -1, 100);
  64. }
  65. idx++;
  66. }
  67. fclose( file );
  68. }
  69. else {
  70. printf( "[error] Failed to find bars.cfg (loading)" );
  71. }
  72. return 1;
  73. }
  74. //returns if bar is valid
  75. IsValidBar( barid ) {
  76. return DynBars[barid][BarCreated];
  77. }
  78. stock IsAtBar(playerid)
  79. {
  80. if(IsPlayerInRangeOfPoint(playerid, 4.0, 495.7801, -76.0305, 998.7578) || IsPlayerInRangeOfPoint(playerid, 4.0, 499.9654, -20.2515, 1000.6797)) return 1; //10GB
  81. if(IsPlayerInRangeOfPoint(playerid, 4.0, 681.4642, -455.4616, -25.6099) || IsPlayerInRangeOfPoint(playerid, 4.0, 2496.7192, -943.5505, 39.9100)) return 1; //Welcome pump / Comando Vermelho HQ
  82. if(IsPlayerInRangeOfPoint(playerid, 4.0, -787.3099, 498.3217, 1371.7422) || IsPlayerInRangeOfPoint(playerid, 4.0, -784.7496, 498.3208, 1371.7422)) return 1; //Mafia
  83. if(IsPlayerInRangeOfPoint(playerid, 4.0, 1215.9480, -13.3519, 1000.9219) || IsPlayerInRangeOfPoint(playerid, 10.0, -2658.9749, 1407.4136, 906.2734)) return 1; //Pigpen
  84. if(IsPlayerInRangeOfPoint(playerid, 6.0, 1144.7220, -4.0717, 1000.6719) || IsPlayerInRangeOfPoint(playerid, 4.0, 968.8607, -46.3676, 1001.1172)) return 1; //Casino & Tigerskin Brothel
  85. if(IsPlayerInRangeOfPoint(playerid, 6.0, 1258.2196, -794.0273, 1084.2344) || IsPlayerInRangeOfPoint(playerid, 6.0, 1557.1156, -1896.4205, 869.0624)) return 1; // Madd Doggs Mansion & Triads Club
  86. if(IsPlayerInRangeOfPoint(playerid, 15.0, 1950.8726, 1017.5034, 992.4745) || IsPlayerInRangeOfPoint(playerid, 6.0, 2537.5300, -1285.6221, 1054.6406)) return 1; //??? & Big Smoke House
  87. if(IsPlayerInRangeOfPoint(playerid, 2.0, 2814.4380, -1165.8096, 1025.5778) || IsPlayerInRangeOfPoint(playerid, 6.0, 1525.95, -1472.02, 1037.00)) return 1; // Colonel Furnburger?
  88. return 0;
  89. }
  90. CMD:movebar(playerid, params[])
  91. {
  92. if(PlayerInfo[playerid][pAdmin] < 4) return AdmErrorMsg;
  93. new barid;
  94. if(sscanf(params, "i", barid)) return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /movebar [barid]");
  95. {
  96. if(!IsValidBar(barid)) return SendClientMessage(playerid, COLOR_RED, "** Invalid bar ID.");
  97. new Float:x, Float:y, Float:z, vw = GetPlayerVirtualWorld( playerid );
  98. GetPlayerPos(playerid, x, y, z);
  99. DynBars[barid][BarX] = x;
  100. DynBars[barid][BarY] = y;
  101. DynBars[barid][BarZ] = z;
  102. DynBars[barid][BarVW] = vw;
  103. DestroyDynamicPickup(DynBars[barid][BarPickup]);
  104. DynBars[barid][BarPickup] = CreateDynamicPickup( 1239, 1, DynBars[barid][BarX], DynBars[barid][BarY], DynBars[barid][BarZ], DynBars[barid][BarVW] );
  105. DestroyDynamic3DTextLabel(DynBars[barid][BarLabel]);
  106. DynBars[barid][BarLabel] = CreateDynamic3DTextLabel("BAR\n{FFFFFF}/getdrink", 0x6E88FFFF, DynBars[barid][BarX], DynBars[barid][BarY], DynBars[barid][BarZ] +0.85, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DynBars[barid][BarVW], -1, -1, 100);
  107. format(str, sizeof(str), "You have successfully moved Bar ID %d.", barid);
  108. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  109. }
  110. return 1;
  111. }
  112. CMD:deletebar(playerid, params[])
  113. {
  114. if(PlayerInfo[playerid][pAdmin] < 4) return AdmErrorMsg;
  115. new barid;
  116. if(sscanf(params, "i", barid)) return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /deletebar [barid]");
  117. {
  118. if( !IsValidBar( barid ) ) return SendClientMessage(playerid, COLOR_RED, "** Invalid bar ID.");
  119. DynBars[barid][BarCreated] = 0;
  120. DestroyDynamicPickup( DynBars[barid][BarPickup] );
  121. DestroyDynamic3DTextLabel( DynBars[barid][BarLabel] );
  122. }
  123. return 1;
  124. }
  125. CMD:getbarid(playerid, params[])
  126. {
  127. if(PlayerInfo[playerid][pAdmin] < 4) return AdmErrorMsg;
  128. for(new i = 0; i < MAX_BARS; i++)
  129. {
  130. if(IsPlayerInRangeOfPoint(playerid, 3, DynBars[i][BarX], DynBars[i][BarY], DynBars[i][BarZ]))
  131. {
  132. format(str, sizeof(str), "* Bar ID is %d.", i);
  133. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  134. return 1;
  135. }
  136. }
  137. SendClientMessage(playerid, COLOR_GREY, "You're not near a bar.");
  138. return 1;
  139. }
  140. CMD:addbar(playerid, params[])
  141. {
  142. if(PlayerInfo[playerid][pAdmin] < 4) return AdmErrorMsg;
  143. new Float:x, Float:y, Float:z, string[128], vw = GetPlayerVirtualWorld( playerid ), barID = GetFreeBarID();
  144. if( barID == MAX_BARS ) {
  145. return SendClientMessage( playerid, COLOR_GREY, "MAX_BARS has been reached." );
  146. }
  147. GetPlayerPos(playerid, x, y, z);
  148. format(string, sizeof(string), "[Dynamic Bar System] You have created a new bar with the ID of %d.", barID);
  149. SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
  150. DynBars[barID][BarX] = x;
  151. DynBars[barID][BarY] = y;
  152. DynBars[barID][BarZ] = z;
  153. DynBars[barID][BarZ] = z;
  154. DynBars[barID][BarVW] = vw;
  155. DynBars[barID][BarCreated] = 1;
  156. DynBars[barID][BarPickup] = CreateDynamicPickup( 1239, 1, DynBars[barID][BarX], DynBars[barID][BarY], DynBars[barID][BarZ], DynBars[barID][BarVW] );
  157. DynBars[barID][BarLabel] = CreateDynamic3DTextLabel("BAR\n{FFFFFF}/getdrink", 0x6E88FFFF, DynBars[barID][BarX], DynBars[barID][BarY], DynBars[barID][BarZ] +0.85, 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, DynBars[barID][BarVW], -1, -1, 100);
  158. return 1;
  159. }
  160. stock DeleteBar(id)
  161. {
  162. new filename[50];
  163. format(filename, sizeof(filename), "BAR%i.ini", id);
  164. dini_Remove(filename);
  165. DynBars[id][BarX] = 0.0;
  166. DynBars[id][BarY] = 0.0;
  167. DynBars[id][BarZ] = 0.0;
  168. DestroyDynamicPickup(DynBars[id][BarPickup]);
  169. DestroyDynamic3DTextLabel(DynBars[id][BarLabel]);
  170. DynBars[id][BarLabel] = Text3D:INVALID_3DTEXT_ID;
  171. return 1;
  172. }