Advertisement
FanHamMer

Untitled

Mar 31st, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.56 KB | None | 0 0
  1. #include a_samp
  2. #include a_mysql
  3.  
  4. #define PILE                    "eGarages"
  5. #define buy_cmd         "buygarage"
  6. #define create_cmd      "gcreate"
  7. #define dialog_garages  850
  8. #define max_garages     120
  9.  
  10. native sscanf(const data[], const format[], {Float,_}:...);
  11.  
  12. enum garages
  13. {
  14.     gID,
  15.     gOwner  [ 24 ],
  16. Float: gPosX,
  17. Float: gPosY,
  18. Float: gPosZ,
  19.     gPrice,
  20.     gVW,
  21. Text3D: gLabel
  22. };
  23.  
  24. new
  25.  
  26. TOTAL_GARAGES,
  27. global_garages  [ max_garages ] [ garages ],
  28. strin           [ 128 ],
  29. Query           [ 300 ]
  30. ;
  31.  
  32. public OnFilterScriptInit ( )
  33. {
  34.     mysql_connect( "localhost" , "root", "SAMP", "" );
  35.     mysql_query(
  36.     "CREATE TABLE IF NOT EXISTS `"#PILE"` ("\
  37.     "`gID` int(11) NOT NULL AUTO_INCREMENT,"\
  38.     "`gOwner` varchar(24) CHARACTER SET utf8 NOT NULL DEFAULT 'None',"\
  39.     "`gPosX` varchar(10),"\
  40.     "`gPosY` varchar(10),"\
  41.     "`gPosZ` varchar(10),"\
  42.     "`gPrice` int(10) NOT NULL,"\
  43.     "`gVW` int(10) NOT NULL,"\
  44.     "PRIMARY KEY (`gID`)"\
  45.     ") ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;");
  46.     LoadMySQLGarages();
  47. }
  48.  
  49. static stock LoadMySQLGarages ( )
  50. {
  51.     mysql_query("SELECT * FROM `"#PILE"` ORDER BY  `"#PILE"`.`gID` ASC");
  52.     mysql_store_result();
  53.     for ( new g; g < TOTAL_GARAGES; g++ ) strmid( global_garages [ g ] [ gOwner ], "None", 0, strlen("None"), 24);
  54.     if ( mysql_num_rows ( ) > 0 )
  55.     {
  56.         for ( new g = 1; g <= mysql_num_rows ( ); g++ )
  57.         {
  58.             mysql_fetch_row(Query);
  59.             sscanf(Query, "p<|>is[24]fffii", global_garages[ g ][ gID ], global_garages [ g ] [ gOwner ], global_garages [ g ][ gPosX ], global_garages [ g ][ gPosY ], global_garages [ g ][ gPosZ ], global_garages [ g ][ gPrice ], global_garages [ g ][ gVW ] );
  60.             if ( !strcmp ( global_garages[ g ][ gOwner ], "None", true ) ) format ( strin, sizeof ( strin ),"Гараж номер %i\nВыставлен на продажу\nЦена: %i\nДля покупки введите /"#buy_cmd"", g, global_garages [ g ][ gPrice ] );
  61.             else format ( strin, sizeof ( strin ), "Гараж номер %i\nВладелец: %s", g, global_garages [ g ][ gOwner ] );
  62.             CreatePickup ( 1318, 1, global_garages [ g ][ gPosX ], global_garages [ g ][ gPosY ], global_garages [ g ][ gPosZ ], -1 );
  63.             global_garages [ g ][ gLabel ] = Create3DTextLabel ( strin, 0xC4DAADFF, global_garages [ g ][ gPosX ], global_garages [ g ][ gPosY ], global_garages [ g ][ gPosZ ], 15.0, 0, 1 );
  64.             CreatePickup ( 1318, 1, 608.7586,-18.4321,1000.9206, -1 );
  65.             ++ TOTAL_GARAGES;
  66.         }
  67.     }
  68.     mysql_free_result(), printf("Было загружено %i гаражей.", TOTAL_GARAGES);
  69. }
  70.  
  71. static stock PlayerName ( p )
  72. {
  73.     new n [ 24 ];
  74.     GetPlayerName ( p, n, 24 );
  75.     return n;
  76. }
  77.  
  78. static stock IsPlayerGarageOwner ( playerid )
  79. {
  80.     format( Query, sizeof ( Query ) , "SELECT * FROM "#PILE" WHERE gOwner = '%s'", PlayerName ( playerid ) );
  81.     mysql_query( Query );
  82.     mysql_store_result();
  83.     if(mysql_num_rows()) return 1;
  84.     return 0;
  85. }
  86.  
  87. static stock strmatch(const String1[], const String2[])
  88. {
  89.     if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1))) { return true; }
  90.     else { return false; }
  91. }
  92.  
  93. static stock UpdateGarages( i )
  94. {
  95.     if ( !strcmp ( global_garages [ i ][ gOwner ], "None", true ) ) format ( strin, 128,"Гараж номер %i\nВыставлен на продажу\nЦена: %i\nДля покупки введите /"#buy_cmd"", i, global_garages [ i ][ gPrice ] );
  96.     else format( strin, 128,"Гараж номер %i\nВладелец: %s", i, global_garages [ i ][ gOwner ] );
  97.     Update3DTextLabelText ( global_garages [ i ] [ gLabel ], 0xC4DAADFF, strin );
  98. }
  99.  
  100. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  101. {
  102.     if(newkeys == KEY_CROUCH)
  103.     {
  104.         for ( new i = 0; i < sizeof( global_garages ); i++ )
  105.         {
  106.             if ( IsPlayerInRangeOfPoint ( playerid, 3.0, global_garages [ i ] [ gPosX ], global_garages [ i ] [ gPosY ], global_garages [ i ] [ gPosZ ] ) && strmatch ( global_garages [ i ] [ gOwner ], PlayerName ( playerid ) ) )
  107.             {
  108.                 if ( GetPlayerState ( playerid ) == PLAYER_STATE_DRIVER ) SetVehiclePos ( GetPlayerVehicleID ( playerid ), 607.6993,-8.2391,1000.9106 ), LinkVehicleToInterior ( GetPlayerVehicleID ( playerid ), 1 ), SetVehicleVirtualWorld ( GetPlayerVehicleID ( playerid ), global_garages [ i ] [ gVW ] );
  109.                 else SetPlayerPos ( playerid, 607.6993,-8.2391,1000.9106 );
  110.                 SetPlayerVirtualWorld ( playerid, global_garages [ i ] [ gVW ] ), SetPlayerInterior ( playerid, 1 ), SetPVarInt ( playerid, "gEnter", i );
  111.             }
  112.             else if ( IsPlayerInRangeOfPoint ( playerid, 3.0, 608.7586,-18.4321,1000.9206 ) && GetPVarInt( playerid, "gEnter" ) == i  )
  113.             {
  114.                 if ( GetPlayerState ( playerid ) == PLAYER_STATE_DRIVER ) SetVehiclePos ( GetPlayerVehicleID ( playerid ), global_garages [ i ] [ gPosX ], global_garages [ i ] [ gPosY ] + 4.0, global_garages [ i ] [ gPosZ ] ), LinkVehicleToInterior ( GetPlayerVehicleID ( playerid ), 0 ), SetVehicleVirtualWorld ( GetPlayerVehicleID ( playerid ), 0 );
  115.                 else SetPlayerPos ( playerid, global_garages [ i ] [ gPosX ], global_garages [ i ] [ gPosY ] + 4.0, global_garages [ i ] [ gPosZ ] );
  116.                 SetPlayerVirtualWorld ( playerid, 0 ), SetPlayerInterior ( playerid, 0 ), SetPVarInt ( playerid, "gEnter", 255 );
  117.             }
  118.         }
  119.     }
  120. }
  121.  
  122. public OnPlayerCommandText(playerid, cmdtext[])
  123. {
  124.     new cmd [ 32 ], params [ 128 ];
  125.  
  126.     sscanf(cmdtext, "s[32]s[128]", cmd, params);
  127.  
  128.     if ( strcmp ( "/gmenu", cmdtext, true, 7 ) == 0 )
  129.     {
  130.         if ( IsPlayerGarageOwner ( playerid ) ) ShowPlayerDialog ( playerid, dialog_garages, DIALOG_STYLE_LIST, "{FFFFFF}Меню", "[ 1 ]\tПродать гараж\n[ 2 ]\tИнформация о гараже", "<<<", "Выход" );
  131.         return 1;
  132.     }
  133.     if ( strcmp ( "/"#buy_cmd"", cmdtext, true, 7 ) == 0 )
  134.     {
  135.         if ( !IsPlayerGarageOwner ( playerid ) )
  136.         {
  137.             for( new i = 0; i < sizeof( global_garages ); i++ )
  138.             {
  139.                 if ( IsPlayerInRangeOfPoint ( playerid, 2.0, global_garages [ i ] [ gPosX ], global_garages [ i ] [ gPosY ], global_garages [ i ] [ gPosZ ] ) )
  140.                 {
  141.                     if ( !strcmp ( global_garages [ i ] [ gOwner ], "None", true ) && !IsPlayerGarageOwner ( playerid ) )
  142.                     {
  143.                         if ( GetPlayerMoney ( playerid ) < global_garages [ i ] [ gPrice ]) return SendClientMessage( playerid, -1, "У вас нет денег для покупки данного гаража!" );
  144.                         format( Query, sizeof( Query ), "UPDATE "#PILE" SET  gOwner = '%s' WHERE gID = '%d' LIMIT 1", PlayerName ( playerid ), i );
  145.                         mysql_query( Query ), strmid( global_garages [ i ] [ gOwner ], PlayerName( playerid ), 0, strlen( PlayerName( playerid ) ), 24);
  146.                         GivePlayerMoney( playerid, - global_garages [ i ] [ gPrice ] ), SetPlayerVirtualWorld ( playerid, global_garages [ i ] [ gVW ] ), SetPVarInt( playerid, "gEnter", i );
  147.                         UpdateGarages ( i );
  148.                     }
  149.                 }
  150.             }
  151.         }
  152.         return 1;
  153.     }
  154.     if ( strcmp ( cmd, "/"#create_cmd"", true ) == 0 )
  155.     {
  156.         new gprice, Float: Pos [ 3 ];
  157.         if ( IsPlayerAdmin ( playerid ) )
  158.         {
  159.             if ( sscanf ( params, "i", gprice ) ) return SendClientMessage(playerid, -1, "Используйте: /"#create_cmd" [ Цена гаража ]");
  160.             ++ TOTAL_GARAGES, GetPlayerPos ( playerid, Pos [ 0 ], Pos [ 1 ], Pos [ 2 ] );
  161.             global_garages [ TOTAL_GARAGES ] [ gPosX ] = Pos [ 0 ], global_garages [ TOTAL_GARAGES ] [ gPosY ] = Pos [ 1 ], global_garages [ TOTAL_GARAGES ] [ gPosZ ] = Pos [ 2 ], global_garages [ TOTAL_GARAGES ] [ gPrice ] = gprice;
  162.  
  163.             CreatePickup ( 1318, 1, global_garages [ TOTAL_GARAGES ] [ gPosX ], global_garages [ TOTAL_GARAGES ] [ gPosY ], global_garages [ TOTAL_GARAGES ] [ gPosZ ] );
  164.             format ( strin, 128, "Гараж номер %i\nВыставлен на продажу\nЦена: %i\nДля покупки введите /"#buy_cmd"", TOTAL_GARAGES, global_garages [ TOTAL_GARAGES ] [ gPrice ] );
  165.             global_garages [ TOTAL_GARAGES ] [ gLabel ] = Create3DTextLabel ( strin, 0xC4DAADFF, global_garages [ TOTAL_GARAGES ] [ gPosX ], global_garages [ TOTAL_GARAGES ] [ gPosY ], global_garages [ TOTAL_GARAGES ] [ gPosZ ], 15.0, 0, 1 );
  166.             format(Query,sizeof(Query),"INSERT INTO `"#PILE"` (gID, gOwner, gPosX, gPosY, gPosZ, gPrice, gVW) VALUES ('%d', 'None', '%f','%f','%f', '%d', '%d')", TOTAL_GARAGES, global_garages [ TOTAL_GARAGES ] [ gPosX ], global_garages [ TOTAL_GARAGES ] [ gPosY ], global_garages [ TOTAL_GARAGES ] [ gPosZ ], global_garages [ TOTAL_GARAGES ] [ gPrice ], TOTAL_GARAGES );
  167.             mysql_query(Query), SendClientMessage ( playerid, -1, "Гараж создан!" );
  168.         }
  169.         return 1;
  170.     }
  171.     return 1;
  172. }
  173.  
  174. public OnDialogResponse ( playerid, dialogid, response, listitem, inputtext[] )
  175. {
  176.     if ( dialogid == dialog_garages && response )
  177.     {
  178.         switch ( listitem )
  179.         {
  180.         case 0:
  181.             {
  182.                 for( new i = 0; i < sizeof( global_garages ); i++ )
  183.                 {
  184.                     if ( IsPlayerInRangeOfPoint ( playerid, 4.0, global_garages [ i ] [ gPosX ], global_garages [ i ] [ gPosY ], global_garages [ i ] [ gPosZ ] ) )
  185.                     {
  186.                         if ( IsPlayerGarageOwner ( playerid ) )
  187.                         {
  188.                             format( Query, sizeof( Query ), "UPDATE "#PILE" SET gOwner = 'None' WHERE gID = '%d' LIMIT 1", i );
  189.                             mysql_query( Query ), strmid( global_garages [ i ] [ gOwner ], "None", 0, strlen( "None" ), 24), GivePlayerMoney ( playerid,  global_garages [ i ] [ gPrice ] - 1000 );
  190.                             UpdateGarages ( i );
  191.                         }
  192.                     }
  193.                 }
  194.             }
  195.         case 1:
  196.             {
  197.                 format ( strin, 128,
  198.                 "{9AD618}Ваш гараж номер: %i\n\
  199.                                 Стоимость вашего гаража: %i",
  200.                 global_garages [ IsPlayerGarageOwner ( playerid ) ] [ gID ], global_garages [ IsPlayerGarageOwner ( playerid ) ] [ gPrice ] ), ShowPlayerDialog ( playerid, dialog_garages + 1, DIALOG_STYLE_MSGBOX, "{FFFFFF}Информация", strin, "Выход", "" );
  201.             }
  202.         }
  203.     }
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement