Chaoz

Callbackz 1.1

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