1
0

ATM.inc 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #define MAX_ATMS ( 500 )
  2. #define INVALID_ATM_ID ( -1 )
  3. new Iterator: Atms< MAX_ATMS >;
  4. new ATMID[ MAX_ATMS ];
  5. new EditingAtm[ MAX_PLAYERS ];
  6. enum ATM
  7. {
  8. Float: atm_X,
  9. Float: atm_Y,
  10. Float: atm_Z,
  11. Float: atm_fX,
  12. Float: atm_fY,
  13. Float: atm_fZ,
  14. AtmObject,
  15. bool:Save
  16. }
  17. new AtmInfo[ MAX_ATMS ] [ ATM ];
  18. forward LoadATMS();
  19. public LoadATMS()
  20. {
  21. new rows = cache_num_rows( );
  22. if( rows )
  23. {
  24. new atmid, loaded;
  25. while( loaded < rows )
  26. {
  27. atmid = cache_get_field_content_int( loaded, "ID" );
  28. AtmInfo [ atmid ] [ atm_X ] = cache_get_field_content_float( loaded, "atm_X" );
  29. AtmInfo [ atmid ] [ atm_Y ] = cache_get_field_content_float( loaded, "atm_Y" );
  30. AtmInfo [ atmid ] [ atm_Z ] = cache_get_field_content_float( loaded, "atm_Z" );
  31. AtmInfo [ atmid ] [ atm_fX ] = cache_get_field_content_float( loaded, "atm_fX" );
  32. AtmInfo [ atmid ] [ atm_fY ] = cache_get_field_content_float( loaded, "atm_fY" );
  33. AtmInfo [ atmid ] [ atm_fZ ] = cache_get_field_content_float( loaded, "atm_fZ" );
  34. AtmInfo[ atmid ] [ AtmObject ] = CreateObject( 19324, AtmInfo [ atmid ] [ atm_X ], AtmInfo [ atmid ] [ atm_Y ], AtmInfo [ atmid ] [ atm_Z ], AtmInfo [ atmid ] [ atm_fX ], AtmInfo [ atmid ] [ atm_fY ], AtmInfo [ atmid ] [ atm_fZ ], 50 );
  35. AtmInfo[ atmid ] [ Save ] = true;
  36. Iter_Add( Atms, atmid );
  37. ATMID [ atmid ] = atmid;
  38. loaded ++;
  39. }
  40. printf( "Loaded %d ATMs.", loaded );
  41. }
  42. return 1;
  43. }
  44. /*Hook:a_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  45. {
  46. new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ, str[150];
  47. GetObjectPos(objectid, oldX, oldY, oldZ);
  48. GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  49. if(response == EDIT_RESPONSE_FINAL && EditingAtm[ playerid ])
  50. {
  51. new query[500];
  52. DestroyObject(AtmInfo[ EditingAtm[ playerid ] ] [ AtmObject ]);
  53. AtmInfo[EditingAtm[ playerid ] ] [atm_X] = fX;
  54. AtmInfo[EditingAtm[ playerid ] ] [atm_Y] = fY;
  55. AtmInfo[EditingAtm[ playerid ] ] [atm_Z] = fZ;
  56. AtmInfo[EditingAtm[ playerid ] ] [atm_fX] = fRotX;
  57. AtmInfo[EditingAtm[ playerid ] ] [atm_fY] = fRotY;
  58. AtmInfo[EditingAtm[ playerid ] ] [atm_fZ] = fRotZ;
  59. AtmInfo[ EditingAtm[ playerid ] ] [ AtmObject ] = CreateObject( 19324, AtmInfo [ EditingAtm[ playerid ] ] [ atm_X ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_Y ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_Z ],
  60. AtmInfo [ EditingAtm[ playerid ] ] [ atm_fX ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_fY ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_fZ ], 50 );
  61. mysql_format( sqlGameConnection, query, sizeof( query ), "UPDATE `atm` SET `atm_X`='%f', `atm_Y`='%f', `atm_Z`='%f', `atm_fX`='%f', `atm_fY`='%f', `atm_fZ`='%f' WHERE `ID`='%d'", AtmInfo [ EditingAtm[ playerid ] ] [ atm_X ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_Y ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_Z ],
  62. AtmInfo [ EditingAtm[ playerid ] ] [ atm_fX ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_fY ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_fZ ], EditingAtm[ playerid ] );
  63. mysql_tquery( sqlGameConnection, query, "", "" );
  64. format( str, sizeof( str ), "You've adjusted position of ATM ID: %d", EditingAtm[ playerid ]);
  65. SendClientMessage(playerid, -1, str);
  66. }
  67. if(response == EDIT_RESPONSE_CANCEL && EditingAtm[ playerid ])
  68. {
  69. DestroyObject( AtmInfo[ EditingAtm[ playerid ] ] [ AtmObject ] );
  70. AtmInfo[ EditingAtm[ playerid ] ] [ AtmObject ] = CreateObject( 19324, AtmInfo [ EditingAtm[ playerid ] ] [ atm_X ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_Y ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_Z ],
  71. AtmInfo [ EditingAtm[ playerid ] ] [ atm_fX ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_fY ], AtmInfo [ EditingAtm[ playerid ] ] [ atm_fZ ], 50 );
  72. format( str, sizeof( str ), "You haven't adjusted the position of ATM ID: %d as you canceled it", EditingAtm[ playerid ]);
  73. SendClientMessage(playerid, -1, str);
  74. }
  75. return 1;
  76. }*/
  77. CMD:createatm( playerid, params[] )
  78. {
  79. new atmid = Iter_Free( Atms ), Float: x, Float: y, Float: z, query[500], str[100];
  80. if( PlayerInfo[ playerid ] [ pAdmin ] < 3 ) SendClientMessage( playerid, -1, "Not authorized!" );
  81. else if( atmid == -1 ) SendClientMessage(playerid, -1, "MAX ATMS has reached");
  82. else
  83. {
  84. GetPlayerPos( playerid, x, y, z );
  85. AtmInfo[ atmid ] [ AtmObject ] = CreateObject( 19324, x, y, z, 0, 0, 0, 50 );
  86. SetPlayerPos(playerid, x+2, y+2, z+2);
  87. AtmInfo[ atmid ] [ Save ] = true;
  88. AtmInfo[ atmid ] [ atm_X ] = x;
  89. AtmInfo[ atmid ] [ atm_Y ] = y;
  90. AtmInfo[ atmid ] [ atm_Z ] = z;
  91. mysql_format( sqlGameConnection, query, sizeof( query ), "INSERT INTO `atm` SET `ID`='%d', `atm_X`='%f', `atm_Y`='%f', `atm_Z`='%f'", atmid, x, y, z );
  92. mysql_tquery( sqlGameConnection, query, "", "" );
  93. Iter_Add(Atms, atmid);
  94. ATMID [ atmid ] = atmid;
  95. format(str, sizeof(str), "{00BFFF}You've successfully created an ATM - {FFFFFF}ID: %d", atmid);
  96. SendClientMessage(playerid, -1, str);
  97. }
  98. return 1;
  99. }
  100. CMD:gotoatm( playerid, params[] )
  101. {
  102. new atmid, str[100];
  103. if( PlayerInfo[ playerid ] [ pAdmin ] < 3 ) SendClientMessage( playerid, -1, "Not authorized!" );
  104. else if( sscanf( params, "i", atmid ) ) SendClientMessage( playerid, -1, "{00BFFF}Usage:{FFFFFF} /gotoatm [id]" );
  105. else if( !Iter_Contains( Atms, atmid ) ) SendClientMessage( playerid, -1, "{FF0000}Error:{FFFFFF} The ATM ID you entered does not exist!" );
  106. else
  107. {
  108. SetPlayerPos(playerid, AtmInfo [ atmid ] [ atm_X ]+2, AtmInfo [ atmid ] [ atm_Y ]+2, AtmInfo [ atmid ] [ atm_Z ]+2);
  109. format( str, sizeof( str ), "{00BFFF}You've successfully teleported to ATM - {FFFFFF}ID: %d", atmid );
  110. SendClientMessage( playerid, -1, str );
  111. }
  112. return 1;
  113. }
  114. CMD:deleteatm( playerid, params[] )
  115. {
  116. new atmid, query[100], str[100];
  117. if( PlayerInfo[ playerid ] [ pAdmin ] < 3 ) SendClientMessage( playerid, -1, "Not authorized!" );
  118. else if( sscanf( params, "i", atmid ) ) SendClientMessage( playerid, -1, "{00BFFF}Usage: {FFFFFF}/deleteatm [id]" );
  119. else if( !Iter_Contains( Atms, atmid ) ) SendClientMessage( playerid, -1, "{FF0000}Error:{FFFFFF} The ATM ID you entered does not exist!" );
  120. else
  121. {
  122. DestroyObject( AtmInfo[ atmid ] [ AtmObject ] );
  123. AtmInfo [ atmid ] [ atm_X ] = 0;
  124. AtmInfo [ atmid ] [ atm_Y ] = 0;
  125. AtmInfo [ atmid ] [ atm_Z ] = 0;
  126. Iter_Remove( Atms, atmid );
  127. mysql_format( sqlGameConnection, query, sizeof( query ), "DELETE FROM `atm` WHERE `ID`='%d'", atmid);
  128. mysql_tquery( sqlGameConnection, query, "", "" );
  129. format( str, sizeof( str ), "{00BFFF}You've successfully deleted ATM - {FFFFFF}ID: %d", atmid );
  130. SendClientMessage( playerid, -1, str );
  131. }
  132. return 1;
  133. }
  134. CMD:getatmid( playerid )
  135. {
  136. new str[ 32 ];
  137. if( PlayerInfo[ playerid ] [ pAdmin ] < 3 ) return SendClientMessage( playerid, -1, "Not authorized!" );
  138. for( new i; i < MAX_ATMS; i++ )
  139. {
  140. if(IsPlayerInRangeOfPoint( playerid, 2.0, AtmInfo[ i ] [ atm_X ], AtmInfo[ i ] [ atm_Y ], AtmInfo[ i ] [ atm_Z ] ) )
  141. {
  142. format( str, sizeof str, "ATM ID is %d", ATMID[ i ] );
  143. SendClientMessage( playerid, -1, str );
  144. return 1;
  145. }
  146. }
  147. SendClientMessage( playerid, -1, "You're not near any ATM!" );
  148. return 1;
  149. }
  150. CMD:editatm( playerid, params[] )
  151. {
  152. new atmid, str[125];
  153. if( PlayerInfo[ playerid ] [ pAdmin ] < 3 ) SendClientMessage( playerid, -1, "Not authorized!" );
  154. else if( sscanf( params, "i", atmid ) ) SendClientMessage( playerid, -1, "{00BFFF}Usage: {FFFFFF}/editatm [id]" );
  155. else if( !Iter_Contains( Atms, atmid ) ) SendClientMessage( playerid, -1, "{FF0000}Error:{FFFFFF} The ATM ID you entered does not exist!" );
  156. else
  157. {
  158. EditObject(playerid, AtmInfo[ atmid ] [ AtmObject] );
  159. format( str, sizeof( str ), "You're editing ATM ID: %d", atmid );
  160. SendClientMessage( playerid, -1, str );
  161. EditingAtm[ playerid ] = atmid;
  162. }
  163. return 1;
  164. }