Advertisement
BigETI

player_recorder.pwn

Nov 26th, 2013
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.05 KB | None | 0 0
  1. #include <a_samp>
  2. #include <list>
  3.  
  4. MEM::struct player_info
  5. {
  6.     player_info_time,
  7.     player_info_skin_weapon,
  8.     player_info_vehicle,
  9.     Float:player_info_pos[4],
  10.     Float:player_info_velocity[3],
  11.     player_info_animation
  12. }
  13.  
  14. new LIST::init<player_recorder[MAX_PLAYERS]>, bool:deny_action = false, first_tick[MAX_PLAYERS];
  15.  
  16. stock SavePlayerRecord(playerid)
  17. {
  18.     new year, month, day, hour, minute, second, name[MAX_PLAYER_NAME], file_name[43+MAX_PLAYER_NAME];
  19.     getdate(year, month, day);
  20.     gettime(hour, minute, second);
  21.     GetPlayerName(playerid, name, sizeof name);
  22.     format(file_name, sizeof file_name, "player_recordings/%d-%02d-%02d_%02d-%02d-%02d_%s.crec", year, month, day, hour, minute, second, name);
  23.     LIST::save(player_recorder[playerid], file_name, true);
  24. }
  25.  
  26. public OnFilterScriptInit()
  27. {
  28.     for(new i = 0, tick = GetTickCount(); i < MAX_PLAYERS; i++)
  29.     {
  30.         if(!IsPlayerConnected(i)) continue;
  31.         first_tick[i] = tick;
  32.     }
  33.     print("\n===========================");
  34.     print("= Instant player recorder =");
  35.     print("=     Made by BigETI      =");
  36.     print("=         Loaded!         =");
  37.     print("===========================\n");
  38.     return 1;
  39. }
  40.  
  41. public OnFilterScriptExit()
  42. {
  43.     deny_action = true;
  44.     for(new i = 0; i < MAX_PLAYERS; i++)
  45.     {
  46.         if(!IsPlayerConnected(i)) continue;
  47.         SavePlayerRecord(i);
  48.     }
  49.     print("\n===========================");
  50.     print("= Instant player recorder =");
  51.     print("=     Made by BigETI      =");
  52.     print("=        Unloaded!        =");
  53.     print("===========================\n");
  54.     return 1;
  55. }
  56.  
  57. public OnPlayerConnect(playerid)
  58. {
  59.     if(deny_action) return 1;
  60.     first_tick[playerid] = GetTickCount();
  61.     return 1;
  62. }
  63.  
  64. public OnPlayerDisconnect(playerid, reason)
  65. {
  66.     if(deny_action) return 1;
  67.     SavePlayerRecord(playerid);
  68.     return 1;
  69. }
  70.  
  71. public OnPlayerUpdate(playerid)
  72. {
  73.     if(deny_action) return 1;
  74.     static player_buffer[player_info], vehicleid;
  75.     player_buffer[player_info_time] = GetTickCount()-first_tick[playerid];
  76.     player_buffer[player_info_skin_weapon] = GetPlayerSkin(playerid)|(GetPlayerWeapon(playerid)<<16);
  77.     if((vehicleid = GetPlayerVehicleID(playerid)))
  78.     {
  79.         player_buffer[player_info_vehicle] = GetVehicleModel(vehicleid)|(GetPlayerVehicleSeat(playerid)<<16);
  80.         GetVehiclePos(vehicleid, player_buffer[player_info_pos][0], player_buffer[player_info_pos][1], player_buffer[player_info_pos][2]);
  81.         GetVehicleZAngle(vehicleid, player_buffer[player_info_pos][3]);
  82.         GetVehicleVelocity(vehicleid, player_buffer[player_info_velocity][0], player_buffer[player_info_velocity][1], player_buffer[player_info_velocity][2]);
  83.     }
  84.     else
  85.     {
  86.         GetPlayerPos(playerid, player_buffer[player_info_pos][0], player_buffer[player_info_pos][1], player_buffer[player_info_pos][2]);
  87.         GetPlayerFacingAngle(playerid, player_buffer[player_info_pos][3]);
  88.         GetPlayerVelocity(playerid, player_buffer[player_info_velocity][0], player_buffer[player_info_velocity][1], player_buffer[player_info_velocity][2]);
  89.     }
  90.     player_buffer[player_info_animation] = GetPlayerAnimationIndex(playerid);
  91.     LIST::push_back_arr(player_recorder[playerid], player_buffer);
  92.     return 1;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement