Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2010
2,418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.58 KB | None | 0 0
  1. #include a_samp
  2. #define DRIFT_MINKAT 10.0
  3. #define DRIFT_MAXKAT 90.0
  4. #define COLOR_LIGHTRED 0xFF0000FF
  5. #define COLOR_LIGHTBLUE 0x33CCFFAA
  6. #define DRIFT_SPEED 30.0
  7. #pragma tabsize 0
  8. #pragma unused GetPlayerTheoreticAngle
  9. new Float:ppos[200][3];
  10. enum Float:Pos{ Float:sX,Float:sY,Float:sZ };
  11. new Float:SavedPos[MAX_PLAYERS][Pos];
  12. new DriftPointsNow[200];
  13. new PunktyDriftuGracza[200];
  14. new Text:DriftTD[200];
  15. new Text:DriftTD2[200];
  16. new Text:Textdraw0;
  17. forward LicznikDriftu();
  18. forward clock();
  19. forward PodsumowanieDriftu(playerid);
  20. public OnFilterScriptInit(){
  21. for(new x=0;x<200;x++){
  22.  
  23. Textdraw0 = TextDrawCreate(3.000000, 435.000000, "~n~");
  24. TextDrawBackgroundColor(Textdraw0, 255);
  25. TextDrawFont(Textdraw0, 1);
  26. TextDrawLetterSize(Textdraw0, 0.500000, 0.999997);
  27. TextDrawColor(Textdraw0, -1);
  28. TextDrawSetOutline(Textdraw0, 0);
  29. TextDrawSetProportional(Textdraw0, 1);
  30. TextDrawSetShadow(Textdraw0, 1);
  31. TextDrawUseBox(Textdraw0, 1);
  32. TextDrawBoxColor(Textdraw0, 1344814160);
  33. TextDrawTextSize(Textdraw0, 639.000000, 0.000000);
  34.  
  35. DriftTD[x] = TextDrawCreate(6.000000, 433.000000, " ");
  36. TextDrawBackgroundColor(DriftTD[x], 255);
  37. TextDrawFont(DriftTD[x], 1);
  38. TextDrawLetterSize(DriftTD[x], 0.750000, 1.400000);
  39. TextDrawColor(DriftTD[x], -1);
  40. TextDrawSetOutline(DriftTD[x], 0);
  41. TextDrawSetProportional(DriftTD[x], 1);
  42. TextDrawSetShadow(DriftTD[x], 1);
  43.  
  44. DriftTD2[x] = TextDrawCreate(340.000000, 430.000000, " ");
  45. TextDrawBackgroundColor(DriftTD2[x], 255);
  46. TextDrawFont(DriftTD2[x], 1);
  47. TextDrawLetterSize(DriftTD2[x], 0.830000, 1.900000);
  48. TextDrawColor(DriftTD2[x], -1);
  49. TextDrawSetOutline(DriftTD2[x], 0);
  50. TextDrawSetProportional(DriftTD2[x], 1);
  51. TextDrawSetShadow(DriftTD2[x], 1);
  52. }
  53. SetTimer("AngleUpdate" , 700, true);
  54. SetTimer("LicznikDriftu", 500, true);
  55. return 1;
  56. }
  57. IsCar(vid)
  58. {
  59. new model = GetVehicleModel(vid);
  60. switch(model)
  61. {
  62. case 443:return 0;
  63. case 448:return 0;
  64. case 461:return 0;
  65. case 462:return 0;
  66. case 463:return 0;
  67. case 468:return 0;
  68. case 521:return 0;
  69. case 522:return 0;
  70. case 523:return 0;
  71. case 581:return 0;
  72. case 586:return 0;
  73. case 481:return 0;
  74. case 509:return 0;
  75. case 510:return 0;
  76. case 430:return 0;
  77. case 446:return 0;
  78. case 452:return 0;
  79. case 453:return 0;
  80. case 454:return 0;
  81. case 472:return 0;
  82. case 473:return 0;
  83. case 484:return 0;
  84. case 493:return 0;
  85. case 595:return 0;
  86. case 417:return 0;
  87. case 425:return 0;
  88. case 447:return 0;
  89. case 465:return 0;
  90. case 469:return 0;
  91. case 487:return 0;
  92. case 488:return 0;
  93. case 497:return 0;
  94. case 501:return 0;
  95. case 548:return 0;
  96. case 563:return 0;
  97. case 406:return 0;
  98. case 444:return 0;
  99. case 556:return 0;
  100. case 557:return 0;
  101. case 573:return 0;
  102. case 460:return 0;
  103. case 464:return 0;
  104. case 476:return 0;
  105. case 511:return 0;
  106. case 512:return 0;
  107. case 513:return 0;
  108. case 519:return 0;
  109. case 520:return 0;
  110. case 539:return 0;
  111. case 553:return 0;
  112. case 577:return 0;
  113. case 592:return 0;
  114. case 593:return 0;
  115. case 471:return 0;
  116. }
  117. return 1;
  118. }
  119. forward AngleUpdate();
  120. public AngleUpdate(){
  121. for(new g=0;g<200;g++){
  122. new Float:x, Float:y, Float:z;
  123. if(IsPlayerInAnyVehicle(g))GetVehiclePos(GetPlayerVehicleID(g), x, y, z); else GetPlayerPos(g, x, y, z);
  124. ppos[g][0] = x;
  125. ppos[g][1] = y;
  126. ppos[g][2] = z;
  127. }
  128. }
  129. Float:GetPlayerTheoreticAngle(i)
  130. {
  131. new Float:sin;
  132. new Float:dis;
  133. new Float:angle2;
  134. new Float:x,Float:y,Float:z;
  135. new Float:tmp3;
  136. new Float:tmp4;
  137. new Float:MindAngle;
  138. if(IsPlayerConnected(i)){
  139. GetPlayerPos(i,x,y,z);
  140. dis = floatsqroot(floatpower(floatabs(floatsub(x,ppos[i][0])),2)+floatpower(floatabs(floatsub(y,ppos[i][1])),2));
  141. if(IsPlayerInAnyVehicle(i))GetVehicleZAngle(GetPlayerVehicleID(i), angle2); else GetPlayerFacingAngle(i, angle2);
  142. if(x>ppos[i][0]){tmp3=x-ppos[i][0];}else{tmp3=ppos[i][0]-x;}
  143. if(y>ppos[i][1]){tmp4=y-ppos[i][1];}else{tmp4=ppos[i][1]-y;}
  144. if(ppos[i][1]>y && ppos[i][0]>x){ //1
  145. sin = asin(tmp3/dis);
  146. MindAngle = floatsub(floatsub(floatadd(sin, 90), floatmul(sin, 2)), -90.0);
  147. }
  148. if(ppos[i][1]<y && ppos[i][0]>x){ //2
  149. sin = asin(tmp3/dis);
  150. MindAngle = floatsub(floatadd(sin, 180), 180.0);
  151. }
  152. if(ppos[i][1]<y && ppos[i][0]<x){ //3
  153. sin = acos(tmp4/dis);
  154. MindAngle = floatsub(floatadd(sin, 360), floatmul(sin, 2));
  155. }
  156. if(ppos[i][1]>y && ppos[i][0]<x){ //4
  157. sin = asin(tmp3/dis);
  158. MindAngle = floatadd(sin, 180);
  159. }
  160. }
  161. if(MindAngle == 0.0){
  162. return angle2;
  163. } else
  164. return MindAngle;
  165. }
  166. public PodsumowanieDriftu(playerid){
  167. PunktyDriftuGracza[playerid] = 0;
  168.  
  169. GivePlayerMoney(playerid,DriftPointsNow[playerid]);
  170. SetPlayerScore(playerid,DriftPointsNow[playerid]);
  171. DriftPointsNow[playerid] = 0;
  172. TextDrawSetString(DriftTD[playerid],"~r~ Drift Money Cash~w~: Loading");
  173. TextDrawSetString(DriftTD2[playerid],"~r~ Drift Points~w~: Loading");
  174. SetTimer("DMCDP",5000,false);
  175. }
  176.  
  177. Float:ReturnPlayerAngle(playerid){
  178. new Float:Ang;
  179. if(IsPlayerInAnyVehicle(playerid))GetVehicleZAngle(GetPlayerVehicleID(playerid), Ang); else GetPlayerFacingAngle(playerid, Ang);
  180. return Ang;
  181. }
  182. public LicznikDriftu(){
  183. new Float:Angle1, Float:Angle2, Float:BySpeed, s[256];
  184. new Float:Z;
  185. new Float:X;
  186. new Float:Y;
  187. new Float:SpeedX;
  188. for(new g=0;g<200;g++){
  189. GetPlayerPos(g, X, Y, Z);
  190. SpeedX = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(X,SavedPos[ g ][ sX ])),2),floatpower(floatabs(floatsub(Y,SavedPos[ g ][ sY ])),2)),floatpower(floatabs(floatsub(Z,SavedPos[ g ][ sZ ])),2)));
  191. Angle1 = ReturnPlayerAngle(g);
  192. Angle2 = GetPlayerTheoreticAngle(g);
  193. BySpeed = floatmul(SpeedX, 12);
  194. if(GetPlayerState(g) == PLAYER_STATE_DRIVER && IsCar(GetPlayerVehicleID(g)) && floatabs(floatsub(Angle1, Angle2)) > DRIFT_MINKAT && floatabs(floatsub(Angle1, Angle2)) < DRIFT_MAXKAT && BySpeed > DRIFT_SPEED){
  195. if(PunktyDriftuGracza[g] > 0)KillTimer(PunktyDriftuGracza[g]);
  196. PunktyDriftuGracza[g] = 0;
  197. DriftPointsNow[g] += floatval( floatabs(floatsub(Angle1, Angle2)) * 3 * (BySpeed*0.1) )/10;
  198. PunktyDriftuGracza[g] = SetTimerEx("PodsumowanieDriftu", 3000, 0, "d", g);
  199. }
  200. if(DriftPointsNow[g] > 0){
  201. format(s, sizeof(s), "Drift Money Cash~y~: %d", DriftPointsNow[g]);
  202. TextDrawSetString(DriftTD[g], s);
  203. format(s, sizeof(s), "Drift Points~y~: %d", DriftPointsNow[g]);
  204. TextDrawSetString(DriftTD2[g], s);
  205. }
  206. SavedPos[ g ][ sX ] = X;
  207. SavedPos[ g ][ sY ] = Y;
  208. SavedPos[ g ][ sZ ] = Z;
  209. }
  210. }
  211. //Split(s1[], s2[], s3[]=""){new rxx[256];format(rxx, 256, "%s%s%s", s1, s2, s3);return rxx;}
  212. //tostr(int){new st[256];format(st, 256, "%d", int);return st;}
  213. floatval(Float:val){new str[256];format(str, 256, "%.0f", val);return todec(str);}
  214. todec(str[]){return strval(str);}
  215. public OnPlayerStateChange(playerid, newstate, oldstate)
  216. {
  217. if(newstate == PLAYER_STATE_DRIVER){
  218. TextDrawShowForPlayer(playerid, DriftTD[playerid]);
  219. TextDrawShowForPlayer(playerid, DriftTD2[playerid]);
  220. TextDrawShowForPlayer(playerid, Textdraw0);
  221. }
  222. return 1;
  223. }
  224.  
  225. forward DMCDP(playerid);
  226. public DMCDP(playerid)
  227. {
  228. TextDrawSetString(DriftTD[playerid]," ");
  229. TextDrawSetString(DriftTD2[playerid]," ");
  230. return 1;
  231. }
  232.  
  233.  
  234. public OnPlayerConnect(playerid)
  235. {
  236. new x;
  237. TextDrawHideForPlayer(playerid, DriftTD[x]);
  238. TextDrawHideForPlayer(playerid, DriftTD2[x]);
  239. TextDrawHideForPlayer(playerid, Textdraw0);
  240. SendClientMessage(playerid,COLOR_LIGHTBLUE,"MONEY: Drift for money easy way to earn money Drift Counter by luby edited by kitten");
  241. return 1;
  242. }
  243.  
  244.  
  245. public OnPlayerCommandText(playerid, cmdtext[])
  246. {
  247. new x;
  248.  
  249. if (strcmp("/driftoff", cmdtext, true, 10) == 0)
  250. {
  251. SendClientMessage(playerid,COLOR_LIGHTBLUE,"You Have Disabled Drift Counter");
  252. TextDrawHideForPlayer(playerid, DriftTD[x]);
  253. TextDrawHideForPlayer(playerid, DriftTD2[x]);
  254. return 1;
  255. }
  256.  
  257. if (strcmp("/drifton", cmdtext, true, 10) == 0)
  258. {
  259. SendClientMessage(playerid,COLOR_LIGHTBLUE,"You Have Enabled Drift Counter By Luby edited by kitten");
  260. TextDrawShowForPlayer(playerid, DriftTD[x]);
  261. TextDrawShowForPlayer(playerid, DriftTD2[x]);
  262. return 1;
  263. }
  264. return 0;
  265. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement