Advertisement
Guest User

PowerSprunk v0.1

a guest
Sep 22nd, 2015
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 16.70 KB | None | 0 0
  1. //
  2. //  PowerSprunk FS by dock (aliases: Tika Spic, xdrive)
  3. //
  4.  
  5. //
  6. //  Includes
  7. //
  8.  
  9. #include <a_samp>
  10. #include <zcmd>
  11. #include <streamer>
  12. #include <dini>
  13.  
  14.  
  15. //
  16. //  Defines
  17. //
  18.  
  19. #define SPRUNK_LOCATION    "PowerSprunk/%d.ini"
  20.  
  21. #define DISABLED_SPRUNK_MESSAGE     "Damn, the machine ate my dolar, looks like it's broken..."
  22.  
  23. #define SPRUNK_DEF  100 // DISABLED SPRUNKS + DYNAMIC SPRUNKS
  24.  
  25. #define OLD_SPRUNK_MODEL    955
  26. #define NEW_SPRUNK_MODEL    1775
  27.  
  28. #define USED_SPRUNK_MODEL   NEW_SPRUNK_MODEL //Will use a new sprunk model (redifine as you see fit)
  29.  
  30. #define DIALOG_SPRUNK_ID    7899 //Redifine if it matches a dialog id in your script
  31.  
  32. #define DYNAMIC_SPRUNK_COST     10 // Cost of using a dynamic sprunk
  33. #define DISABLED_SPRUNK_HP      35.0 // How much a regular sprunk heals (if disabled how much to remove hp after using)
  34. #define DYNAMIC_SPRUNK_HP       35.0 // How much the dynamic sprunks are gonna heal
  35.  
  36. #define COLOR_RED       0xff0000ff
  37. #define COLOR_YELLOW    0xffff00ff
  38. #define COLOR_WHITE     0xffffffff
  39. #define COLOR_GREEN     0x00ff00ff
  40.  
  41. //
  42. //  Forwards
  43. //
  44.  
  45. forward LoadSprunks();
  46. forward SaveSprunks();
  47. forward Sprunk_AntiFlood( playerid );
  48. forward Dyn_Sprunk_AntiFlood( playerid );
  49. forward Vending( playerid, count );
  50.  
  51. //
  52. //  News/Enums
  53. //
  54.  
  55. enum sprunkInfo {
  56.     sUsed,
  57.     sDisabled,
  58.     sDynamic,
  59.     Float:sX,
  60.     Float:sY,
  61.     Float:sZ,
  62.     Float:sModelx,
  63.     Float:sModely,
  64.     Float:sModelz,
  65.     Float:sRotx,
  66.     Float:sRoty,
  67.     Float:sRotz,
  68.     sCID
  69. }; new SI[ SPRUNK_DEF ][ sprunkInfo ];
  70.  
  71. new sprunk[MAX_PLAYERS];
  72. new dynspid[MAX_PLAYERS];
  73. new Float:primarypos[MAX_PLAYERS][6];
  74.  
  75. new bool:DYNAMIC_SPRUNK_HEAL = true; // Set to false if you don't want the dynamic sprunks to heal!
  76.  
  77. //
  78. //  Publics
  79. //
  80.  
  81. public LoadSprunks() {
  82.     new file[ 32 ];
  83.     for( new s = 0; s < SPRUNK_DEF; s++ ) {
  84.    
  85.         format( file, sizeof( file ), SPRUNK_LOCATION, s );
  86.        
  87.         if( fexist( file ) ) {
  88.        
  89.             SI[ s ][ sUsed ] = 1;
  90.             SI[ s ][ sDisabled ] = dini_Int( file, "sDisabled" );
  91.             SI[ s ][ sDynamic ] = dini_Int( file, "sDynamic" );
  92.             SI[ s ][ sX ] = dini_Float( file, "sX" );
  93.             SI[ s ][ sY ] = dini_Float( file, "sY" );
  94.             SI[ s ][ sZ ] = dini_Float( file, "sZ" );
  95.             SI[ s ][ sModelx ] = dini_Float( file, "sModelx" );
  96.             SI[ s ][ sModely ] = dini_Float( file, "sModely" );
  97.             SI[ s ][ sModelz ] = dini_Float( file, "sModelz" );
  98.             SI[ s ][ sRotx ] = dini_Float( file, "sRotx" );
  99.             SI[ s ][ sRoty ] = dini_Float( file, "sRoty" );
  100.             SI[ s ][ sRotz ] = dini_Float( file, "sRotz" );
  101.            
  102.             if( SI[ s ][ sDisabled ] == 0 && SI[ s ][ sDynamic ] == 1 ) {
  103.                 SI[ s ][ sCID ] = CreateDynamicObject( USED_SPRUNK_MODEL, SI[ s ][ sModelx ], SI[ s ][ sModely ], SI[ s ][ sModelz ], SI[ s ][ sRotx ], SI[ s ][ sRoty ], SI[ s ][ sRotz ] );
  104.             }
  105.         }
  106.     }
  107.     return 1;
  108. }
  109.  
  110. public SaveSprunks() {
  111.     new file[ 32 ];
  112.     for( new s = 0; s < SPRUNK_DEF; s++ ) {
  113.         if( SI[ s ][ sUsed ] == 1 ) {
  114.             format( file, sizeof( file ), SPRUNK_LOCATION, s );
  115.             if( !fexist( file ) ) dini_Create( file );
  116.             dini_IntSet( file, "sDisabled", SI[ s ][ sDisabled ] );
  117.             dini_IntSet( file, "sDynamic", SI[ s ][ sDynamic ] );
  118.             dini_FloatSet( file, "sX", SI[ s ][ sX ] );
  119.             dini_FloatSet( file, "sY", SI[ s ][ sY ] );
  120.             dini_FloatSet( file, "sZ", SI[ s ][ sZ ] );
  121.             dini_FloatSet( file, "sModelx", SI[ s ][ sModelx ] );
  122.             dini_FloatSet( file, "sModely", SI[ s ][ sModely ] );
  123.             dini_FloatSet( file, "sModelz", SI[ s ][ sModelz ] );
  124.             dini_FloatSet( file, "sRotx", SI[ s ][ sRotx ] );
  125.             dini_FloatSet( file, "sRoty", SI[ s ][ sRoty ] );
  126.             dini_FloatSet( file, "sRotz", SI[ s ][ sRotz ] );
  127.         }
  128.         else {
  129.             format( file, sizeof( file ), SPRUNK_LOCATION, s );
  130.             if( fexist( file ) ) fremove( file );
  131.         }
  132.     }
  133.     return 1;
  134. }
  135.  
  136. public Vending( playerid, count ) {
  137.  
  138.     if( count == 1 ) {
  139.    
  140.         ApplyAnimation( playerid, "VENDING", "VEND_Use_pt2", 4.1, 0, 0, 0, 1, 1 );
  141.         SetTimerEx( "Vending", 300, false, "dd", playerid, 2 );
  142.     }
  143.     else if( count == 2 ) {
  144.    
  145.         ApplyAnimation( playerid, "VENDING", "VEND_Drink_P", 4.1, 0, 0, 0, 1, 1 );
  146.         SetTimerEx( "Vending", 1250, false, "dd", playerid, 3 );
  147.     }
  148.     else if( count == 3 ) {
  149.    
  150.         ApplyAnimation( playerid, "PED", "endchat_01", 4.1, 0, 0, 0, 0, 1, 1 );
  151.        
  152.         if( DYNAMIC_SPRUNK_HEAL ) {
  153.        
  154.             new Float:hp;
  155.             GetPlayerHealth( playerid, hp );
  156.             SetPlayerHealth( playerid, hp + DYNAMIC_SPRUNK_HP );
  157.         }
  158.     }
  159.     return 1;
  160. }
  161.  
  162. public Sprunk_AntiFlood( playerid ) {
  163.  
  164.     SetPVarInt( playerid, "SPRUNK_FLOOD", 0 );
  165.     return 1;
  166. }
  167.  
  168. public Dyn_Sprunk_AntiFlood( playerid ) {
  169.  
  170.     SetPVarInt( playerid, "DYN_SPRUNK_FLOOD", 0 );
  171.     return 1;
  172. }
  173.  
  174. //
  175. //  Filterscript standard publics
  176. //
  177.  
  178. public OnFilterScriptInit()
  179. {
  180.     print("PowerSprunk by dock v0.1 - Filterscript loaded");
  181.     LoadSprunks();
  182.     return 1;
  183. }
  184.  
  185. public OnFilterScriptExit()
  186. {
  187.     SaveSprunks();
  188.     return 1;
  189. }
  190.  
  191. public OnPlayerRequestClass(playerid, classid)
  192. {
  193.     return 1;
  194. }
  195.  
  196. public OnPlayerConnect(playerid)
  197. {
  198.     return 1;
  199. }
  200.  
  201. public OnPlayerDisconnect(playerid, reason)
  202. {
  203.     return 1;
  204. }
  205.  
  206. public OnPlayerSpawn(playerid)
  207. {
  208.     return 1;
  209. }
  210.  
  211. public OnPlayerDeath(playerid, killerid, reason)
  212. {
  213.     return 1;
  214. }
  215.  
  216. public OnVehicleSpawn(vehicleid)
  217. {
  218.     return 1;
  219. }
  220.  
  221. public OnVehicleDeath(vehicleid, killerid)
  222. {
  223.     return 1;
  224. }
  225.  
  226. public OnPlayerText(playerid, text[])
  227. {
  228.     return 1;
  229. }
  230.  
  231. public OnPlayerCommandText(playerid, cmdtext[])
  232. {
  233.     return 0;
  234. }
  235.  
  236. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  237. {
  238.     return 1;
  239. }
  240.  
  241. public OnPlayerExitVehicle(playerid, vehicleid)
  242. {
  243.     return 1;
  244. }
  245.  
  246. public OnPlayerStateChange(playerid, newstate, oldstate)
  247. {
  248.     return 1;
  249. }
  250.  
  251. public OnPlayerEnterCheckpoint(playerid)
  252. {
  253.     return 1;
  254. }
  255.  
  256. public OnPlayerLeaveCheckpoint(playerid)
  257. {
  258.     return 1;
  259. }
  260.  
  261. public OnPlayerEnterRaceCheckpoint(playerid)
  262. {
  263.     return 1;
  264. }
  265.  
  266. public OnPlayerLeaveRaceCheckpoint(playerid)
  267. {
  268.     return 1;
  269. }
  270.  
  271. public OnRconCommand(cmd[])
  272. {
  273.     return 1;
  274. }
  275.  
  276. public OnPlayerRequestSpawn(playerid)
  277. {
  278.     return 1;
  279. }
  280.  
  281. public OnObjectMoved(objectid)
  282. {
  283.     return 1;
  284. }
  285.  
  286. public OnPlayerObjectMoved(playerid, objectid)
  287. {
  288.     return 1;
  289. }
  290.  
  291. public OnPlayerPickUpPickup(playerid, pickupid)
  292. {
  293.     return 1;
  294. }
  295.  
  296. public OnVehicleMod(playerid, vehicleid, componentid)
  297. {
  298.     return 1;
  299. }
  300.  
  301. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  302. {
  303.     return 1;
  304. }
  305.  
  306. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  307. {
  308.     return 1;
  309. }
  310.  
  311. public OnPlayerSelectedMenuRow(playerid, row)
  312. {
  313.     return 1;
  314. }
  315.  
  316. public OnPlayerExitedMenu(playerid)
  317. {
  318.     return 1;
  319. }
  320.  
  321. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  322. {
  323.     return 1;
  324. }
  325.  
  326. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  327. {
  328.  
  329.     //
  330.     //  Dynamic Sprunks
  331.     //
  332.  
  333.     if( GetPlayerState( playerid ) == PLAYER_STATE_ONFOOT ) {
  334.  
  335.         if( newkeys & KEY_SECONDARY_ATTACK ) {
  336.  
  337.             for( new s = 0; s < SPRUNK_DEF; s++ ) {
  338.  
  339.                 if( SI[ s ][ sUsed ] == 1 && SI[ s ][ sDynamic ] == 1) {
  340.  
  341.                     if( IsPlayerInRangeOfPoint( playerid, 1.0, SI[ s ][ sX ], SI[ s ][ sY ], SI[ s ][ sZ ] ) ) {
  342.                    
  343.                         if( GetPVarInt( playerid, "DYN_SPRUNK_FLOOD" ) == 0 ) {
  344.                        
  345.                             playPlayerSprunkAnim( playerid );
  346.                             GivePlayerMoney( playerid, -DYNAMIC_SPRUNK_COST );
  347.                             SetPVarInt( playerid, "DYN_SPRUNK_FLOOD", 1 );
  348.                             SetTimerEx( "Dyn_Sprunk_AntiFlood", 5000, false, "d", playerid ); // To avoid spamming at the machine
  349.  
  350.                             return 1;
  351.                         }
  352.                     }
  353.                 }
  354.             }
  355.         }
  356.     }
  357.  
  358.     //
  359.     //  Disabled Sprunks
  360.     //
  361.  
  362.     if( GetPVarInt( playerid, "USED_SPRUNK" ) == 0 ) {
  363.    
  364.         new Float:curhp; GetPlayerHealth( playerid, curhp );
  365.         SetPVarFloat( playerid, "SPRUNK_HP", curhp );
  366.        
  367.         if( GetPlayerState( playerid ) == PLAYER_STATE_ONFOOT ) { // Checks if the player is on foot (in order to use a sprunk)
  368.  
  369.             if( newkeys & KEY_SECONDARY_ATTACK ) { // Checks if the player used the key for the sprunk
  370.  
  371.                 if( GetPlayerAnimationIndex( playerid ) != 0 ) { // They don't match (he started using a sprunk)
  372.  
  373.                     for( new s = 0; s < SPRUNK_DEF; s++ ) {
  374.  
  375.                         if( IsPlayerInRangeOfPoint( playerid, 1.0, SI[ s ][ sX ], SI[ s ][ sY ], SI[ s ][ sZ ] ) ) {
  376.  
  377.                             if( SI[ s ][ sDisabled ] == 1 ) {
  378.  
  379.                                 TogglePlayerControllable( playerid, true ); //Freezes him..
  380.                                 SetPVarInt( playerid, "USED_SPRUNK", 1 );
  381.                                 if( GetPVarInt( playerid, "SPRUNK_FLOOD" ) == 0 ) {
  382.                                     new string[ 128 ];
  383.                                     format(string, sizeof( string ), "%s: "DISABLED_SPRUNK_MESSAGE"", getName( playerid ) );
  384.                                     SendClientMessage( playerid, COLOR_WHITE, string );
  385.                                     SetPVarInt( playerid, "SPRUNK_FLOOD", 1 );
  386.                                     SetTimerEx( "Sprunk_AntiFlood", 3000, false, "d", playerid ); // To avoid spamming at the machine
  387.                                 }
  388.                             }
  389.                         }
  390.                     }
  391.                 }
  392.             }
  393.         }
  394.     }
  395.     else if( GetPVarInt( playerid, "USED_SPRUNK") == 1 ) {
  396.         if( GetPlayerState( playerid ) == PLAYER_STATE_ONFOOT ) { // Checks if the player is on foot (in order to use a sprunk)
  397.        
  398.             if( oldkeys & KEY_SECONDARY_ATTACK ) {
  399.            
  400.                 SetPVarInt( playerid, "USED_SPRUNK", 0 );
  401.                 SetPlayerHealth( playerid, GetPVarFloat( playerid, "SPRUNK_HP" ) );
  402.             }
  403.         }
  404.     }
  405.    
  406.     return 1;
  407. }
  408.  
  409. public OnRconLoginAttempt(ip[], password[], success)
  410. {
  411.     return 1;
  412. }
  413.  
  414. public OnPlayerUpdate(playerid)
  415. {
  416.     return 1;
  417. }
  418.  
  419. public OnPlayerStreamIn(playerid, forplayerid)
  420. {
  421.     return 1;
  422. }
  423.  
  424. public OnPlayerStreamOut(playerid, forplayerid)
  425. {
  426.     return 1;
  427. }
  428.  
  429. public OnVehicleStreamIn(vehicleid, forplayerid)
  430. {
  431.     return 1;
  432. }
  433.  
  434. public OnVehicleStreamOut(vehicleid, forplayerid)
  435. {
  436.     return 1;
  437. }
  438.  
  439. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  440. {
  441.     if( dialogid == DIALOG_SPRUNK_ID ) {
  442.         if( response ) {
  443.             new idx = strval( inputtext );
  444.             if( SI[ idx ][ sUsed ] == 1 && SI[ idx ][ sDynamic ] == 1 ) {
  445.                 new Float:x, Float:y, Float:z;
  446.                 GetPlayerPos( playerid, x, y, z );
  447.                 SI[ idx ][ sX ] = x;
  448.                 SI[ idx ][ sY ] = y;
  449.                 SI[ idx ][ sZ ] = z;
  450.                 new string[ 128 ];
  451.                 format( string, sizeof( string ), " > You have set the dynamic sprunk drink location to: [ %.4f ][ %.4f ][ %.4f ]! Sprunk ID:[ %d ]", x, y, z, idx );
  452.                 SendClientMessage( playerid, COLOR_YELLOW, string );
  453.             }
  454.             else SendClientMessage( playerid, COLOR_RED, " > Invalid dynamic sprunk id! Use /checksprunk for the correct id!" );
  455.         }
  456.     }
  457.     return 1;
  458. }
  459.  
  460. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  461. {
  462.     return 1;
  463. }
  464.  
  465. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) {
  466.     new idx = dynspid[ playerid ];
  467.     if(objectid == SI[ idx ][ sCID ]) {
  468.         if( response ) {
  469.             SI[ idx ][ sModelx ] = x;
  470.             SI[ idx ][ sModely ] = y;
  471.             SI[ idx ][ sModelz ] = z;
  472.             SI[ idx ][ sRotx ] = rx;
  473.             SI[ idx ][ sRoty ] = ry;
  474.             SI[ idx ][ sRotz ] = rz;
  475.         }
  476.         else if( !response ) {
  477.             SendClientMessage( playerid, COLOR_RED, " > You canceled the sprunk edit!" );
  478.             MoveDynamicObject( SI[ idx ][ sCID ], primarypos[ playerid ][ 0 ], primarypos[ playerid ][ 1 ], primarypos[ playerid ][ 2 ], 20,  primarypos[ playerid ][ 3 ],  primarypos[ playerid ][ 4 ],  primarypos[ playerid ][ 5 ] );
  479.         }
  480.     }
  481.     return 1;
  482. }
  483.  
  484. //
  485. //  Stocks
  486. //
  487.  
  488. stock getName( playerid ) {
  489.     new name[ MAX_PLAYER_NAME ];
  490.     GetPlayerName( playerid, name, sizeof( name ) );
  491.     return name;
  492. }
  493.  
  494. stock playPlayerSprunkAnim( playerid ) {
  495.     ApplyAnimation( playerid, "VENDING", "VEND_Use", 4.1, 0, 1, 0, 1, 1 );
  496.     SetTimerEx( "Vending", 2300, false, "dd", playerid, 1 );
  497.     return 1;
  498. }
  499.  
  500. //
  501. //  Commands
  502. //
  503.  
  504. CMD:disablesprunk( playerid, params[] ) { //Use for ingame sprunks
  505.     if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, " > You are not allowed to use this command!" );
  506.     new Float:x, Float:y, Float:z;
  507.     GetPlayerPos( playerid, x, y, z );
  508.     new idx = -1;
  509.     for( new i = 0; i < SPRUNK_DEF; i++ ) {
  510.         if( SI[ i ][ sUsed ] == 0 ) {
  511.             idx = i;
  512.             break;
  513.         }
  514.     }
  515.     if( idx == -1 ) return SendClientMessage( playerid, COLOR_RED, " > Maximum amount of sprunk disables/dynamic creations has been made!" );
  516.     else {
  517.         SI[ idx ][ sUsed ] = 1;
  518.         SI[ idx ][ sDisabled ] = 1;
  519.         SI[ idx ][ sX ] = x;
  520.         SI[ idx ][ sY ] = y;
  521.         SI[ idx ][ sZ ] = z;
  522.         new string[ 128 ];
  523.         format( string, sizeof( string ), " > You have disabled the stock sprunk at the position: [ %.4f ][ %.4f ][ %.4f ]!", x, y, z );
  524.         SendClientMessage( playerid, COLOR_YELLOW, string );
  525.     }
  526.     return 1;
  527. }
  528.  
  529. CMD:createsprunk( playerid, params[] ) {
  530.     if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, " > You are not allowed to use this command!" );
  531.     new idx = -1;
  532.     for( new i = 0; i < SPRUNK_DEF; i++ ) {
  533.         if( SI[ i ][ sUsed ] == 0 ) {
  534.             idx = i;
  535.             break;
  536.         }
  537.     }
  538.     new Float:x, Float:y, Float:z;
  539.     GetPlayerPos( playerid, x, y, z );
  540.     sprunk[ playerid ] = CreateDynamicObject( USED_SPRUNK_MODEL, x, y+2, z, 0, 0, 0 );
  541.     SI[ idx ][ sUsed ] = 1;
  542.     SI[ idx ][ sDynamic ] = 1;
  543.     SI[ idx ][ sModelx ] = x;
  544.     SI[ idx ][ sModely ] = y+2;
  545.     SI[ idx ][ sModelz ] = z;
  546.     SI[ idx ][ sRotx ] = 0;
  547.     SI[ idx ][ sRoty ] = 0;
  548.     SI[ idx ][ sRotz ] = 0;
  549.     SI[ idx ][ sCID ] = sprunk[ playerid ];
  550.    
  551.     new string[ 128 ];
  552.     format( string, sizeof( string ), " > You have created a sprunk at the position: [ %.4f ][ %.4f ][ %.4f ]! Sprunk id: [ %d ]", x, y+2, z, idx );
  553.     SendClientMessage( playerid, COLOR_YELLOW, string );
  554.     SendClientMessage( playerid, COLOR_YELLOW, " > Use /setsprunk to set the drinking location for the new sprunk after you finish repositioning!" );
  555.    
  556.     dynspid[ playerid ] = idx;
  557.    
  558.     primarypos[ playerid ][ 0 ] = x;
  559.     primarypos[ playerid ][ 1 ] = y+2;
  560.     primarypos[ playerid ][ 2 ] = z;
  561.     primarypos[ playerid ][ 3 ] = 0;
  562.     primarypos[ playerid ][ 4 ] = 0;
  563.     primarypos[ playerid ][ 5 ] = 0;
  564.    
  565.     EditDynamicObject( playerid, sprunk[ playerid ] );
  566.     return 1;
  567. }
  568.  
  569. CMD:setsprunk( playerid, params[] ) {
  570.     if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, " > You are not allowed to use this command!" );
  571.     ShowPlayerDialog( playerid, DIALOG_SPRUNK_ID, DIALOG_STYLE_INPUT, "Sprunk ID", "Input the sprunk id for the dynamic sprunk you want to use here!", "Done", "Cancel" );
  572.     return 1;
  573. }
  574.  
  575. CMD:editsprunk( playerid, params[] ) {
  576.     if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, " > You are not allowed to use this command!" );
  577.     new string[ 128 ];
  578.     for( new i = 0; i < SPRUNK_DEF; i++ ) {
  579.         if( IsPlayerInRangeOfPoint( playerid, 2.0, SI[ i ][ sModelx ], SI[ i ][ sModely ], SI[ i ][ sModelz ] ) ) {
  580.             format( string, sizeof( string ), " > You are editing a dynamic sprunk! Sprunk ID: [ %d ]", i );
  581.             SendClientMessage( playerid, COLOR_YELLOW, string );
  582.             SendClientMessage( playerid, COLOR_YELLOW, " > Don't forget to use /setsprunk when you are done!" );
  583.             dynspid[ playerid ] = i;
  584.             primarypos[ playerid ][ 0 ] = SI[ i ][ sModelx ];
  585.             primarypos[ playerid ][ 1 ] = SI[ i ][ sModely ];
  586.             primarypos[ playerid ][ 2 ] = SI[ i ][ sModelz ];
  587.             primarypos[ playerid ][ 3 ] = SI[ i ][ sRotx ];
  588.             primarypos[ playerid ][ 4 ] = SI[ i ][ sRoty ];
  589.             primarypos[ playerid ][ 5 ] = SI[ i ][ sRotz ];
  590.             EditDynamicObject( playerid, SI[ i ][ sCID ] );
  591.         }
  592.     }
  593.     return 1;
  594. }
  595.  
  596. CMD:checksprunk( playerid, params[] ) {
  597.     if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, " > You are not allowed to use this command!" );
  598.     new string[ 128 ];
  599.     for( new i = 0; i < SPRUNK_DEF; i++ ) {
  600.         if( IsPlayerInRangeOfPoint( playerid, 2.0, SI[ i ][ sModelx ], SI[ i ][ sModely ], SI[ i ][ sModelz ] ) ) {
  601.             format( string, sizeof( string ), " > Dynamic sprunk found! Sprunk ID: [ %d ]", i );
  602.             SendClientMessage( playerid, COLOR_YELLOW, string );
  603.         }
  604.     }
  605.     return 1;
  606. }
  607.  
  608. CMD:removesprunk( playerid, params[] ) {
  609.     if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, COLOR_RED, " > You are not allowed to use this command!" );
  610.     new string[ 128 ];
  611.     for( new i = 0; i < SPRUNK_DEF; i++ ) {
  612.         if( IsPlayerInRangeOfPoint( playerid, 2.0, SI[ i ][ sModelx ], SI[ i ][ sModely ], SI[ i ][ sModelz ] ) ) {
  613.             format( string, sizeof( string ), " > You deleted a dynamic sprunk! Sprunk ID: [ %d ]", i );
  614.             SendClientMessage( playerid, COLOR_GREEN, string );
  615.             DestroyDynamicObject( SI[ i ][ sCID ] );
  616.             SI[ i ][ sUsed ] = 0;
  617.             SI[ i ][ sDynamic ] = 0;
  618.            
  619.         }
  620.     }
  621.     return 1;
  622. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement