Guest User

GameStar Vehicle System

a guest
Oct 5th, 2011
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.47 KB | None | 0 0
  1. /*
  2.     Alap jármű rendszer
  3.     - Készítette GameStar 2011
  4.     MySQL tábla:
  5.  
  6. CREATE TABLE IF NOT EXISTS `vehicles` (
  7.   `id` SMALLINT(7) NOT NULL auto_increment,
  8.   `owner` VARCHAR(24) NOT NULL,
  9.   `model` INT NOT NULL DEFAULT '0',
  10.   `x` FLOAT DEFAULT '0.0',
  11.   `y` FLOAT DEFAULT '0.0',
  12.   `z` FLOAT DEFAULT '0.0',
  13.   `an` FLOAT DEFAULT '0.0',
  14.   PRIMARY KEY  (`id`)
  15. );
  16.  
  17. */
  18. #include <a_samp>
  19. #include <mysql> // http://forum.sa-mp.com/showthread.php?t=56564
  20. #include <sscanf2> // http://forum.sa-mp.com/showthread.php?t=120356
  21.  
  22. new VehicleOwner[MAX_VEHICLES][MAX_PLAYER_NAME];
  23. new VehicleSQLID[MAX_VEHICLES];
  24.  
  25. // Ha meg akarod változtatni a jármű tulajdonosát
  26. stock ChangeVehicleOwner(vehicleid, owner[])
  27. {
  28.     new query[256];
  29.     format(query, 256, "UPDATE vehicles SET owner = '%s' WHERE id = %i", owner, VehicleSQLID[vehicleid]);
  30.     mysql_query(query);
  31.     format(VehicleOwner[vehicleid], MAX_PLAYER_NAME, "%s", owner);
  32.     return 1;
  33. }
  34.  
  35. // A jármű pozícióját a jelenlegi pozíciójának jegyzi meg
  36. stock UpdateVehiclePos(vehicleid)
  37. {
  38.     new query[256],
  39.         Float:x,
  40.         Float:y,
  41.         Float:z,
  42.         Float:an;
  43.     GetVehiclePos(vehicleid, x, y, z);
  44.     GetVehicleZAngle(vehicleid, an);
  45.     format(query, 256, "UPDATE vehicles SET x = %f, y = %f, z = %f, an = %f WHERE id = %i", x, y, z, an, VehicleSQLID[vehicleid]);
  46.     mysql_query(query);
  47.     return 1;
  48. }
  49.  
  50. // Jármű hozzáadása az adatbázishoz
  51. stock AddVehicleToBase(vehicleid, owner[])
  52. {
  53.     new query[256],
  54.         Float:x,
  55.         Float:y,
  56.         Float:z,
  57.         Float:an;
  58.     GetVehiclePos(vehicleid, x, y, z);
  59.     GetVehicleZAngle(vehicleid, an);
  60.     format(query, 256, "INSERT INTO vehicles VALUES(0, '%s', %i, %f, %f, %f, %f)", owner, GetVehicleModel(vehicleid), x, y, z, an);
  61.     mysql_query(query);
  62.     format(query, 256, "SELECT id FROM vehicles WHERE x = %f", x);
  63.     VehicleSQLID[vehicleid] = mysql_fetch_int();
  64.     return 1;
  65. }
  66.  
  67. // Jármű törlése az adatbázisból
  68. stock RemoveVehicleFromBase(vehicleid)
  69. {
  70.     new query[256];
  71.     format(query, 256, "DELETE FROM vehicles WHERE id = %i", VehicleSQLID[vehicleid]);
  72.     mysql_query(query);
  73.     return 1;
  74. }
  75.  
  76. // MySQL csatlakozása, járművek betöltése
  77. public OnFilterScriptInit()
  78. {
  79.     mysql_init();
  80.     mysql_connect("localhost", "samp", "szerver", "jelszo");
  81.     mysql_query("SELECT * FROM vehicles");
  82.     mysql_store_result();
  83.     new row[256],
  84.         id,
  85.         owner[MAX_PLAYER_NAME],
  86.         model,
  87.         Float:x,
  88.         Float:y,
  89.         Float:z,
  90.         Float:an;
  91.     for(new i = 0; i < MAX_VEHICLES; i++)
  92.     {
  93.         mysql_fetch_row(row);
  94.         if(!sscanf(row, "p<|>is[24]iffff", id, owner, model, x, y, z, an))
  95.         {
  96.             new v = CreateVehicle(model, x, y, z, an, -1, -1, -1);
  97.             VehicleSQLID[v] = id;
  98.             VehicleOwner[v] = owner;
  99.         }
  100.     }
  101.     return 1;
  102. }
  103.  
  104. // MySQL bezárása
  105. public OnFilterScriptExit()
  106. {
  107.     mysql_close();
  108.     return 1;
  109. }
  110.  
  111. // Saját járműbe szállás ellenőrzése
  112. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  113. {
  114.     if(!ispassenger)
  115.     {
  116.         new name[MAX_PLAYER_NAME];
  117.         GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  118.         if(strcmp(VehicleOwner[vehicleid], name) < 0)
  119.         {
  120.             SendClientMessage(playerid, 0xFFFF00FF, "Sajnálom, ez nem a te járműved!");
  121.             ClearAnimations(playerid);
  122.         }
  123.     }
  124.     return 1;
  125. }
  126.  
  127. // Ha elhagyja a járművet, a pozíció mentése
  128. public OnPlayerExitVehicle(playerid, vehicleid)
  129. {
  130.     new name[MAX_PLAYER_NAME];
  131.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  132.     if(strcmp(VehicleOwner[vehicleid], name) < 0) UpdateVehiclePos(vehicleid);
  133.     return 1;
  134. }
  135.  
  136.  
Advertisement
Add Comment
Please, Sign In to add comment