Advertisement
Pablo_Borsellino

[Include] pFunc v1.1

Oct 6th, 2011
780
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 27.67 KB | None | 0 0
  1. /***************************************************** Usefull Functions v1.1 ***
  2. *
  3. * Scriptname:
  4. * -» pFUNC
  5. *
  6. * Author:
  7. * -» Pablo_Borsellino
  8. *
  9. * Release Date:
  10. * -» 6th October 2011
  11. *
  12. * Version:
  13. * -» 1.1
  14. *
  15. * Need to use:
  16. * -» Sa:Mp 0.3d RC 1 or higher
  17. *
  18. * Language:
  19. * -» English
  20. *
  21. * Description:
  22. * -» Provides 34 usefull Functions + 1 usefull Public
  23. *
  24. * Functions:
  25. * -» listed below!
  26. *
  27. * Public's:
  28. * -» listed below!
  29. *
  30. *                                           Copyright © 2011 by Pablo_Borsellino
  31. *******************************************************************************/
  32.  
  33. #include a_samp
  34. //__________________________________________________________________Definition's
  35. #if !defined forEx
  36.     #define forEx(%0,%1) for(new %1=0;%1<%0;%1++)
  37. #endif
  38.  
  39. #if !defined dcmd
  40.     #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  41. #endif
  42.  
  43. #if !defined MAX_ACTION_NAME
  44.     #define MAX_ACTION_NAME 64      //At most lenght (cell size) for Action names
  45. #endif
  46.  
  47. #if !defined INVALID_ACTION_ID
  48.     #define INVALID_ACTION_ID -1    //Invalid Action ID under 0 or over normal 600
  49. #endif
  50.  
  51. #if !defined INVALID_TIMER_ID
  52.     #define INVALID_TIMER_ID -1     //Invalid Timer ID if a Timer is not set
  53. #endif
  54.  
  55. #if !defined MAX_SERVER_ACTIONS
  56.     #define MAX_SERVER_ACTIONS 100  //Actions for Server (outside of Player Actions)
  57. #endif
  58.  
  59. //__________________________________________________________________Enumerator's
  60. enum Action_
  61. {
  62.     _ActionN[MAX_ACTION_NAME]//Action Name
  63.     _ActionT,               //Action Time
  64.     bool:_ActionE           //Action exist
  65. }
  66.  
  67. //_________________________________________________________________________New's
  68. new
  69.     bool:_Cheat[MAX_PLAYERS][10],
  70.     bool:_PlayerKey[17][MAX_PLAYERS],
  71.     _Action[MAX_PLAYERS+MAX_SERVER_ACTIONS][Action_],
  72.     _FreezeTimer[MAX_VEHICLES]=INVALID_TIMER_ID,
  73.     _FreezeSteps[MAX_VEHICLES][2],
  74.     _Update[MAX_PLAYERS],
  75.     _Olddate[MAX_PLAYERS];
  76.  
  77.  
  78. /*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯Declaration's
  79. | GetWeaponDamage(WeaponID)
  80. |   • return: Damage from Weaponid in Healthpoints
  81. |   • wrong Syntax: return Error Message
  82. | IsKeyDown(Player,const Key)
  83. |   • return: true
  84. |   • wrong Syntax: return Error Message
  85. | FreezeVehicle(vehid,time)
  86. |   • return: true
  87. |   • wrong Syntax: return Error Message
  88. | FreezeVehicleEx(vehid,Float:X,Float:Y,Float:Z,Float:)
  89. |   • return: true
  90. |   • wrong Syntax: -impossible-
  91. | SetVehicleParams(VehicleID,Engine,Light,Alarm,Locked,Boonet,Boot,Objective)
  92. |   • return: true
  93. |   • wrong Syntax: -impossible-
  94. | AddAction(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  95. |   • return: true
  96. |   • wrong Syntax: -impossible-
  97. | RemAction(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  98. |   • return: true
  99. |   • wrong Syntax: -impossible-
  100. | AddActionTime(time,const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  101. |   • return: true
  102. |   • wrong Syntax: false
  103. | RemActionTime(time,const Name[MAX_ACTION_NAME],playerid = INVALID_ACTION_ID)
  104. |   • return: true
  105. |   • wrong Syntax: false
  106. | GetSecondsBetweenAction(const Name[MAX_ACTION_NAME],playerid = INVALID_ACTION_ID)
  107. |   • return: Player: playerid, Seconds / Server: Seconds
  108. |   • wrong Syntax: false
  109. | IfActionExist(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  110. |   • return: true
  111. |   • wrong Syntax: false
  112. | GetActionID(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  113. |   • return: Action ID
  114. |   • wrong Syntax:INVALID_ACTION_ID
  115. | GetFreeActionID()
  116. |   • return: Free Action ID
  117. |   • wrong Syntax: INVALID_ACTION_ID
  118. | ToggleCheatForPlayer(playerid,Cheat[],bool:Allowed)
  119. |   • return: true
  120. |   • wrong Syntax: return Error Message
  121. | IsCheatAllowedForPlayer(playerid,Cheat[])
  122. |   • return: true/false
  123. |   • wrong Syntax: return Error Message
  124. | SendClientCommand(playerid,Command[])
  125. |   • return: true
  126. |   • wrong Syntax: -impossible-
  127. | GetNextFreePlayerID()
  128. |   • return: free id/-1
  129. |   • wrong Syntax: -impossible-
  130. | SetServerPassword(password[])
  131. |   • return: true
  132. |   • wrong Syntax: -impossible-
  133. | RemoveServerPassword()
  134. |   • return: true
  135. |   • wrong Syntax: -impossible-
  136. | ScrollText(Text[])
  137. |   • return: scrolled text
  138. |   • wrong Syntax: -impossible-
  139. | RemoveCranesForPlayer(playerid)
  140. |   • return: true
  141. |   • wrong Syntax: -impossible-
  142. | RemoveSodaMachinesForPlayer(playerid)
  143. |   • return: true
  144. |   • wrong Syntax: -impossible-
  145. | GetRandomNumber(...)
  146. |   • return: one random entered number
  147. |   • wrong Syntax: -unknown-
  148. | GetRandomColor()
  149. |   • return: Colorcode like
  150. |   • wrong Syntax: -unknown-
  151. | IsValidVehicle(VehicleID)
  152. |   • return: true/false
  153. |   • wrong Syntax: false
  154. | ReverseText(const Text[])
  155. |   • return: reversed text
  156. |   • wrong Syntax: -impossible-
  157. | GetRandomCode(Cells)
  158. |   • return: Random Code
  159. |   • wrong Syntax: return Error Message
  160. | GetPlayerIPEx(playerid)
  161. |   • return: Player IP
  162. |   • wrong Syntax: -imposssible-
  163. | SendClientMessageEx(Color,Text[],...)
  164. |   • return: true
  165. |   • wrong Syntax: -imposssible-
  166. | GetVehicleDriver(VehicleID)
  167. |   • return: vehicle driver/-1
  168. |   • wrong Syntax: -imposssible-
  169. | IsValidNosVehicle(VehicleID)
  170. |   • return: true/false
  171. |   • wrong Syntax: -imposssible-
  172. | Log(FileName[],FileType[],Text[])
  173. |   • return: true
  174. |   • wrong Syntax: return Error Message
  175. | KickEx(...)
  176. |   • return: true
  177. |   • wrong Syntax: -imposssible-
  178. | IsPlayerReloading(playerid)
  179. |   • return: true/false
  180. |   • wrong Syntax: -imposssible-
  181. | IsValidSkin(SkinID)
  182. |   • return: true/false
  183. |   • wrong Syntax: -imposssible-
  184. | GetVehicleMaxPassengers(VehicleID)
  185. |   • return: vehicle seats
  186. |   • wrong Syntax: -imposssible-
  187.  
  188. | OnPlayerEnterCheat(playerid,Cheat[]);
  189. |   • return: -nothing-
  190. |   • wrong Syntax: -impossible-
  191. |_____________________________________________________________________________*/
  192.  
  193. #define IsValidVehicle GetVehicleModel //by KoczkaHUN
  194.  
  195. //______________________________________________________________________________
  196. forward FUNC_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
  197. public FUNC_OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  198. {
  199.     if(newkeys&1)_PlayerKey[0][playerid]=true;else if(oldkeys&1)_PlayerKey[0][playerid]=false;
  200.     if(newkeys&2)_PlayerKey[1][playerid]=true;else if(oldkeys&1)_PlayerKey[1][playerid]=false;
  201.     if(newkeys&4)_PlayerKey[2][playerid]=true;else if(oldkeys&1)_PlayerKey[2][playerid]=false;
  202.     if(newkeys&8)_PlayerKey[3][playerid]=true;else if(oldkeys&1)_PlayerKey[3][playerid]=false;
  203.     if(newkeys&16)_PlayerKey[4][playerid]=true;else if(oldkeys&1)_PlayerKey[4][playerid]=false;
  204.     if(newkeys&32)_PlayerKey[5][playerid]=true;else if(oldkeys&1)_PlayerKey[5][playerid]=false;
  205.     if(newkeys&64)_PlayerKey[6][playerid]=true;else if(oldkeys&1)_PlayerKey[6][playerid]=false;
  206.     if(newkeys&128)_PlayerKey[7][playerid]=true;else if(oldkeys&1)_PlayerKey[7][playerid]=false;
  207.     if(newkeys&256)_PlayerKey[8][playerid]=true;else if(oldkeys&1)_PlayerKey[8][playerid]=false;
  208.     if(newkeys&512)_PlayerKey[9][playerid]=true;else if(oldkeys&1)_PlayerKey[9][playerid]=false;
  209.     if(newkeys&512)_PlayerKey[10][playerid]=true;else if(oldkeys&1)_PlayerKey[10][playerid]=false;
  210.     if(newkeys&1024)_PlayerKey[11][playerid]=true;else if(oldkeys&1)_PlayerKey[11][playerid]=false;
  211.     if(newkeys&128)_PlayerKey[12][playerid]=true;else if(oldkeys&1)_PlayerKey[12][playerid]=false;
  212.     if(newkeys&2048)_PlayerKey[13][playerid]=true;else if(oldkeys&1)_PlayerKey[13][playerid]=false;
  213.     if(newkeys&4096)_PlayerKey[14][playerid]=true;else if(oldkeys&1)_PlayerKey[14][playerid]=false;
  214.     if(newkeys&8192)_PlayerKey[15][playerid]=true;else if(oldkeys&1)_PlayerKey[15][playerid]=false;
  215.     if(newkeys&16384 )_PlayerKey[16][playerid]=true;else if(oldkeys&1)_PlayerKey[16][playerid]=false;
  216.     return true;
  217. }
  218.  
  219. //______________________________________________________________________________
  220. stock IsKeyDown(Player,Key)
  221. {
  222.     if(Key==1&&_PlayerKey[0][Player]==true)return true;     //KEY_ACTION
  223.     if(Key==2&&_PlayerKey[1][Player]==true)return true;     //KEY_CROUCH
  224.     if(Key==4&&_PlayerKey[2][Player]==true)return true;     //KEY_FIRE
  225.     if(Key==8&&_PlayerKey[3][Player]==true)return true;     //KEY_SPRINT
  226.     if(Key==16&&_PlayerKey[4][Player]==true)return true;    //KEY_SECONDARY_ATTACK
  227.     if(Key==32&&_PlayerKey[5][Player]==true)return true;    //KEY_JUMP
  228.     if(Key==64&&_PlayerKey[6][Player]==true)return true;    //KEY_LOOK_RIGHT
  229.     if(Key==128&&_PlayerKey[7][Player]==true)return true;   //KEY_HANDBRAKE
  230.     if(Key==256&&_PlayerKey[8][Player]==true)return true;   //KEY_LOOK_LEFT
  231.     if(Key==512&&_PlayerKey[9][Player]==true)return true;   //KEY_SUBMISSION
  232.     if(Key==512&&_PlayerKey[10][Player]==true)return true//KEY_LOOK_BEHIND
  233.     if(Key==1024&&_PlayerKey[11][Player]==true)return true; //KEY_WALK
  234.     if(Key==128&&_PlayerKey[12][Player]==true)return true//KEY_AIM
  235.     if(Key==2048&&_PlayerKey[13][Player]==true)return true; //KEY_ANALOG_UP
  236.     if(Key==4096&&_PlayerKey[14][Player]==true)return true; //KEY_ANALOG_DOWN
  237.     if(Key==8192&&_PlayerKey[15][Player]==true)return true; //KEY_ANALOG_LEFT
  238.     if(Key==16384&&_PlayerKey[16][Player]==true)return true;//KEY_ANALOG_RIGHT
  239.     return printf("Function Error: Unknown Key used (%d) in IsKeyDown!",Key);
  240. }
  241.  
  242. //______________________________________________________________Weapon Functions
  243. stock GetWeaponDamage(WeaponID)
  244. {
  245.     new FUNC_Damage;
  246.     switch(WeaponID)
  247.     {                           //ENGLISH / ENGLISCH    || GERMAN / DEUTSCH
  248.         case 0:FUNC_Damage=2;   //Fist                  || Faust
  249.         case 1:FUNC_Damage=2;   //Brass knuckels        || Schlagring
  250.         case 2:FUNC_Damage=5;   //Gold Club             || Golfschläger
  251.         case 3:FUNC_Damage=5;   //Nightstick            || Schlagstock
  252.         case 4:FUNC_Damage=3;   //Knife                 || Messer
  253.         case 5:FUNC_Damage=5;   //Baseball bat          || Baseballschläger
  254.         case 6:FUNC_Damage=5;   //Shovel                || Schaufel
  255.         case 7:FUNC_Damage=5;   //Poolque               || Billiard Queue
  256.         case 8:FUNC_Damage=3;   //Katana                || Katana
  257.         case 9:FUNC_Damage=14;  //Chainsaw              || Kettensäge
  258.         case 10:FUNC_Damage=5;  //Short Vibrator        || Kurzer Vibrator
  259.         case 11:FUNC_Damage=5;  //Purple Dildo          || Lila Dildo
  260.         case 12:FUNC_Damage=5;  //White Dildo           || Weißer Dildo
  261.         case 13:FUNC_Damage=5;  //Long Vibrator         || Langer Vibrator
  262.         case 14:FUNC_Damage=5;  //Flowers               || Blumen
  263.         case 15:FUNC_Damage=5;  //Cane                  || Gehstock
  264.         case 16:FUNC_Damage=83; //Grenade               || Granate
  265.         case 17:FUNC_Damage=0//Tear Grenade          || Rauchgranate
  266.         case 18:FUNC_Damage=42; //Molotov               || Molotowcocktail
  267.         case 22:FUNC_Damage=17; //9mm                   || 9mm Pistole
  268.         case 23:FUNC_Damage=14; //SD Pistol             || SD Pistole
  269.         case 24:FUNC_Damage=47; //Deagle                || Desert Eagle
  270.         case 25:FUNC_Damage=50; //Shotgun               || Shotgun
  271.         case 26:FUNC_Damage=50; //Sawn Off Shotgun      || Abgesägte Shotgun
  272.         case 27:FUNC_Damage=40; //Combat Shotgun        || Combat Shotgun
  273.         case 28:FUNC_Damage=14; //UZI                   || UZI
  274.         case 29:FUNC_Damage=9//Mp5                   || Mp5
  275.         case 30:FUNC_Damage=10; //Ak47                  || Ak47
  276.         case 31:FUNC_Damage=10; //M4                    || M4
  277.         case 32:FUNC_Damage=14; //Tec9                  || Tec9
  278.         case 33:FUNC_Damage=25; //Country Rifle         || Gewehr
  279.         case 34:FUNC_Damage=42; //Sniper Rifle          || Scharfschützengewehr
  280.         case 35:FUNC_Damage=83; //RPG                   || Raketenwerfer
  281.         case 36:FUNC_Damage=83; //Heat seeking rocket   || Zielflugraketenwerfer
  282.         case 37:FUNC_Damage=42; //Flame-thrower         || Flammenwerfer
  283.         case 38:FUNC_Damage=47; //Minigun               || Minigun
  284.         case 39:FUNC_Damage=83; //Satchel charges       || Sprengladungen
  285.         case 40:FUNC_Damage=0//Detonator             || Zünder
  286.         case 41:FUNC_Damage=1//Spray Can             || Sprühdose
  287.         case 42:FUNC_Damage=1//Fire extinguisher     || Feuerlöscher
  288.         case 43:FUNC_Damage=0//Night Vision          || Nachtsichtgerät
  289.         case 45:FUNC_Damage=0//Thermal Goggles       || Wärmesichtgerät
  290.         case 46:FUNC_Damage=0//Parachute             || Fallschirm
  291.         default:return printf("Function Error: Unknown Weapon used (%d) in GetWeaponDamage!",WeaponID);
  292.     }
  293.     return FUNC_Damage;
  294. }
  295.  
  296. //_____________________________________________________________Vehicle Functions
  297. stock FreezeVehicle(vehid,time)
  298. {
  299.     if(time>0)
  300.     {
  301.         new Float:FUNC_Pos[4];
  302.         GetVehiclePos(vehid,FUNC_Pos[0],FUNC_Pos[1],FUNC_Pos[2]);
  303.         GetVehicleZAngle(vehid,FUNC_Pos[3]);
  304.         _FreezeSteps[vehid][0]=(time*1000)/500;
  305.         _FreezeSteps[vehid][1]=1;
  306.         _FreezeTimer[vehid]=SetTimerEx("FreezeVehicleEx",500,true,"dffff",vehid,FUNC_Pos[0],FUNC_Pos[1],FUNC_Pos[2],FUNC_Pos[3]);
  307.         return true;
  308.     }
  309.     return printf("Function Error: Unknown Time used (%d) in FreezeVehicle!",time);
  310. }
  311.  
  312. stock FreezeVehicleEx(vehid,Float:X,Float:Y,Float:Z,Float:A)
  313. {
  314.     new Float:FUNC_Pos[4];
  315.     GetVehiclePos(vehid,FUNC_Pos[0],FUNC_Pos[1],FUNC_Pos[2]);
  316.     GetVehicleZAngle(vehid,FUNC_Pos[3]);
  317.     if(FUNC_Pos[0]!=X||FUNC_Pos[1]!=Y||FUNC_Pos[2]!=Z)SetVehiclePos(vehid,X,Y,Z);
  318.     if(FUNC_Pos[3]!=A)SetVehicleZAngle(vehid,A);
  319.     _FreezeSteps[vehid][1]++;
  320.     if(_FreezeSteps[vehid][1]>=_FreezeSteps[vehid][0])KillTimer(_FreezeTimer[vehid]);
  321.     return true;
  322. }
  323.  
  324. stock SetVehicleParams(VehicleID,Engine,Light,Alarm,Locked,Boonet,Boot,Objective)
  325. {
  326.     new _Engine=Engine,_Light=Light,_Alarm=Alarm,_Locked=Locked,_Boonet=Boonet,_Boot=Boot,_Objective=Objective;
  327.     if(Engine<-1||Engine>1)_Engine=-1;
  328.     if(Light<-1||Light>1)_Light=-1;
  329.     if(Alarm<-1||Alarm>1)_Alarm=-1;
  330.     if(Locked<-1||Locked>1)_Locked=-1;
  331.     if(Boonet<-1||Boonet>1)_Boonet=-1;
  332.     if(Boot<-1||Boot>1)_Boot=-1;
  333.     if(Objective<-1||Objective>1)_Objective=-1;
  334.     SetVehicleParamsEx(VehicleID,_Engine,_Light,_Alarm,_Locked,_Boonet,_Boot,_Objective);
  335.     return true;
  336. }
  337.  
  338. //______________________________________________________________Action Functions
  339. stock AddAction(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  340. {
  341.     if(playerid!=INVALID_ACTION_ID)
  342.     {
  343.         _Action[playerid][_ActionN]=Name;
  344.         _Action[playerid][_ActionT]=GetTickCount();
  345.         _Action[playerid][_ActionE]=true;
  346.     }else{
  347.         new aID=GetFreeActionID();
  348.         _Action[aID][_ActionN]=Name;
  349.         _Action[aID][_ActionT]=GetTickCount();
  350.         _Action[aID][_ActionE]=true;
  351.     }
  352.     return true;
  353. }
  354.  
  355. stock RemAction(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  356. {
  357.     new FUNC_Text[MAX_ACTION_NAME]="Unknown";
  358.     if(playerid!=INVALID_ACTION_ID)
  359.     {
  360.         _Action[playerid][_ActionN]=FUNC_Text;
  361.         _Action[playerid][_ActionT]=-1;
  362.         _Action[playerid][_ActionE]=false;
  363.     }else{
  364.         new aID=GetActionID(Name);
  365.         _Action[aID][_ActionN]=FUNC_Text;
  366.         _Action[aID][_ActionT]=-1;
  367.         _Action[aID][_ActionE]=false;
  368.     }
  369.     return true;
  370. }
  371.  
  372. stock AddActionTime(time,const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  373. {
  374.     if(time>0)
  375.     {
  376.         if(playerid!=INVALID_ACTION_ID)
  377.         {
  378.             _Action[playerid][_ActionT]=_Action[playerid][_ActionT]-(time*1000);
  379.             if(_Action[playerid][_ActionT]>GetTickCount())_Action[playerid][_ActionT]=GetTickCount();
  380.             return true;
  381.         }else{
  382.             _Action[GetActionID(Name,playerid)][_ActionT]=_Action[GetActionID(Name,playerid)][_ActionT]+(time*1000);
  383.             if(_Action[GetActionID(Name,playerid)][_ActionT]>GetTickCount())_Action[GetActionID(Name,playerid)][_ActionT]=GetTickCount();
  384.             return true;
  385.         }
  386.     }
  387.     return false;
  388. }
  389.  
  390. stock RemActionTime(time,const Name[MAX_ACTION_NAME],playerid = INVALID_ACTION_ID)
  391. {
  392.     if(time>0)
  393.     {
  394.         if(playerid!=INVALID_ACTION_ID)
  395.         {
  396.             _Action[playerid][_ActionT]=_Action[playerid][_ActionT]+(time*1000);
  397.             if(_Action[playerid][_ActionT]>GetTickCount())_Action[playerid][_ActionT]=GetTickCount();
  398.             return true;
  399.         }else{
  400.             _Action[GetActionID(Name,playerid)][_ActionT]=_Action[GetActionID(Name,playerid)][_ActionT]-(time*1000);
  401.             if(_Action[GetActionID(Name,playerid)][_ActionT]>GetTickCount())_Action[GetActionID(Name,playerid)][_ActionT]=GetTickCount();
  402.             return true;
  403.         }
  404.     }
  405.     return false;
  406. }
  407.  
  408. stock GetSecondsBetweenAction(const Name[MAX_ACTION_NAME],playerid = INVALID_ACTION_ID)
  409. {
  410.     if(playerid!=INVALID_ACTION_ID)
  411.     {
  412.         new FUNC_Seconds=(GetTickCount()-_Action[playerid][_ActionT])/1000;
  413.         return playerid,FUNC_Seconds;
  414.     }else{
  415.         new FUNC_Seconds=(GetTickCount()-_Action[GetActionID(Name,playerid)][_ActionT])/1000;
  416.         return FUNC_Seconds;
  417.     }
  418. }
  419.  
  420. stock GetFreeActionID()
  421. {
  422.     new FUNC_ID=INVALID_ACTION_ID;
  423.     for(new i=0;i<MAX_PLAYERS+MAX_SERVER_ACTIONS;i++)
  424.     {
  425.         if(_Action[i][_ActionE]==false&&i>499)FUNC_ID=i;
  426.     }
  427.     return FUNC_ID;
  428. }
  429.  
  430. stock GetActionID(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  431. {
  432.     new FUNC_ID=INVALID_ACTION_ID;
  433.     if(playerid!=INVALID_ACTION_ID)
  434.     {
  435.         if(_Action[playerid][_ActionE]==true)FUNC_ID=playerid;
  436.     }
  437.     else
  438.     {
  439.         for(new i=0;i<MAX_PLAYERS+MAX_SERVER_ACTIONS;i++)
  440.         {
  441.             if(!strfind(_Action[i][_ActionN],Name,true))
  442.             {
  443.                if(_Action[i][_ActionE]==true)FUNC_ID=i;
  444.             }
  445.         }
  446.     }
  447.     return ID;
  448. }
  449.  
  450. stock IfActionExist(const Name[MAX_ACTION_NAME],playerid=INVALID_ACTION_ID)
  451. {
  452.     new bool:FUNC_Exist=false;
  453.     if(playerid==INVALID_ACTION_ID)
  454.     {
  455.         forEx(MAX_PLAYERS+MAX_SERVER_ACTIONS,i)
  456.         {
  457.             if(!strfind(_Action[i][_ActionN],Name,true)&&_Action[i][_ActionE]==true)FUNC_Exist=true;
  458.         }
  459.     }
  460.     else if(_Action[playerid][_ActionE]==true)FUNC_Exist=true;
  461.     return FUNC_Exist;
  462. }
  463.  
  464. //__________________________________________________________Single Player Cheats
  465. forward FUNC_OnPlayerText(playerid,text[]);
  466. public FUNC_OnPlayerText(playerid,text[])
  467. {
  468.     if(!strfind(text,"HESOYAM",true)&&_Cheat[playerid][0]==true&&strlen(text)==7)
  469.     {
  470.         OnPlayerEnterCheat(playerid,text);
  471.         SetPlayerHealth(playerid,100);
  472.         SetPlayerArmour(playerid,100);
  473.         GivePlayerMoney(playerid,250000);
  474.     }
  475.     return false;
  476. }
  477.  
  478. stock OnPlayerEnterCheat(playerid,Cheat[])
  479. {
  480.     return CallRemoteFunction("OnPlayerEnterCheat","ds",playerid,Cheat);
  481. }
  482.  
  483. stock ToggleCheatForPlayer(playerid,Cheat[],bool:Allowed)
  484. {
  485.     if(!strfind(Cheat,"HESOYAM",true))
  486.     {
  487.         if(Allowed==false)_Cheat[playerid][0]=false;
  488.         else _Cheat[playerid][0]=true;
  489.     }
  490.     else if(!strfind(Cheat,"CheatHERE",true))
  491.     {
  492.         if(Allowed==false)_Cheat[playerid][1]=false;
  493.         else _Cheat[playerid][1]=true;
  494.     }
  495.     else if(!strfind(Cheat,"CheatHERE",true))
  496.     {
  497.         if(Allowed==false)_Cheat[playerid][2]=false;
  498.         else _Cheat[playerid][2]=true;
  499.     }
  500.     else if(!strfind(Cheat,"CheatHERE",true))
  501.     {
  502.         if(Allowed==false)_Cheat[playerid][3]=false;
  503.         else _Cheat[playerid][3]=true;
  504.     }
  505.     else if(!strfind(Cheat,"CheatHERE",true))
  506.     {
  507.         if(Allowed==false)_Cheat[playerid][4]=false;
  508.         else _Cheat[playerid][4]=true;
  509.     }
  510.     else if(!strfind(Cheat,"CheatHERE",true))
  511.     {
  512.         if(Allowed==false)_Cheat[playerid][5]=false;
  513.         else _Cheat[playerid][5]=true;
  514.     }
  515.     else if(!strfind(Cheat,"CheatHERE",true))
  516.     {
  517.         if(Allowed==false)_Cheat[playerid][6]=false;
  518.         else _Cheat[playerid][6]=true;
  519.     }
  520.     else if(!strfind(Cheat,"CheatHERE",true))
  521.     {
  522.         if(Allowed==false)_Cheat[playerid][7]=false;
  523.         else _Cheat[playerid][7]=true;
  524.     }
  525.     else if(!strfind(Cheat,"CheatHERE",true))
  526.     {
  527.         if(Allowed==false)_Cheat[playerid][8]=false;
  528.         else _Cheat[playerid][8]=true;
  529.     }
  530.     else if(!strfind(Cheat,"CheatHERE",true))
  531.     {
  532.         if(Allowed==false)_Cheat[playerid][9]=false;
  533.         else _Cheat[playerid][9]=true;
  534.     }
  535.     else return printf("Function Error: Unknown Cheat used (%s) in ToggleCheatForPlayer!",Cheat);
  536.     return true;
  537. }
  538.  
  539. stock IsCheatAllowedForPlayer(playerid,Cheat[])
  540. {
  541.     if(!strfind(Cheat,"HESOYAM",true))
  542.     {
  543.         if(_Cheat[playerid][0]==false)return false;
  544.     }
  545.     else if(!strfind(Cheat,"CheatHERE",true))
  546.     {
  547.         if(_Cheat[playerid][1]==false)return false;
  548.     }
  549.     else if(!strfind(Cheat,"CheatHERE",true))
  550.     {
  551.         if(_Cheat[playerid][2]==false)return false;
  552.     }
  553.     else if(!strfind(Cheat,"CheatHERE",true))
  554.     {
  555.         if(_Cheat[playerid][3]==false)return false;
  556.     }
  557.     else if(!strfind(Cheat,"CheatHERE",true))
  558.     {
  559.         if(_Cheat[playerid][4]==false)return false;
  560.     }
  561.     else if(!strfind(Cheat,"CheatHERE",true))
  562.     {
  563.         if(_Cheat[playerid][5]==false)return false;
  564.     }
  565.     else if(!strfind(Cheat,"CheatHERE",true))
  566.     {
  567.         if(_Cheat[playerid][6]==false)return false;
  568.     }
  569.     else if(!strfind(Cheat,"CheatHERE",true))
  570.     {
  571.         if(_Cheat[playerid][7]==false)return false;
  572.     }
  573.     else if(!strfind(Cheat,"CheatHERE",true))
  574.     {
  575.         if(_Cheat[playerid][8]==false)return false;
  576.     }
  577.     else if(!strfind(Cheat,"CheatHERE",true))
  578.     {
  579.         if(_Cheat[playerid][9]==false)return false;
  580.     }
  581.     else return printf("Function Error: Unknown Cheat used (%s) in IsCheatAllowedForPlayer!",Cheat);
  582.     return true;
  583. }
  584.  
  585. stock SetPlayerOnPlayerUpdateDelay(playerid,delay)
  586. {
  587.     _Update[playerid]=delay;
  588.     _Olddate[playerid]=GetTickCount();
  589.     return true;
  590. }
  591.  
  592. stock SetOnPlayerUpdateDelay(delay)
  593. {
  594.     forEx(MAX_PLAYERS,i)
  595.     {
  596.         _Update[i]=delay;
  597.         _Olddate[i]=GetTickCount();
  598.     }
  599.     return true;
  600. }
  601.  
  602. forward FUNC_OnPlayerUpdate(playerid);
  603. public FUNC_OnPlayerUpdate(playerid)
  604. {
  605.     if(GetTickCount()>_Olddate[playerid]+_Update[playerid])
  606.     {
  607.         _Olddate[playerid]=GetTickCount();
  608.         return CallRemoteFunction("OnPlayerUpdateEx","d",playerid);
  609.     }
  610.     return true;
  611. }
  612. forward OnPlayerUpdateEx(playerid);
  613.  
  614. stock ScrollText(Text[])
  615. {
  616.     new FUNC_Message[256],FUNC_FirstLetter[2],FUNC_Laenge;
  617.     FUNC_Laenge=strlen(Text);
  618.     format(FUNC_Message,sizeof Message,"%s",Text);
  619.     format(FUNC_FirstLetter,sizeof FUNC_FirstLetter,"%s",Text);
  620.     strins(FUNC_Message,FUNC_FirstLetter,FUNC_Laenge,sizeof FUNC_Message);
  621.     strdel(FUNC_Message,0,1);
  622.     return FUNC_Message;
  623. }
  624.  
  625. //____________________________________________________________________Unsortiert
  626.  
  627. stock SendClientCommand(playerid,Command[])return CallRemoteFunction("OnPlayerCommandText","ds",playerid,cmdtext);
  628.  
  629. stock GetNextFreePlayerID()
  630. {
  631.     forEx(MAX_PLAYERS,i)
  632.     {
  633.         if(!IsPlayerConnected(i))return i;
  634.         break;
  635.     }
  636.     return -1;
  637. }
  638.  
  639. stock RemoveServerPassword()return SendRconCommand("password 0");
  640.  
  641. stock SetServerPassword(const password[])
  642. {
  643.     if(strlen(password)>100)return printf("Function Error: Server Passwort is to long (%d cells to much) in SetServerPassword!",strlen(password)-100);
  644.     new FUNC_Text[100+9];
  645.     format(FUNC_Text,sizeof FUNC_Text,"password %s",password);
  646.     return SendRconCommand(FUNC_Text);
  647. }
  648.  
  649. stock RemoveSodaMachinesForPlayer(playerid)
  650. {
  651.     RemoveBuildingForPlayer(playerid,955,0,0,0,3000);
  652.     RemoveBuildingForPlayer(playerid,956,0,0,0,3000);
  653.     RemoveBuildingForPlayer(playerid,1209,0,0,0,3000);
  654.     RemoveBuildingForPlayer(playerid,1302,0,0,0,3000);
  655.     RemoveBuildingForPlayer(playerid,1775,0,0,0,3000);
  656.     RemoveBuildingForPlayer(playerid,1776,0,0,0,3000);
  657.     RemoveBuildingForPlayer(playerid,1302,0,0,0,3000);
  658. }
  659.  
  660. stock RemoveCranesForPlayer(playerid)
  661. {
  662.     RemoveBuildingForPlayer(playerid,1376,0,0,0,3000);
  663.     RemoveBuildingForPlayer(playerid,1378,0,0,0,3000);
  664.     RemoveBuildingForPlayer(playerid,1380,0,0,0,3000);
  665.     RemoveBuildingForPlayer(playerid,1383,0,0,0,3000);
  666.     RemoveBuildingForPlayer(playerid,1384,0,0,0,3000);
  667.     RemoveBuildingForPlayer(playerid,1386,0,0,0,3000);
  668.     RemoveBuildingForPlayer(playerid,1387,0,0,0,3000);
  669.     RemoveBuildingForPlayer(playerid,1388,0,0,0,3000);
  670.     RemoveBuildingForPlayer(playerid,1389,0,0,0,3000);
  671.     RemoveBuildingForPlayer(playerid,1390,0,0,0,3000);
  672.     RemoveBuildingForPlayer(playerid,1391,0,0,0,3000);
  673.     RemoveBuildingForPlayer(playerid,1392,0,0,0,3000);
  674.     RemoveBuildingForPlayer(playerid,1394,0,0,0,3000);
  675.     RemoveBuildingForPlayer(playerid,1395,0,0,0,3000);
  676.     RemoveBuildingForPlayer(playerid,3474,0,0,0,3000);
  677.     RemoveBuildingForPlayer(playerid,5126,0,0,0,3000);
  678.     RemoveBuildingForPlayer(playerid,11400,0,0,0,3000);
  679.     RemoveBuildingForPlayer(playerid,11401,0,0,0,3000);
  680.     RemoveBuildingForPlayer(playerid,11406,0,0,0,3000);
  681.     RemoveBuildingForPlayer(playerid,16328,0,0,0,3000);
  682.     RemoveBuildingForPlayer(playerid,16332,0,0,0,3000);
  683. }
  684.  
  685. stock GetRandomNumber(...)return getarg(random(numargs()));
  686.  
  687. stock GetRandomColor()return random(0xFFFFFF);
  688.  
  689. stock ReverseText(Text[]) //by RyDeR`
  690. {
  691.     for(new i = 0, j = strlen(Text) - 1; i < j; ++i, --j)
  692.         Text[i] ^= Text[j], Text[j] ^= Text[i], Text[i] ^= Text[j];
  693. }
  694.  
  695. stock GetRandomCode(Cells)
  696. {
  697.     if(Cells>100)return printf("Function Error: Tu much cells used (%d to much) in GetRandomCode!",100-Cells);
  698.     new FUNC_Letter[100],FUNC_Letters[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklomnopqrstuvwxyz1234567890";
  699.     forEx(Cells,i)
  700.     {
  701.         Letter[i]=FUNC_Letters[random(sizeof(FUNC_Letters))];
  702.         format(FUNC_Letter,sizeof FUNC_Letter,"%s%s",FUNC_Letter,FUNC_Letter[i]);
  703.     }
  704.     return Letter;
  705. }
  706.  
  707. stock bool:IsValidSkin(SkinID)//by KoczkaHUN
  708. {
  709.     if(0>SkinID>299)return false;
  710.     static const FUNC_SkinData[]={-377,-2098177,-138413059,-8388609,-2097153,-1,-65537,-1,-131073,4093};
  711.     return !!(FUNC_SkinData[SkinID>>>5]&(1<<(SkinID&31)));
  712. }
  713.  
  714. stock IsPlayerReloading(playerid)
  715. {
  716.     if(GetPlayerWeaponState(playerid)!=WEAPONSTATE_RELOADING)return false;
  717.     return true;
  718. }
  719.  
  720. stock KickEx(...)
  721. {
  722.     new FUNC_ArgCount=numargs();
  723.     forEx(MAX_PLAYERS,i)
  724.     {
  725.         for(new Arg=0;Arg!=FUNC_ArgCount;Arg++)
  726.             if(getarg(Arg)==i)Kick(i);
  727.     }
  728.     return true;
  729. }
  730.  
  731. stock Log(FileName[],FileType[],Text[])
  732. {
  733.     if(strlen(FileName)>70)return printf("Function Error: To much cells used for FileName (%d to much) in Log!",strlen(FileName)-70);
  734.     if(strlen(FileType)>25)return printf("Function Error: To much cells used for FileType (%d to much) in Log!",strlen(FileType)-25);
  735.     if(strlen(Text)>410)return printf("Function Error: To much cells used for FileType (%d to much) in Log!",strlen(Text)-410);
  736.     new File:FUNC_File,FUNC_FilePath[100],FUNC_Text2[420];
  737.     format(FUNC_FilePath,sizeof FUNC_FilePath,"%s.%s",FileName,FileType);
  738.     if(!fexist(FileName)){
  739.         FUNC_File=fopen(FUNC_FilePath,io_write);
  740.         fclose(FUNC_File);}
  741.     format(FUNC_Text2,sizeof FUNC_Text2,"%s\r\n",Text);
  742.     FUNC_File=fopen(FUNC_FilePath,io_append);
  743.     fwrite(FUNC_File,FUNC_Text2);
  744.     fclose(FUNC_File);
  745.     return true;
  746. }
  747.  
  748. stock SendClientMessageEx(Color,Text[],...)
  749. {
  750.     new FUNC_ArgCount=numargs();
  751.     forEx(MAX_PLAYERS,i)
  752.     {
  753.         for(new Arg=2;Arg!=FUNC_ArgCount;Arg++)if(getarg(Arg)==i)continue;
  754.         SendClientMessage(i,Color,Text);
  755.     }
  756.     return true;
  757. }
  758.  
  759. stock GetPlayerIPEx(playerid)
  760. {
  761.     new FUNC_Text[16];
  762.     GetPlayerIp(playerid,FUNC_Text,sizeof FUNC_Text);
  763.     return FUNC_Text;
  764. }
  765.  
  766. stock GetVehicleDriver(VehicleID)
  767. {
  768.     for(new i;i<MAX_PLAYERS;i++)if(IsPlayerInVehicle(i,VehicleID))if(GetPlayerState(i)==PLAYER_STATE_DRIVER)return i;
  769.     return -1;
  770. }
  771.  
  772. stock IsValidNosVehicle(VehicleID)
  773. {
  774.     new FUNC_InvalidNosVehicles[]={430,446,448,449,452,453,454,461,462,463,468,569,472,473,481,484,590,493,509,510,521,522,523,537,538,570,581,586,595};
  775.     for(new i=0;i<sizeof FUNC_InvalidNosVehicles;i++)if(GetVehicleModel(VehicleID)==FUNC_InvalidNosVehicles[i])return true;
  776.     return false;
  777. }
  778.  
  779. stock GetVehicleMaxPassengers(VehicleID)//by RyDeR`
  780. {
  781.     new FUNC_VehModel=GetVehicleModel(VehicleID);
  782.     if(400<=FUNC_VehModel<=611)
  783.     {
  784.         static s_MaxPassengers[]={146225407,327282960,271651075,268443408,286339857,319894289,823136512,805311233,285414161,286331697,268513553,18026752,286331152,286261297,286458129,856765201,286331137,856690995,269484528,51589393,-15658689,322109713,-15527663,65343};
  785.         return ((s_MaxPassengers[(FUNC_VehModel-=400)>>>3]>>>((FUNC_VehModel&7)<<2))&0xF);
  786.     }
  787.     return 0xF;
  788. }
  789. //________________________________________________________________Error Messages
  790. #if !defined MAX_ACTION_NAME
  791.     #error "[Pablo Borsellino's Function] MAX_ACTION_NAME is not defined - put #define MAX_ACTION_NAME 64 at the top of your Script!"
  792. #endif
  793. #if !defined INVALID_ACTION_ID
  794.     #error "[Pablo Borsellino's Function] INVALID_ACTION_ID is not defined - put #define INVALID_ACTION_ID -1 at the top of your Script!"
  795. #endif
  796. #if !defined INVALID_TIMER_ID
  797.     #error "[Pablo Borsellino's Function] INVALID_TIMER_ID is not defined - put #define INVALID_TIMER_ID -1 at the top of your Script!"
  798. #endif
  799. #if !defined MAX_SERVER_ACTIONS
  800.     #error "[Pablo Borsellino's Function] MAX_SERVER_ACTIONS is not defined - put #define MAX_SERVER_ACTIONS 100 at the top of your Script!"
  801. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement