Jump to content
  • 0

Drift Fs


Mister

Question

Problemă întâlnită (descriere): Am un sistem de drift si are niste "preturi" foarte mari adica primesc bani prea multi pentru cat fac. De unde pot modifica pretul/
Ero(area / rile) / warning-(ul / urile): nu este nevoie
Liniile de cod / sursa / script-ul:

 

 

aici este cand ai terminat drifnul iar cand  il termini iti da si bani

 

 

public DriftExit(playerid){ // By Luby
        PlayerDriftCancellation[playerid] = 0;

                 ////////////////// by Abhinav ///////////////////
        new Float:h;
        GetVehicleHealth(GetPlayerVehicleID(playerid),h);
        if(DriftPointsNow[playerid]>70 && DriftPointsNow[playerid]<10000 && h==HealthInit[playerid])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;
            AutoFixBool[playerid]=true;
            SetVehicleHealth(GetPlayerVehicleID(playerid),HealthInit[playerid]);
        ////////////////////////////////////////////////////

            DriftPointsNow[playerid] = 0;

}

si mai este cand este in drift poate va ajuta

 

public Drift(){ // By Luby
        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)) * 3 * (BySpeed*0.1) )/10;
                        PlayerDriftCancellation[g] = SetTimerEx("DriftExit", 3000, 0, "d", g);
                }

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

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

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

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



Imagini / Video (optional): nu este nevoie
Aţi încercat să rezolvaţi singur?: am modificat peste tot pe unde scria giveplayermoney si nu a mers 

 

 

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

////////////////////////////////////////////////////////////
/////////////// 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
#pragma tabsize 0
#define Label_X 500
#define Value_X 500
#define TD_Y 100
/////////////////////////////////////

new DriftTimer[MAX_PLAYERS]; // Added by Abhinav
new TimerA,TimerB,TimerC; // 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 Float:HealthInit[MAX_PLAYERS]=1000.0; // Added by Abhinav
new bool:AutoFixBool[MAX_PLAYERS]=true; // 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(); // by Luby
forward AngleUpdate(); // by Luby
forward DriftExit(playerid); // by Luby
forward CheckPlayerState(); // Added by Abhinav
forward AutoFix(); // Added by Abhinav

public OnFilterScriptInit(){
        TimerA=SetTimer("AngleUpdate", 200, true); // by Luby
        TimerB=SetTimer("AutoFix", 500, true); //by Abhinav
        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[0])),2)+floatpower(floatabs(floatsub(y,ppos[1])),2));

                if(IsPlayerInAnyVehicle(i)){GetVehicleZAngle(GetPlayerVehicleID(i), angle2);}else{GetPlayerFacingAngle(i, angle2);}

                if(x>ppos[0]){tmp3=x-ppos[0];}else{tmp3=ppos[0]-x;}
                if(y>ppos[1]){tmp4=y-ppos[1];}else{tmp4=ppos[1]-y;}

                if(ppos[1]>y && ppos[0]>x){
                        sin = asin(tmp3/dis);
                    MindAngle = floatsub(floatsub(floatadd(sin, 90), floatmul(sin, 2)), -90.0);
                }

                if(ppos[1]<y && ppos[0]>x){
                    sin = asin(tmp3/dis);
                    MindAngle = floatsub(floatadd(sin, 180), 180.0);
                }

                if(ppos[1]<y && ppos[0]<x){
                    sin = acos(tmp4/dis);
                    MindAngle = floatsub(floatadd(sin, 360), floatmul(sin, 2));
                }

                if(ppos[1]>y && ppos[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 ///////////////////
        new Float:h;
        GetVehicleHealth(GetPlayerVehicleID(playerid),h);
        if(DriftPointsNow[playerid]>70 && DriftPointsNow[playerid]<10000 && h==HealthInit[playerid])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;
            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 Luby
        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)) * 3 * (BySpeed*0.1) )/10;
                        PlayerDriftCancellation[g] = SetTimerEx("DriftExit", 3000, 0, "d", g);
                }

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

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

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

                        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 Luby
        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
        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=TextDrawCreate(Value_X,TD_Y+20,"0");
                TextDrawColor(TDValueDrift,COLOR_Value);
                TextDrawSetShadow(TDValueDrift,0);
                TextDrawSetOutline(TDValueDrift,1);
                TextDrawLetterSize(TDValueDrift,0.5,2);
                TextDrawBackgroundColor(TDValueDrift,COLOR_ValueOut);
                TextDrawFont(TDValueDrift,3);

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

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

        return 1;
}

public CheckPlayerState(){ //by Abhinav
        new i,cs;

        for(i=0;i<=MAX_PLAYERS;i++){
            cs=GetPlayerState(i);
            if(DriftMode && cs==PLAYER_STATE_DRIVER && DriftPointsNow>70){
                new Float:h;
                GetVehicleHealth(GetPlayerVehicleID(i),h);
                if(h<HealthInit){
                        KillTimer(DriftTimer);
                        DriftExit(i);
                  //      TDValueCash
                        GameTextForPlayer(i,"~n~~n~~n~~n~~n~~n~~n~~r~Boom",800,5);
                        DriftMode=false;
                        }
                }
            if(cs==PLAYER_STATE_DRIVER && DriftMode==false){
                if(GetVType(GetPlayerVehicleID(i))){
                        DriftMode=true;
                        GetVehicleHealth(GetPlayerVehicleID(i),HealthInit);
                        AutoFixBool=false;
                        DriftTimer=SetTimerEx("Drift", 200, true, "i", i);
                        }
                }
                else if(cs!=PLAYER_STATE_DRIVER && DriftMode==true){
                    KillTimer(DriftTimer);
                    DriftMode=false;
                    AutoFixBool=true;
                }
                else{}
        }
        return 1;
}

public AutoFix(){ // By abhinav
        new i;
        for(i=0;i<=MAX_PLAYERS;i++){
                if(AutoFixBool && IsPlayerInAnyVehicle(i)){
                        SetVehicleHealth(GetPlayerVehicleID(i),HealthInit);
                }
        }
}

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==modelid) return 1;
        }
        for(i=0;i<25;i++){
                    if(Industrial==modelid) return 1;
        }
        for(i=0;i<7;i++){
                    if(LowRider==modelid) return 1;
        }
        for(i=0;i<12;i++){
                    if(OffRoad==modelid) return 1;
        }
        for(i=0;i<19;i++){
                    if(Service==modelid) return 1;
        }
        for(i=0;i<35;i++){
                    if(Saloon==modelid) return 1;
        }
        for(i=0;i<20;i++){
                    if(Sports==modelid) return 1;
        }
        for(i=0;i<5;i++){
                    if(Wagons==modelid) return 1;
        }
        return 0;

}

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.