Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////
- /////////////// DRIFT POINTS COUNTER BY Luby ///////////////
- /////////////// A little editted by Florinca//////////////
- //-Keep Credits-//
- //////////////NOW NEW updated by Florinca ////////////////
- ////////////////////////////////////////////////////////////
- #include <a_samp>// by I dont know .. :D lol
- #define DRIFT_MINKAT 10.0 // by Florinca
- #define DRIFT_MAXKAT 90.0 // by Florinca
- #define DRIFT_SPEED 30.0 // by Luby
- #define PATH "/Driftscore/%s.ini"
- //////////// Added by Florinca///////
- #define COLOR_Label 0xFFFFFFFF
- #define COLOR_LabelOut 0x00000040
- #define COLOR_ValueOut 0xFFFFFF40
- #define COLOR_Value 0x000000FF
- /////////////////////////////////////
- new DriftTimer[MAX_PLAYERS]; // Added by Florinca
- new TimerA,TimerB,TimerC; // Added by Abhinav
- new DriftPointsNow[MAX_PLAYERS]; // by Florinca
- new PlayerDriftCancellation[MAX_PLAYERS]; // by Luby
- new Float:ppos[MAX_PLAYERS][3]; // by Luby
- enum Float:Pos{ Float:sX,Float:sY,Float:sZ }; // by Luby
- new Float:SavedPos[MAX_PLAYERS][Pos]; // by Luby
- new bool:DriftMode[MAX_PLAYERS]=false; // Added by Florinca
- new DriftBonus[MAX_PLAYERS]=1; // Added by Abhinav
- new Float:HealthInit[MAX_PLAYERS]=1000.0; // Added by Abhinav
- new bool:AutoFixBool[MAX_PLAYERS]=true; // Added by Florinca
- new Text:TDLabels[3]; // Added by Abhinav
- new Text:TDValueDrift[MAX_PLAYERS]; // Added by Abhinav
- new Text:TDValueBonus[MAX_PLAYERS]; // Added by Abhinav
- new Text:TDValueCash[MAX_PLAYERS]; // Added by Florinca
- new Text:Textdraw0;
- forward Drift(); // by Florinca
- forward AngleUpdate(); // by Luby
- forward DriftExit(playerid); // by Luby
- forward CheckPlayerState(); // Added by Florinca
- forward AutoFix(); // Added by Abhinav
- public OnFilterScriptInit(){
- TimerA=SetTimer("AngleUpdate", 200, true); // by Luby
- TimerB=SetTimer("AutoFix", 500, true); //by Florinca
- TimerC=SetTimer("CheckPlayerState", 100, true); //by Abhinav
- LoadTextDraws();
- return 1;
- }
- public OnFilterScriptExit(){
- KillTimer(TimerA);
- KillTimer(TimerB);
- KillTimer(TimerC);
- return 1;
- }
- Float:GetPlayerTheoreticAngle(i) // By Luby
- {
- new Float:sin;
- new Float:dis;
- new Float:angle2;
- new Float:x,Float:y,Float:z;
- new Float:tmp3;
- new Float:tmp4;
- new Float:MindAngle;
- if(IsPlayerConnected(i)){
- GetPlayerPos(i,x,y,z);
- dis = floatsqroot(floatpower(floatabs(floatsub(x,ppos[i][0])),2)+floatpower(floatabs(floatsub(y,ppos[i][1])),2));
- if(IsPlayerInAnyVehicle(i)){GetVehicleZAngle(GetPlayerVehicleID(i), angle2);}else{GetPlayerFacingAngle(i, angle2);}
- if(x>ppos[i][0]){tmp3=x-ppos[i][0];}else{tmp3=ppos[i][0]-x;}
- if(y>ppos[i][1]){tmp4=y-ppos[i][1];}else{tmp4=ppos[i][1]-y;}
- if(ppos[i][1]>y && ppos[i][0]>x){
- sin = asin(tmp3/dis);
- MindAngle = floatsub(floatsub(floatadd(sin, 90), floatmul(sin, 2)), -90.0);
- }
- if(ppos[i][1]<y && ppos[i][0]>x){
- sin = asin(tmp3/dis);
- MindAngle = floatsub(floatadd(sin, 180), 180.0);
- }
- if(ppos[i][1]<y && ppos[i][0]<x){
- sin = acos(tmp4/dis);
- MindAngle = floatsub(floatadd(sin, 360), floatmul(sin, 2));
- }
- if(ppos[i][1]>y && ppos[i][0]<x){
- sin = asin(tmp3/dis);
- MindAngle = floatadd(sin, 180);
- }
- }
- if(MindAngle == 0.0){return angle2;}else{return MindAngle;}
- }
- public DriftExit(playerid){ // By Florinca
- PlayerDriftCancellation[playerid] = 0;
- ////////////////// by Florinca ///////////////////
- new Float:h;
- GetVehicleHealth(GetPlayerVehicleID(playerid),h);
- if(DriftPointsNow[playerid]>70 && DriftPointsNow[playerid]<100000 && h==HealthInit[playerid]) SetPlayerScore(playerid,DriftPointsNow[playerid]*DriftBonus[playerid]*3);
- TextDrawHideForPlayer(playerid,TDLabels[0]);
- TextDrawHideForPlayer(playerid,TDLabels[1]);
- TextDrawHideForPlayer(playerid,TDLabels[2]);
- TextDrawHideForPlayer(playerid,TDValueDrift[playerid]);
- TextDrawHideForPlayer(playerid,TDValueBonus[playerid]);
- TextDrawHideForPlayer(playerid,TDValueCash[playerid]);
- TextDrawHideForPlayer(playerid,Textdraw0);//added by Jagat
- DriftBonus[playerid]=1;
- AutoFixBool[playerid]=true;
- SetVehicleHealth(GetPlayerVehicleID(playerid),HealthInit[playerid]);
- ////////////////////////////////////////////////////
- DriftPointsNow[playerid] = 0;
- }
- Float:ReturnPlayerAngle(playerid){ // By Luby
- new Float:Ang;
- if(IsPlayerInAnyVehicle(playerid))GetVehicleZAngle(GetPlayerVehicleID(playerid), Ang); else GetPlayerFacingAngle(playerid, Ang);
- return Ang;
- }
- public Drift(){ // By Florinca
- new Float:Angle1, Float:Angle2, Float:BySpeed;
- new Float:Z;
- new Float:X;
- new Float:Y;
- new Float:SpeedX;
- for(new g=0;g<200;g++){
- GetPlayerPos(g, X, Y, Z);
- 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)));
- Angle1 = ReturnPlayerAngle(g);
- Angle2 = GetPlayerTheoreticAngle(g);
- BySpeed = floatmul(SpeedX, 12);
- if(IsPlayerInAnyVehicle(g) && GetVType(GetPlayerVehicleID(g)) && floatabs(floatsub(Angle1, Angle2)) > DRIFT_MINKAT && floatabs(floatsub(Angle1, Angle2)) < DRIFT_MAXKAT && BySpeed > DRIFT_SPEED){
- if(PlayerDriftCancellation[g] > 0)KillTimer(PlayerDriftCancellation[g]);
- PlayerDriftCancellation[g] = 0;
- DriftPointsNow[g] += floatval( floatabs(floatsub(Angle1, Angle2)) * 4.1 * (BySpeed*0.2) )/10;
- PlayerDriftCancellation[g] = SetTimerEx("DriftExit", 3000, 0, "d", g);
- }
- if(DriftPointsNow[g] > 70 && DriftPointsNow[g]<10000){
- ///////////// by Florinca ////////////////////
- if(DriftPointsNow[g]<500){
- DriftBonus[g]=1;
- }
- //edited all by Jagat
- if(DriftPointsNow[g]>=500 && DriftPointsNow[g]<700){
- DriftBonus[g]=2;
- }
- if(DriftPointsNow[g]>=700 && DriftPointsNow[g]<1200){
- DriftBonus[g]=3;
- }
- if(DriftPointsNow[g]>=1200 && DriftPointsNow[g]<1700){
- DriftBonus[g]=4;
- }
- if(DriftPointsNow[g]>=1700 && DriftPointsNow[g]<2500){
- DriftBonus[g]=5;
- }
- if(DriftPointsNow[g]>=2500 && DriftPointsNow[g]<3000){
- DriftBonus[g]=6;
- }
- if(DriftPointsNow[g]>=3000 && DriftPointsNow[g]<5000){
- DriftBonus[g]=7;
- }
- if(DriftPointsNow[g]>=5000 && DriftPointsNow[g]<7400){
- DriftBonus[g]=8;
- }
- if(DriftPointsNow[g]>=7400 && DriftPointsNow[g]<10000){
- DriftBonus[g]=9;
- }
- if(DriftPointsNow[g]>=10000 && DriftPointsNow[g]<13570){
- DriftBonus[g]=10;
- }
- if(DriftPointsNow[g]>=13570 && DriftPointsNow[g]<15345){
- DriftBonus[g]=11;
- }
- if(DriftPointsNow[g]>=17800 && DriftPointsNow[g]<19999){
- DriftBonus[g]=12;
- }
- if(DriftPointsNow[g]>=22085 && DriftPointsNow[g]<23467){
- DriftBonus[g]=13;
- }
- if(DriftPointsNow[g]>=23467 && DriftPointsNow[g]<25000){
- DriftBonus[g]=14;
- }
- if(DriftPointsNow[g]>=25000){
- DriftBonus[g]=15;
- }
- TextDrawShowForPlayer(g,TDLabels[0]);
- TextDrawShowForPlayer(g,TDLabels[1]);
- TextDrawShowForPlayer(g,TDLabels[2]);
- TextDrawShowForPlayer(g,TDValueDrift[g]);
- TextDrawShowForPlayer(g,TDValueBonus[g]);
- TextDrawShowForPlayer(g,TDValueCash[g]);
- TextDrawShowForPlayer(g,Textdraw0);//added by Jagat
- new DPs[128],DBn[128],Cash[128],csh;
- valstr(DPs,DriftPointsNow[g],false);
- format(DBn,sizeof(DBn),"X%i",DriftBonus[g]);
- csh=DriftPointsNow[g]*DriftBonus[g];
- format(Cash,sizeof(Cash),"$%i",csh);
- TextDrawSetString(TDValueDrift[g],DPs);
- TextDrawSetString(TDValueBonus[g],DBn);
- TextDrawSetString(TDValueCash[g],Cash);
- ////////////////////////////////////////
- }
- SavedPos[ g ][ sX ] = X;
- SavedPos[ g ][ sY ] = Y;
- SavedPos[ g ][ sZ ] = Z;
- }
- }
- public AngleUpdate(){ // By Florinca
- for(new g=0;g<=MAX_PLAYERS;g++){
- new Float:x, Float:y, Float:z;
- if(IsPlayerInAnyVehicle(g))GetVehiclePos(GetPlayerVehicleID(g), x, y, z); else GetPlayerPos(g, x, y, z);
- ppos[g][0] = x;
- ppos[g][1] = y;
- ppos[g][2] = z;
- }
- }
- floatval(Float:val){ // By Luby
- new str[256];
- format(str, 256, "%.0f", val);
- return todec(str);
- }
- todec(str[]){ // By Luby
- return strval(str);
- }
- LoadTextDraws(){// by Abhinav
- //edited all text draws by Jagat
- Textdraw0 = TextDrawCreate(322.000000, 338.000000, "~n~");
- TextDrawLetterSize(Textdraw0, 1.600000, 6.359762);
- TextDrawSetOutline(Textdraw0, 3);
- TextDrawTextSize(Textdraw0, 146.000000, 4.000000);//-------------------------~|~
- TDLabels[0]=TextDrawCreate(160.000000, 348.000000,"Drift Points:");
- TextDrawColor(TDLabels[0],0x33AA33AA);
- TextDrawSetShadow(TDLabels[0],0);
- TextDrawSetOutline(TDLabels[0],3);
- TextDrawLetterSize(TDLabels[0],0.36,1.123);
- TextDrawBackgroundColor(TDLabels[0],COLOR_LabelOut);
- TextDrawFont(TDLabels[0],1);
- TDLabels[1]=TextDrawCreate(160.000000, 365.000000,"Drift Bonus:");
- TextDrawColor(TDLabels[1],0xFF0000FF);
- TextDrawSetShadow(TDLabels[1],0);
- TextDrawSetOutline(TDLabels[1],3);
- TextDrawLetterSize(TDLabels[1],0.36,1.123);
- TextDrawBackgroundColor(TDLabels[1],COLOR_LabelOut);
- TextDrawFont(TDLabels[1],1);
- TDLabels[2]=TextDrawCreate(160.000000, 382.000000,"Drift Cash:");
- TextDrawColor(TDLabels[2],0x6DC5F3FF);
- TextDrawSetShadow(TDLabels[2],0);
- TextDrawSetOutline(TDLabels[2],3);
- TextDrawLetterSize(TDLabels[2],0.36,1.123);
- TextDrawBackgroundColor(TDLabels[2],COLOR_LabelOut);
- TextDrawFont(TDLabels[2],1);
- new i;
- for(i=0;i<=MAX_PLAYERS;i++){
- TDValueDrift[i]=TextDrawCreate(246.000500, 347.000000,"0");
- TextDrawColor(TDValueDrift[i],0xFFFF00AA);
- TextDrawSetShadow(TDValueDrift[i],0);
- TextDrawLetterSize(TDValueDrift[i],0.37,1.2);
- TextDrawBackgroundColor(TDValueDrift[i],COLOR_ValueOut);
- TextDrawFont(TDValueDrift[i],3);
- TDValueBonus[i]=TextDrawCreate(246.005000, 364.000000," X1");
- TextDrawColor(TDValueBonus[i],0xFFFF00AA);
- TextDrawSetShadow(TDValueBonus[i],0);
- TextDrawLetterSize(TDValueBonus[i],0.37,1.2);
- TextDrawBackgroundColor(TDValueBonus[i],COLOR_ValueOut);
- TextDrawFont(TDValueBonus[i],3);
- TDValueCash[i]=TextDrawCreate(245.000600, 381.000000,"$0");
- TextDrawColor(TDValueCash[i],0xFFFF00AA);
- TextDrawSetShadow(TDValueCash[i],0);
- TextDrawLetterSize(TDValueCash[i],0.37,1.2);
- TextDrawBackgroundColor(TDValueCash[i],COLOR_ValueOut);
- TextDrawFont(TDValueCash[i],3);
- }
- return 1;
- }
- //__//__removed drift stop function on big strike with any thing || by Florinca
- public CheckPlayerState(){ //by Florinca
- new i,cs;
- for(i=0;i<=MAX_PLAYERS;i++){
- cs=GetPlayerState(i);
- if(DriftMode[i] && cs==PLAYER_STATE_DRIVER && DriftPointsNow[i]>70){
- }
- if(cs==PLAYER_STATE_DRIVER && DriftMode[i]==false){
- if(GetVType(GetPlayerVehicleID(i))){
- DriftMode[i]=true;
- GetVehicleHealth(GetPlayerVehicleID(i),HealthInit[i]);
- AutoFixBool[i]=false;
- DriftTimer[i]=SetTimerEx("Drift", 200, true, "i", i);
- }
- }
- else if(cs!=PLAYER_STATE_DRIVER && DriftMode[i]==true){
- KillTimer(DriftTimer[i]);
- DriftMode[i]=false;
- AutoFixBool[i]=true;
- }
- else{}
- }
- return 1;
- }
- //---removed auto fix || not suitable with the script
- /*
- public AutoFix(){ // By abhinav
- new i;
- for(i=0;i<=MAX_PLAYERS;i++){
- if(AutoFixBool[i] && IsPlayerInAnyVehicle(i)){
- SetVehicleHealth(GetPlayerVehicleID(i),HealthInit[i]);
- }
- }
- }
- */
- //just remove /* and */ to enable auto fix
- GetVType(vid){ // By Florinca
- new Convertibles[4]={480, 533, 439, 555};
- new Industrial[26]={499, 422, 482, 498, 609, 524, 578, 455, 403, 414, 582, 443, 514, 413, 515, 440, 543, 605, 459, 531, 408, 552, 478, 456, 554};
- new LowRider[8]={536, 575, 534, 567, 535, 566, 576, 412};
- new OffRoad[13]={568, 424, 573, 579, 400, 500, 444, 556, 557, 470, 489, 505, 595};
- new Service[19]={416, 433, 431, 438, 437, 523, 427, 490, 528, 407, 544, 596, 596, 597, 598, 599, 432, 601, 420};
- new Saloon[35]={445, 504, 401, 518, 527, 542, 507, 562, 585, 419, 526, 604, 466, 492, 474, 546, 517, 410, 551, 516, 467, 600, 426, 436, 547, 405, 580, 560, 550, 549, 540, 491, 529, 421};
- new Sports[20]={602, 429, 496, 402, 541, 415, 589, 587, 565, 494, 502, 503, 411, 559, 603, 475, 506, 451, 558, 477};
- new Wagons[5]={418, 404, 479, 458, 561};
- new modelid=GetVehicleModel(vid);
- new i;
- for(i=0;i<3;i++){
- if(Convertibles[i]==modelid) return 1;
- }
- for(i=0;i<25;i++){
- if(Industrial[i]==modelid) return 1;
- }
- for(i=0;i<7;i++){
- if(LowRider[i]==modelid) return 1;
- }
- for(i=0;i<12;i++){
- if(OffRoad[i]==modelid) return 1;
- }
- for(i=0;i<19;i++){
- if(Service[i]==modelid) return 1;
- }
- for(i=0;i<35;i++){
- if(Saloon[i]==modelid) return 1;
- }
- for(i=0;i<20;i++){
- if(Sports[i]==modelid) return 1;
- }
- for(i=0;i<5;i++){
- if(Wagons[i]==modelid) return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement