SA-MP Forums Archive
[Ajuda] SetPlayerScore - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] SetPlayerScore (/showthread.php?tid=460021)



[RESOLVIDO]SetPlayerScore - Brunooh - 25.08.2013

Estou criando esse tуpico para perdi ajuda para alguйm afim de ajudar
Entгo..
Eu estou tentando usar essa FS >> CLICK AQUI
Eu quero colocar ela pra dar score, jб troquei GivePlayerMoney Por GetPlayerScore & GivePlayerScore..
Mais ainda nгo consegui colocar ela pra dar level, sу consegui colocar pra setar level, nгo quero quк set level, quero quк dк, pra acrescenta no score do player..
Se alguem poder ajudar agradeзo..
OBS: Jб troquei GivePlayerMoney Por GivePlayerScore & SetPlayerScore, SetPlayer Seta, eu quero que dк..


Re: SetPlayerScore - [THs]ShadoW - 25.08.2013

pawn Код:
SetPlayerScore(playerid, GetPlayerScore(playerid) + 5) // Troque o nъmero "5" pelo Level que deseja adicionar.



Re: SetPlayerScore - Brunooh - 25.08.2013

Como eu coloco pra adicionar level tipo random ?
Tanto quк drifta ganha o level..
Driftei tanto tal, ganho esse level tal..
Tendeu ?


Re: SetPlayerScore - [THs]ShadoW - 25.08.2013

Nunca mexi com GM de Drift, mas й sу ver onde detecta que ele estб "driftando"... Lamento, mas mais do que te ajudei nгo posso fazer, por falta de conhecimentos em Cуdigos de Drift, e lamento, mas nгo quero estudar, nгo pretendo me dedicar a isso ;/


Re: SetPlayerScore - Brunooh - 25.08.2013

Mais isso й uma FS..
Clika no link no tуpico a cima ae..
Da uma olhada na pastebin..


Re: SetPlayerScore - Diogo123 - 25.08.2013

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
new score;

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

public OnFilterScriptInit()
{
    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(playerid)
{ // 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;
                SetPlayerScore(playerid, GetPlayerScore(score) + 20);
            }
            if (DriftPointsNow[g] >= 500 && DriftPointsNow[g] < 1000)
            {
                DriftBonus[g] = 3;
                SetPlayerScore(playerid, GetPlayerScore(score) + 30);
            }
            if (DriftPointsNow[g] >= 1000 && DriftPointsNow[g] < 1500)
            {
                DriftBonus[g] = 4;
                SetPlayerScore(playerid, GetPlayerScore(score) + 40);
            }
            if (DriftPointsNow[g] >= 1500)
            {
                DriftBonus[g] = 5;
                SetPlayerScore(playerid, GetPlayerScore(score) + 50);
            }

            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;
}
@Edit
Tenta ai.


Crйditos : Ambrуsio
Tуpico Original : https://sampforum.blast.hk/showthread.php?tid=138798


Re: SetPlayerScore - Brunooh - 25.08.2013

Tб dando score nгo diogo..
Sу tб dando grana (GivePlayerMoney)..

#EDIT
Warning..
Quote:

SistemaDrift.pwn(156) : warning 217: loose indentation

if(DriftPointsNow[g]>=200 && DriftPointsNow[g]<500){

#EDIT І
Pronto, resolvi, mais vlw ae quebro um galho fornecendo o codigo..
Vlw, +REP


Re: SetPlayerScore - [THs]ShadoW - 25.08.2013

No cуdigo do cara ali em cima й sу trocar:

pawn Код:
SetPlayerScore(playerid, GetPlayerScore(score) + 20);
por

pawn Код:
SetPlayerScore(playerid, GetPlayerScore(playerid) + 20);
@EDIT

Agora que eu vi que ele resolveu .-.


Re: SetPlayerScore - Brunooh - 26.08.2013

Quote:
Originally Posted by [THs]ShadoW
Посмотреть сообщение
No cуdigo do cara ali em cima й sу trocar:

pawn Код:
SetPlayerScore(playerid, GetPlayerScore(score) + 20);
por

pawn Код:
SetPlayerScore(playerid, GetPlayerScore(playerid) + 20);
@EDIT

Agora que eu vi que ele resolveu .-.
+REP, Pelomenos se esforзo pra ajudar