VenomMancer

Drift System

Mar 6th, 2014
665
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.46 KB | None | 0 0
  1.  
  2. #include <a_samp>
  3. #include <ini>
  4.  
  5. #define DRIFT_MINKAT 10.0
  6. #define DRIFT_MAXKAT 90.0
  7. #define DRIFT_SPEED 30.0
  8. #define DIALOG_LOGIN 998
  9. #define DIALOG_REGISTER 999
  10. #define AccauntBD "players/%s.ini"
  11.  
  12. #define COLOR_ORANGE 0xFF8000AA
  13. #define COLOR_RED 0xFF0000AA
  14.  
  15. forward OnPlayerRegistered(playerid, password[]);
  16. forward OnPlayerLogged(playerid, password[]);
  17. forward OnPlayerSave(playerid);
  18. forward ShowPlayerRegisterDialog(playerid);
  19. forward ShowPlayerLoginDialog(playerid);
  20. forward LevelUpdate();
  21. forward ScoreUp();
  22. forward Drift();
  23. forward AngleUpdate();
  24. forward DriftCancellation(playerid);
  25.  
  26. enum PlayerData
  27. {
  28. Level[50]
  29. };
  30.  
  31. enum pInfo
  32. {
  33. pMoney,
  34. pScore
  35. };
  36.  
  37. enum Float:Pos{ Float:sX,Float:sY,Float:sZ };
  38.  
  39. new Text3D:Level3D[MAX_PLAYERS];
  40. new PlayerInfo[MAX_PLAYERS][pInfo];
  41. new PlayerInf[MAX_PLAYERS][PlayerData];
  42. new LevelStats[MAX_PLAYERS];
  43. new Text:level[11];
  44. new CashScoreOld;
  45. new Text:Textdraw0;
  46. new Text:Textdraw1;
  47. new DriftPointsNow[200];
  48. new PlayerDriftCancellation[200];
  49. new Float:ppos[200][3];
  50. new Float:SavedPos[MAX_PLAYERS][Pos];
  51.  
  52. public OnFilterScriptInit()
  53. {
  54. SetTimer("AngleUpdate", 200, true);
  55. SetTimer("Drift", 200, true);
  56.  
  57. Textdraw0 = TextDrawCreate(506.000000,96.000000,"~w~All ~g~Drifting~w~ score");
  58. TextDrawAlignment(Textdraw0,0);
  59. TextDrawBackgroundColor(Textdraw0,0x000000ff);
  60. TextDrawFont(Textdraw0,3);
  61. TextDrawLetterSize(Textdraw0,0.299999,1.000000);
  62. TextDrawColor(Textdraw0,0x00ff00ff);
  63. TextDrawSetOutline(Textdraw0,1);
  64. TextDrawSetProportional(Textdraw0,1);
  65. TextDrawSetShadow(Textdraw0,1);
  66.  
  67. Textdraw1 = TextDrawCreate(498.000000,77.000000,"~g~0");
  68. TextDrawAlignment(Textdraw1,0);
  69. TextDrawBackgroundColor(Textdraw1,0x000000ff);
  70. TextDrawFont(Textdraw1,3);
  71. TextDrawLetterSize(Textdraw1,0.599999,2.200000);
  72. TextDrawColor(Textdraw1,0xffffffff);
  73. TextDrawSetOutline(Textdraw1,1);
  74. TextDrawSetProportional(Textdraw1,1);
  75. TextDrawSetShadow(Textdraw1,1);
  76. print("Levels Downloading");
  77. // ==================================================================== //
  78. level[0] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~1");
  79. TextDrawAlignment(level[0],0);
  80. TextDrawBackgroundColor(level[0],0x000000ff);
  81. TextDrawFont(level[0],3);
  82. TextDrawLetterSize(level[0],0.299999,1.000000);
  83. TextDrawColor(level[0],0xffffffff);
  84. TextDrawSetOutline(level[0],1);
  85. TextDrawSetProportional(level[0],1);
  86. TextDrawSetShadow(level[0],1); //
  87. //
  88. level[1] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~2");
  89. TextDrawAlignment(level[1],0);
  90. TextDrawBackgroundColor(level[1],0x000000ff);
  91. TextDrawFont(level[1],3);
  92. TextDrawLetterSize(level[1],0.299999,1.000000);
  93. TextDrawColor(level[1],0xffffffff);
  94. TextDrawSetOutline(level[1],1);
  95. TextDrawSetProportional(level[1],1);
  96. TextDrawSetShadow(level[1],1); //
  97. //
  98. level[2] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~3");
  99. TextDrawAlignment(level[2],0);
  100. TextDrawBackgroundColor(level[2],0x000000ff);
  101. TextDrawFont(level[2],3);
  102. TextDrawLetterSize(level[2],0.299999,1.000000);
  103. TextDrawColor(level[2],0xffffffff);
  104. TextDrawSetOutline(level[2],1);
  105. TextDrawSetProportional(level[2],1);
  106. TextDrawSetShadow(level[2],1);
  107. //
  108. level[3] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~4");
  109. TextDrawAlignment(level[3],0);
  110. TextDrawBackgroundColor(level[3],0x000000ff);
  111. TextDrawFont(level[3],3);
  112. TextDrawLetterSize(level[3],0.299999,1.000000);
  113. TextDrawColor(level[3],0xffffffff);
  114. TextDrawSetOutline(level[3],1);
  115. TextDrawSetProportional(level[3],1);
  116. TextDrawSetShadow(level[3],1); //
  117. //
  118. level[4] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~5");
  119. TextDrawAlignment(level[4],0);
  120. TextDrawBackgroundColor(level[4],0x000000ff);
  121. TextDrawFont(level[4],3);
  122. TextDrawLetterSize(level[4],0.299999,1.000000);
  123. TextDrawColor(level[4],0xffffffff);
  124. TextDrawSetOutline(level[4],1);
  125. TextDrawSetProportional(level[4],1);
  126. TextDrawSetShadow(level[4],1);
  127. //
  128. level[5] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~6");
  129. TextDrawAlignment(level[5],0);
  130. TextDrawBackgroundColor(level[5],0x000000ff);
  131. TextDrawFont(level[5],3);
  132. TextDrawLetterSize(level[5],0.299999,1.000000);
  133. TextDrawColor(level[5],0xffffffff);
  134. TextDrawSetOutline(level[5],1);
  135. TextDrawSetProportional(level[5],1);
  136. TextDrawSetShadow(level[5],1);
  137. //
  138. level[6] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~7");
  139. TextDrawAlignment(level[6],0);
  140. TextDrawBackgroundColor(level[6],0x000000ff);
  141. TextDrawFont(level[6],3);
  142. TextDrawLetterSize(level[6],0.299999,1.000000);
  143. TextDrawColor(level[6],0xffffffff);
  144. TextDrawSetOutline(level[6],1);
  145. TextDrawSetProportional(level[6],1);
  146. TextDrawSetShadow(level[6],1);
  147. //
  148. level[7] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~8");
  149. TextDrawAlignment(level[7],0);
  150. TextDrawBackgroundColor(level[7],0x000000ff);
  151. TextDrawFont(level[7],3);
  152. TextDrawLetterSize(level[7],0.299999,1.000000);
  153. TextDrawColor(level[7],0xffffffff);
  154. TextDrawSetOutline(level[7],1);
  155. TextDrawSetProportional(level[7],1);
  156. TextDrawSetShadow(level[7],1);
  157.  
  158. level[8] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~9");
  159. TextDrawAlignment(level[8],0);
  160. TextDrawBackgroundColor(level[8],0x000000ff);
  161. TextDrawFont(level[8],3);
  162. TextDrawLetterSize(level[8],0.299999,1.000000);
  163. TextDrawColor(level[8],0xffffffff);
  164. TextDrawSetOutline(level[8],1);
  165. TextDrawSetProportional(level[8],1);
  166. TextDrawSetShadow(level[8],1);
  167.  
  168. level[9] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~10");
  169. TextDrawAlignment(level[9],0);
  170. TextDrawBackgroundColor(level[9],0x000000ff);
  171. TextDrawFont(level[9],3);
  172. TextDrawLetterSize(level[9],0.299999,1.000000);
  173. TextDrawColor(level[9],0xffffffff);
  174. TextDrawSetOutline(level[9],1);
  175. TextDrawSetProportional(level[9],1);
  176. TextDrawSetShadow(level[9],1);
  177.  
  178. level[10] = TextDrawCreate(515.000000,106.000000,"Drift level:~y~VIP");
  179. TextDrawAlignment(level[10],0);
  180. TextDrawBackgroundColor(level[10],0x000000ff);
  181. TextDrawFont(level[10],3);
  182. TextDrawLetterSize(level[10],0.299999,1.000000);
  183. TextDrawColor(level[10],0xffffffff);
  184. TextDrawSetOutline(level[10],1);
  185. TextDrawSetProportional(level[10],1);
  186. TextDrawSetShadow(level[10],1); //
  187. SetTimer("LevelUpdate",2000,1); //
  188. // ===================================================================== //
  189. new Max = GetMaxPlayers();
  190. for(new i=0; i<Max; i++)
  191. {
  192. Level3D[i] = Create3DTextLabel(" ",0xFFFFFFAA,0.000,0.000,-4.000,18.0,0,1);
  193. }
  194. return 1;
  195. }
  196. public OnPlayerDeath(playerid,killerid)
  197. {
  198. ScoreUp();
  199. if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID)
  200. {
  201. new Score = GetPlayerMoney(killerid);
  202. if(Score >= 0 && Score < 20000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Íóá â äðèôòèíãå{FFFFFF}*");
  203. if(Score >= 20000 && Score < 50000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}2{FFFFFF}.*\n*{00CCFF}Íîâè÷¸ÃÃ{FFFFFF}*");
  204. if(Score >= 50000 && Score < 80000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Íà÷èíàþùòé Äðèôòåð{FFFFFF}*");
  205. if(Score >= 80000 && Score < 120000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Ïðîæèâàþùèé{FFFFFF}*");
  206. if(Score >= 120000 && Score < 150000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Ñâîé{FFFFFF}*");
  207. if(Score >= 150000 && Score < 180000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Ïàõàí{FFFFFF}*");
  208. if(Score >= 180000 && Score < 200000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
  209. if(Score >= 200000 && Score < 250000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
  210. if(Score >= 250000 && Score < 270000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Ãëîâàðü{FFFFFF}*");
  211. if(Score >= 270000 ) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Êîðîëü Äðèôòà{FFFFFF}*");
  212. Update3DTextLabelText(Level3D[killerid],0x00FF00FF,PlayerInf[killerid][Level]);
  213. }
  214. return 1;
  215. }
  216. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  217. {
  218. ScoreUp();
  219. new Score = GetPlayerMoney(playerid);
  220. if(Score >= 0 && Score < 20000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Íóá â äðèôòèíãå{FFFFFF}*");
  221. if(Score >= 20000 && Score < 50000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}2{FFFFFF}.*\n*{00CCFF}Íîâè÷¸ÃÃ{FFFFFF}*");
  222. if(Score >= 50000 && Score < 80000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Íà÷èíàþùòé Äðèôòåð{FFFFFF}*");
  223. if(Score >= 80000 && Score < 120000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Ïðîæèâàþùèé{FFFFFF}*");
  224. if(Score >= 120000 && Score < 150000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Ñâîé{FFFFFF}*");
  225. if(Score >= 150000 && Score < 180000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Ïàõàí{FFFFFF}*");
  226. if(Score >= 180000 && Score < 200000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
  227. if(Score >= 200000 && Score < 250000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
  228. if(Score >= 250000 && Score < 270000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Ãëîâàðü{FFFFFF}*");
  229. if(Score >= 270000 ) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Êîðîëü Äðèôòà{FFFFFF}*");
  230. if(LevelStats[playerid] == 0) Attach3DTextLabelToPlayer(Level3D[playerid],playerid,0.0,0.0,0.47);
  231. Update3DTextLabelText(Level3D[playerid],0x00FF00FF,PlayerInf[playerid][Level]);
  232. LevelStats[playerid] = 1;
  233. return 1;
  234. }
  235. public OnPlayerExitVehicle(playerid, vehicleid)
  236. {
  237. ScoreUp();
  238. new Score = GetPlayerMoney(playerid);
  239. if(Score >= 0 && Score < 20000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Íóá â äðèôòèíãå{FFFFFF}*");
  240. if(Score >= 20000 && Score < 50000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}2{FFFFFF}.*\n*{00CCFF}Íîâè÷¸ÃÃ{FFFFFF}*");
  241. if(Score >= 50000 && Score < 80000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Íà÷èíàþùòé Äðèôòåð{FFFFFF}*");
  242. if(Score >= 80000 && Score < 120000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Ïðîæèâàþùèé{FFFFFF}*");
  243. if(Score >= 120000 && Score < 150000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Ñâîé{FFFFFF}*");
  244. if(Score >= 150000 && Score < 180000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Ïàõàí{FFFFFF}*");
  245. if(Score >= 180000 && Score < 200000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
  246. if(Score >= 200000 && Score < 250000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
  247. if(Score >= 250000 && Score < 270000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Ãëîâàðü{FFFFFF}*");
  248. if(Score >= 270000 ) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Êîðîëü Äðèôòà{FFFFFF}*");
  249. if(LevelStats[playerid] == 0) Attach3DTextLabelToPlayer(Level3D[playerid],playerid,0.0,0.0,0.47);
  250. Update3DTextLabelText(Level3D[playerid],0x00FF00FF,PlayerInf[playerid][Level]);
  251. LevelStats[playerid] = 1;
  252. return 1;
  253. }
  254. public OnPlayerSpawn(playerid)
  255. {
  256. TextDrawHideForPlayer(playerid,Textdraw0);
  257. TextDrawHideForPlayer(playerid,Textdraw1);
  258. ScoreUp();
  259. new Score = GetPlayerMoney(playerid);
  260. if(Score >= 0 && Score < 20000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Íóá â äðèôòèíãå{FFFFFF}*");
  261. if(Score >= 20000 && Score < 50000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}2{FFFFFF}.*\n*{00CCFF}Íîâè÷¸ÃÃ{FFFFFF}*");
  262. if(Score >= 50000 && Score < 80000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Íà÷èíàþùòé Äðèôòåð{FFFFFF}*");
  263. if(Score >= 80000 && Score < 120000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Ïðîæèâàþùèé{FFFFFF}*");
  264. if(Score >= 120000 && Score < 150000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Ñâîé{FFFFFF}*");
  265. if(Score >= 150000 && Score < 180000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Èãðîê{FFFFFF}*\n*Óðîâåíü: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Ïàõàí{FFFFFF}*");
  266. if(Score >= 180000 && Score < 200000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
  267. if(Score >= 200000 && Score < 250000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
  268. if(Score >= 250000 && Score < 270000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Ãëîâàðü{FFFFFF}*");
  269. if(Score >= 270000 ) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Óðîâåíü: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Êîðîëü Äðèôòà{FFFFFF}*");
  270. if(LevelStats[playerid] == 0) Attach3DTextLabelToPlayer(Level3D[playerid],playerid,0.0,0.0,0.47);
  271. Update3DTextLabelText(Level3D[playerid],0x00FF00FF,PlayerInf[playerid][Level]);
  272. LevelStats[playerid] = 1;
  273. return 1;
  274. }
  275.  
  276. Float:GetPlayerTheoreticAngle(i)
  277. {
  278. new Float:sin;
  279. new Float:dis;
  280. new Float:angle2;
  281. new Float:x,Float:y,Float:z;
  282. new Float:tmp3;
  283. new Float:tmp4;
  284. new Float:MindAngle;
  285. if(IsPlayerConnected(i)){
  286. GetPlayerPos(i,x,y,z);
  287. dis = floatsqroot(floatpower(floatabs(floatsub(x,ppos[i][0])),2)+floatpower(floatabs(floatsub(y,ppos[i][1])),2));
  288. if(IsPlayerInAnyVehicle(i))GetVehicleZAngle(GetPlayerVehicleID(i), angle2); else GetPlayerFacingAngle(i, angle2);
  289. if(x>ppos[i][0]){tmp3=x-ppos[i][0];}else{tmp3=ppos[i][0]-x;}
  290. if(y>ppos[i][1]){tmp4=y-ppos[i][1];}else{tmp4=ppos[i][1]-y;}
  291. if(ppos[i][1]>y && ppos[i][0]>x){
  292. sin = asin(tmp3/dis);
  293. MindAngle = floatsub(floatsub(floatadd(sin, 90), floatmul(sin, 2)), -90.0);
  294. }
  295. if(ppos[i][1]<y && ppos[i][0]>x){
  296. sin = asin(tmp3/dis);
  297. MindAngle = floatsub(floatadd(sin, 180), 180.0);
  298. }
  299. if(ppos[i][1]<y && ppos[i][0]<x){
  300. sin = acos(tmp4/dis);
  301. MindAngle = floatsub(floatadd(sin, 360), floatmul(sin, 2));
  302. }
  303. if(ppos[i][1]>y && ppos[i][0]<x){
  304. sin = asin(tmp3/dis);
  305. MindAngle = floatadd(sin, 180);
  306. }
  307. }
  308. if(MindAngle == 0.0){
  309. return angle2;
  310. } else
  311. return MindAngle;
  312. }
  313.  
  314. public OnFilterScriptExit()
  315. {
  316. return 1;
  317. }
  318. public OnPlayerRequestClass(playerid, classid)//Ïàáëèê Ïðè âûáîðå ñêèíà
  319. {
  320. TextDrawHideForPlayer(playerid,Textdraw0);
  321. TextDrawHideForPlayer(playerid,Textdraw1);
  322. ScoreUp();
  323. new string[128];
  324. PlayerInfo[playerid][pMoney] = 0;
  325. PlayerInfo[playerid][pScore] = 0;
  326. if(GetPVarInt(playerid,"Login") == 0)
  327. {
  328. format(string,sizeof(string),AccauntBD,PlayerName(playerid));
  329. if(fexist(string)) // èùåì ôàéë èãðîêà
  330. {
  331. ShowPlayerLoginDialog(playerid); // åñëè îí åñòü îòêðûâàåì äèîëîã ëîãèíà
  332. }
  333. else
  334. {
  335. ShowPlayerRegisterDialog(playerid); // åñëè åãî íåò îòêðûâàåì äèîëîã ðåãèñòðàöèè
  336. }
  337. }
  338. return 1;
  339. }
  340. public OnPlayerConnect(playerid)
  341. {
  342. SetPVarInt(playerid,"Login",0);
  343. return 1;
  344. }
  345.  
  346. public OnPlayerDisconnect(playerid, reason)
  347. {
  348. OnPlayerSave(playerid); // ñîõðàíÿåò àêê èãðîêà ïðè âûõîäå ñ ñåðâåðà
  349. return 1;
  350. }
  351.  
  352. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  353. {
  354. if(dialogid == DIALOG_LOGIN) // äèàëîã ëîãèíà
  355. {
  356. if(!response) Kick(playerid);
  357. if(strlen(inputtext) == 0) return ShowPlayerLoginDialog(playerid);
  358. OnPlayerLogged(playerid, inputtext);
  359. return 1;
  360. }
  361. if(dialogid == DIALOG_REGISTER) // äèàëîã ðåãèñòðàöèè
  362. {
  363. if(!response) Kick(playerid);
  364. if(strlen(inputtext) == 0) return ShowPlayerRegisterDialog(playerid);
  365. OnPlayerRegistered(playerid, inputtext);
  366. return 1;
  367. }
  368. return 0;
  369. }
  370.  
  371. public OnPlayerLogged(playerid, password[])
  372. {
  373. new string[128];
  374. format(string,sizeof(string),AccauntBD,PlayerName(playerid));
  375. new iniFile = ini_openFile(string);
  376. ini_getString(iniFile, "Password",string);
  377. if(strcmp(string,password, true, 10) == 0)
  378. {
  379. ini_getInteger(iniFile,"Money",PlayerInfo[playerid][pMoney]);
  380. ini_getInteger(iniFile,"Score",PlayerInfo[playerid][pScore]);
  381. ini_closeFile(iniFile);
  382. GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
  383. SetPlayerScore(playerid,PlayerInfo[playerid][pScore]);
  384. }
  385. else
  386. {
  387. ShowPlayerLoginDialog(playerid);
  388. SendClientMessage(playerid,COLOR_RED,"{FFFFFF}*Íåâåðíûé {00CCFF}ïàðîëü{FFFFFF}. Ïîïðîáóéòå åùå {00CCFF}ðàç{FFFFFF}.");
  389. ini_closeFile(iniFile);
  390. }
  391. return 1;
  392. }
  393.  
  394. public OnPlayerRegistered(playerid, password[])
  395. {
  396. new IP[24],strdate[24],string[128];
  397. new year,month,day;
  398. getdate(year, month, day);
  399. GetPlayerIp(playerid, IP, sizeof(IP));
  400.  
  401. format(string,sizeof(string),AccauntBD,PlayerName(playerid));
  402. new iniFile = ini_createFile(string);
  403. if(iniFile < 0)
  404. iniFile = ini_openFile(string);
  405. ini_setString(iniFile, "Password",password);
  406. format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);
  407. ini_setString(iniFile, "RegDate", strdate);
  408. ini_setString(iniFile, "IP",IP);
  409. ini_setInteger(iniFile,"Money",0);
  410. ini_setInteger(iniFile,"Score",0);
  411. ini_closeFile(iniFile);
  412. OnPlayerLogged(playerid,password);
  413. format(string,sizeof(string), "{FFFFFF}*Âû çàðåãèñòðèðîâàëèñü è {00CCFF}àâòîìàòè÷åñêè çàëîãèíèëèñü{FFFFFF}. Âàø ïàðîëü: {00CCFF}%s{FFFFFF}.",password);
  414. SendClientMessage(playerid,COLOR_ORANGE,string);
  415. GivePlayerMoney(playerid,10000);
  416. return 1;
  417. }
  418.  
  419. public OnPlayerSave(playerid)
  420. {
  421. new string[128];
  422. format(string,sizeof(string),AccauntBD,PlayerName(playerid));
  423. new iniFile = ini_openFile (string);
  424. ini_setInteger(iniFile,"Money",GetPlayerMoney(playerid));
  425. ini_setInteger(iniFile,"Score",GetPlayerScore(playerid));
  426. ini_closeFile(iniFile);
  427. return 1;
  428. }
  429.  
  430. public ShowPlayerRegisterDialog(playerid) // òóò èçìåíÿòü òî ÷òî ïèøåò èãðîêó åñëè îí ïåðâûé ðàç íà ñåðâåðå
  431. {
  432. new string[256];
  433. format(string,sizeof(string), "{FFFFFF}Ôîðìà Ðåãèñòðàöèè\n{00CCFF}*{FFFFFF}Âàø íèê {00CCFF}%s{FFFFFF}.\n{00CCFF}*{FFFFFF}Ââåäèòå ïàðîëü â {00CCFF}îêíî{FFFFFF}.",PlayerName(playerid));
  434. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "{FFFFFF}..::{00CCFF}Ðåãèñòðàöèÿ{FFFFFF}::..", string, ".:Ðåãèñòð:.", ".:Îòìåíà:.");
  435. return 1;
  436. }
  437.  
  438. public ShowPlayerLoginDialog(playerid) // òóò èçìåíÿòü òî ÷òî ïèøåò èãðîêó åñëè îí óæå çàðåãàí
  439. {
  440. SetPVarInt(playerid,"Login",1);
  441. new string[256];
  442. format(string,sizeof(string), "{FFFFFF}Ôîðìà Àâòîðèçàöèè\n{00CCFF}*{FFFFFF}Ââåäè ñâîé ïàðîëü {00CCFF}%s{FFFFFF}.\nÊîòîðûé òû íàïèñàë ïðè {00CCFF}Ðåãèñòðàöèè{FFFFFF}.",PlayerName(playerid));
  443. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "{FFFFFF}..::{00CCFF}Ëîãèí{FFFFFF}::..", string, ".:Ëîãèí:.", ".:Îòìåíà:.");
  444. return 1;
  445. }
  446. public LevelUpdate()
  447. {
  448. for(new i=0; i<MAX_PLAYERS; i++)
  449. {
  450. TextDrawHideForPlayer(i,level[0]);
  451. TextDrawHideForPlayer(i,level[1]);
  452. TextDrawHideForPlayer(i,level[2]);
  453. TextDrawHideForPlayer(i,level[3]);
  454. TextDrawHideForPlayer(i,level[4]);
  455. TextDrawHideForPlayer(i,level[5]);
  456. TextDrawHideForPlayer(i,level[6]);
  457. TextDrawHideForPlayer(i,level[7]);
  458. TextDrawHideForPlayer(i,level[8]);
  459. TextDrawHideForPlayer(i,level[9]);
  460. TextDrawHideForPlayer(i,level[10]);
  461.  
  462. new kill = GetPlayerMoney(i);
  463. if(kill >= 0 && kill <= 20000) { TextDrawShowForPlayer(i,level[0]); }
  464. else if(kill >= 20000 && kill <= 50000) { TextDrawShowForPlayer(i,level[1]); }
  465. else if(kill >= 50000 && kill <= 80000) { TextDrawShowForPlayer(i,level[2]); }
  466. else if(kill >= 80000 && kill <= 120000) { TextDrawShowForPlayer(i,level[3]); }
  467. else if(kill >= 120000 && kill <= 150000) { TextDrawShowForPlayer(i,level[4]); }
  468. else if(kill >= 150000 && kill <= 180000) { TextDrawShowForPlayer(i,level[5]); }
  469. else if(kill >= 180000 && kill <= 200000) { TextDrawShowForPlayer(i,level[6]); }
  470. else if(kill >= 200000 && kill <= 250000) { TextDrawShowForPlayer(i,level[7]); }
  471. else if(kill >= 250000 && kill <= 270000) { TextDrawShowForPlayer(i,level[8]); }
  472. else if(kill >= 270000 && kill <= 290000) { TextDrawShowForPlayer(i,level[9]); }
  473. else if(kill >= 300000) { TextDrawShowForPlayer(i,level[10]); }
  474.  
  475. else { TextDrawShowForPlayer(i,level[0]); }
  476. }
  477. return 1;
  478. }
  479. public DriftCancellation(playerid){
  480. PlayerDriftCancellation[playerid] = 0;
  481. GameTextForPlayer(playerid, Split("~n~~n~~n~~n~~n~~n~~n~~n~~w~~w~Drifting Bonus:~b~ ", tostr(DriftPointsNow[playerid]), "~w~!"), 3000, 3);
  482. GivePlayerMoney(playerid, DriftPointsNow[playerid]);
  483. DriftPointsNow[playerid] = 0;
  484. }
  485.  
  486. Float:ReturnPlayerAngle(playerid){
  487. new Float:Ang;
  488. if(IsPlayerInAnyVehicle(playerid))GetVehicleZAngle(GetPlayerVehicleID(playerid), Ang); else GetPlayerFacingAngle(playerid, Ang);
  489. return Ang;
  490. }
  491.  
  492. public Drift(){
  493. new Float:Angle1, Float:Angle2, Float:BySpeed, s[256];
  494. new Float:Z;
  495. new Float:X;
  496. new Float:Y;
  497. new Float:SpeedX;
  498. for(new g=0;g<200;g++){
  499. GetPlayerPos(g, X, Y, Z);
  500. 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)));
  501. Angle1 = ReturnPlayerAngle(g);
  502. Angle2 = GetPlayerTheoreticAngle(g);
  503. BySpeed = floatmul(SpeedX, 12);
  504. if(IsPlayerInAnyVehicle(g) && IsCar(GetPlayerVehicleID(g)) && floatabs(floatsub(Angle1, Angle2)) > DRIFT_MINKAT && floatabs(floatsub(Angle1, Angle2)) < DRIFT_MAXKAT && BySpeed > DRIFT_SPEED){
  505. if(PlayerDriftCancellation[g] > 0)KillTimer(PlayerDriftCancellation[g]);
  506. PlayerDriftCancellation[g] = 0;
  507. DriftPointsNow[g] += floatval( floatabs(floatsub(Angle1, Angle2)) * 3 * (BySpeed*0.1) )/10;
  508. PlayerDriftCancellation[g] = SetTimerEx("DriftCancellation", 3000, 0, "d", g);
  509. }
  510. if(DriftPointsNow[g] > 0){
  511. format(s, sizeof(s), "~n~~n~~n~~n~~n~~n~~n~~n~~w~Drifting Score: ~b~%d~w~!", DriftPointsNow[g]);
  512. GameTextForPlayer(g, s, 3000, 3);
  513. }
  514. SavedPos[ g ][ sX ] = X;
  515. SavedPos[ g ][ sY ] = Y;
  516. SavedPos[ g ][ sZ ] = Z;
  517. }
  518. }
  519.  
  520. Split(s1[], s2[], s3[]=""){
  521. new rxx[256];
  522. format(rxx, 256, "%s%s%s", s1, s2, s3);
  523. return rxx;
  524. }
  525.  
  526. tostr(int){
  527. new st[256];
  528. format(st, 256, "%d", int);
  529. return st;
  530. }
  531.  
  532. public AngleUpdate(){
  533. for(new g=0;g<200;g++){
  534. new Float:x, Float:y, Float:z;
  535. if(IsPlayerInAnyVehicle(g))GetVehiclePos(GetPlayerVehicleID(g), x, y, z); else GetPlayerPos(g, x, y, z);
  536. ppos[g][0] = x;
  537. ppos[g][1] = y;
  538. ppos[g][2] = z;
  539. }
  540. }
  541.  
  542. floatval(Float:val){
  543. new str[256];
  544. format(str, 256, "%.0f", val);
  545. return todec(str);
  546. }
  547.  
  548. IsCar(model)
  549. {
  550. switch(model)
  551. {
  552. case 443:return 0;
  553. case 448:return 0;
  554. case 461:return 0;
  555. case 462:return 0;
  556. case 463:return 0;
  557. case 468:return 0;
  558. case 521:return 0;
  559. case 522:return 0;
  560. case 523:return 0;
  561. case 581:return 0;
  562. case 586:return 0;
  563. case 481:return 0;
  564. case 509:return 0;
  565. case 510:return 0;
  566. case 430:return 0;
  567. case 446:return 0;
  568. case 452:return 0;
  569. case 453:return 0;
  570. case 454:return 0;
  571. case 472:return 0;
  572. case 473:return 0;
  573. case 484:return 0;
  574. case 493:return 0;
  575. case 595:return 0;
  576. case 417:return 0;
  577. case 425:return 0;
  578. case 447:return 0;
  579. case 465:return 0;
  580. case 469:return 0;
  581. case 487:return 0;
  582. case 488:return 0;
  583. case 497:return 0;
  584. case 501:return 0;
  585. case 548:return 0;
  586. case 563:return 0;
  587. case 406:return 0;
  588. case 444:return 0;
  589. case 556:return 0;
  590. case 557:return 0;
  591. case 573:return 0;
  592. case 460:return 0;
  593. case 464:return 0;
  594. case 476:return 0;
  595. case 511:return 0;
  596. case 512:return 0;
  597. case 513:return 0;
  598. case 519:return 0;
  599. case 520:return 0;
  600. case 539:return 0;
  601. case 553:return 0;
  602. case 577:return 0;
  603. case 592:return 0;
  604. case 593:return 0;
  605. case 471:return 0;
  606. }
  607. return 1;
  608. }
  609.  
  610. todec(str[]){ // By Luby
  611. return strval(str);
  612. }
  613. public ScoreUp()
  614. {
  615. new CashScore;
  616. new name[MAX_PLAYER_NAME];
  617. for(new i=0; i<MAX_PLAYERS; i++)
  618. {
  619. if (IsPlayerConnected(i))
  620. {
  621. GetPlayerName(i, name, sizeof(name));
  622. CashScore = GetPlayerMoney(i);
  623. SetPlayerScore(i, CashScore);
  624. if (CashScore > CashScoreOld)
  625. {
  626. CashScoreOld = CashScore;
  627. }
  628. }
  629. }
  630. }
  631. stock PlayerName(playerid) // ôóíêöèÿ óçíàþùàÿ èìå èãðîêà (àâòîðà íå çíàþ)
  632. {
  633. new name[MAX_PLAYER_NAME];
  634. GetPlayerName(playerid,name,sizeof(name));
  635. return name;
  636. }
Advertisement
Add Comment
Please, Sign In to add comment