Advertisement
Guest User

[SAMP] Deer Hunting v1.01 English

a guest
Dec 29th, 2012
1,142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.00 KB | None | 0 0
  1.  
  2. /*
  3. Deer Hunting v1.01 for SAMP - by Dinnozor
  4. English Version
  5.  
  6. Hunt deers in the country near LS !
  7.  
  8. v1.01 fixes :
  9. -Use of GetPlayerCameraFrontVector instead of GetPlayerFacingAngle : checks the Z coord, you can't "cheat" only using your facing angle :)
  10. -Modified the FinDeer function because it had a bug when you picked the meat. If you clicked several times on LMB you could take more. -Fixed
  11. -Corrected a bug of the deer orientation during its movement
  12. -a few little bugs fixed
  13.  
  14. Please don't remove credits if shared. Modify, customize and use as you want to.
  15. Enjoy !
  16. */
  17.  
  18. #include <a_samp>
  19.  
  20. #include <streamer>
  21. #include <OPVD>
  22.  
  23. #define MAX_ANIM 20
  24. #define DEER_SPAWN_LOC 21
  25.  
  26. forward MovingDeer(DeerID);
  27. forward DestroyDeer(DeerID);
  28. forward FinDeer(DeerID,playerid);
  29.  
  30. forward Float:Distance(Float:xA,Float:yA,Float:zA,Float:xB,Float:yB,Float:zB);
  31.  
  32. new Deers[MAX_ANIM],DeerKO[MAX_ANIM],DeerObject[MAX_ANIM];
  33. new DeerMeat[MAX_ANIM],InfectedDeer[MAX_ANIM],DeerMove[MAX_ANIM],MeatPick[MAX_PLAYERS];
  34.  
  35. enum pInfo
  36. {
  37.     Viande
  38. }
  39. ;
  40. new PlayerInfo[MAX_PLAYERS][pInfo];
  41.  
  42. //Spawn Locations for deers. Of course, if you add areas below, add at least a spawning location for every added area, or the deers will never be belo them...
  43. //You can add as many spawning locations as you want. You just need to replace the DEER_SPAWN_LOC in the top of the script by the actual number of locations (originally it is 21)
  44.  
  45. new Float:DeerSpawn[DEER_SPAWN_LOC][3]=
  46. {
  47.    
  48.    
  49.     {
  50.         -604.803588,-1308.452636,22.106567
  51.        
  52.     }
  53.     ,
  54.    
  55.    
  56.     {
  57.         -702.036621,-1309.305297,63.694377
  58.        
  59.     }
  60.     ,
  61.    
  62.    
  63.     {
  64.         -630.591491,-889.400268,108.452827
  65.        
  66.     }
  67.     ,
  68.    
  69.    
  70.     {
  71.         -992.249938,-930.179138,129.602951
  72.        
  73.     }
  74.     ,
  75.    
  76.    
  77.     {
  78.         -935.597717,-1146.799194,129.202728
  79.        
  80.     }
  81.     ,
  82.    
  83.    
  84.     {
  85.         -394.224884,87.232124,28.368480
  86.        
  87.     }
  88.     ,
  89.    
  90.    
  91.     {
  92.         -636.897583,-92.761047,64.660194
  93.        
  94.     }
  95.     ,
  96.    
  97.    
  98.     {
  99.         -2447.039794,-2192.797851,28.498489
  100.        
  101.     }
  102.     ,
  103.    
  104.    
  105.     {
  106.         -2224.478759,-2367.201416,32.494483
  107.        
  108.     }
  109.     ,
  110.    
  111.    
  112.     {
  113.         -1803.133300,-2423.008789,26.044141
  114.        
  115.     }
  116.     ,
  117.    
  118.    
  119.     {
  120.         -1690.161499,-2070.091308,42.189098
  121.        
  122.     }
  123.     ,
  124.    
  125.    
  126.     {
  127.         2006.325439,-766.786865,131.285568
  128.        
  129.     }
  130.     ,
  131.    
  132.    
  133.     {
  134.         -1817.458251,-1867.854980,86.802558
  135.        
  136.     }
  137.     ,
  138.    
  139.    
  140.     {
  141.         2176.190429,-897.414916,84.565956
  142.        
  143.     }
  144.     ,
  145.    
  146.    
  147.     {
  148.         2647.276855,-840.732543,70.997520
  149.        
  150.     }
  151.     ,
  152.    
  153.    
  154.     {
  155.         2601.860351,-436.280792,73.739181
  156.        
  157.     }
  158.     ,
  159.    
  160.    
  161.     {
  162.         2365.430664,-356.828186,59.507225
  163.        
  164.     }
  165.     ,
  166.    
  167.    
  168.     {
  169.         927.202453,-10.505444,91.440376
  170.        
  171.     }
  172.     ,
  173.    
  174.    
  175.     {
  176.         1092.987304,15.023153,68.779556
  177.        
  178.     }
  179.     ,
  180.    
  181.    
  182.     {
  183.         1504.512084,192.802429,22.368137
  184.        
  185.     }
  186.     ,
  187.    
  188.    
  189.     {
  190.         1083.728637,362.787322,25.921319
  191.        
  192.     }
  193. }
  194. ;
  195.  
  196. public OnGameModeInit()
  197. {
  198.     for(new i=0;i<MAX_ANIM;i++)
  199.    
  200.     {
  201.         new rand=random(DEER_SPAWN_LOC);
  202.         new Float:X=DeerSpawn[rand][0];
  203.         new Float:Y=DeerSpawn[rand][1];
  204.         CreateDeer(X,Y);
  205.        
  206.        
  207.     }
  208.     return 1;
  209. }
  210.  
  211. public OnPlayerConnect(playerid)
  212. {
  213.     MeatPick[playerid]=0;
  214.     return 1;
  215. }
  216.  
  217. //You need the MapAndreas Include (see my post on SAMP Forums for the link)
  218. stock Float: GetPointZPos(const Float: fX, const Float: fY, &Float: fZ = 0.0)
  219. {
  220.     if(!((-3000.0 < fX < 3000.0) && (-3000.0 < fY < 3000.0)))
  221.     {
  222.         return 0.0;
  223.        
  224.     }
  225.     static
  226.     File: s_hMap
  227.     ;
  228.     if(!s_hMap)
  229.     {
  230.         s_hMap = fopen("SAfull.hmap", io_read);
  231.        
  232.         if(!s_hMap)
  233.         {
  234.             return 0.0;
  235.            
  236.         }
  237.        
  238.     }
  239.     new
  240.     afZ[1]
  241.     ;
  242.     fseek(s_hMap, ((6000 * (-floatround(fY, floatround_tozero) + 3000) + (floatround(fX, floatround_tozero) + 3000)) << 1));
  243.     fblockread(s_hMap, afZ);
  244.    
  245.     return (fZ = ((afZ[0] >>> 16) * 0.01));
  246. }
  247.  
  248. stock IsPlayerAimingPoint(playerid, Float:X2,Float:Y2,Float:Z2, Float:range,Float:accuracy)
  249. {
  250.     new Float:Dist, Float:xv,Float:yv,Float:zv,Float:xc,Float:yc,Float:zc,Float:xt,Float:yt,Float:zt;
  251.     GetPlayerCameraPos(playerid,xc,yc,zc);
  252.     GetPlayerCameraFrontVector(playerid,xv,yv,zv);
  253.    
  254.     xt=xc+range*xv;
  255.     yt=yc+range*yv;
  256.     zt=range*zv+zc;
  257.    
  258.     Dist=floatsqroot(floatpower(floatabs(xt-X2), 2) + floatpower(floatabs(yt-Y2), 2)+floatpower(floatabs(zt-Z2),2));
  259.     if(range<=30)
  260.     {
  261.         if (Dist<=(accuracy+0.017*range))
  262.        
  263.         {
  264.             return true;
  265.            
  266.         }
  267.        
  268.     }
  269.     else
  270.     {
  271.         if (Dist<=(accuracy+0.025*range))
  272.        
  273.         {
  274.             return true;
  275.            
  276.         }
  277.        
  278.     }
  279.     return false;
  280. }
  281.  
  282. public Float:Distance(Float:xA,Float:yA,Float:zA,Float:xB,Float:yB,Float:zB)
  283. {
  284.     new Float:Dist=floatsqroot((xB-xA)*(xB-xA)+(yB-yA)*(yB-yA)+(zB-zA)*(zB-zA));
  285.     return Dist;
  286. }
  287.  
  288. public OnPlayerUpdate(playerid)
  289. {
  290.     for(new i=0;i<MAX_ANIM;i++)
  291.     {
  292.         if(IsValidDynamicObject(DeerObject[i])&&Deers[i]>0)
  293.        
  294.         {
  295.             new Float:xd,Float:yd,Float:zd;
  296.             GetDynamicObjectPos(DeerObject[i],xd,yd,zd);
  297.             if(IsPlayerInAnyVehicle(playerid))
  298.            
  299.             {
  300.                 if(GetVehicleCategory(GetPlayerVehicleID(playerid))!=21)
  301.                
  302.                 {
  303.                     if(IsPlayerInRangeOfPoint(playerid,25,xd,yd,zd))
  304.                    
  305.                     {
  306.                         MovingDeer(i);
  307.                        
  308.                        
  309.                     }
  310.                    
  311.                    
  312.                 }
  313.                 else
  314.                
  315.                 {
  316.                     if(IsPlayerInRangeOfPoint(playerid,10,xd,yd,zd))
  317.                    
  318.                     {
  319.                         MovingDeer(i);
  320.                        
  321.                        
  322.                     }
  323.                    
  324.                    
  325.                 }
  326.                
  327.                
  328.             }
  329.             else if(IsPlayerInRangeOfPoint(playerid,2,xd,yd,zd)&&InfectedDeer[i]==1&&DeerKO[i]==0&&random(15)==0)
  330.            
  331.             {
  332.                 new Float:phealth;
  333.                 GetPlayerHealth(playerid,phealth);
  334.                 SetPlayerHealth(playerid,floatround(phealth-1,floatround_round));
  335.                 OnePlayAnim(playerid,"ped","HIT_wall",4,0,1,1,0,0);
  336.                 GameTextForPlayer(playerid,"A deer is attacking you !",3000,6);
  337.                
  338.                
  339.             }
  340.             else
  341.            
  342.             {
  343.                 if(IsPlayerInRangeOfPoint(playerid,15,xd,yd,zd))
  344.                
  345.                 {
  346.                    
  347.                     if(InfectedDeer[i]==1&&DeerKO[i]==0&&DeerMove[i]==0)
  348.                    
  349.                     {
  350.                         new Float:xp,Float:yp,Float:zp;
  351.                         GetPlayerPos(playerid,xp,yp,zp);
  352.                         GetPointZPos(xp,yp,zp);
  353.                         if(IsPosInDeerZone(xp,yp))
  354.                        
  355.                         {
  356.                             DeerMove[i]=1;
  357.                             switch(random(2))
  358.                            
  359.                             {
  360.                                 case 0:MoveDynamicObject(DeerObject[i],xp-1,yp,zp+0.3,8,0,0,atan((yp-yd)/(xp-xd)));
  361.                                 case 1:MoveDynamicObject(DeerObject[i],xp,yp-1,zp+0.3,10,0,0,atan((yp-yd)/(xp-xd)));
  362.                                
  363.                                
  364.                             }
  365.                            
  366.                            
  367.                         }
  368.                         else MovingDeer(i);
  369.                        
  370.                        
  371.                     }
  372.                     else MovingDeer(i);
  373.                    
  374.                    
  375.                 }
  376.                
  377.                
  378.             }
  379.            
  380.            
  381.         }
  382.        
  383.     }
  384.     new iCurWeap = GetPlayerWeapon(playerid);
  385.     new iCurAmmo = GetPlayerAmmo(playerid);
  386.     if(iCurWeap==GetPVarInt(playerid,"iCurrentWeapon")&&iCurAmmo!=GetPVarInt(playerid,"iCurrentAmmo"))
  387.     {
  388.         OnPlayerShoot(playerid,GetPVarInt(playerid, "iCurrentAmmo"), iCurAmmo,iCurWeap);
  389.         SetPVarInt(playerid,"iCurrentAmmo",iCurAmmo);
  390.        
  391.     }
  392.     return 1;
  393. }
  394.  
  395. stock OnPlayerShoot(playerid,oldammo,newammo,weapon)
  396. {
  397.     for (new i=0;i<MAX_ANIM;i++)
  398.    
  399.     {
  400.         new Float:X,Float:Y,Float:Z,Float:rx,Float:ry,Float:rz,Float:Z2,Float:xp,Float:yp,Float:zp;
  401.         GetDynamicObjectPos(DeerObject[i],X,Y,Z);
  402.         if(IsPlayerInRangeOfPoint(playerid,100,X,Y,Z))
  403.         {
  404.             GetPlayerPos(playerid,xp,yp,zp);
  405.             new Float:Dist=Distance(xp,yp,zp,X,Y,Z);
  406.            
  407.             if(IsPlayerAimingPoint(playerid,X,Y,Z,Dist,2.50)==true)
  408.            
  409.             {
  410.                 GetDynamicObjectRot(DeerObject[i],rx,ry,rz);
  411.                 GetPointZPos(X,Y,Z2);
  412.                 MoveDynamicObject(DeerObject[i],X+0.1,Y,Z2+0.15,0.4,90,0,rz);
  413.                 switch(GetPlayerWeapon(playerid))
  414.                
  415.                 {
  416.                     case 22,23,33,34:DeerMeat[i]--;
  417.                     case 25..27:DeerMeat[i]-=3;
  418.                     default:DeerMeat[i]-=2;
  419.                    
  420.                    
  421.                 }
  422.                 DeerKO[i]=1;
  423.                
  424.                
  425.             }
  426.            
  427.             else
  428.            
  429.             {
  430.                 if(IsPlayerInRangeOfPoint(playerid,45,X,Y,Z)) MovingDeer(i);//Shooting will frighten near deers
  431.                
  432.             }
  433.            
  434.         }
  435.        
  436.     }
  437. }
  438.  
  439. public OnPlayerCommandText(playerid,cmdtext[])
  440. {
  441.     if (!strcmp(cmdtext,"/resetdeers",true))
  442.    
  443.    
  444.     {
  445.         if (PlayerInfo[playerid][AdminLvl]<1) SendClientMessage(playerid,COLOR_RED,"You are not allowed to use this command.");
  446.         else
  447.        
  448.         {
  449.             for(new i=0;i<MAX_ANIM;i++)
  450.            
  451.             {
  452.                 DestroyDeer(i);
  453.                 new rand=random(DEER_SPAWN_LOC);
  454.                 new Float:X=DeerSpawn[rand][0];
  455.                 new Float:Y=DeerSpawn[rand][1];
  456.                 CreateDeer(X,Y);
  457.                
  458.                
  459.             }
  460.            
  461.            
  462.         }
  463.         return 1;
  464.        
  465.        
  466.     }
  467.     return 0;
  468. }
  469.  
  470. stock CreateDeer(Float:X,Float:Y)
  471. {
  472.     new DeerID=-1;
  473.     for (new i=0;i<MAX_ANIM;i++)
  474.    
  475.     {
  476.         if(Deers[i]==0)
  477.        
  478.         {
  479.             DeerID=i;
  480.             i=MAX_ANIM;
  481.            
  482.            
  483.         }
  484.        
  485.        
  486.     }
  487.     if(DeerID!=-1)
  488.    
  489.     {
  490.         new Float:Z;
  491.         GetPointZPos(X,Y,Z);
  492.         DeerObject[DeerID]=CreateDynamicObject(19315,X,Y,Z+1,0,0,0,-1,-1,-1,300);
  493.         Deers[DeerID]=1;
  494.         DeerMeat[DeerID]=5+random(10);
  495.         DeerKO[DeerID]=0;
  496.         MovingDeer(DeerID);
  497.         if(random(100)<3) InfectedDeer[DeerID]=1;//Here it will "infect" 3% of the deers. If you don't want any "crazy" deer, just replace these lines with "InfectedDeer[DeerID]=0;". You can also change the 3%, just replace the 3...
  498.         else InfectedDeer[DeerID]=0;
  499.        
  500.        
  501.     }
  502. }
  503.  
  504. public DestroyDeer(DeerID)
  505. {
  506.     DeerMeat[DeerID]=0;
  507.     Deers[DeerID]=0;
  508.     DestroyDynamicObject(DeerObject[DeerID]);
  509.     return 1;
  510. }
  511.  
  512. public MovingDeer(DeerID)
  513. {
  514.     if(DeerKO[DeerID]==0&&DeerMove[DeerID]==0)
  515.    
  516.     {
  517.         new Float:X,Float:Y,Float:Z,Float:Xrand,Float:Yrand,Float:Zrand,Float:speedRand,Float:Angle,Float:coef,Float:X2,Float:Y2;
  518.         GetDynamicObjectPos(DeerObject[DeerID],X,Y,Z);
  519.         new rand1=random(2),rand2=random(2);
  520.         if(rand1==0) Xrand=X+10+float(random(10));
  521.         else Xrand=X-10-float(random(10));
  522.         if(rand2==0) Yrand=Y+10+float(random(10));
  523.         else Yrand=Y-10-float(random(10));
  524.         Zrand=GetPointZPos(Xrand,Yrand,Zrand);
  525.         speedRand=7+float(random(9));
  526.         if((Xrand-X)>0&&(Yrand-Y)>0)Angle=atan((Yrand-Y)/(Xrand-X));
  527.         else Angle=atan((Yrand-Y)/(Xrand-X))-180;
  528.        
  529.         if(floatabs(Zrand-Z)<3.0)
  530.        
  531.         {
  532.             if(IsPosInDeerZone(Xrand,Yrand))
  533.            
  534.             {
  535.                 GetPointZPos(Xrand,Yrand,Zrand);
  536.                 SetDynamicObjectRot(DeerObject[DeerID],0,0,Angle);
  537.                 MoveDynamicObject(DeerObject[DeerID],Xrand,Yrand,Zrand+0.3,speedRand,0,0,Angle);
  538.                 DeerMove[DeerID]=1;
  539.                 SetTimerEx("MovingDeer",10000+random(40000),false,"i",DeerID);//On peut changer la fréquence des mouvements
  540.                
  541.                
  542.             }
  543.             else MovingDeer(DeerID);
  544.            
  545.            
  546.         }
  547.         else MovingDeer(DeerID);
  548.        
  549.        
  550.     }
  551.     return 1;
  552. }
  553.  
  554. stock IsPosInDeerZone(Float:X,Float:Y)//Areas where the deers can walk/run ; they will not exit them. It is easy to add some areas : take the coords Xmax, Xmin, Ymax and Ymin of the area, and you are done. Note : These zones are around Los Santos, there are none around LV or SF so just add some if you want to.
  555. {
  556.     if(X>-1590.561645&&X<-395.603057&&Y<-816.069274&&Y>-1717.792480) return 1;
  557.     else if(X>-689.845947&&X<197.757766&&Y<138.800338&&Y>-258.169403) return 1;
  558.     else if(X>567.683715&&X<1504.512084&&Y<376.543304&&Y>-37.922641) return 1;
  559.     else if(X>1787.830322&&X<2753.750976&&Y<-310.041870&&Y>-954.100341) return 1;
  560.     else if(X>-2527.260498&&X<-1637.774780&&Y<-1732.938232&&Y>-2647.622802) return 1;
  561.     else return 0;
  562. }
  563.  
  564. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  565. {
  566.     if (GetPlayerState(playerid)==1)
  567.     {
  568.         if(GetPlayerWeapon(playerid)==4||GetPlayerWeapon(playerid)==8||GetPlayerWeapon(playerid)==9)
  569.        
  570.         {
  571.             //Knive, katana, chainsaw
  572.             if(HOLDING(KEY_FIRE))
  573.            
  574.             {
  575.                 for(new i=0;i<MAX_ANIM;i++)
  576.                
  577.                 {
  578.                     new Float:xd,Float:yd,Float:zd;
  579.                     GetDynamicObjectPos(DeerObject[i],xd,yd,zd);
  580.                     if(IsPlayerInRangeOfPoint(playerid,3,xd,yd,zd))
  581.                    
  582.                     {
  583.                         if(IsPlayerAimingPoint(playerid,xd,yd,zd,5,3))
  584.                        
  585.                         {
  586.                             if(DeerMeat[i]>0&&InfectedDeer[i]==0)
  587.                            
  588.                             {
  589.                                 if(DeerKO[i]==0)
  590.                                
  591.                                 {
  592.                                     new Float:X,Float:Y,Float:Z,Float:rx,Float:ry,Float:rz;
  593.                                     GetDynamicObjectPos(DeerObject[i],X,Y,Z);
  594.                                     GetDynamicObjectRot(DeerObject[i],rx,ry,rz);
  595.                                     MoveDynamicObject(DeerObject[i],X,Y,Z,90,ry,0);
  596.                                     DeerKO[i]=1;
  597.                                    
  598.                                    
  599.                                 }
  600.                                 else
  601.                                
  602.                                 {
  603.                                     LoopingAnim(playerid,"BOMBER","BOM_Plant_Loop",4,1,1,1,0,DeerMeat[i]*1000);
  604.                                     GameTextForPlayer(playerid,"Picking up the meat...",3000,6);
  605.                                     if(MeatPick[playerid]==0)
  606.                                     {
  607.                                         SetTimerEx("FinDeer",1000+random(3000),false,"ii",i,playerid);
  608.                                         MeatPick[playerid]=1;
  609.                                        
  610.                                     }
  611.                                    
  612.                                 }
  613.                                
  614.                                
  615.                             }
  616.                             else
  617.                            
  618.                             {
  619.                                 DestroyDeer(i);
  620.                                 SendClientMessage(playerid,COLOR_GREEN,"You could not find any edible meat on this animal.");
  621.                                 new rand=random(DEER_SPAWN_LOC);//if you've added any spawn locations, replace the 21
  622.                                 new Float:X=DeerSpawn[rand][0];
  623.                                 new Float:Y=DeerSpawn[rand][1];
  624.                                 CreateDeer(X,Y);
  625.                                
  626.                                
  627.                             }
  628.                            
  629.                            
  630.                         }
  631.                        
  632.                        
  633.                     }
  634.                    
  635.                    
  636.                 }
  637.                
  638.                
  639.             }
  640.            
  641.         }
  642.     }
  643.     return 1;
  644. }
  645.  
  646. public FinDeer(DeerID,playerid)
  647. {
  648.     new str[128];
  649.     PlayerInfo[playerid][Viande]+=DeerMeat[DeerID];//Add this variable to the PlayerInfo. 'viande' means 'meat' FYI ;)
  650.     MeatPick[playerid]=0;
  651.     format(str,sizeof(str),"You picked up %d kg of meat.",DeerMeat[DeerID]);
  652.     DestroyDeer(DeerID);
  653.     SendClientMessage(playerid,COLOR_GREEN,str);
  654.     format(str,sizeof(str),"You are carrying %d kg of meat.",PlayerInfo[playerid][Viande]);
  655.     SendClientMessage(playerid,COLOR_GREEN,str);
  656.     new rand=random(DEER_SPAWN_LOC);//Replace the 21 if you've added locations...
  657.     new Float:X=DeerSpawn[rand][0];
  658.     new Float:Y=DeerSpawn[rand][1];
  659.     CreateDeer(X,Y);
  660.     return 1;
  661. }
  662.  
  663. public OnDynamicObjectMoved(objectid)
  664. {
  665.     for(new i=0;i<MAX_ANIM;i++)
  666.    
  667.     {
  668.         if(IsValidDynamicObject(DeerObject[i]))
  669.        
  670.         {
  671.             DeerMove[i]=0;
  672.            
  673.            
  674.         }
  675.        
  676.        
  677.     }
  678.     return 1;
  679. }
  680.  
  681. public OnPlayerVehicleDamage(playerid,vehicleid,Float:damage)
  682. {
  683.     for(new i=0;i<MAX_ANIM;i++)
  684.    
  685.     {
  686.         new Float:xd,Float:yd,Float:zd;
  687.         GetDynamicObjectPos(DeerObject[i],xd,yd,zd);
  688.         if(IsPlayerInRangeOfPoint(playerid,5,xd,yd,zd))
  689.        
  690.         {
  691.             new Float:rx,Float:ry,Float:rz;
  692.             GetDynamicObjectRot(DeerObject[i],rx,ry,rz);
  693.             GetPointZPos(xd,yd,zd);
  694.             MoveDynamicObject(DeerObject[i],xd+0.1,yd,zd+0.15,0.3,90,0,rz);
  695.             DeerMeat[i]-=4;
  696.             DeerKO[i]=1;
  697.            
  698.            
  699.         }
  700.        
  701.        
  702.     }
  703.     return 1;
  704. }
  705.  
  706. OnePlayAnim(playerid,animlib[],animname[], Float:Speed, looping, lockx, locky, lockz, lp)
  707. {
  708.     ApplyAnimation(playerid, animlib, animname, Speed, looping, lockx, locky, lockz, lp,1);
  709. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement