Não estou conseguindo finalizar este código - H4WK - 21/09/2021
Estou criando uma concessionária, e antes tinha feito de uma forma muito extensa, e acabou que a dialog parou de reconhecer outros modelos de veículos
Então, o que eu não consegui fazer é: através da linha abaixo, eu defino o modelo do veículo, seu valor e o seu tipo (0 - bicicletas, 1 - carros, etc...).
Código: #define MODEL_SELECTION_BUYVEHICLE (1)
enum dealerData {
vehModel,
vehPrice,
vehType[2]
};
new DealerData[][dealerData] =
{
// TYPES: 0 - BICICLETA / 1 - DUAS PORTAS / 2 - QUATRO PORTAS
{509, 75, 0},
{481, 80, 0},
{510, 110, 0},
{602, 12000, 1},
{496, 5000, 1},
{401, 3250, 1},
{518, 4500, 1},
{527, 4300, 1},
{589, 3200, 1},
{419, 6200, 1},
{587, 9650, 1},
{533, 8700, 1},
{526, 7500, 1},
{474, 3200, 1},
{545, 2200, 1},
{517, 6700, 1},
{410, 3300, 1},
{600, 6500, 1},
{436, 4500, 1},
{439, 3100, 1},
{549, 2100, 1},
{491, 4300, 1}
};
E quando o Model selection lê isso, ele não consegue ler o modelo de todos os veículos do tipo 0, e ele acaba bugando
Código: ShowModelSelectionMenu(playerid, "Bicicletas", MODEL_SELECTION_BUYVEHICLE, DealerData[vehModel][vehType][0], sizeof(DealerData[vehModel][vehType][0]), -16.0, 0.0, -55.0);
Nesse caso, ele não consegue ler o modelid de TODOS os veículos do tipo 0, e gostaria que lesse, pois senão eu teria que trocar o "DealerData...." por {modelid, modelid, modelid} e etc...
Código: public OnModelSelectionResponse(playerid, extraid, index, modelid, response)
{
if ((response) && (extraid == MODEL_SELECTION_BUYVEHICLE))
{
PlayerData[playerid][pDealerCar] = index;
Dialog_Show(playerid, BuyVehicle, DIALOG_STYLE_MSGBOX, ReturnVehicleModelName(modelid), "Você deseja comprar um(a) %s por %s?", "Sim", "Não", ReturnVehicleModelName(modelid), FormatNumber(DealerData[index][vehPrice]));
}
return 1;
}
RE: Não estou conseguindo finalizar este código - SrBlue - 21/09/2021
referente ao sizeof, mude para
sizeof(DealerData[]), sobre o valor 0
tenta fazer um debug, com printf(dealer..[vehType][0])!
RE: Não estou conseguindo finalizar este código - H4WK - 21/09/2021
(21/09/2021 15:01)SrBlue Escreveu: referente ao sizeof, mude para
sizeof(DealerData[]), sobre o valor 0
tenta fazer um debug, com printf(dealer..[vehType][0])!
Não deu certo o debug, retorna uma coisa nada a ver
O que eu queria é que, cada valor dentro das chaves, fosse lido como as variáveis
Por Exemplo:
{0, 411, 10000}
Tipo do veículo = 0, logo ele é um carro, então quando eu selecionar a dialog de Carros, vai listar apenas os carros do tipo 0
ModelID = o modelid do veículo
Preço = o preço daquele modelo de veículo (o carro modelid 411 (infernus) vale $10000)
RE: Não estou conseguindo finalizar este código - SrBlue - 21/09/2021
(21/09/2021 15:22)H4WK Escreveu: (21/09/2021 15:01)SrBlue Escreveu: referente ao sizeof, mude para
sizeof(DealerData[]), sobre o valor 0
tenta fazer um debug, com printf(dealer..[vehType][0])!
Não deu certo o debug, retorna uma coisa nada a ver
O que eu queria é que, cada valor dentro das chaves, fosse lido como as variáveis
Por Exemplo:
{0, 411, 10000}
Tipo do veículo = 0, logo ele é um carro, então quando eu selecionar a dialog de Carros, vai listar apenas os carros do tipo 0
ModelID = o modelid do veículo
Preço = o preço daquele modelo de veículo (o carro modelid 411 (infernus) vale $10000)
manda print do debug...
enum dealerData {
vehModel,
vehPrice,
vehType[2]
};
new DealerData[][dealerData] = {
{509, 75, 0}, // 0
{481, 80, 0}, // 1
{510, 110, 0}, // 2
};
para ler como variaveis
a primeira chave [] recebe o numero do elemente da lista, como exemplo 0,1,2,3
Sendo assim os demais valores são recebidos pela enum,
ficando as vars assim
DealerData[0][vehModel] = 509
DealerData[0][vehPrice] = 75
... etc
RE: Não estou conseguindo finalizar este código - H4WK - 21/09/2021
(21/09/2021 15:30)SrBlue Escreveu:
enum dealerData {
vehModel,
vehPrice,
vehType[2]
};
new DealerData[][dealerData] = {
{509, 75, 0}, // 0
{481, 80, 0}, // 1
{510, 110, 0}, // 2
};
para ler como variaveis
a primeira chave [] recebe o numero do elemente da lista, como exemplo 0,1,2,3
Sendo assim os demais valores são recebidos pela enum,
ficando as vars assim
DealerData[0][vehModel] = 509
DealerData[0][vehPrice] = 75
... etc Fiz da seguinte maneira, e a princípio quase deu certo, mas o sistema continua não lendo o tipo de veículo, (0 ou 1)
Código: enum dealerData {
vehModel,
vehPrice,
vehType[2],
};
new DealerData[][dealerData] =
{
// TYPES: 0 - BICICLETA / 1 - DUAS PORTAS / 2 - QUATRO PORTAS
{{509}, {75}, {0}},
{{481}, {80}, {0}},
{{510}, {110}, {0}},
{{602}, {12000}, {1}}
};
As bicicletas, que são tipo 0, reconheceu as 3 pois no código eu limitei às 3.
portanto, no model selection aparece isso
https://prnt.sc/1t4rbjm
Código: Dialog:VehicleType(playerid, response, listitem, inputtext[])
{
if(response)
{
if(listitem == 0)
{
Dialog_Show(playerid, SelectCars, DIALOG_STYLE_LIST, "Concessionária - Carros", "Populares 2 Portas\nPopulares 4 Portas\nCamionetes\nFurgões\nLowrider\nUtilitário Esportivo", "Selecionar", "Cancelar");
}
else if(listitem == 1)
{
}
else if(listitem == 2)
{
static
bikes[3];
for(new i = 0; i < 3; i++)
{
bikes[i] = DealerData[0][vehModel];
}
ShowModelSelectionMenu(playerid, "Bicicletas", MODEL_SELECTION_BUYVEHICLE, bikes, 3, -16.0, 0.0, -55.0);
}
}
return 1;
}
Só que, ao clicar no dialog de carros de 2 portas, no caso, do tipo {1}, ele mostra isso
https://prnt.sc/1t4rlzd
Código: Dialog:SelectCars(playerid, response, listitem, inputtext[])
{
if(response)
{
if(listitem == 0)
{
static
cars[19];
for(new i = 0; i < 19; i++)
{
cars[i] = DealerData[1][vehModel];
}
ShowModelSelectionMenu(playerid, "Populares de 2 Portas", MODEL_SELECTION_BUYVEHICLE, cars, 19, -16.0, 0.0, -55.0);
}
else if(listitem == 1)
{
}
else if(listitem == 2)
{
}
else if(listitem == 3)
{
}
else if(listitem == 4)
{
}
else if(listitem == 5)
{
}
}
return 1;
}
Veja que ao declarar, eu declaro como DealerData[VEHTYPE (sendo 0 para bikes, 1 para carros)][VEHMODEL (ModelID do veiculo)];
E o debug retorna o nome do servidor e um monte de caractere nada a ver, não retornou as arrays
RE: Não estou conseguindo finalizar este código - SrBlue - 21/09/2021
(21/09/2021 15:55)H4WK Escreveu: (21/09/2021 15:30)SrBlue Escreveu:
enum dealerData {
vehModel,
vehPrice,
vehType[2]
};
new DealerData[][dealerData] = {
{509, 75, 0}, // 0
{481, 80, 0}, // 1
{510, 110, 0}, // 2
};
para ler como variaveis
a primeira chave [] recebe o numero do elemente da lista, como exemplo 0,1,2,3
Sendo assim os demais valores são recebidos pela enum,
ficando as vars assim
DealerData[0][vehModel] = 509
DealerData[0][vehPrice] = 75
... etc Fiz da seguinte maneira, e a princípio quase deu certo, mas o sistema continua não lendo o tipo de veículo, (0 ou 1)
Código: enum dealerData {
vehModel,
vehPrice,
vehType[2],
};
new DealerData[][dealerData] =
{
// TYPES: 0 - BICICLETA / 1 - DUAS PORTAS / 2 - QUATRO PORTAS
{{509}, {75}, {0}},
{{481}, {80}, {0}},
{{510}, {110}, {0}},
{{602}, {12000}, {1}}
};
As bicicletas, que são tipo 0, reconheceu as 3 pois no código eu limitei às 3.
portanto, no model selection aparece isso
https://prnt.sc/1t4rbjm
Código: Dialog:VehicleType(playerid, response, listitem, inputtext[])
{
if(response)
{
if(listitem == 0)
{
Dialog_Show(playerid, SelectCars, DIALOG_STYLE_LIST, "Concessionária - Carros", "Populares 2 Portas\nPopulares 4 Portas\nCamionetes\nFurgões\nLowrider\nUtilitário Esportivo", "Selecionar", "Cancelar");
}
else if(listitem == 1)
{
}
else if(listitem == 2)
{
static
bikes[3];
for(new i = 0; i < 3; i++)
{
bikes[i] = DealerData[0][vehModel];
}
ShowModelSelectionMenu(playerid, "Bicicletas", MODEL_SELECTION_BUYVEHICLE, bikes, 3, -16.0, 0.0, -55.0);
}
}
return 1;
}
Só que, ao clicar no dialog de carros de 2 portas, no caso, do tipo {1}, ele mostra isso
https://prnt.sc/1t4rlzd
Código: Dialog:SelectCars(playerid, response, listitem, inputtext[])
{
if(response)
{
if(listitem == 0)
{
static
cars[19];
for(new i = 0; i < 19; i++)
{
cars[i] = DealerData[1][vehModel];
}
ShowModelSelectionMenu(playerid, "Populares de 2 Portas", MODEL_SELECTION_BUYVEHICLE, cars, 19, -16.0, 0.0, -55.0);
}
else if(listitem == 1)
{
}
else if(listitem == 2)
{
}
else if(listitem == 3)
{
}
else if(listitem == 4)
{
}
else if(listitem == 5)
{
}
}
return 1;
}
Veja que ao declarar, eu declaro como DealerData[VEHTYPE (sendo 0 para bikes, 1 para carros)][VEHMODEL (ModelID do veiculo)];
ok, as variaveis estão no seus devidos lugares, porem porque você está usando STRING no vehtype, sendo que só recebe valor de 0,1,2?
somente use "vetor ( [1],[2],[3])" em caso de str..., retire o valor [2] e experimente
RE: Não estou conseguindo finalizar este código - H4WK - 21/09/2021
(21/09/2021 16:00)SrBlue Escreveu: (21/09/2021 15:55)H4WK Escreveu: (21/09/2021 15:30)SrBlue Escreveu:
enum dealerData {
vehModel,
vehPrice,
vehType[2]
};
new DealerData[][dealerData] = {
{509, 75, 0}, // 0
{481, 80, 0}, // 1
{510, 110, 0}, // 2
};
para ler como variaveis
a primeira chave [] recebe o numero do elemente da lista, como exemplo 0,1,2,3
Sendo assim os demais valores são recebidos pela enum,
ficando as vars assim
DealerData[0][vehModel] = 509
DealerData[0][vehPrice] = 75
... etc Fiz da seguinte maneira, e a princípio quase deu certo, mas o sistema continua não lendo o tipo de veículo, (0 ou 1)
Código: enum dealerData {
vehModel,
vehPrice,
vehType[2],
};
new DealerData[][dealerData] =
{
// TYPES: 0 - BICICLETA / 1 - DUAS PORTAS / 2 - QUATRO PORTAS
{{509}, {75}, {0}},
{{481}, {80}, {0}},
{{510}, {110}, {0}},
{{602}, {12000}, {1}}
};
As bicicletas, que são tipo 0, reconheceu as 3 pois no código eu limitei às 3.
portanto, no model selection aparece isso
https://prnt.sc/1t4rbjm
Código: Dialog:VehicleType(playerid, response, listitem, inputtext[])
{
if(response)
{
if(listitem == 0)
{
Dialog_Show(playerid, SelectCars, DIALOG_STYLE_LIST, "Concessionária - Carros", "Populares 2 Portas\nPopulares 4 Portas\nCamionetes\nFurgões\nLowrider\nUtilitário Esportivo", "Selecionar", "Cancelar");
}
else if(listitem == 1)
{
}
else if(listitem == 2)
{
static
bikes[3];
for(new i = 0; i < 3; i++)
{
bikes[i] = DealerData[0][vehModel];
}
ShowModelSelectionMenu(playerid, "Bicicletas", MODEL_SELECTION_BUYVEHICLE, bikes, 3, -16.0, 0.0, -55.0);
}
}
return 1;
}
Só que, ao clicar no dialog de carros de 2 portas, no caso, do tipo {1}, ele mostra isso
https://prnt.sc/1t4rlzd
Código: Dialog:SelectCars(playerid, response, listitem, inputtext[])
{
if(response)
{
if(listitem == 0)
{
static
cars[19];
for(new i = 0; i < 19; i++)
{
cars[i] = DealerData[1][vehModel];
}
ShowModelSelectionMenu(playerid, "Populares de 2 Portas", MODEL_SELECTION_BUYVEHICLE, cars, 19, -16.0, 0.0, -55.0);
}
else if(listitem == 1)
{
}
else if(listitem == 2)
{
}
else if(listitem == 3)
{
}
else if(listitem == 4)
{
}
else if(listitem == 5)
{
}
}
return 1;
}
Veja que ao declarar, eu declaro como DealerData[VEHTYPE (sendo 0 para bikes, 1 para carros)][VEHMODEL (ModelID do veiculo)];
ok, as variaveis estão no seus devidos lugares, porem porque você está usando STRING no vehtype, sendo que só recebe valor de 0,1,2?
somente use "vetor ( [1],[2],[3])" em caso de str..., retire o valor [2] e experimente Continua da mesma forma, o dialog de carros aparece apenas os 3 primeiros modelos de bicicletas, o que no caso seriam as de tipo 0
RE: Não estou conseguindo finalizar este código - SrBlue - 21/09/2021
cars[i] = DealerData[1][vehModel];
...
RE: Não estou conseguindo finalizar este código - SrBlue - 21/09/2021
(21/09/2021 16:13)SrBlue Escreveu: cars[i] = DealerData[1][vehModel];
...
como dito na explicação anterior, cada {} é igual um vetor
no caso o DealerData[1] = {481,80,0}
dando todos os 19 "carros"
Código: for(new i = 0; i < 19; i++)
{
cars[i] = DealerData[1][vehModel];
}
o valor do veiculo id 481,do preço 80, e do tipo 0, no caso a bicicleta!
|