enum cm matriz - Klaba - 15/10/2023
Olá amigos. Eu queria fazer um sistema de concessionária, mas cada carro tem seu preço, então tentei fazer isso:
Código: enum CONCE_LS1
{
vehmodel[][] =
{
{605, 300},
{604, 300},
{404, 500},
{479, 550},
{542, 400},
{445, 700},
{517, 750}
}
}
não seu certo... Eu queria pegar o ID do carro, e dizer seu preço. Exemplo: 411 (infernus) é $100000. Como posso fazer isto?
Queria saber como ficaria o script se fosse num txt...
Também queria entender a lógica por trás da maneira mais apropriada de se fazer
RE: enum cm matriz - leonardos08bt - 16/10/2023
Vai criar em mSelection ou em diálog/textdraw?
( Uma opção: mSelection é muito bom pra criar isso além de ser muito mais fácil para desenvolver uma conce ou algo do tipo (minha opinião) )
OBS: mSelection é uma include que utiliza se textdraw mas é melhor do que criar uma textdraw (na minha opinião). Mas é de 2013 [bem ultrapassado]...
Eu digo que o mSelection é bom por sua simplicidade (feito pelo Kalcor).
Também possui uma opção ainda melhor que é a include eSelection.
/--\
Se for criar em mSelection:
Código: #include <a_samp>
#include <mSelection> // DOWNLOAD: https://github.com/blint96/mysantos-main/blob/master/pawno/include/mSelection.inc
enum{//Dialogs
Dialog_Conce,
}
new VehicleName[212][] =
{
{"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
{"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
{"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
{"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
{"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
{"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
{"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
{"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
{"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
{"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
{"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
{"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
{"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
{"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
{"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
{"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
{"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
{"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
{"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
{"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
{"Utility Trailer"}
};
new conce_list = mS_INVALID_LISTID;
public OnGamemodeInit()
{
conce_list = LoadModelSelectionMenu("conce.txt");
return 1;
}
public OnPlayerModelSelection(playerid, response, listid, modelid)
{
if(response)
{
//if(listid == lista)
if(listid == conce_list)
{
new info[256]; format(info, sizeof(info), "\
Você deseja comprar este veículo?\n\
\n\
Nome do Veiculo: %s\n\
Preco do Veiculo: %d", VehicleName[modelid - 400], GetVehiclePrice(modelid));
ShowPlayerDialog(playerid, Dialog_Conce, DIALOG_STYLE_MSGBOX, "Concessionária", info, "Comprar", "Cancelar");
SetPVarInt(playerid, "ComprandoVeiculo", modelid);
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
SetPVarInt(playerid, "ComprandoVeiculo", -1);
return 1;
}
public OnPlayerDisconnect(playerid)
{
SetPVarInt(playerid, "ComprandoVeiculo", -1);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case Dialog_Conce:
{
if(!response) return SetPVarInt(playerid, "ComprandoVeiculo", -1);
else
{
new vehicleid = GetPVarInt(playerid, "ComprandoVeiculo"); //vehicleid armazena o id do veiculo que o jogador está interagindo.
if(GetVehiclePrice(vehicleid) == -1) return 1; //Valor do veículo invalido.
if(GetPlayerMoney(playerid) < GetVehiclePrice(vehicleid)) //Jogador não tem dinheiro.
return SetPVarInt(playerid, "ComprandoVeiculo", -1), SendClientMessage(playerid, -1, "Você não possuí dinheiro suficiente.");
//----- Sete o Veiculo -----//
new Float:Pos[4];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]);
CreateVehicle(vehicleid, Pos[0], Pos[1], Pos[2], Pos[3], -1, -1, -1);
new info[121]; format(info, sizeof(info), "Você comprou um %s por R$%d", VehicleName[vehicleid - 400], GetVehiclePrice(vehicleid));
GivePlayerMoney(playerid, -GetVehiclePrice(vehicleid));
SendClientMessage(playerid, -1, info);
SetPVarInt(playerid, "ComprandoVeiculo", -1);
return 1;
}
}
}
return 1;
}
stock GetVehiclePrice(vehicleid)
{
new price;
switch(vehicleid)
{
case 411: price = 10000;
case 521: price = 20000;
//case ID_VEICULO: price = :VALOR
default: price = -1; //Caso não seja nenhum dos veículos acima, o valor é indefinido/inválido.
}
return price;
}
e no arquivo "conce.txt" em seu scriptfiles você adiciona os id's dos veículos que irão aparecer na lista.
Código: 411 0.0 0.0 -45.0
522 0.0 0.0 -45.0
Lembrando que "modelid rotX rotY rotZ".
Imagem de como é o mSelection:
RE: enum cm matriz - pushline - 16/10/2023
mSelection é defasado, de 2013 e feito pelo Kalcor (o maluco da minha foto), ou seja, ruim.
Use o eSelection que é do TommyB, um dos beta-testers do SA-MP antes de ser expulso pelo próprio Kalcor da equipe.
Link - https://github.com/TommyB123/eSelection
Ele necessita do plugin PawnPlus pra funcionar, por que ele requer listas, e o pawnplus oferece isto.
|