Log in to reply
 

[SCRIPT] MenuV Pick your Ride!



  • @LeeC2202
    Pick your Ride! Add-On Car MenuV

    My biggest wish (and I'm sure @kizacudo and @GanjaHouse will agree) is a simple yet effective way to spawn added cars. I'm using Add-On Car Spawner Menu v1.1 by I'm Not MentaL. His v1.1 uses one cfg file to hold it all, but scrolling through 650+ items is ... hmmmm less convenient. His current version uses different cfg files for each main category. To much hassle imho as I have almost 40 different categories. So I'd like to request the best of both worlds!

    Current method:
    alt text

    Wishes:

    • using only one cfg file to read from using simple text formatting, see below
    • can hold up to 100 mainlist items and 1000 sublist items;
    • script reads all sublist items under a <mainlist> as belonging to it, until a new <mainlist> item is found;
    • cfg file can hold remarks and other useful info by prefix \
    • reading different strings as \text not used, <MAINLIST ITEM>, [tag to display], =spawnname;
    • navigate using ARROW_KEYS, PAGE_UP & PAGE_DWN, and by input of single characters;
    • no pause during navigation;
    • error checking for syntax errors in cfg file;
    • returning a visual message on HUD when the ride is spawned (as you would see when a vehicle is purchased just as Add On Car Spawner does now, reading from the <gameName> entry in vehicles.meta);

    Navigating is simple and intuitive. It takes only 6 steps to reach a Nissan Skyline R32 xxx: Input N in main list, tap ARROW_RIGHT to enter submenu list, input S, scroll using ARROW_DWN and ENTER to select your desired ride...

    This way, the user only maintains one file containing his entire add-on car database referrals.
    So after importing a new ride into a dlc pack, it's a breeze to add it to the menu via your database and a new export of it.
    Preferably export using a simple text format file for the references which is fed by Excel. This way your database can be sorted, holds extra information, etc. Thus, when you sort in Excel on Modkit and ML you have those rides up the list if you only want those in your Menu.

    Take at a look at my vehlistV.xlsx holding imported cars information (Mediafire):

    Tags available:
    [MK] Tuning
    [SL] Single Livery
    [ML] Multi Livery
    [A] Animated
    [S] Autospoiler
    [W] Wipers

    Formatting:

    • \\
    • <ALFA ROMEO>
    • 4C Spider 2015 [T] [ML] by Aige=4c
    • 8C 2015 [T] [A] [W] by Se7enMoon=8c
    • Spider 939 Brera by pastaman=939 \no engine
    • Spider 916 by pastaman=916
    • GT 3.7L Autodelta by Asyr0n=gt37
    • Montreal 105 GT by Ghost0912=montreal
    • TZ3 Stradale by Yo06player=tz3
    • Stradale 33 by ChOcOsKiZo=stra33 \no sound
    • \\
    • <ASTON MARTiN>
    • DB5 by baba0rum=db5baba
    • DB5 by Ubludok=db5u
    • DBS by tk0wnz=dbstk
    • One 77 2012 [T] [S] by Vans123=one77vans \needs better color schemes
    • Vanquish V12 2015 by AlperB=vanquishalperb
    • Vanquish 2015 by peng0=vanquishpeng
    • Vantage GT3 [T] [ML] [W] by Lord Neophyte=vantagelord \tuning doesn't work
    • Vantage GT12 2015 by Dyc3=gt12dyc3
    • \\
    • <AUDi>
    • ...
    • ..
    • .


  • @ReNNie Just looking at your xlsx file at the moment.

    Do you plan to split that first column into multiple columns, to create Group / Manufacturer / Model categories? It contains quite a bit of info that is irregular in content, so it would be impossible to parse.

    The way I would advise doing this, is not to have multiple menus. Flicking backwards and forwards through menus is slow and disorienting. Because I have built my system based on features I had added to NativeUI, I can customise MenuListItem contents in real time.

    So on your menu you have:
    Category
    Manufacturer
    Model

    As you change what is displayed in Category, the contents in Manufacturer and Model change accordingly. Effectively you have an infinite number of options displayed in just three menu items, all accessible without changing from that single menu view. You don't want complex navigation for a simple problem.

    I could also make it so that the info in the remaining colums could be displayed in an info-pane at the side of the menu, when the Model item is selected. You could also have manufacturer badges be displayed as an ImageList item when that item was selected... if you wanted.

    As for some of the other points.

    1. No problem
    2. No problem
    3. ...

    I'm going to stop there for a minute. The configuration file needs to be an ordered collection of parsable data. The sample you put under formatting is too freeform. There needs to be defined sections for Manufacturer, Model, Year, Author, Tags etc... Something that can be split into the relevant sections you want in the menu systems.

    If there aren't defined sections, then there needs to be a pre-defined delimiter that the data can be split based on. If you look at XML files, when an element isn't used, it's still there in the data to maintain the regular data structure.

    So what you need to do, is think of what items are designated as menu items and then to ensure that every vehicle has one of each. Then define what are the info tags that you want to display and define one each of those as well. Even if it is empty, it needs to be present. Once you have a data structure, then creating the menu that is driven by that structure is straight forward.

    Remarks in this kind of data tend to be the last element on the line, so that it isn't affected by any data processing at the start. You basically say, everything after the last # or whatever, is a remark and display it as such.



  • Just sat here tapping away at a testbed project... does this menu actually need anything more than Manufacturer and Model?

    I was thinking about the Category option but to use that, it would mean that you would have to categorise every addon you were using. And if it was displayed, would the category control manufacturer, or would manufacturer control category?

    And then of course, we have the existing in-game vehicles. Does an addon spawner make sense if you can't also spawn the existing vehicles with it? And if not, then you would need to extract the in-game vehicles and create compatible data tags in the config file for them... all 450 ish of them.

    How quickly a simple concept can flip on its head. :D If you have any thoughts, fire away, I'm just thinking out loud in your thread.



  • @LeeC2202

    ^ which I am thankful for... you thinking out loud :)

    No, to me an Add On Car Spawner is just that. Spawning vanilla cars, that's what the Trainer is for.
    Sjaak even updates it with peds, locations, carmodels etc. So why duplicate?

    You are right in that my Excel holds a mixture on categories.
    So, what you state in your control comment, is basically whatever the programmer finds the most logical I guess?
    The reason why I mixed those: the ferrari addon-pack holds a lot of models... but a bentley pack doesn't and as I try to keep the number of different addon packs to a minumum, that's why there is the clusters like OTHER, TRUCKS, PLANES, BIKES etc. (See my failed logic when I choose to keep an oldsmobile pack nonetheless...).
    Besides the current script I use can only hold in the cfg file this: vehicle description\spawnname

    Basically because of that limit in the current script by incorporating double content I can do more with that front part before the \ divider. If a menu would dictate otherwise for better navigation, than why not?
    Amd I understand what you say in the on-the-fly changing of categories. That is a great methodology!
    Didn't even think of that... In my excuse I'm no programmer. Nor very logical ;)

    Biggest peeve as I said is that navigating 650+ entries shouldn't cost 5 minutes to spawn a single car.
    So even using PAGE_DWN of single character on the first category (be it VEHICLE MAKE of ADDON PACK NAME) is already a huge plus.

    So, would you want me to create distinct columns on approriate menu items or can you tell by the way I've organised things now?
    I'm going on things like VEHICLE MAKE NAME, MODEL, YEAR, VARIATION, AUTHOR, MODKIT, LIVERY TYPE and then extras like REMARKS, etc.
    All other entries in the Excel are for my own information and or sort orders.
    And in which Add-on it actually resides is not necessary for the menu structure imo.

    Mind you, this here setup is probably already quite extensive for the rest of the mod community...



  • @ReNNie If I was writing a car spawner for myself, there would be just two menu options, Manufacturer and Model. Any other info about that vehicle would be for display purposes only.

    If you had just two menu options, which you could navigate through with a key taking you to the relevant section (i.e. pressing N, takes you to Nissan) do you think that would allow you the control you want, whilst displaying as much info about the vehicle as you need?

    That's the key question of the moment and that pretty much dictates anything that follows. If the answer is yes, then that means that each entry in your Excel file, requires a mandatory Manufacture & Model column that will get output at the start of every line. After that, the data can be in any order, year, author etc...

    The worst case scenario is that users can't be bothered to fill in every section, other than the three main ones, the third being the spawn name. So those three are the critical elements and in that sense, is fairly simple for most people to deal with.

    I would like to be able to analyse the addons folder to pull info out of there but I don't know how to open rpf files, so I can't.



  • Hmmm, just trying to split that first column of your Excel sheet into sections to get some test data to work with and have spotted a slight problem.

    When you split lines 10 & 11, they end up identical for the first two sections ASTON & DB5 Vantage... Whilst the menu system will cater for that with no problem, the danger is that identical items give the impression that nothing has changed. I'll have a think about that one...

    Edit: After doing just a few lines, I really don't envy the task of splitting that column for the whole sheet, that's not going to be fun. I can't even write a VBA script to do it either, because there's no consistent pattern to the contents.



  • Well I finally have some data to work with, it's only this much for now though

    ALFA ROMEO,4C Spider,2015,[YCA]Aige,\,4c,,ML,YES,,,1908,,,,,
    ALFA ROMEO,8C,2015,Se7enMoon,\,8c,,,,,,,,,,,
    ALFA ROMEO,GT 3.7L Autodelta,,Asyr0n,\,gt37,,,,,,,,,,,
    ALFA ROMEO,Montreal 105 GT,,Ghost0912,\,montreal,,ML,,,,,,,,,
    ALFA ROMEO,Spider 916,,pastaman,\,916,,,,,,,,,,,
    ALFA ROMEO,Spider 939 Brera,,pastaman,\,939,,,,,,,,,,,
    ALFA ROMEO,Stradale 33,,ChOcOsKiZo,\,stra33,,,,,,,,,,,
    ALFA ROMEO,TZ3 Stradale,,Yo06Player,\,tz3,,,,,,,,,,,
    ASTON,DB5 Vantage,1965,baba0rum,\,db5,,,,,,,,,,,
    ASTON,DB5 Vantage,1964,ubludok,\,db5u,,,,,,,,,,,
    ASTON,DB9 Volante,,bean_19,\,db9v,,,,,,,2203,,,,
    ASTON,DBS,,tk0wnz,\,dbs,,,,,,,,,,,
    ASTON,One 77,2012,vans123,\,one77,,,,,,,,,,,
    ASTON,Rapide 2010,2010,peng0,\,rapide,,,,,,,2203,,,,
    ASTON,Rapide 2010 Race,2010,peng0,\,rapidej,,ML,,,,,2203,,,,
    ASTON,Vanquish,2013,peng0,\,vanquishpeng,,,,,,,,,,,
    ASTON,Vanquish V12,2015,AlperB,\,vanquish,,,YES,X,,1220,,,,,
    ASTON,Vanquish,,[YCA]ANSWER,\,vanquishanswer,,,YES,,,xxx,1968,,,,
    ASTON,Vantage GT12,2015,Dyc3,\,gt12,,,YES,X,,2203,2203,,,,
    ASTON,Vantage GT3,,Lord Neophyte,\,vantage,,ML,YES,X,,1012,,,,,
    

    But even that small amount will give me enough to work with to make sure I can parse the data and set up the menus and the info pane I plan to add. All I needed was two manufacturers and a collection of different vehicles in each.



  • Just one final update for the night. Config file is now read in fine, menus are populated based on the Manufacturer and model, switching manufacturers cause the model name list to change contents.

    That basically means that if there are 2 or 200 manufacturers, the menu list switching system works fine... which is a relief because it's the first time I have tried that on my new system. :D

    I will probably add the info-pane tomorrow, along with the actual spawning code. I can't test that side of it that much, my addon cars total 1 at this point in time.

    The additional positive side of doing this, is it's another real situation to test my system on and as I build this, I am spotting things I can change or add, to make the system easier to work with. In essence, this is the perfect type of test... and on that note, at 4:14am, it's :sleeping: time.



  • @6:15am
    This is more effort than I could have hoped for on this short notice. Arigato!
    And I even get to contribute ever so little to your endeavours :)

    I'll happily convert my entire to sheet to the desired format this evening if needed.
    And... for testing purposes I've gone ahead and uploaded my Alfa and Aston Add-On packs to Mediafire for you to use.
    So if needed I'll message you the links. Tag me if needed...

    Lee asked in [SCRIPT] MenuV Pick your Ride!:

    If you had just two menu options, which you could navigate through with a key taking you to the relevant section (i.e. pressing N, takes you to Nissan) do you think that would allow you the control you want, whilst displaying as much info about the vehicle as you need?

    Yes. Bottom line is the menu holds information on the model AND facilitates easy navigating so the user doesn't scroll through hundreds of instances

    That's the key question of the moment and that pretty much dictates anything that follows. If the answer is yes, then that means that each entry in your Excel file, requires a mandatory Manufacture & Model column that will get output at the start of every line. After that, the data can be in any order, year, author etc...

    And is for displaying information purposes only, right? Seems legit.

    So, now I have to find/create 128x128px png logo's for each manufacturer?



  • @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    So if needed I'll message you the links. Tag me if needed...

    Tag... you're it. :D That would be immensely useful, if I use the addons I do have, I would end up with a list of 1 item per manufacturer, which isn't ideal.

    @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    And is for displaying information purposes only, right? Seems legit.

    Yep... I should have added that the spawn name is mandatory too... although you probably knew that. It doesn't have to be the 3rd column though, it just needs to exist somewhere in the data.

    @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    So, now I have to find/create 128x128px png logo's for each manufacturer?

    The images I am already using in my test menu are 320x200, those are not mandatory by any means but if you plan on using them, that size and aspect ratio is what you need.



  • So, this afternoon, we now have this:

    0_1487259400661_addon-spawner-v.jpg

    I was going to add the ImageList item but whilst doing so, I realised that I have not chosen the best method for handling the images, so that's going to get a rewrite at some point, probably later.

    You can see the info pane gets updated with the relevant information and I have added an option to turn that off, if you don't want to see it.

    Edit: Couldn't wait till later, ImageList now working.

    0_1487263420273_imagelist.jpg



  • That is stunning in it's GUI simplicity. Hat's off!

    I'd suggest to let the menu pick aston.png etc.
    That way if someone wants to add a category or wants to use different png's (transparancy around the logo versus the full color you have now (or is the white menu-controlled) or eg stylish B/W), that could easily be done.

    Remarks by seeying the screen dump, if I may, with all due respect, and so forth.
    I really hope you don't take this badly (!):

    1. Can the user rename the menu name to Pick your Ride! ? ;) :P
    2. I'd much much rather see the list options for model name also display the author. Or the possibility thereof to do that user-side, because there's way to many duplicates for eg Nissans like GT-R35 and R34 or Ferrari 458 Italia (5 in my pack so far) or Lambo LP-700 (5 in my pack so far). But maybe, if the menu window scales to the content that can be done by just merging that info columns when creating the cfg file?. See my ferrari contents in my folder below, ___ means still to import, ! prefix is imported and tested;
    3. Because of the horizontal scrolling method inside a single window there is no way for the user to predict how far off he is from the desired model to spawn. Is it ten entries, is it twenty? A second pane with the model names using vertical scrolling and looking let's say 10 odd entries ahead would eliminate that? But, it would take up more screen space...

    Screen dump of the folder for models to import in ferrari add-on pack.
    My nissan, lambo, toyota and bmw packs are similar in both numbers of models and duplicates...
    alt text



  • This post is deleted!


  • @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    Can the user rename the menu name to Pick your Ride! ?

    I don't actually know why it never dawned on me that the name of the thread was the name of the menu... I should probably rename my whole project to match... I'll do that later. I get so wrapped up in things, I miss the obvious sometimes. :blush:

    I can add something in an ini file so they can call it anything they like, or we can fix it in stone to be that name. The banner background colour, text and menu heading colour can all be options as well, if that seems like a desirable option.

    Also, file extensions can be an ini file option, just as the image folder name would be. I just have them preset to jpg as they are smaller, or it could simply look for either.

    @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    I'd much much rather see the list options for model name also display the author. Or the possibility thereof to do that user-side,

    The Menu item has to reference one particular item in a list, it can't be combinations of anything. There has to be a functional difference between navigable items and what is effectively, just information.

    @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    Because of the horizontal scrolling method inside a single window there is no way for the user to predict how far off he is from the desired model to spawn.

    I had already been thinking along those lines but it poses a few problems.

    Whilst you could have a list of items looking 10 ahead, what happens when you go backwards through the list? If you looked 5 ahead and behind, all that does is transpose the unknown to 5 places in advance... I'm not sure if that's as big a helper as it might seem. :\

    If you have the info pane displayed, where do you display this list? Or does it become a "one or the other" scenario? I.e. if you turn the info pane off, does the list show in its place?

    Ultimately, projects ebb and flow as ideas change. You can't tell if something does or doesn't work until it's there in front of you... so with any application, there will always be a level of redundancy with design ideas. That's something I have come to expect as a designer/developer. I've spent weeks on projects, only to rip them up and redo them because they don't work the way they need to work. This project hasn't hit 24 hours yet, so this is the precise definition of a prototype... everything is subject to change... within reason. :D

    The way I see it, is there is no such thing as a bad idea, it's the failure of that idea to add a positive aspect to a design, that makes it a bad idea. I'll consider and try most things, unless they fundamentally break what I believe are good UI practices.

    On the look ahead idea... I might have just had a brainwave as to how it can be implemented and not take up any additional screen space... hold that thought.



  • I really enjoy getting a peek inside your creative thinking process Lee. Thank you for that!

    And, yes this is what prototyping can look like. I just miss doodling and drawing schemes as we go along. I think more in images than in words.



  • @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    I think more in images than in words.

    That's why I have so much trouble coding... artist's brain, coder's passion... sometimes a great combination, more often a recipe for disaster. :D



  • So true.

    I'm not sure if you picked up on why I stated not the model name should be unique but the string 'model by author' because there's so many duplicates available for make/model/year...



  • @ReNNie Ah okay, I think I understand what you mean now but that also poses another problem (sorry, you'll get to hate that I tend to vocalise problems so much, it's how I think through them... reclusive drawbacks I call them :( )

    If you have "Model by author: " and then an author name, which could be something like "Lord Neophyte" and that's displayed alongside something like "Charger (Hemi) Mopar Racing" you can see how you're suddenly going to get overlapping items on the menu. NativeUI has that problem and I hate it... you just get a mush of text and it looks a mess.

    I mean, all together, that collection looks like this:

    Model by author: Lord Neophyte < Charger (Hemi) Mopar Racing >

    And the last thing you want, is a menu that sits there acting like it's alive, changing size and shape as you flick through items.

    Edit: Or is that also not what you meant?



  • Indeed you wouldn't!

    //edit. Yes, exactly what I meant... to get rid of duplicate values like BMW M5 2015 you add 'by author' to make it unique

    First thoughts:
    The user would try to work this on the data entering level. And would thus be forced to work within boundaries of a set number of characters for the unique identifier that is displayed.
    And/Or
    The menu facilitates that 'model by author' can be displayed over two lines?

    //bedtime...



  • @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    The user would try to work this on the data entering level. And would thus be forced to work within boundaries of a set number of characters

    I couldn't help but laugh at that idea... users on this site, struggling to get an addon to work, having to work within a fixed number of characters... you just know how that would turn out. :D

    @ReNNie said in [SCRIPT] MenuV Pick your Ride!:

    The menu facilitates that 'model by author' can be displayed over two lines?

    Hmmm, menus on 2 lines = not good because it can look like there should be two items for you to interact with.

    Where I am getting a bit confused, is that is what I thought the information pane was for. That displays all the author, year, modkit information so you can tell them apart.

    I mean, I could even adjust it so that the author name was actually displayed at the exact height of the model, so they really did appear alongside each other. I could make it the top item, move the info pane vertically, anything really. I could even make that info slightly bigger.



  • I don't know if I've ever said this before, but I [bleeping] [bleep] [bleepety-bleep] hate modding this [bleeping] [bleep] of a game sometimes. :rage:

    I have two installs of GTAV, as many will already know, one a fully updated version in my development OS (Windows 7) and an older test version (in my crappy Windows 10 OS). In each version I have identical mods folders, identical dlclist.xml files, yet I can go into my fully updated version and play the 50/50 game when I try and spawn a vehicle. I can go into my Win10 older version, and get 100% success with the exact same vehicles... except for today that is.

    The vehicles in the two addon packs @ReNNie shared will not spawn in either version, under any circumstances. How on earth are you supposed to write and test something on a platform that is about as stable as a tightrope between two one-legged stilt-walkers, in a hurricane?

    So the end result of all that was I had to create a data file for a few of my own addons, which is far from an extensive list and the only way I could get all those to spawn, was by switching OS. And that also created an encounter with Excel's magical CSV export feature that likes to ignore empty cells, thus creating insufficient data for the config file, causing a crash.

    Anyway, got a short video, forgot to turn the bit of debug info I am running while I was checking the spawn errors and the spawn into vehicle option doesn't work yet... I actually hate that option but I'm sure someone uses it. It's like a bad movie about a bad day.

    Ooops, just noticed the text that was in that... had to delete the video, sorry. :(

    Here's a video without the feisty text... turned the debug info off and fixed the spawn into vehicle option too.



  • And after this stupid day, which included my ISP DNS servers going berzerk and my internet going off every time I clicked a notification on this site, I still managed to write another mod for someone else as well... call me crazy, all my imaginary friends and stuffed animals do. :D

    And at 4:30am again, it's :sleeping: time.



  • Displaying author name at the exact height might actually the best idea to maintain your structural unity and stop me from peeving :thumbsup_tone1:

    The video shows a very tight and controllable menu. Maybe I'm just to hung up with the idea of the current script as I've been using it for the past 1,5 yr...

    Sorry to hear my add-on packs didn't work for you. But you really need to share more information for users to be able to help you :innocent:
    Invalid model or did the game crash?



  • @ReNNie Just invalid model... the ones from my own addons fail with the same error. That's what makes it such a pain, a crash would generate an error I could work with.



  • @LeeC2202, just to be safe:
    you did rename the downloaded [aston]dlc.rpf to dlc.rpf and put it inside <gamefolder>\mods\update\x64\dlcpacks\aston ?
    And then added a new entry <Item>dlcpacks:\aston\</Item> in dlclist.xml inside <gamefolder>\mods\update\update.rpf\common\data ?


Log in to reply
 

Looks like your connection to GTA5-Mods.com Forums was lost, please wait while we try to reconnect.