Portal SAMP
[Ajuda] OnPlayerClickPlayerTextDraw - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] OnPlayerClickPlayerTextDraw (/showthread.php?tid=4382)



OnPlayerClickPlayerTextDraw - L10motos - 05/01/2024

Alguém sabe me informar o que estou fazendo de errado? Não funciona


Código:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
    for(new i = 3; i < 19; i++)
    {
        if(playertextid == Wheels[playerid][i])
        {
            new wheel;
            if(Wheels[playerid][3]) wheel = 1073;
            if(Wheels[playerid][4]) wheel = 1074;
            if(Wheels[playerid][5]) wheel = 1075;
            if(Wheels[playerid][6]) wheel = 1076;
            if(Wheels[playerid][7]) wheel = 1077;
            if(Wheels[playerid][8]) wheel = 1078;
            if(Wheels[playerid][9]) wheel = 1079;
            if(Wheels[playerid][10]) wheel = 1080;
            if(Wheels[playerid][11]) wheel = 1081;
            if(Wheels[playerid][12]) wheel = 1082;
            if(Wheels[playerid][13]) wheel = 1083;
            if(Wheels[playerid][14]) wheel = 1084;
            if(Wheels[playerid][15]) wheel = 1085;
            if(Wheels[playerid][16]) wheel = 1025;
            if(Wheels[playerid][17]) wheel = 1096;
            if(Wheels[playerid][18]) wheel = 1097;
            if(Wheels[playerid][19]) wheel = 1098;

            new s = get_player_sbiz_action2(playerid);
            if(s < 0 || s >= sizeof(SBizzInfo) || strcmp("oficina de tunagem", get_sbizz_typename(s), true))
                return SendClientMessage(playerid, COLOR_GREY, "Você não está em uma oficina de tunagem.");

            new Float:X, Float:Y, Float:Z;
            GetPlayerPos(playerid, X, Y, Z);
            PlaySoundForPlayersInRange(1133, 10.0, X, Y, Z);

               new price = 5000;
            if(GetPlayerMoneyEx(playerid) < price)
                return SendClientMessage(playerid, COLOR_GREY, "Você não tem dinheiro suficiente com você.");

            new car = GetPlayerVehicleID(playerid);
            if(car_player_owned[car] != -1)
            {
                new slot = car_player_owned[car];

                if(strcmp(car_player_owner[car], Name(playerid), false))
                    return 1;

                if(player_car_vehicle[playerid][slot] != car)
                    return 1;

                GivePlayerMoneyEx(playerid, -price);
                PayCompany(s, price, 15);

                player_car_wheels[playerid][slot] = wheel;
                AddVehicleComponent(car, player_car_wheels[playerid][slot]);
            }
            else if(CarTeam(car) >= 1 && CarTeam(car) < MAX_TEAMS)
            {
                new slot = -1;
                new f = CarTeam(car);
                for(new c = 0; c < MAX_ORG_CARS; ++c)
                {
                    if(car == ORG_VEHICLE[f][c])
                        slot = c;
                }
                 if(slot == -1)
                     return 1;

                GivePlayerMoneyEx(playerid, -price);
                PayCompany(s, price, 15);

                ORG_VEHICLE_WHEELS[f][slot] = wheel;
                AddVehicleComponent(car, ORG_VEHICLE_WHEELS[f][slot]);
            }
        }
    }



RE: OnPlayerClickPlayerTextDraw - Calasans - 05/01/2024

Antes do código de mostrar os textdraws, você adicionou o SelectTextDraw(playerid, cor); ?

Verifique também se o PlayerTextDrawSetSelectable(playerid, variável, true); do seu textdraw é true, se for true, não há nada de errado, mas se for false, troque por true.


RE: OnPlayerClickPlayerTextDraw - L10motos - 06/01/2024

Não, está retornando no ultimo modelo de roda:

if(Wheels[playerid][19]) wheel = 1098;

preciso que retorne no qual o jogador clicou


RE: OnPlayerClickPlayerTextDraw - Calasans - 06/01/2024

(06/01/2024 00:18)L10motos Escreveu: Não, está retornando no ultimo modelo de roda:

if(Wheels[playerid][19]) wheel = 1098;

preciso que retorne no qual o jogador clicou

Veja se este da certo:
Código PHP:
public OnPlayerClickPlayerTextDraw(playeridPlayerText:playertextid)
{
    for(new 319i++)
    {
        if(playertextid == Wheels[playerid][i])
        {
            new wheel;
            if(Wheels[playerid][3])
                wheel 1073;
            else if(Wheels[playerid][4])
                wheel 1074;
            else if(Wheels[playerid][5])
                wheel 1075;
            else if(Wheels[playerid][6])
                wheel 1076;
            else if(Wheels[playerid][7])
                wheel 1077;
            else if(Wheels[playerid][8])
                wheel 1078;
            else if(Wheels[playerid][9])
                wheel 1079;
            else if(Wheels[playerid][10])
                wheel 1080;
            else if(Wheels[playerid][11])
                wheel 1081;
            else if(Wheels[playerid][12])
                wheel 1082;
            else if(Wheels[playerid][13])
                wheel 1083;
            else if(Wheels[playerid][14])
                wheel 1084;
            else if(Wheels[playerid][15])
                wheel 1085;
            else if(Wheels[playerid][16])
                wheel 1025;
            else if(Wheels[playerid][17])
                wheel 1096;
            else if(Wheels[playerid][18])
                wheel 1097;
            else if(Wheels[playerid][19])
                wheel 1098;

            new get_player_sbiz_action2(playerid);
            if(|| >= sizeof(SBizzInfo) || strcmp("oficina de tunagem"get_sbizz_typename(s), true))
                return SendClientMessage(playeridCOLOR_GREY"Você não está em uma oficina de tunagem.");

            new Float:XFloat:YFloat:Z;
            GetPlayerPos(playeridXYZ);
            PlaySoundForPlayersInRange(113310.0XYZ);

            new price 5000;
            if(GetPlayerMoneyEx(playerid) < price)
                return SendClientMessage(playeridCOLOR_GREY"Você não tem dinheiro suficiente com você.");

            new car GetPlayerVehicleID(playerid);
            if(car_player_owned[car] != -1)
            {
                new slot car_player_owned[car];

                if(strcmp(car_player_owner[car], Name(playerid), false))
                    return 1;

                if(player_car_vehicle[playerid][slot] != car)
                    return 1;

                GivePlayerMoneyEx(playerid, -price);
                PayCompany(sprice15);

                player_car_wheels[playerid][slot] = wheel;
                AddVehicleComponent(carplayer_car_wheels[playerid][slot]);
            }
            else if(CarTeam(car) >= && CarTeam(car) < MAX_TEAMS)
            {
                new slot = -1;
                new CarTeam(car);
                for(new 0MAX_ORG_CARS; ++c)
                {
                    if(car == ORG_VEHICLE[f][c])
                        slot c;
                }
                 if(slot == -1)
                     return 1;

                GivePlayerMoneyEx(playerid, -price);
                PayCompany(sprice15);

                ORG_VEHICLE_WHEELS[f][slot] = wheel;
                AddVehicleComponent(carORG_VEHICLE_WHEELS[f][slot]);
            }
        }
    



RE: OnPlayerClickPlayerTextDraw - Vel - 06/01/2024

Código PHP:
    for(new 3<= 19i++)
    {
        if(
playertextid == Wheels[playerid][i])
        {
            static const 
wheels[] = { 10731074107510761077107810791080108110821083108410851025109610971098 };

            new 
wheel wheels[3];

            
// ... 



RE: OnPlayerClickPlayerTextDraw - L10motos - 06/01/2024

Agora eu clico na roda que eu quero e o sistema coloca a primeira roda sendo que foi outra roda, tah colocando só a primeira roda, se clicar na segunda por exemplo, retorna na primeira roda...

(06/01/2024 00:43)Vel Escreveu:
Código PHP:
    for(new 3<= 19i++)
    {
        if(
playertextid == Wheels[playerid][i])
        {
            static const 
wheels[] = { 10731074107510761077107810791080108110821083108410851025109610971098 };

            new 
wheel wheels[3];

            
// ... 

Vou testar agora...

@edit

Do Vel funcionou, reputado!