1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. #GiveAwayFriday. Win a copy of F1 2017 - The Game. Click here to join.

Interviews, Tweets and DIlemmas

Discussion in 'Motorsport Manager' started by TheFlamingRed, Jan 26, 2017.

  1. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130







    It's been a week in the making but as a community, it is easy to expand on the current set of tweets available between races, the variety of the dilemmas and the variety of the interview questions (the interview system has been fixed in the balance mod).

    As it stands there are 464 tweets, ~16 post race interview questions, and between 1 and 2 dozen dilemmas. Some of these work well, others do not.

    I am far too busy with my mod to begin working on fixing these further, or adding new ones myself. However, those who are following my balance mod are aware that a few people have been expressing their wish to expand these areas of the game.

    I'll make a dedicated post below for each of these three areas - and the feasible format that they need to be in.

    I heavily recommend EXCEL for this, as it's far easier to follow whats happening in columns, rather than in notepad++ format. If anyone has better ways, or wishes to design a custom editor (much like the driver editor) then please let us know.
     
    Last edited: Mar 1, 2017
  2. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130


    Firstly, you will need THIS FILE, and open it in excel.

    Here you will see all 463 tweets already programmed, each one occupying a row. Each column is an important to make the tweet work. One of the most important things is that you must keep ___every column within three underscores___.

    Honestly, all you havr to do to add more tweets is to use the 463 as a base to create any new tweets.



    Move down the "end of database" down to whereever you tweets end - and it is easily convertable into a .txt file.

    Once in .txt formate, you need to then use NotePad++ and use "Replace all" to replace all the "___" three underscores with " a speech-mark. This is because

    • The final text file needs "all the text within a column to be within speechmarks"
    • and converting .csv to .txt messes up speechmarks.
    • so you NEED to do this step for the file to be read correctly.
    Now the .txt file can be imported into the game via the Unity Asset Bundle Extractor.


    There's a lot that needs investigating, so its my option that the best way to make new tweets to to begin with a tweet you know works, and matches best with what you want to make, copy it to the end, and edit it.

    I'll do a quick but not exclusive breakdown of every column.

    "Pre-Practice Tweets"

    "Tweets - Location"

    "Pre-Qualifying Tweets"

    ""

    "Pre-Race Tweets"

    "Random Tweet"

    "Race Event Tweet"

    "Challenge - Underdogs"

    These are the current options. I assume "" tweets won't activate. I cannot yet confirm if all of them work correctly, but most contain a tweet I've seen before. Double check before using them.



    "PreSessionTweet"

    "RandomFanTweet"

    "PostSessionTweet"



    These are the most common tweet sources, with RandomFanTweet being the only one I know works well. All the ones below are used by the Underdog Challenge - and I don't believe they work. (the .dll specifically looks for only the above 3 lines)

    "2DaysToGo"

    "TopDriverWonChampionship"

    "TopDriverGoodLead"

    "TopDriverMediumLead"

    "TopDriverSmallLead"

    "TopDriverEqualLeader"

    "TopDriverLostLead"

    "TopDriverLostLeadBadly"

    "TopDriverWonChampionshipPress"

    "TopDriverGoodLeadPress"

    "TopDriverMediumLeadPress"

    "TopDriverSmallLeadPress"

    "TopDriverEqualLeaderPress"

    "TopDriverLostLeadPress"

    "TopDriverDownToThirdPress"

    "SecondDriverResult1st"

    "SecondDriverResult2nd"

    "SecondDriverResult3rd"

    "SecondDriverResultMissedPodium"

    "SecondDriverMissedPoints"

    "SecondDriverReallyLow"

    "LeadingDriverInsult"

    "SecondPlaceDriverInsult"

    "SessionType = Practice"

    "CrucialStatForTrack = TopSpeed"

    "CrucialStatForTrack = Acceleration"

    "CrucialStatForTrack = Braking"

    "CrucialStatForTrack = HighSpeedCorners"

    "CrucialStatForTrack = MedSpeedCorners"

    "CrucialStatForTrack = LowSpeedCorners"

    "CurrentCircuit = Doha"

    "CurrentCircuit = Madrid"

    "CurrentCircuit = Munich"

    "CurrentCircuit = Sydney"

    "CurrentCircuit = RioDeJaneiro"

    "CurrentCircuit = Milan"

    "CurrentCircuit = Sochi"

    "CurrentCircuit = Beijing"

    "CurrentCircuit = Singapore"

    "CurrentCircuit = Phoenix"

    "CurrentCircuit = Guildford"

    "CurrentCircuit = CapeTown"

    "CurrentCircuit = Vancouver"

    "CurrentCircuit = Ardennes"

    "CurrentCircuit = Yokohama"

    "SessionType = Qualifying"

    "AverageAirTemp = Warm; AverageCloudType = Clear;"

    "AverageAirTemp = Low;"

    "AverageRainType = Light"

    "AverageRainType = Light; SessionType = Qualifying"

    "SessionType = Practice; RacesFromStartOfSeason = 0;"

    "SessionType = Practice; RacesFromStartOfSeason = 0; PlayerFirstRace = True;"

    "SessionType = Qualifying; RacesFromStartOfSeason = 0;"

    "SessionType = Qualifying; DCGap1st2nd = Close; RacesToEndOfSeason <= 3;"

    "SessionType = Qualifying; RacesToEndOfSeason = 0;"

    "SessionType = Race; DCAlive = True; TCAlive = True; RacesToEndOfSeason = 0;"

    "SessionType = Race; DCGap1st2nd = Close; RacesToEndOfSeason = 0;"

    "SessionType = Qualifying; DCAlive = False; TCAlive = True; RacesToEndOfSeason <= 2;"

    "SessionType = Qualifying; DCGap1st2nd = Close; RacesToEndOfSeason <= 8;"

    "SessionType = Qualifying; DCAlive = True; TCAlive = False; RacesToEndOfSeason <= 2;"

    "SessionType = Race"

    "SessionType = Race; RacesFromStartOfSeason > 0;"

    "AverageRainType = Light; SessionType = Qualifying;"

    "AverageRainType = Light; SessionType = Race;"

    "AverageRainType = Medium; SessionType = Practice;"

    "AverageRainType = Medium; SessionType = Qualifying;"

    "AverageRainType = Medium; SessionType = Race;"

    "AverageRainType = Medium"

    "AverageRainType = Heavy"

    "AverageRainType = Heavy; SessionType = Race;"

    "AverageCloudType = Cloudy"

    "AverageCloudType = Overcast"

    "AverageCloudType = Stormy"

    "AverageCloudType = Clear; AverageAirTemp = Warm"

    "AverageCloudType = Clear; AverageAirTemp = Low"

    "SessionType = Race; RacesToEndOfSeason < 4; DCGap1st2nd = Low;"

    "SessionType = Race; RacesFromStartOfSeason > 3;"

    "SessionType = Race; RacesToEndOfSeason = 0;"

    "SessionType = Race; RacesToEndOfSeason = 0; DCAlive = True; TCAlive = True;"

    "SessionType = Race; RacesToEndOfSeason = 0; TCAlive = True;"

    "SessionType = Race; RacesToEndOfSeason = 0; DCAlive = True;"

    ""

    "TourCentreIsBuilt = True;"

    "PlayerTeamPosition > 16;"

    "SessionType = Practice; RacesFromSeasonStart = 0;"

    "SessionType = Practice; RacesToEndOfSeason = 0;"

    "SessionType = Practice; Gap1stTo2nd > 0.5;"

    "SessionType = Practice; Gap1stTo2nd > 0.5; PlayerTeamPosition = 1;"

    "SessionType = Practice; PlayerTeamPositionVsExpectation < -1"

    "SessionType = Practice; PlayerTeamPosition > 1; PlayerTeamPosition < 7; PlayerTeamPositionVsExpectation < 0"

    "SessionType = Practice; PlayerTeamPosition > 1; PlayerTeamPositionVsExpectation < 0"

    "SessionType = Practice; RandomDriverPositionVsExpectation < 0; RandomDriverExpectedPosition < 6"

    "SessionType = Practice; RandomDriverPositionVsExpectation < 0; RandomDriverPosition < 7; RandomDriverPosition > 1;"

    "SessionType = Practice; RandomDriverPositionVsExpectation < 0; RandomDriverExpectedPosition < 6; RandomDriverPosition > 1;"

    "SessionType = Practice; RandomDriverPositionVsExpectation < 0; RandomDriverPosition > 1;"

    "SessionType = Practice; RandomDriverPositionVsExpectation < 0;"

    "SessionType = Practice; PlayerTeamPositionVsExpectation < 0"

    "SessionType = Practice; PlayerTeamPosition > 5; PlayerTeamExpectedPosition < 6;"

    "SessionType = Practice; PlayerTeamPosition < 14; PlayerTeamPosition > 5; PlayerTeamPositionVsExpectation < 0"

    "SessionType = Practice; PlayerTeamPosition < 14; PlayerTeamPosition > 7; PlayerTeamPositionVsExpectation < 0"

    "SessionType = Practice; PlayerTeamPositionVsExpectation < -3;"

    "SessionType = Practice; PlayerTeamExpectedPosition > 6; PlayerTeamPosition = 1;"

    "SessionType = Practice; PlayerTeamPositionVsExpectation > 2; PlayerTeamPosition > 1;"

    "SessionType = Practice; PlayerTeamPositionVsExpectation > 0; PlayerTeamPositionVsExpectation < 4; PlayerTeamPosition > 1;"

    "SessionType = Practice; PlayerTeamPositionVsExpectation > 3;"

    "SessionType = Practice; PlayerTeamPositionVsExpectation > 3; RuleActive = 67;"

    "SessionType = Practice; RandomDriverPositionVsExpectation > 3;"

    "SessionType = Practice; SubjectStatus = Reserve;"

    "SessionType = Qualifying; RandomDriverPosition = 1;"

    "SessionType = Qualifying; Gap1stTo2nd > 0.5;"

    "SessionType = Qualifying; Gap1stTo2nd > 0.5; PlayerTeamPosition = 1;"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation < -1"

    "SessionType = Qualifying; PlayerTeamPosition > 1; PlayerTeamPosition < 7; PlayerTeamPositionVsExpectation < 0"

    "SessionType = Qualifying; PlayerTeamPosition > 1; PlayerTeamPositionVsExpectation < 0"

    "SessionType = Qualifying; RandomDriverPositionVsExpectation < 0; RandomDriverExpectedPosition < 6"

    "SessionType = Qualifying; RandomDriverPositionVsExpectation < 0; RandomDriverPosition < 7; RandomDriverPosition > 1;"

    "SessionType = Qualifying; RandomDriverPositionVsExpectation < 0; RandomDriverExpectedPosition < 6; RandomDriverPosition > 1;"

    "SessionType = Qualifying; RandomDriverPositionVsExpectation < 0; RandomDriverPosition > 1; RandomDriverPosition < 6;"

    "SessionType = Qualifying; RandomDriverPositionVsExpectation < 0;"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation > 0"

    "SessionType = Qualifying; PlayerTeamPosition > 5;"

    "SessionType = Qualifying; PlayerTeamPosition < 14; PlayerTeamPosition > 5; PlayerTeamPositionVsExpectation > 0"

    "SessionType = Qualifying; PlayerTeamPosition < 14; PlayerTeamPosition > 7; PlayerTeamPositionVsExpectation > 0"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation > 2;"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation > 0; PlayerTeamPositionVsExpectation <= 4;"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation < -1;"

    "SessionType = Qualifying; PlayerTeamExpectedPosition > 6;"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation > 2; PlayerTeamPosition > 1;"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation <= 3; PlayerTeamPositionVsExpectation >= 0; PlayerTeamPosition > 1;"

    "SessionType = Qualifying; PlayerTeamPositionVsExpectation > 3;"

    "SessionType = Qualifying; RandomDriverPositionVsExpectation > 3;"

    "SessionType = Race; PlayerTeamPosition = 1"

    "SessionType = Race; RacesToEndOfSeason > 8;"

    "SessionType = Race; SubjectAge < 22;"

    "SessionType = Race; RandomDriverPosition = 1"

    "SessionType = Race;"

    "SessionType = Race; PlayerTeamPositionVsExpectation < 0;"

    "SessionType = Race; PlayerTeamCarQuality = High"

    "SessionType = Race; PlayerTeamPositionVsExpectation < 0; PlayerTeamPosition > 1; PlayerTeamPosition < 10; RacesToEndOfSeason > 6;"

    "SessionType = Race; RandomDriverPositionVsExpectation < 0;"

    "SessionType = Race; RandomDriverPositionVsExpectation < 0; RandomDriverPosition > 1;"

    "SessionType = Race; PlayerTeamPosition > 1; PlayerTeamPosition < 4;"

    "SessionType = Race; PlayerTeamPosition < 14; PlayerTeamPosition > 7;"

    "SessionType = Race; PlayerTeamPosition < 14; PlayerTeamPosition > 7; PlayerTeamPositionVsExpectation > 0; PlayerTeamPositionVsExpectation < 4;"

    "SessionType = Race; "

    "SessionType = Race; PlayerTeamPositionVsExpectation > 0;"

    "SessionType = Race; RandomDriverPosition < 1; RandomDriverPositionVsExpectation > 3;"

    "SessionType = Race; RandomDriverPosition < 14; RandomDriverPosition > 7;"

    "SessionType = Race; PlayerTeamPosition < 1;"

    "SessionType = Race; PlayerTeamPosition > 2; PlayerTeamPositionVsExpectation > 0;"

    "SessionType = Race; PlayerTeamPosition > 2; PlayerTeamPosition < 10; PlayerTeamPositionVsExpectation > 0; PlayerTeamPositionVsExpectation < 5;"

    "SessionType = Race; PlayerTeamPositionVsExpectation > 5;"

    "SessionType = Race; PlayerTeamPosition > 15;"

    "SessionType = Race; SenderTeamPosition > 15;"

    There is a huge amount of options here! And by using the ";" mark , you can blend some scenarios into another (e.g., "SessionType = Race; PlayerTeamPositionVsExpectation > 0;" ). Do they all work? No clue. This is why I state that you should use a tweet you know works as a "base". But you can really go to work by using, and adjusting the ones you know works.

    "MediaPerson"

    "Fan"

    "#1PlaceDriver"

    "#2PlaceDriver"

    "#1SessionPlacePlayerDriver"

    "RandomDriver"

    "RandomPlayerSessionDriver"

    "#5SessionPlaceDriver"

    "#4SessionPlaceDriver"

    "AnyDriver"

    This is who uses the tweet. All tweets are fans, media or drivers.
    Someone please test to see if unused things such as "#3SessionPlaceDriver" works or whether the system only allows for #1/#4/#5Sessionplace drivers.

    This is simply the string which makes up the tweet. However, if you search the lines there is certain things which points to drivers, teams and events. E.g.,

    {CurrentCircuit:Name} is the circuite name
    {#1DC:Name} is the name of the first person in the drivers championship.
    {#20Place:Name} is the person last on the grid.
    {RandomSessionTeam:Name} - a random team that isn't the players team
    {Player:TeamTwitter} - the players team.
    {#1Place:LastName} - last name of the person in 1st place.

    There really are loads of them embedded in the text. Have a look through and pick out the ones you want. Again, you may have to check to see if "#any number" works. I hope to get back to you once this is/isn't confirmed/

    This one is odd... these all point to image files... at first I thought that these could be the 'faces' in the tweet. But that cannot be true, because even the ones who are said by "random drivers" have a ID to an image file. - and of course a driver's face is dynamic to match the driver. So I really don't know what this is for.

    At this point, I would just say to use an existing ID, as it's calling an image and thus - is unlikely to cause any conflict.

    Unsused.. leave as six _ (so ______ to get converted later as "")

    There's only two non blacks.


    SetSubject = RandomSessionDriver;

    SetSubject = #1Place

    The latter is only used once and the former only used 8 times,

    The odd thing here, is that SetSubject = RandomSessionDriver IS NOT always used when a RandomDriver is used - only some of the time. This is inconsistent and odd. However, I believe it's quite fine to just leave this blank and be done with it.

    I do not know if this means to not have TRUE by it.... as many. Maybe it prevents multiple tweets happening in the same weekend. Most tweets have this set to blank though, so you may as well keep it blank too.

    All of these are always blank. ______

    These are the tweets in other languages. At this point, unless you plan on translating, I am not sure what to suggest putting in these slots. I don't recommend leaving them blank, so maybe just keep the "base tweet" (which I suggest using to make your new tweet) other languages and move on for now, unless you all decide to get a team of tranlators going.


    That's basically it.


    If as a community we can get a decent database of alternate tweets, I'll be happy to add them into my mod (so long as it all works). There is a nice "public static int minTweetValue = 2, public static int maxTweetValue = 4" value that can be changed in the .dll to display more tweets per session.

    Please let us all know what you find in your experiments - and I'll update the post here as more is found out about these little tweets.
     
    Last edited: Jan 26, 2017
  3. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    reserved
     
  4. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    reserved
     
  5. enzoli

    enzoli

    Messages:
    597
    Ratings:
    +428
    I must say you're a real legend doing all this. Incredible! You never stop.
    Do you ever get some sleep? :laugh::thumbsup::thumbsup:
     
    • Agree Agree x 1
  6. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    I sleep all the time ;) and as much through the morning I can get away with...

    I'm not working too hard anyway ;) I've no intentions of adding tweets manually myself
     
  7. BrianUK

    BrianUK
    Premium

    Messages:
    302
    Ratings:
    +80
    Is anyone else working on this? I'll be making a start once I'm finished with the traits I'm working on, just want to make sure I'm not covering ground someone has already gone over.
     
  8. OhnoesFroz

    OhnoesFroz

    Messages:
    8
    Ratings:
    +2
    I'll probably write a few just to replace the ones that bug me (POINTS MEAN PRIZES BUT I WANT WINS #AIMINGHIGHLOOOOOOOOOOOOOOOOOOOOOOOOOL) but if I post them in code here it should just be a matter of copy/pasting them into your own edits, no?
     
  9. BrianUK

    BrianUK
    Premium

    Messages:
    302
    Ratings:
    +80
    If ID is anything like MediaReports, it seems that the PSGs don't link to anything. I set a load of custom ones when I was doing trait emails (PSG_20005XXX) and everything showed up just fine. I'll have a little muck around in what little time I'll have at my PC this weekend and see if that's the case.
     
  10. weegeebored

    weegeebored

    Messages:
    17
    Ratings:
    +0
    I was going to but caught a bad virus and been sick for almost a month. Maybe the best approach is for one person to create the file and others can contribute the "text". My English is good (grammar, spelling, all that) so I would volunteer to copy edit what people want to add. I was also going to fix some of the original text as some of it just doesn't sound right.
     
  11. grahamw

    grahamw
    Premium

    Messages:
    104
    Ratings:
    +36
    Actually for tweets to be authentic you probably don't want good grammar and the occasional typo would look more realistic. People tend to tweet in the heat of the moment so sometimes say stuff that wouldn't be especially good English. I agree some of the comments, and tweets etc are very unrealistic bit like some in Football Manager if you have ever seen them.
     
  12. weegeebored

    weegeebored

    Messages:
    17
    Ratings:
    +0
    Good point, grahamw.
     
  13. grahamw

    grahamw
    Premium

    Messages:
    104
    Ratings:
    +36
    These are just a few tweets from some of the teams so you can imagine how much more colourful the fans could be lol

    On Verstappen overtakes- HOLY MOTHER OF WOW! Yup, we clapped too
    You were hogging the spotlight, @MercedesAMGF1 [​IMG] https://twitter.com/mercedesamgf1/status/802883545056350208 …

    On your bike then
    @Dany_Kvyat! [​IMG]

    Just keep an eye out for chickens... [​IMG]
    @Ericsson_Marcus will tell you... [​IMG][​IMG]#F1Finale #AbuDhabiGP #F1

    Either we've accidentally tuned into radio No.[​IMG] or someone needs to MOVE! #F1Finale #AbuDhabiGP #F1

    Restart in less than 1 minute! We were told to go to an extreme wet setup, so Max obliged... [​IMG][​IMG]
    #BrazilGP #givesyouwings

    http://www.thepaddockmagazine.com/best-f1-tweets-from-the-brazil-and-abu-dhabi-gps/
     
  14. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    [​IMG]
    Have a look at this.

    There's a bunch of dilemmas which involve creating traits, along side other things. I've tested it, and simply by chancing what it says in Column H, changes what pressing the button does....

    In short... We can create hundreds of "Alternate" dilemmas easily... We can just reuse the Body of the Text (such as Highlighted E cell), but changing what trait is assigned. We can very easily make a PSG_20000X button which has some unspecific text - to match any outcome we like.
     
  15. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    As for Interviews.... It seems the new Interview system is simply set to cut off after one question, rather then giving a string of questions regarding some of the events it records. The widget is good, and at least there's more variety bit its a shame that there's no longer an option for multiple questions :(

    All the original questions are there, but they're all cut off to end after Q1. Its a real mess.
     
    Last edited: Feb 27, 2017
  16. SomeGuy2013

    SomeGuy2013

    Messages:
    42
    Ratings:
    +3
    I don't know if it's just one question in certain situations where there's only one interview option, but since I started my new game in the ERS, I've had multiple interviews with more than one. There was even one that showed up as one question (shown by the "progress bar") that then turned into two (it was a question about what I thought about Doha taking the place of Black Sea).
     
  17. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    There;s a few... but 99% of answers tell it to "Source = InterviewBookends; Type = Conclusion;" - which is the code for throwing the user out of the interview sequence

    [​IMG]
    In between Orange are all the Post Race Interview Answers and Questions. All the Green ones are the answers which will take out out of the Interview Loops.(and the Yellow are the three Conclusion sentences)

    In Essense, you can have a dozen of the questions be relevant to your drivers and the race they had, but only one will be asked 99% of the time...

    It would be cool if we could get it to ask us 2 or 3 questions out of all the potentials. Which is probably possible (instead of looping it to the Conclusions, we can loop it back to ask different questions a couple of times before looping it out to the conlcusion. But the amount of time and effort needed is large.
     
  18. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    Okay, found a way to make multiple length interviews.

    As I'm also working hard on the rest of the mod, I'd appreciate it if so,some could provide me screenshots of so,e Intervire w questions which You Believe could be asked for any race. These will serve as 'default go-to questions where no other question answer applies.
     
  19. Beynasuh

    Beynasuh

    Messages:
    489
    Ratings:
    +28
    Hi FlamingRed. I am not playing right now (waiting for your mod :D) but I used Motorsport Database Editor to edit Brian's Intervies.txt
    Motorsport Database Editor - Interview.jpg

    I deleted everything except the possible questions that could appear after the race. I hope it will be helpful. And at the end there are some questions that aren't used I guess.
     

    Attached Files:

  20. TheFlamingRed

    TheFlamingRed

    Messages:
    855
    Ratings:
    +130
    ah, okay :) I have this already.

    What I need though is for someone to look through the text and pick 3/4 interview questions which would make sense if they were said each and every race. I'll then remove the current conditions of those questions, so that they can be used as a 'default', incase nothing interesting happened in the race.

    Screenshots are better because there's no guarantee that all the questions in the txt actually work.

    Then I,ll divide the rest of the questions into 1,2,3. Then there should be a few questions regarding the race depending on what's actually happened.