Chaoz

Callbackz (Beta)

Aug 17th, 2011
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 17.82 KB | None | 0 0
  1. /*
  2. |===============================================|
  3. |                    CREDITS                    |
  4. |-----------------------------------------------|
  5. |JernejL => GetPlayerFPS method & Reconnect     |
  6. |Double-O-Seven => Cross Product Functions      |
  7. |The Chaoz => Scripting
  8. |===============================================|
  9. */
  10. #if !defined _CBz_INCLUDED
  11.     #define _CBz_INCLUDED
  12. #else
  13.     #endinput
  14. #endif
  15.  
  16. #include <YSI\y_hooks>
  17. #define PUBLIC:%0(%1)   forward %0(%1); public %0(%1)
  18. #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  19. #define RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  20. #define PAUSE_TIME      5
  21. #define AFK_TIME        30
  22. #define INTERVAL        350
  23.  
  24. enum _I{
  25.     bool:pAFK,
  26.     bool:pPaused,
  27.     bool:pInWater,
  28.     bool:pShoting,
  29.     bool:pParachuting,
  30.     bool:pMachine,
  31.     bool:pDriveBy,
  32.     bool:pIntDamage,
  33.     bool:pReconnect,
  34.     Float:pP[4],
  35.     pTimer,
  36.     pTime[2],
  37.     pWeap,
  38.     pVWorld,
  39.     Float:pHealth,
  40.     Float:pArmour,
  41.     pMoney,
  42.     pWeaps[13],
  43.     pAmmo[13],
  44.     pFPS,
  45.     pDrk,
  46.     pIP[16]
  47. };
  48. enum _V{
  49.     bool:vCreated,
  50.     vColor[2],
  51.     vPlate[32],
  52.     vInterior,
  53. };
  54. new I[MAX_PLAYERS][_I], V[MAX_VEHICLES][_V],
  55.     Ranges[30][2] = {
  56.         {0, 1},
  57.         {1, 1},
  58.         {2, 1},
  59.         {3, 1},
  60.         {4, 1},
  61.         {5, 1},
  62.         {6, 1},
  63.         {7, 1},
  64.         {8, 1},
  65.         {9, 1},
  66.         {10, 1},
  67.         {11, 1},
  68.         {12, 1},
  69.         {13, 1},
  70.         {14, 1},
  71.         {15, 1},
  72.         {22, 20},
  73.         {23, 20},
  74.         {24, 30},
  75.         {25, 35},
  76.         {26, 35},
  77.         {27, 35},
  78.         {28, 30},
  79.         {29, 50},
  80.         {30, 70},
  81.         {31, 70},
  82.         {32, 30},
  83.         {33, 80},
  84.         {34, 150},
  85.         {38, 70}
  86.     };
  87.  
  88. forward OnPlayerPause(playerid);
  89. forward OnPlayerAFK(playerid);
  90. forward OnPlayerWeaponChange(playerid, newweaponid, oldweaponid);
  91. forward OnPlayerVirtualWorldChange(playerid, newworldid, oldworldid);
  92. forward OnPlayerEnterWater(playerid);
  93. forward OnPlayerHealthChange(playerid, Float:newhealth, Float:oldhealth);
  94. forward OnPlayerArmourChange(playerid, Float:newarmour, Float:oldarmour);
  95. forward OnPlayerMoneyChange(playerid, newmoney, oldmoney);
  96. forward OnPlayerShotPlayer(playerid, targetid, Float:health, Float:armour, weaponid, Headshot);
  97. forward OnVehicleCreate(vehicleid);
  98. forward OnVehicleDestroy(vehicleid);
  99. forward OnPlayerUseMachine(playerid);
  100.  
  101. #if defined FILTERSCRIPT
  102.     Hook:CBz_OnFilterScriptInit()
  103.     {
  104.         for(new i; i<GetMaxPlayers(); i++){
  105.             if(IsPlayerConnected(i) && !IsPlayerNPC(i)){
  106.                 ResetPlayer(i);
  107.                 I[i][pTime][1] = GetTickCount();
  108.                 GetPlayerHealth(i, I[i][pHealth]);
  109.                 GetPlayerArmour(i, I[i][pArmour]);
  110.                 I[i][pWeap] = GetPlayerWeapon(i);
  111.                 I[i][pMoney] = GetPlayerMoney(i);
  112.                 I[i][pTimer] = SetTimerEx("Check", INTERVAL, true, "i", i);
  113.             }
  114.         }
  115.         return 1;
  116.     }
  117.    
  118.     Hook:CBz_OnFilterScriptExit()
  119.     {
  120.         for(new i; i<GetMaxPlayers(); i++)if(IsPlayerConnected(i) && !IsPlayerNPC(i) && I[i][pTimer])KillTimer(I[i][pTimer]);
  121.         return 1;
  122.     }
  123. #else
  124.     Hook:CBz_OnGameModeInit()
  125.     {
  126.         for(new i; i<GetMaxPlayers(); i++){
  127.             if(IsPlayerConnected(i) && !IsPlayerNPC(i)){
  128.                 ResetPlayer(i);
  129.                 I[i][pTime][1] = GetTickCount();
  130.                 GetPlayerHealth(i, I[i][pHealth]);
  131.                 GetPlayerArmour(i, I[i][pArmour]);
  132.                 I[i][pWeap] = GetPlayerWeapon(i);
  133.                 I[i][pMoney] = GetPlayerMoney(i);
  134.                 I[i][pTimer] = SetTimerEx("Check", INTERVAL, true, "i", i);
  135.             }
  136.         }
  137.         return 1;
  138.     }
  139.    
  140.     Hook:CBz_OnGameModeExit()
  141.     {
  142.         for(new i; i<GetMaxPlayers(); i++)if(IsPlayerConnected(i) && !IsPlayerNPC(i) && I[i][pTimer])KillTimer(I[i][pTimer]);
  143.         return 1;
  144.     }
  145. #endif
  146. Hook:CBz_OnPlayerConnect(playerid)
  147. {
  148.     ResetPlayer(playerid);
  149.     if(IsPlayerNPC(playerid))return 1;
  150.     I[playerid][pTimer] = SetTimerEx("Check", INTERVAL, true, "i", playerid);
  151.     I[playerid][pTime][1] = GetTickCount();
  152.     return 1;
  153. }
  154.  
  155. Hook:CBz_OnPlayerDisconnect(playerid, reason)
  156. {
  157.     if(I[playerid][pTimer])KillTimer(I[playerid][pTimer]);
  158.     if(I[playerid][pReconnect]){
  159.         new cmdstr[25];
  160.         I[playerid][pReconnect] = false;
  161.         format(cmdstr, 23, "unbanip %s", I[playerid][pIP]);
  162.         SendRconCommand(cmdstr);
  163.         SendRconCommand("reloadbans");
  164.     }
  165.     return 1;
  166. }
  167.  
  168. Hook:CBz_OnPlayerSpawn(playerid)
  169. {
  170.     I[playerid][pWeap] = GetPlayerWeapon(playerid);
  171.     I[playerid][pVWorld] = GetPlayerVirtualWorld(playerid);
  172.     I[playerid][pHealth] = 100;
  173.     SetTimerEx("GetWeaps", 500, false, "i", playerid);
  174.     return 1;
  175. }
  176.  
  177. Hook:CBz_OnPlayerDeath(playerid)
  178. {
  179.     I[playerid][pHealth] = 0;
  180.     return 1;
  181. }
  182.  
  183. Hook:CBz_OnPlayerText(playerid, text[])
  184. {
  185.     I[playerid][pTime][1] = GetTickCount();
  186.     return 1;
  187. }
  188.  
  189. Hook:CBz_OnPlayerCommandText(playerid, cmdtext[])
  190. {
  191.     I[playerid][pTime][1] = GetTickCount();
  192.     return 1;
  193. }
  194.  
  195. Hook:OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  196. {
  197.     if(!I[playerid][pIntDamage]){
  198.         if(!newinteriorid)for(new i; i<13; i++)GivePlayerWeapon(playerid, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
  199.         else{
  200.             for(new i; i<13; i++)GetPlayerWeaponData(playerid, i, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
  201.             ResetPlayerWeapons(playerid);
  202.         }
  203.     }
  204.     return 1;
  205. }
  206.  
  207. Hook:CBz_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  208. {
  209.     I[playerid][pTime][1] = GetTickCount();
  210.     if(I[playerid][pWeap]){
  211.         if(PRESSED(KEY_FIRE) || PRESSED(KEY_SECONDARY_ATTACK))I[playerid][pShoting] = true;
  212.         else I[playerid][pShoting] = false;
  213.     }
  214.     return 1;
  215. }
  216.  
  217. Hook:CBz_OnPlayerStateChange(playerid, newstate, oldstate)
  218. {
  219.     I[playerid][pTime][1] = GetTickCount();
  220.     I[playerid][pShoting] = false;
  221.     if(newstate == PLAYER_STATE_DRIVER){
  222.         if(!I[playerid][pDriveBy]){
  223.             for(new i; i<13; i++)GetPlayerWeaponData(playerid, i, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
  224.             ResetPlayerWeapons(playerid);
  225.         }
  226.     }
  227.     else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER && !I[playerid][pDriveBy])for(new i; i<13; i++)GivePlayerWeapon(playerid, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
  228.     return 1;
  229. }
  230.  
  231. Hook:CBz_OnPlayerUpdate(playerid)
  232. {
  233.     if(!I[playerid][pAFK]){
  234.         new Float:rP[7], Float:HA[2], tmp[2];
  235.         GetPlayerPos(playerid, rP[0], rP[1], rP[2]);
  236.         GetPlayerFacingAngle(playerid, rP[3]);
  237.         if(floatcmp(rP[0], I[playerid][pP][0]) && floatcmp(rP[1], I[playerid][pP][1]) && floatcmp(rP[2], I[playerid][pP][2]) && floatcmp(rP[3], I[playerid][pP][3])){
  238.             GetPlayerPos(playerid, I[playerid][pP][0], I[playerid][pP][1], I[playerid][pP][2]);
  239.             GetPlayerFacingAngle(playerid, I[playerid][pP][3]);
  240.             I[playerid][pTime][1] = GetTickCount();
  241.             I[playerid][pAFK] = false;
  242.         }
  243.         GetPlayerHealth(playerid, HA[0]);
  244.         GetPlayerArmour(playerid, HA[1]);
  245.         if(floatcmp(HA[0], I[playerid][pHealth]) || floatcmp(HA[1], I[playerid][pArmour])){
  246.             GetPlayerCameraPos(playerid, rP[0], rP[1], rP[2]);
  247.             GetPlayerCameraFrontVector(playerid, rP[3], rP[4], rP[5]);
  248.             for(new i; i<GetMaxPlayers(); i++){
  249.                 if(IsPlayerConnected(i) && !IsPlayerNPC(i) && I[i][pShoting] && i != playerid && GetPlayerVirtualWorld(i) == I[playerid][pVWorld] && GetPlayerInterior(i) == GetPlayerInterior(playerid)){
  250.                     if(IsPlayerInRangeOfPoint(i, GetWeaponRange(I[i][pWeap]), I[playerid][pP][0], I[playerid][pP][1], I[playerid][pP][2])){
  251.                         GetDistanceFromPointToLine(rP[6], rP[3], rP[4], rP[5], rP[0], rP[1], rP[2], I[i][pP][0], I[i][pP][1], I[i][pP][2]);
  252.                         if(rP[6] < 1)CallLocalFunction("OnPlayerShotPlayer", "iifffi", i, playerid, (I[i][pHealth]-HA[0]), (I[i][pArmour]-HA[1]), I[playerid][pWeap]);
  253.                     }
  254.                 }
  255.             }
  256.         }
  257.         tmp[0] = GetPlayerDrunkLevel(playerid);
  258.         if(tmp[0] < 200)SetPlayerDrunkLevel(playerid, 2000);
  259.         else if(I[playerid][pDrk] != tmp[0]){
  260.             tmp[1] = I[playerid][pDrk] - tmp[0];
  261.             if(0 < tmp[1] < 200)I[playerid][pFPS] = tmp[1];
  262.             I[playerid][pDrk] = tmp[0];
  263.         }
  264.         I[playerid][pTime][0] = GetTickCount();
  265.     }
  266.     return 1;
  267. }
  268.  
  269. Hook:CBz_OnVehicleRespray(playerid, vehicleid, color1, color2)
  270. {
  271.     V[vehicleid][vColor][0] = color1;
  272.     V[vehicleid][vColor][1] = color2;
  273.     return 1;
  274. }
  275.  
  276. PUBLIC:Check(playerid)
  277. {
  278.     if(!I[playerid][pAFK] && !I[playerid][pPaused]){
  279.         if((GetTickCount()-I[playerid][pTime][0])>=(PAUSE_TIME*519)){
  280.             I[playerid][pPaused] = true;
  281.             CallLocalFunction("OnPlayerPause", "i", playerid);
  282.         }else I[playerid][pPaused] = false;
  283.         if((GetTickCount()-I[playerid][pTime][1])>=(AFK_TIME*1000)){
  284.             I[playerid][pAFK] = true;
  285.             CallLocalFunction("OnPlayerAFK", "i", playerid);
  286.         }else I[playerid][pAFK] = false;
  287.         if(!I[playerid][pPaused]){
  288.             new tmp, Lib[2][32], Float:HA[2];
  289.             tmp = GetPlayerWeapon(playerid);
  290.             if(tmp != I[playerid][pWeap]){
  291.                 CallLocalFunction("OnPlayerWeaponChange", "iii", playerid, tmp, I[playerid][pWeap]);
  292.                 I[playerid][pWeap] = tmp;
  293.             }
  294.             tmp = GetPlayerVirtualWorld(playerid);
  295.             if(tmp != I[playerid][pVWorld]){
  296.                 CallLocalFunction("OnPlayerVirtualWorldChange", "iii", playerid, tmp, I[playerid][pVWorld]);
  297.                 I[playerid][pVWorld] = tmp;
  298.             }
  299.             GetAnimationName(GetPlayerAnimationIndex(playerid), Lib[0], 32, Lib[1], 32);
  300.             if(Lib[0][0]){
  301.                 if(!strcmp(Lib[0], "SWIM")){
  302.                     if(!I[playerid][pInWater]){
  303.                         I[playerid][pInWater] = true;
  304.                         CallLocalFunction("OnPlayerEnterWater", "i", playerid);
  305.                     }
  306.                 }else if(I[playerid][pInWater]){
  307.                     I[playerid][pInWater] = false;
  308.                     CallLocalFunction("OnPlayerExitWater", "i", playerid);
  309.                 }
  310.                 if(!strcmp(Lib[0], "PARACHUTE") || (!strcmp(Lib[0], "ped") && !strcmp(Lib[1], "FALL_skyDive")))I[playerid][pParachuting] = true;
  311.                 else I[playerid][pParachuting] = false;
  312.                 if(!strcmp(Lib[0], "VENDING")){
  313.                     I[playerid][pMachine] = true;
  314.                     CallLocalFunction("OnPlayerUseMachine", "i", playerid);
  315.                 }else I[playerid][pMachine] = false;
  316.             }
  317.             GetPlayerHealth(playerid, HA[0]);
  318.             if(floatcmp(HA[0], I[playerid][pHealth])){
  319.                 CallLocalFunction("OnPlayerHealthChange", "iff", playerid, HA[0], I[playerid][pHealth]);
  320.                 I[playerid][pHealth] = HA[0];
  321.             }
  322.             GetPlayerArmour(playerid, HA[1]);
  323.             if(floatcmp(HA[1], I[playerid][pArmour])){
  324.                 CallLocalFunction("OnPlayerArmourChange", "iff", playerid, HA[0], I[playerid][pArmour]);
  325.                 I[playerid][pArmour] = HA[1];
  326.             }
  327.             tmp = GetPlayerMoney(playerid);
  328.             if(tmp != I[playerid][pMoney]){
  329.                 CallLocalFunction("OnPlayerMoneyChange", "iii", playerid, tmp, I[playerid][pMoney]);
  330.                 I[playerid][pMoney] = tmp;
  331.             }
  332.         }
  333.     }
  334. }
  335.  
  336. PUBLIC:GetWeaps(playerid)for(new i; i<13; i++)GetPlayerWeaponData(playerid, i, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
  337.  
  338. PUBLIC:ForceReconnect(playerid)
  339. {
  340.     new cmdstr[23];
  341.     GetPlayerIp(playerid, I[playerid][pIP], 16);
  342.     format(cmdstr, 23, "banip %s", I[playerid][pIP]);
  343.     I[playerid][pReconnect] = true;
  344.     SendRconCommand(cmdstr);
  345. }
  346.  
  347. stock SetPlayerAFK(playerid, bool:afk)
  348. {
  349.     I[playerid][pAFK] = afk;
  350.     return 1;
  351. }
  352.  
  353. stock IsPlayerAFK(playerid)return I[playerid][pAFK];
  354.  
  355. stock IsPlayerPaused(playerid)return I[playerid][pPaused];
  356.  
  357. stock IsPlayerInWater(playerid)return I[playerid][pInWater];
  358.  
  359. stock IsPlayerParachuting(playerid)return I[playerid][pParachuting];
  360.  
  361. stock IsPlayerUsingMachine(playerid)return I[playerid][pMachine];
  362.  
  363. stock _SetPlayerHealth(playerid, Float:health)
  364. {
  365.     I[playerid][pHealth] = health;
  366.     return SetPlayerHealth(playerid, health);
  367. }
  368.  
  369. stock _GetPlayerHealth(playerid, &Float:health){
  370.     health = I[playerid][pHealth];
  371.     return 1;
  372. }
  373.  
  374. stock _SetPlayerArmour(playerid, Float:armour)
  375. {
  376.     I[playerid][pArmour] = armour;
  377.     return SetPlayerArmour(playerid, armour);
  378. }
  379.  
  380. stock _GetPlayerArmour(playerid, &Float:armour){
  381.     armour = I[playerid][pArmour];
  382.     return 1;
  383. }
  384.  
  385. stock _SetPlayerMoney(playerid, amount)
  386. {
  387.     I[playerid][pMoney] = amount;
  388.     return GivePlayerMoney(playerid, -GetPlayerMoney(playerid)+amount);
  389. }
  390.  
  391. stock _GivePlayerMoney(playerid, amount)
  392. {
  393.     I[playerid][pMoney] += amount;
  394.     return GivePlayerMoney(playerid, amount);
  395. }
  396.  
  397. stock _GetPlayerMoney(playerid)return I[playerid][pMoney];
  398.  
  399. stock EnableDriveBy(bool:enable)
  400. {
  401.     for(new i; i<GetMaxPlayers(); i++)I[i][pDriveBy] = enable;
  402.     return 1;
  403. }
  404.  
  405. stock EnablePlayerDriveBy(playerid, bool:enable)
  406. {
  407.     I[playerid][pDriveBy] = enable;
  408.     return 1;
  409. }
  410.  
  411. stock EnableInteriorDamage(bool:toggle)
  412. {
  413.     for(new i; i<GetMaxPlayers(); i++)I[i][pIntDamage] = enable;
  414.     return 1;
  415. }
  416.  
  417. stock EnablePlayerInteriorDamage(playerid, bool:enable)
  418. {
  419.     I[playerid][pIntDamage] = enable;
  420.     return 1;
  421. }
  422.  
  423. stock _AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2)
  424. {
  425.     new vID;
  426.     if(color1 == -1)color1 = random(127);
  427.     if(color2 == -1)color2 = rondom(127);
  428.     vID = AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2);
  429.     V[vID][vCreated] = true;
  430.     V[vID][vColor][0] = color1;
  431.     V[vID][vColor][1] = color2;
  432.     format(V[vID][Plate], 32, "XYZR 000");
  433.     CallLocalFunction("OnVehicleCreate", "i", vID);
  434.     return vID;
  435. }
  436.  
  437. stock _AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay)
  438. {
  439.     new vID;
  440.     if(color1 == -1)color1 = random(127);
  441.     if(color2 == -1)color2 = rondom(127);
  442.     vID = AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, respawn_delay);
  443.     V[vID][vCreated] = true;
  444.     V[vID][vColor][0] = color1;
  445.     V[vID][vColor][1] = color2;
  446.     format(V[vID][Plate], 32, "XYZR 000");
  447.     CallLocalFunction("OnVehicleCreate", "i", vID);
  448.     return vID;
  449. }
  450.  
  451. stock _CreateVehicle(vehicletype, x, y, z, rotation, color1, color2, respawn_delay)
  452. {
  453.     new vID;
  454.     if(color1 == -1)color1 = random(127);
  455.     if(color2 == -1)color2 = rondom(127);
  456.     vID = CreateVehicle(vehicletype, x, y, z, rotation, color1, color2, respawn_delay);
  457.     V[vID][vCreated] = true;
  458.     V[vID][vColor][0] = color1;
  459.     V[vID][vColor][1] = color2;
  460.     format(V[vID][Plate], 32, "XYZR 000");
  461.     CallLocalFunction("OnVehicleCreate", "i", vID);
  462.     return vID;
  463. }
  464.  
  465. stock _DestroyVehicle(vehicleid)
  466. {
  467.     V[vehicleid][vCreated] = false;
  468.     CallLocalFunction("OnVehicleDestroy", "i", vehicleid);
  469.     return DestroyVehicle(vehicleid);
  470. }
  471.  
  472. stock _ChangeVehicleColor(vehicleid, color1, color2)
  473. {
  474.     V[vehicleid][vColor][0] = color1;
  475.     v[vehicleid][vColor][1] = color2;
  476.     return ChangeVehicleColor(vehicleid, color1, color2);
  477. }
  478.  
  479. stock _SetVehicleNumberPlate(vehicleid, numberplate[])
  480. {
  481.     format(V[vehicleid][vPlate], 32, "%s", numberplate);
  482.     return SetVehicleNumberPlate(vehicleid, numberplate[])
  483. }
  484.  
  485. stock GetVehiclePlate(vehicleid, Plate[], size)
  486. {
  487.     format(Plate, size, "%s", V[vehicleid][vPlate]);
  488.     return 1;
  489. }
  490.  
  491. stock GetVehicleColor(vehicleid, &color1, &color2)
  492. {
  493.     color1 = V[vehicleid][vColor][0];
  494.     color2 = V[vehicleid][vColor][1];
  495.     return 1;
  496. }
  497.  
  498. stock _LinkVehicleToInterior(vehicleid, interiorid)
  499. {
  500.     V[vehicleid][vInterior] = interiorid;
  501.     return LinkVehicleToInterior(vehicleid, interiorid)
  502. }
  503.  
  504. stock GetVehicleInterior(vehicleid) return V[vehicleid][vInterior];
  505.  
  506. stock GetVehicleIDFromPlate(Plate[])
  507. {
  508.     new i;
  509.     for(i=1; i<=MAX_VEHICLES; i++)if(V[i][vCreated] && !strcmp(V[i][vPlate], Plate))break;
  510.     if(!V[i][vCreated] || strcmp(V[i][vPlate], Plate))i=-1;
  511.     return i;
  512. }
  513.  
  514. stock IsVehicleCreated(vehicleid)return V[vehicleid][vCreated];
  515.  
  516. stock CrashPlayer(playerid)return ApplyAnimation(playerid, "INVALID", "INVALID", 1, 0, 0, 0, 0, 0);
  517.  
  518. stock GetPlayerFPS(playerid)return I[playerid][pFPS];
  519.  
  520. stock Reconnect(playerid)
  521. {
  522.     new cmdstr[23];
  523.     GetPlayerIp(playerid, I[playerid][pIP], 16);
  524.     format(cmdstr, 23, "banip %s", I[playerid][pIP]);
  525.     I[playerid][pReconnect] = true;
  526.     return SendRconCommand(cmdstr);
  527. }
  528.  
  529. stock ReconnectEx(playerid, time)
  530. {
  531.     return SetTimerEx("ForceReconnect", time, false, "i", playerid);
  532. }
  533.  
  534. ResetPlayer(playerid)
  535. {
  536.     new i;
  537.     I[playerid][pAFK] = false;
  538.     I[playerid][pPaused] = false;
  539.     I[playerid][pInWater] = false;
  540.     I[playerid][pShoting] = false;
  541.     I[playerid][pParachuting] = false;
  542.     I[playerid][pMachine] = false;
  543.     I[playerid][pDriveBy] = true;
  544.     I[playerid][pIntDamage] = true;
  545.     I[playerid][pReconnect] = false;
  546.     for(; i<4; i++)I[playerid][pP][i] = 0.0;
  547.     I[playerid][pTimer] = -1;
  548.     I[playerid][pTime][0] = 0;
  549.     I[playerid][pTime][1] = 0;
  550.     I[playerid][pWeap] = 0;
  551.     I[playerid][pVWorld] = 0;
  552.     I[playerid][pHealth] = 0.0;
  553.     I[playerid][pArmour] = 0.0;
  554.     I[playerid][pMoney] = 0;
  555.     for(i=0; i<13; i++){
  556.         I[playerid][pWeaps][i] = 0;
  557.         I[playerid][pAmmo][i] = 0;
  558.     }
  559.     I[playerid][pFPS] = 0;
  560.     I[playerid][pDrk] = 0;
  561. }
  562.  
  563. GetWeaponRange(weaponid)
  564. {
  565.     new i;
  566.     for(; i<30; i++)if(Ranges[i][0] == weaponid)break;
  567.     return Ranges[i][1];
  568. }
  569.  
  570. stock crossp(Float:v1x, Float:v1y, Float:v1z, Float:v2x, Float:v2y, Float:v2z, &Float:output)
  571. {
  572.     new
  573.         Float:c1 = (v1y * v2z) - (v1z * v2y),
  574.         Float:c2 = (v1z * v2x) - (v1x * v2z),
  575.         Float:c3 = (v1x * v2y) - (v1y * v2x);
  576.     output = floatsqroot ((c1 * c1) + (c2 * c2) + (c3 * c3));
  577.     return 0;
  578. }
  579.  
  580. stock GetDistanceFromPointToLine(&Float:distance, Float:line_vector_x, Float:line_vector_y, Float:line_vector_z, Float:line_x, Float:line_y, Float:line_z, Float:point_x, Float:point_y, Float:point_z)
  581. {
  582.     new Float:output;
  583.     crossp(line_vector_x, line_vector_y, line_vector_z, point_x - line_x, point_y - line_y, point_z - line_z, output);
  584.     distance = output / floatsqroot ((line_vector_x * line_vector_x) + (line_vector_y * line_vector_y) + (line_vector_z * line_vector_z));
  585.     return 0;
  586. }
  587.  
  588. #define SetPlayerHealth         _SetPlayerHealth
  589. #define SetPlayerArmour         _SetPlayerArmour
  590. #define SetPlayerMoney          _SetPlayerMoney
  591. #define GivePlayerMoney         _GivePlayerMoney
  592. #define AddStaticVehicle        _AddStaticVehicle
  593. #define AddStaticVehicleEx      _AddStaticVehicleEx
  594. #define CreateVehicle           _CreateVehicle
  595. #define SetVehicleNumberPlate   _SetVehicleNumberPlate
  596. #define DestroyVehicle          _DestroyVehicle
  597. #define ChangeVehicleColor      _ChangeVehicleColor
  598. #define LinkVehicleToInterior   _LinkVehicleToInterior
Advertisement
Add Comment
Please, Sign In to add comment