drifting points don't work.
#1

Hi. What bad in this code?

Код:
////////////////////////////////////////////////////////////
    /////////////// DRIFT POINTS COUNTER BY LUBY ///////////////
    /////////////// A little editted by Abhinav ////////////////
    ////////////////////////////////////////////////////////////

    #include <a_samp> // by I dont know .. :D lol

    #define DRIFT_MINKAT 10.0 // by Luby
    #define DRIFT_MAXKAT 90.0 // by Luby
    #define DRIFT_SPEED 30.0 // by Luby

    //////////// Added by Abhinav///////
    #define COLOR_Label 0xFFFFFFFF
    #define COLOR_LabelOut 0x00000040
    #define COLOR_ValueOut 0xFFFFFF40
    #define COLOR_Value 0x000000FF

    #define Label_X 500
    #define Value_X 500
    #define TD_Y 100
    /////////////////////////////////////

    new DriftTimer[MAX_PLAYERS]; // Added by Abhinav

    new DriftPointsNow[MAX_PLAYERS]; // by Luby
    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 Abhinav
    new DriftBonus[MAX_PLAYERS]=1; // Added by Abhinav

    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 Abhinav

    forward Drift( playerid ); // by Luby
    forward DriftExit(playerid); // by Luby

    public OnFilterScriptInit(){
            LoadTextDraws();
            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 Luby
            PlayerDriftCancellation[playerid] = 0;

                     ////////////////// by Abhinav ///////////////////
            if(DriftPointsNow[playerid]>70 && DriftPointsNow[playerid]<10000 ) GivePlayerMoney(playerid,DriftPointsNow[playerid]*DriftBonus[playerid]);
            TextDrawHideForPlayer(playerid,TDLabels[0]);
            TextDrawHideForPlayer(playerid,TDLabels[1]);
            TextDrawHideForPlayer(playerid,TDLabels[2]);
            TextDrawHideForPlayer(playerid,TDValueDrift[playerid]);
            TextDrawHideForPlayer(playerid,TDValueBonus[playerid]);
            TextDrawHideForPlayer(playerid,TDValueCash[playerid]);
            DriftBonus[playerid]=1;
            ////////////////////////////////////////////////////

            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( playerid ){ // By Luby
            new Float:Angle1, Float:Angle2, Float:BySpeed;
            new Float:Z;
            new Float:X;
            new Float:Y;
            new Float:SpeedX;
                    
                    GetPlayerPos(playerid, X, Y, Z);
                    ppos[playerid][0] = X;
                    ppos[playerid][1] = Y;
                    ppos[playerid][2] = Z;
                    SpeedX = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(X,SavedPos[ playerid ][ sX ])),2),floatpower(floatabs(floatsub(Y,SavedPos[ playerid ][ sY ])),2)),floatpower(floatabs(floatsub(Z,SavedPos[ playerid ][ sZ ])),2)));
                    Angle1 = ReturnPlayerAngle(playerid);
                    Angle2 = GetPlayerTheoreticAngle(playerid);
                    BySpeed = floatmul(SpeedX, 12);
                    if(IsPlayerInAnyVehicle(playerid) && GetVType(GetPlayerVehicleID(playerid)) && floatabs(floatsub(Angle1, Angle2)) > DRIFT_MINKAT && floatabs(floatsub(Angle1, Angle2)) < DRIFT_MAXKAT && BySpeed > DRIFT_SPEED){
                            if(PlayerDriftCancellation[playerid] > 0)KillTimer(PlayerDriftCancellation[playerid]);
                            PlayerDriftCancellation[playerid] = 0;
                            DriftPointsNow[playerid] += floatval( floatabs(floatsub(Angle1, Angle2)) * 3 * (BySpeed*0.1) )/10;
                            PlayerDriftCancellation[playerid] = SetTimerEx("DriftExit", 3000, 0, "d", playerid);
                    }

                    if(DriftPointsNow[playerid] > 70 && DriftPointsNow[playerid]<10000){
                        ///////////// by Abhinav ////////////////////
                        if(DriftPointsNow[playerid]<500){
                            DriftBonus[playerid]=1;
                                            }
                                            if(DriftPointsNow[playerid]>=500 && DriftPointsNow[playerid]<1000){
                            DriftBonus[playerid]=2;
                                            }
                        if(DriftPointsNow[playerid]>=1000 && DriftPointsNow[playerid]<1700){
                            DriftBonus[playerid]=3;
                                            }
                                            if(DriftPointsNow[playerid]>=1700 && DriftPointsNow[playerid]<2500){
                            DriftBonus[playerid]=4;
                                            }
                                            if(DriftPointsNow[playerid]>=2500){
                            DriftBonus[playerid]=5;
                                            }

                                            TextDrawShowForPlayer(playerid,TDLabels[0]);
                                            TextDrawShowForPlayer(playerid,TDLabels[1]);
                                            TextDrawShowForPlayer(playerid,TDLabels[2]);

                            TextDrawShowForPlayer(playerid,TDValueDrift[playerid]);
                            TextDrawShowForPlayer(playerid,TDValueBonus[playerid]);
                            TextDrawShowForPlayer(playerid,TDValueCash[playerid]);

                            new DPs[ 15 ],DBn[ 10 ],Cash[ 14 ],csh;

                            valstr(DPs,DriftPointsNow[playerid],false);
                            format(DBn,sizeof(DBn),"X%i",DriftBonus[playerid]);
                            csh=DriftPointsNow[playerid]*DriftBonus[playerid];
                            format(Cash,sizeof(Cash),"$%i",csh);

                        TextDrawSetString(TDValueDrift[playerid],DPs);
                        TextDrawSetString(TDValueBonus[playerid],DBn);
                        TextDrawSetString(TDValueCash[playerid],Cash);
                                            ////////////////////////////////////////
                    }
                    SavedPos[ playerid ][ sX ] = X;
                    SavedPos[ playerid ][ sY ] = Y;
                    SavedPos[ playerid ][ sZ ] = Z;
            }


    floatval(Float:val){ // By Luby
            new str[ 20 ];
            format(str, 20, "%.0f", val);
            return todec(str);
    }

    todec(str[]){ // By Luby
            return strval(str);
    }

    LoadTextDraws(){ // by Abhinav
            TDLabels[0]=TextDrawCreate(Label_X,TD_Y,"Drift Points");
            TextDrawColor(TDLabels[0],COLOR_Label);
            TextDrawSetShadow(TDLabels[0],0);
            TextDrawSetOutline(TDLabels[0],1);
            TextDrawLetterSize(TDLabels[0],0.5,2);
            TextDrawBackgroundColor(TDLabels[0],COLOR_LabelOut);
            TextDrawFont(TDLabels[0],1);

            TDLabels[1]=TextDrawCreate(Label_X,TD_Y+50,"Drift Bonus");
            TextDrawColor(TDLabels[1],COLOR_Label);
            TextDrawSetShadow(TDLabels[1],0);
            TextDrawSetOutline(TDLabels[1],1);
            TextDrawLetterSize(TDLabels[1],0.5,2);
            TextDrawBackgroundColor(TDLabels[1],COLOR_LabelOut);
            TextDrawFont(TDLabels[1],1);

            TDLabels[2]=TextDrawCreate(Label_X,TD_Y+100,"Drift Cash");
            TextDrawColor(TDLabels[2],COLOR_Label);
            TextDrawSetShadow(TDLabels[2],0);
            TextDrawSetOutline(TDLabels[2],1);
            TextDrawLetterSize(TDLabels[2],0.5,2);
            TextDrawBackgroundColor(TDLabels[2],COLOR_LabelOut);
            TextDrawFont(TDLabels[2],1);

            new i;
            for(i=0;i<=MAX_PLAYERS;i++){
                    TDValueDrift[i]=TextDrawCreate(Value_X,TD_Y+20,"0");
                    TextDrawColor(TDValueDrift[i],COLOR_Value);
                    TextDrawSetShadow(TDValueDrift[i],0);
                    TextDrawSetOutline(TDValueDrift[i],1);
                    TextDrawLetterSize(TDValueDrift[i],0.5,2);
                    TextDrawBackgroundColor(TDValueDrift[i],COLOR_ValueOut);
                    TextDrawFont(TDValueDrift[i],3);

                    TDValueBonus[i]=TextDrawCreate(Value_X,TD_Y+70,"X1");
                    TextDrawColor(TDValueBonus[i],COLOR_Value);
                    TextDrawSetShadow(TDValueBonus[i],0);
                    TextDrawSetOutline(TDValueBonus[i],1);
                    TextDrawLetterSize(TDValueBonus[i],0.5,2);
                    TextDrawBackgroundColor(TDValueBonus[i],COLOR_ValueOut);
                    TextDrawFont(TDValueBonus[i],3);

                    TDValueCash[i]=TextDrawCreate(Value_X,TD_Y+120,"$0");
                    TextDrawColor(TDValueCash[i],COLOR_Value);
                    TextDrawSetShadow(TDValueCash[i],0);
                    TextDrawSetOutline(TDValueCash[i],1);
                    TextDrawLetterSize(TDValueCash[i],0.5,2);
                    TextDrawBackgroundColor(TDValueCash[i],COLOR_ValueOut);
                    TextDrawFont(TDValueCash[i],3);
            }

            return 1;
    }

    public OnPlayerStateChange( playerid, newstate, oldstate )
	{
	    if( newstate == PLAYER_STATE_DRIVER && DriftMode[playerid]==false )
	    {
     		if( GetVType( GetPlayerVehicleID( playerid ) ) )
			{
       			DriftMode[ playerid ] = true;
          		DriftTimer[ playerid ] = SetTimerEx("Drift", 200, true, "i", playerid);
            }
		}
   		else
   		{
  			if( DriftMode[ playerid ]==true)
  			{
     			KillTimer( DriftTimer[ playerid ] );
        		DriftMode[ playerid ] = false;
			}
		}
  		return 1;
    }

    GetVType(vid){ // By Abhinav

            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;
    }

//


/*for(i=0;i<=MAX_PLAYERS;i++){
                cs=GetPlayerState(i);
                if(DriftMode[i] && cs==PLAYER_STATE_DRIVER && DriftPointsNow[i]>70){
                    new Float:h;
                    GetVehicleHealth(GetPlayerVehicleID(i),h);
                    if(h<HealthInit[i]){
                            KillTimer(DriftTimer[i]);
                            DriftExit(i);
                            GameTextForPlayer(i,"~n~~n~~n~~n~~n~~n~~n~~r~Boom",800,5);
                            DriftMode[i]=false;
                            }
                    }*/
I have little change a real drift point counter, but now it don't work.
Reply
#2

Any help?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)