[RESOLVIDO POR Ambrosio] Pontos Do Drift No Score
#1

[b]No meu GM O Score dos player so muda quando mata algem , mas meu GM eh De drift , olha ai a linha do score (eu axo)

pawn Код:
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);

Eu queria mudar para quando o player faz drift , a pontuaзao do drift dele va para o Score , eu tenho um FS de contador de drift , se algem poder ajudar , obrigado
Reply
#2

coloca no FS pra seta o score do player quando ele fazer o drift...
quando o cara fais o drift la q conta os pontos coloca...
pawn Код:
SetPlayerScore(playerid,pontosdrift);
Reply
#3

Deu esse error man

pawn Код:
error 017: undefined symbol "playerid"

na linha q vc mando

Reply
#4

vou postar meu FS para fikar mais facin para voces me ajudar ! POR FAVOOOR

pawn Код:
#include <a_samp> // by I dont know .. :D lol

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

//////////// ///////
#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]; //
new TimerA,TimerB,TimerC; //

new DriftPointsNow[MAX_PLAYERS]; // by
new PlayerDriftCancellation[MAX_PLAYERS]; // by
new Float:ppos[MAX_PLAYERS][3]; // by
enum Float:Pos{ Float:sX,Float:sY,Float:sZ }; // by
new Float:SavedPos[MAX_PLAYERS][Pos]; // by

new bool:DriftMode[MAX_PLAYERS]=false; // Added b
new DriftBonus[MAX_PLAYERS]=1; // Added by
new Float:HealthInit[MAX_PLAYERS]=1000.0; // Added b
new bool:AutoFixBool[MAX_PLAYERS]=true; // Added by

new Text:TDLabels[3]; // Added by
new Text:TDValueDrift[MAX_PLAYERS]; // Added by
new Text:TDValueBonus[MAX_PLAYERS]; // Added by
new Text:TDValueCash[MAX_PLAYERS]; // Added by

forward Drift(); // by
forward AngleUpdate(); // by
forward DriftExit(playerid); // by
forward CheckPlayerState(); // Added
forward AutoFix(); // Added by

public OnFilterScriptInit(){
    SetPlayerScore(playerid,pontosdrift);
    TimerA=SetTimer("AngleUpdate", 200, true); // by
    TimerB=SetTimer("AutoFix", 500, true); //by A
    TimerC=SetTimer("CheckPlayerState", 100, true); //b
    LoadTextDraws();
    return 1;
}

public OnFilterScriptExit(){
    KillTimer(TimerA);
    KillTimer(TimerB);
    KillTimer(TimerC);
    return 1;
}

Float:GetPlayerTheoreticAngle(i) // By
{
    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
    PlayerDriftCancellation[playerid] = 0;
   
         ////////////////// by ///////////////////
    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
    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 A////////////////////
          if(DriftPointsNow[g]<200){
            DriftBonus[g]=1;
                    }
                    if(DriftPointsNow[g]>=200 && DriftPointsNow[g]<500){
            DriftBonus[g]=2;
                    }
          if(DriftPointsNow[g]>=500 && DriftPointsNow[g]<1000){
            DriftBonus[g]=3;
                    }
                    if(DriftPointsNow[g]>=1000 && DriftPointsNow[g]<1500){
            DriftBonus[g]=4;
                    }
                    if(DriftPointsNow[g]>=1500){
            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
    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
    new str[256];
    format(str, 256, "%.0f", val);
    return todec(str);
}

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

LoadTextDraws(){ // by
    TDLabels[0]=TextDrawCreate(Label_X,TD_Y,"Pontos No Drift");
    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,"Bonus Do Drift");
    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,"Grana Do Drift");
    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 CheckPlayerState(){ //by
    new i,cs;

    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~~r~Bateu PerdeO",800,5);
            DriftMode[i]=false;
            }
        }
      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;
}

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

GetVType(vid){ // By
   
    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;
}
Reply
#5

nesse codigo ai k vc passou, n ta la essa linha. Eu colei no pawno, e usei o ctrl+f, e n achei nd
Reply
#6

Olha agora colokar no pwn e ve o error, se tiver como arrumar , realmente tinha colokado errado mas ja arrumei olha novamente
Reply
#7

desculpa, mas n consegui corrigir
Reply
#8

_.Paniico._ estou tentando arrumar aki, se conseguir posto aki mesmo nesse post.
Reply
#9

o erro eu consegui arrumar, n consegui isso do drift...
Reply
#10

Entгo, eu consegui fazer o seguinte, setar score a cada bonus, ex:

x2= 20 score's
x3= 30 score's
x4= 40 score's
x5= 50 score's

mas ainda hб um problema, nгo estou conseguindo fazer os scores acumularem, ou seja, se o player faz x2 e depois faz x5, os scores nгo somam, fica o score do ultimo bonus (x5), ai fica o resto pra galera tentar arrumar

Tб ai:
http://pastebin.com/KxhdEyAk

boa sorte
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)