Jump to content

Search the Community

Showing results for tags 'guide'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Football Manager General Discussion Forums
    • Football Manager General Discussion
    • FM Xbox Edition and FM Touch General Discussion
    • Football Manager Mobile General Discussion
  • Football Manager Technical Help and Bugs Forum
    • Football Manager 2021 Bugs Forum
    • Football Manager 2021 Touch Bugs Forum
    • Football Manager Mobile Technical Help and Bugs Forum
    • Football Manager Previous Versions Technical Issues
    • Football Manager 2021 Early Access Beta Bugs Forum
    • Football Manager 2021 Xbox Edition Bugs Forum
  • Football Manager - Help Us Make FM Even Better
    • Football Manager Feature Requests
    • Football Manager Research and Scouting
  • Football Manager Game Help Forums
    • Tactics, Training & Strategies Discussion
    • Good Player & Team Guide
    • Editors Hideaway
    • Skinning Hideout
  • Football Manager Specific Playing Styles
    • FM Career Updates
    • Challenges, Sign-Ups & Experiments
    • FM Online Careers and Game Modes
    • FM Stories
  • Football Manager Local Language Forums
    • Football Manager Chinese Language Discussion
    • Football Manager French Language Discussion
    • Football Manager German Language Discussion
    • Football Manager Korean Language Discussion
  • Eastside Hockey Manager
    • General Questions for Eastside Hockey Manager
    • Eastside Hockey Manager Bugs Forum
    • Eastside Hockey Manager FAQ and Knowledgebase
  • The Community
    • Football Manager Channels, Streams and Community Links
  • Non SI/Football Manager Related
    • Off Topic Forum
    • Football Forum
  • House Rules and Forum Guidelines
    • Hall of Fame
    • House Rules & Forum Guidelines
    • Football Thread Vault
  • Forum Software Issues
    • Forum Feedback and Known Issues
  • Reference

Categories

  • Articles
  • Other Football Game
    • More football stuff

Categories

  • Football Manager 2020
    • Getting Started
    • How To
    • Technical Support
    • Pre-Release Beta Specific Questions
  • Football Manager 2019
    • Getting Started
    • How To
    • Technical Support
    • Pre-Release Beta Specific Questions
  • Football Manager 2019 Touch
    • iOS
    • Android
    • Cross-Sync
    • Store and Unlockables
    • Nintendo Switch
  • Football Manager 2019 Mobile
    • Android
    • iOS
  • Football Manager 2018
    • Getting Started
    • How To
    • Technical Support
    • Gameplay
    • Pre-Release Beta Specific Questions
  • Football Manager Touch 2018
    • iOS
    • Android
    • Nintendo Switch
    • Cross-Sync
    • Store and Unlockables
  • Football Manager Mobile 2018
    • iOS
    • Android
  • Football Manager 2017
    • Getting Started
    • Pre-Release Beta Specific Questions
    • How To
    • Gameplay
    • Technical Support
  • Football Manager Touch 2017
    • iOS
    • Android
    • Cross-Save
    • Store & Unlockables
    • Compatible Devices
  • Football Manager Mobile 2017
    • Android
    • iOS
  • Football Manager 2016
    • Getting Started
    • How To
    • Gameplay
    • Technical Support
  • Football Manager Touch 2016
    • iOS
    • Getting Started
    • Android
    • How To
    • Cross Save
    • Troubleshooting
    • Unlockables
  • Football Manager Mobile 2016
    • Android
    • iOS
    • In-App Purchases

Categories

  • Football Manager 2021
  • Football Manager 2021 Touch
  • Football Manager Mobile 2021
  • Football Manager 2021 (FR)
  • Football Manager 2021 (DE)
  • Football Manager 2021 (IT)
  • Football Manager 2021 (ES)
  • Football Manager 2021 Touch (FR)
  • Football Manager 2021 Touch (DE)
  • Football Manager 2021 Touch (IT)
  • Football Manager 2021 Touch (ES)
  • Football Manager 2020
  • Football Manager 2020 (FR)
  • Football Manager 2020 (DE)
  • Football Manager 2020 (IT)
  • Football Manager 2020 (ES)
  • Football Manager 2020 Touch
  • Football Manager 2020 Touch (FR)
  • Football Manager 2020 Touch (DE)
  • Football Manager 2020 Touch (IT)
  • Football Manager 2020 Touch (ES)
  • Football Manager Mobile 2020
  • Football Manager 2019
  • Football Manager 2019 (FR)
  • Football Manager 2019 (DE)
  • Football Manager 2019 (IT)
  • Football Manager 2019 (ES)
  • Football Manager 2019 Touch
  • Football Manager 2019 Touch (FR)
  • Football Manager 2019 Touch (DE)
  • Football Manager 2019 Touch (IT)
  • Football Manager 2019 Touch (ES)
  • Football Manager Mobile 2019
  • Football Manager 2018
  • Football Manager 2018 (FR)
  • Football Manager 2018 (IT)
  • Football Manager 2018 (ES)
  • Football Manager Touch 2018
  • Football Manager Touch 2018 (FR)
  • Football Manager Touch 2018 (IT)
  • Football Manager Touch 2018 (ES)
  • Football Manager Touch 2018 (Console)
  • Football Manager Mobile 2018
  • Football Manager 2017
  • Football Manager Touch 2017
  • Football Manager 2017 (FR)
  • Football Manager 2017 (IT)
  • Football Manager 2017 (ES)
  • Football Manager Touch 2017 (FR)
  • Football Manager Touch 2017 (IT)
  • Football Manager Touch 2017 (ES)
  • Football Manager Mobile 2017

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Biography


About Me


Interests


Favourite Team


Currently Managing

Found 4 results

  1. Football Manager 2015 Skinning Guide Part 5: Editing the xml files Welcome to the fifth part of my updated Skinning Guide for FM2015. Before reading this guide make sure you have read the previous parts of the guide as well as the extracting files guide, as this guide will assume you have followed those guides. The previous parts of the guide talked you through creating a new skin, changing the fonts, changing some of the font settings and colours, with the last part detailing how to change the skin graphics. This part of the guide will talk you through some of the basics of how the xml files work. Due to how Football Manager works it isn't possible to give you a full guide on how to edit the xml files however this guide should give you some basic information to get you started. I also have some more detailed posts on this forum/my website that talk you through modifying certain screens and if you combine those guides with the basics learned here you should get a good understanding of how the xml coding in Football Manager works, after that the best way to learn is just from the experience of looking through and editing the xml files. Editing the xml files is fairly simple once you know where to start and as such it doesn't actually require any coding experience, though some very very basic knowledge of coding or even webpage editing will give you a quicker start (even the simple knowledge of how to manually format your posts when posting on the forum is all you really need to start with). You should also only rarely need to actually write your own xml code, most if not all of your xml editing will involve copying code from one place/file to another to change where it displays or will involve deleting of some code if you want to hide certain things, so you mainly need to know how the code links together and what is part of the same code. The hardest thing you'll probably have to do is to adjust the code you copied so it matches the format of the existing code as the code can change slightly depending on where and how it's displayed. Before starting I advise you have the following folder locations open: - Your 'Working' Folder Location from the previous guide (which is where you extracted the default game files to). - The my_first_skin folder within your Saving Location. You will also need to have your preferred xml file editor open as well as FM2015. The basics of the xml file Before you start editing the xml files you need to understand how the files work on a basic level. If you want some background information on xml coding in generally then check out the XML Tutorial offered by w3schools.com – though for FM purposes you only really need to know the first few chapters anything past the Attributes chapter isn't really needed for FM. The first thing you need to know is there are three kinds of tags you'll come across in the xml files; <record> </record> <record/> The first one <record> is an opening tag this starts off some code which is then closed by the second tag </record> which is a closing tag. For each <record> tag that you have you also need to have a </record>tag in the file as the opening and closing tags must always balance, if you don't balance the tags you'll get an error in game. In addition a closing tag will only close a tag of the same name so a closing tag </string>will not close or balance out a <record> tag to close the <record>tag you need a </record>tag. A </string>tag will only close a <string>tag. The third tag <record/> is a self-contained tag it opens and closes itself and as such doesn't need to be balanced. For a simple example open up the 'skins\my_first_skin\skin_config' xml file. On the second line you'll see a <record>tag this opens up a record element. In the middle of the file you'll notice several lines like these: <string id="name" value="My First Skin (Dark)" /> <string id="skin_name" value="my_first_skin" /> <string id="author" value="michaeltmurrayuk" /> <translation id="description" translation_id="249669" type="use" value="This is my first skin based on the Dark Default Skin" /> <string id="version" value="1.0" /> <flags id="parent" value="fm dark-widgets" /> All of these are self-contained tags, you'll notice that each of these have more than one word/element to them and in case of the translation one it might even be spread over more than one line yet they are all self-contained tags, that is because the tag type is only determined by the first word and by how the tag is opened and closed. In this example we have three different elements; four string elements, a translation element and a flag element, these are determined by being the first word after the < which opens the element, and we know they are self-contained tags because the elements are closed by /> Finally at the bottom of the file we have a </record> tag which closes the record element, and balances out the file as we have one <record> tag and one </record> tag which opens and then closes a record element, with the rest of the tags being self-contained tags that don't need balancing. The other thing you'll notice in this file are lines that contain <!-- and --> these are comment tags and work in the same way as the open and close tags, <!-- will open a comment and-->will close a comment, you'll notice that comments can either be contained to one line or span several lines. Comments aren't read by the game but are notes for the user that will either contain notes about what a bit of code does or will disable some code. You can also add your own comments as you go to remind you what a certain piece of code does or id pertains to once you have worked it out, which can be handy if you come back to the file in the future and forgot what you had done to it. The next thing you need to know about is nesting. With the xml code you can nest elements within other elements of the same or different types. Nesting affects how various bits appear in the game and is used to group items together or to apply properties to a certain item. What you need to know at the moment is that nesting is affected by where you place the close tags within the xml file, so when messing around with the tags you'll need to ensure you place them in the correct place. You can see a quick example of nesting by opening the 'my_first_skin\fonts\text' xml file that you should still have from a previous part of the guide, around the middle of the file you'll notice some code that looks like this: <!-- shadowed style --> <record style="shadowed"> <list id="shadows"> <record> <integer id="x_offset" value="0"/> <integer id="y_offset" value="1"/> <integer id="blur_radius" value="2"/> <integer id="colour_red" value="0"/> <integer id="colour_green" value="0"/> <integer id="colour_blue" value="0"/> <integer id="colour_alpha" value="75"/> </record> </list> </record> The first line is a comment which lets us know the following code affects how the shadow on this text appears, the next line opens up a record element, then we open a list element and then open another record element, we then have seven self-contained integer elements, we then have a tag that closes one of the record elements, with the element it closing being the second one (<record>), we then close the list element before finally closing the remaining record element. To simplify the above code opens up a record1 element, then a list element, then a record2 element (we can ignore the integer elements as they are all self-contained), it then closes the record2 element, then the list element before finally closing the record1 element. You'll also notice that the <record style="shadowed"> element is closed by just a </record> tag this is because closing tags should only ever contain the one first word that determines the element type. Element Types The next thing you need to know are what the most common element types are and what they do. Container The container element as its name suggests acts as a container, these are mainly used to group bits of code, and you can also use blank containers to add some padding between items. Widget The widget element is used to display pretty much any kind of graphic or text in the game. Layout The layout element as its name suggests is used to position your containers and widgets on the screen. You'll quickly come to find this element rather frustrating as there are multiple layout attributes that often have to be used to together but it's not always clear which ones need to be used on certain screens or in certain places. These are the three most common and basic elements used by Football Manager, however as you'll have seen from the previous examples there are also various other elements, however for the most part you won't need to adjust these unless you are doing something in particular (in which case the instructions will be covered in that particular guide) and if you do they act in the same way as these elements so once you have understand the basics of these three common elements you should be able to understand what the other elements do. Element Attributes Next up are the element attributes, if you refer to the following line in the 'my_first_skin\skin_config' xml file: <string id="author" value="michaeltmurrayuk" /> By now you should recognize that this is a self-contained tag because it starts with < and ends with /> and as the first word is 'string' this is a string element. The other items 'id' and 'value' are called attributes whilst the 'author' and 'michaeltmurrayuk' items are referred to as attribute values. Element attributes always have to be formatted in the following format; attribute="attribute_value" The first word sets the attribute, you then follow this with an = and then place the attribute value inside " marks, if you don't do this correctly the game won't read the attribute and it will flag up an error. The = sign is telling the game to assign the following value to this attribute, whilst the "marks are needed to tell the game where the attribute value starts and ends as some attributes can contain more than one attribute value; alignment="top, left" In this example we are setting the alignment of something and we are wanting it to be in the top left position, so when including more than one attribute value for an attribute you separate them by a coma (,). The space after the coma is optional as the game will read both values without the space, the space just makes it easier for you to read. You'll also notice quite often that you will have two related attributes following each other, in the first example the first attribute is telling the game we want to set the author variable and the value we are assigning it is my name (michaeltmurrayuk). In the second example the alignment attribute will normally be followed by an inset code so it looks like this; alignment="top, left" inset="10" In this case we want to place something to the top left corner and want it to appear 10 pixels in from the top and left sides. Attribute Types There are countless attribute types that you can declare in the game, these attributes are used to apply properties to the various elements. The attributes you can use are fixed as they are telling the game you want to set a certain attribute and as such the game needs to understand what attribute you are setting, whilst with attribute values you are generally free to put in what you want, though some attributes will only take certain values, but for the most part you can generally tell what values an attribute wants from its name. What I am going to do now is talk you through some of the common attribute types for the three main elements (container, widget and layout). First I want you to browse to the 'panels' folder inside your 'Working' folder and copy the 'player profile' xml file. We will use this file to get some examples from as it’s a relatively simple file and corresponds to a screen nearly everyone should know. Now open the 'my_first_skin' folder in your Saving Location and if you haven't already create a new folder called panels and paste the 'player profile' xml file into this folder, so the panels folder of your 'my_first_skin' should now look like this: Next load up Football Manager 2015 and set your skin to 'My First Skin (Dark)' and then browse to the Overview -> Attributes panel for any of your players. Now open the copied 'player profile' xml file. I will use this file to run through some of the various attribute types you'll come across. Container Attribute Types If you look on line #23 you should see this code: <container class="bordered_box" id="pdet" file="player profile personal details" /> The first attribute you will normally see is the class one this determines what kind of container we are wanting, and for containers the class determines the appearance of the container and you should remember from the graphics part of the guide that when we changed the attributes box graphic it didn't change the box around the profile, that is because as you can see this container is a bordered box whilst the attributes container was a subsection box. There are several different box types you can set the containers to (you can get a list of names from the subfolders listed in the skins\fm-widgets\graphics\boxes\ folder from your 'Working' folder). To change the type you just change the bordered bit to a different box, so if you want it to look like the attribute container change the above line to the following; <container class="subsection_box" id="pdet" file="player profile personal details" /> Which should then look something like this in-game (if you haven't reverted the changes from the previous guides): The main difference between the default subsection and bordered boxes is the fact that the subsection box has a space for a panel title whilst the bordered box doesn't. If you want you can experiment with the different styles to see what they look like, the two other types you'll normally come across are titled and plain with both of these giving you transparent panels one with space for a title and one without. The next bit is the 'id' attribute which is used by the game to identify certain items, this can be a bit of a tricky one as some containers need a set id to display their contents correctly, others don't need one at all and in some cases the game needs each container to have its own unique id, for the most part you shouldn't need to adjust this, you only need to adjust this if you are using existing code as a template for something you have added. The last attribute on this line is the 'file' attribute, this as the name implies is used to grab data from another file, in this case it Is telling the game to populate the contents of this container with the code found in the 'player profile personal details' xml file. Now if you look on line #16 you will see the following different attributes for a container: <container class="vertical_adaptive_container" id="PLPR" inset="0" offset="0" gap="8"> In this case we are still setting the class of the container but instead of just assigning it to a box we are setting it to something called a 'vertical_adaptive_container' and what this does is tell the game to change how many of the nested containers will appear on screen determined by our screen resolution, in this example we want to change the amount of vertical containers with the height of our screen, so if you are playing at a vertical resolution of 768 pixels you'll notice that we have the three classic rows of containers (Personal Details, Selection Details and Statistics) however if you increase your vertical resolution enough you'll notice that a fourth row (Positions) appears. There is also a 'horizontal_adaptive_container' class that operates in the same way but on the horizontal axis (think the Player Overview -> Profile screen). The next attributes we are interested in on this line are the 'inset' and 'offset' attributes and these determine how close to the edge of the container the content and graphics will appear, in this case the inset value determines how many pixels from the left and right of the screen the nested containers content appears and the offset determines how many pixels from the top and bottom of the screen the content appears. If you play around with these values you'll notice that the position of the Attributes, Positions and Selection Details panels with respect to the edge of the screen changes, however you'll notice that the Statistics panel isn't affected, this is because it turns out the Statistics panel isn't nested within this vertical_adapative_container and as such isn't affected by any changes we make to this line of code. Note that the inset doesn't always just adjust the left/right margins and the offset doesn't always just adjust the vertical margins, how it acts depends on the element and preceding attributes, the quickest way to see what they actually do in other places is to adjust the values then reload your skin and see what direction the item has moved. You can also use negative numbers and these will shift the content the other way, in this case it will cause the content to start closer to the edge or even off the edge of the screen. The final attribute on this line is the 'gap' attribute and this determines the spacing between each container in pixels, the higher the number the greater the gap between the panels and again you can use a negative number to bring them closer. Also note that this only affects the gap between the vertical panels it doesn't affect the gap between the horizontal panels. Another type of container can be found on line #18; <container default_height="384" priority="1"> These containers are used in conjunction with the adaptive containers, you'll notice in this case we haven't assigned the container a class that is because the class attribute isn't always needed for a container. The 'default_height' attribute as the name suggests sets the height of the panel in pixels and the reason why this is needed is because this container is nested within the adaptive container, and for the adaptive container to work it needs to have the height of the various panels set so it knows if it can display them or not. There are two values the height attribute can take either a positive whole number which will set a height of that many pixels or you can also use a negative number, if you use a negative number it will tell the game to stretch this panel to fill up the remaining space, if there is more than one negative panel the number will determine the split as a ratio (more detail on this will be coming later). In addition to the 'default_height' attribute there are also 'minimum_height' and 'maximum_height' attributes as well as 'default_width', 'minimum_width' and 'maximum_width' attributes for horizontal adaptive containers that all act in the same way. You can also combine these values to give your item a dynamic size depending on screen resolution, if you set both a default and maximum value then the game will display your item at the default size, but if it has space left it will expand up to the maximum size. Whilst if you set a minimum value then the game will only display the item if the available room is at least this amount. The other attribute on this line is the 'priority' attribute which is again linked to the adaptive container, this attribute tells the game which containers to prioritize showing when there isn't enough space, and the lower the number the higher the priority, so a priority value of 1 means it will always show, which is why the Position and Form panels disappear at lower resolutions as they have a lower priority and there isn't enough room to show them. Widget Attribute Types To show some examples of the widget attribute types a better example to use is the 'match title bar score' xml file which is the file used to display the team names and scores on the match screen pitch when you have the titlebar hidden. First as an exercise I want you to locate and copy over the default file to the 'my_first_skin/panels' folder. Now I want you to locate this code on line #25; <widget class="text" id="Mclk" size="12" width="80" alignment="centre" style="semi_bold" colour="match text"> Like the container element the widget element starts with a 'class' attribute which determines what kind of widget we are going to be using, in this case we have a text widget which as the name implies is used to display some text on the screen. The next attribute is the 'id' attribute and this tells us what kind of text to display in this case the id tells the game to display the match clock. The next attribute sets the size of the text that displays, the 'width' attribute sets the width of the widget. The 'alignment 'attribute determines how the text is positioned in this case it is centred in the widget, you can also have it left or right aligned as well as top or bottom, you can also combine vertical and horizontal alignments to have "top, left"for example. The 'style' attribute determines what style font is used (i.e. bold, italic, shadowed, embossed etc. Lists of styles can be found in the xml files in the fonts folder). The 'colour' attribute sets the colour of the font; though note that this can in some cases be overridden by values set elsewhere or for some annoying items is hardcoded. Another example for the widget can be found on line #38; <widget class="picture" id="T1bp" auto_size="vertical" file="boxes/custom/match/scoreboard/team/paper" cached="true" rthr="68"> This case shows an example of the picture class widget, and again has similar attributes to the other elements, first the class tells us this is a picture, the id tells the game we want to display the home teams background colour. The 'file'attribute tells the game what graphic to display, note that it doesn't need the graphics folder declared but it does need the subfolders inside the graphics folder declared and you also need to point to an actual graphic rather than just the folder. The final attribute on this line we are interested in is the 'rthr'attribute and this is used when the game recolours a graphic from code, in this case the graphic becomes the home team background picture and is recoloured by the game to match the background colour of the home team. There are a load more classes of widgets in the game but they generally work the same as these two, there are also a lot more attributes that can be applied to the widget elements, the easiest way to find these is to look through the xml files and look at the attributes assigned to the various widgets, most of them should have simple names that describe what they do. Layout Attribute Types Finally we are going to look at some of the attribute types for the layout element, now these can be fairly tricky to work out as you sometimes need to use combinations of them and different screens require different layout values, if you get stuck with these when moving items the best thing to do is to see how the elements near where you are placing your code is written and try and copy that, and if you are modifying items rather than moving them then the best method is to adjust the values of one attribute in the element and see what it does before adjusting another. The below layout element is probably the most common one you'll come across; <layout class="stick_to_sides_attachment" alignment="all" inset="2" /> The 'stick_to_sides_attachment' class tells the game to stick the related item (normally a container or widget) to the side of its parent. The 'alignment' then tells the game what side to stick it to, with the 'inset'(or 'offset') attribute telling the game how far from the edge to stick the item. In this example the inset value of two tells us we want the item stuck two pixels away from the side with the all alignment telling the game we want it stuck two pixels away from all the sides. Inset and offset values have to be whole numbers but can be negative or positive. Alignment values can also be top, bottom, left, right, horizontal or vertical; you can also combine them "top, left"or "top, right"etc. Also if you want to have a different inset from different sides you can split the line up to read something like; <layout class="stick_to_sides_attachment" alignment="top" inset="2" /> <layout class="stick_to_sides_attachment" alignment="right" inset="10" /> These set your item to appear two pixels in from the top and 10 pixels in from the right. Another example line is; <layout class="arrange_horizontal_attachment" offset="0" layout="-4, -6" gap="8" /> In this case the 'class' attribute means we have several items we want to display side-by-side; this is normally used when you are displaying multiple containers. As the layout attribute has two values this means we have two items to show side by side, with the negative numbers meaning we want both of these items to scale with resolution rather than be a fixed size. With the actual numbers telling the game what ratio of space each item should take up. To calculate the ratios you add the two numbers together in this case we get 10 (4+6) which then gives you the ratio of each item, in this case the left item will take up 4/10 of the space whilst the right item will take up the remaining 6/10, if you want both items to use up the same space set them to the same value (-1 normally). There is also an 'arrange_vertical_attachment' class that works in the same way but vertically rather than horizontally and will display items on top of each other. The other layout class you will come across is this; <layout class="fit_children_attachment" alignment="horizontal,fill" gap="0" offset="0" /> This class also tells the game you want to display several items one after another and is generally used for displaying multiple widgets. The alignment value this time determines how they appear, with a horizontal value setting them side-by-side and a vertical one putting them on top of each other, the fill value tells them to fill out the space one after another. Summary The container, layout and widget elements combine to form the vast majority of the coding in the xml files. First you will generally call a container to group the content together, next you will use several layout elements to determine how the grouped content is laid out then finally you will use the widget elements to display an item in game before closing the container. A full example of how each of these elements interacts can be found in the 'match title bar score' xml file; <container class="bordered_box" appearance="boxes/custom/match/scoreboard/container/paper"> <layout class="arrange_horizontal_attachment" alignment="horizontal" gap="0" offset="0" /> <layout class="fit_children_attachment" alignment="horizontal,fill" gap="0" offset="0" /> <layout class="stick_to_sides_attachment" alignment="vertical" layout_children="true" inset="0" /> <container width="10" /> <!--home button--> <widget class="icon_button" id="homb" click_event="home" height="30" width="40" appearance="buttons/custom/match/exit/button" icon="icons/16px/home" icon_alignment="centre"> <layout class="centre_in_parent_attachment" alignment="vertical" offset="0" /> </widget> <!--clock--> <widget class="text" id="Mclk" size="12" width="80" alignment="centre" style="semi_bold" colour="match text"> <layout class="stick_to_sides_attachment" alignment="top" inset="1" /> </widget> <widget class="text" id="Mijt" size="8" width="40" alignment="centre" colour="match scoreboard added time" style="semi_bold"> <layout class="stick_to_sides_attachment" alignment="top" inset="1" /> </widget> ... The first line tells the game we want the following content nested inside a container with the settings of a bordered_box but with a custom appearance. The layout elements then tell the game we want the nested items to display side-by-side with no gap, and we have several widgets to be displayed in a row, then as the other lines have set our horizontal placement we use the another layout element to set our vertical placement. Next we have a blank container element; a width value is set to give us some padding from the left of the screen. We then follow with some widget elements to display some items in game; we first display a home button and nest a layout element inside the widget element to centre it vertically. Next we use some text widget elements to display the time and added time. I haven't pasted in the rest of the code from that file, but if you look at the xml file you'll see the file contains similar code to create a new container nested inside the existing one to display the team name on top of the team background bar rather than alongside it like the rest of the content, this is because these widgets positions within the nested container are determined by the layout code within their container rather than the layout code within the parent container, the parent layout code only applies to the position of the nested container but not the code nested inside the container, thus by nesting the team name code within a new container you are able to display the name on top of the graphic when the previous code had items displaying side-by-side, then when you close the team name container we have another widget this time displaying the scoreboard which appears side-by-side again, we then finish with an away team container and an aggregate score widget before finally closing the initial container. Other bits If you are using Notepad++ to edit your xml files you'll notice that it gives different items different colours; tags and elements have a blue colour, attributes are red, attribute values are purple and comments are green. You can use this to give you a quick visual notification to make sure you haven't mistyped something. (Other programs may also colour the code but might use different colours). Notepad++ can also try to help you by drawing grey vertical lines to try connecting open tags with the corresponding closing tag, though be aware this feature doesn't always link the correct ones. You may also have noted that various lines are indented differently with nested items having a further indent than their parent and linked open and close tags having the same indentation that can help keep track of which tags are linked. You can find downloadable versions (pdf and docx versions at the moment) of this guide at the bottom of this page on my website. --- Redistribution Terms You are free to post this content to your website provided: 1. It is not sold or behind a paywall. 2. You don't advertise it as being exclusive to your website. 3. My username and blog address are included: http://michaeltmurrayuk.blogspot.co.uk/ If linking to the guide please link to this page rather than the direct download links as the links may change with updates.
  2. So late on in the development cycle, SI implemented a change to two panels that unfortunately broke functionality for custom skins, which use custom versions of 'client_object/client object browser.xml' and 'human/add manager.xml', and added new code which if missing from your copy of the files, won't load the pitch or main menu. Luckily Sports Interactive were very quick to inform skinners of the issue and let us know how to fix it, and luckily its a very easy fix. Personally, I'd recommend grabbing a new copy of the client object browser.xml and add manager.xml with the Resource Archiver and rebuilding the file from scratch, but that can be a lot of work so we're gonna hack it together for now. Step 1: client object browser.xml Old - New Miss the change? Its very easy to, its just three or four lines of code. <attachment class="test_multiple_globals_attachment" default_value="false"> <list id="get_properties"> <record get_property="MatS" test_mode="0" value="true" skip_if_null="true" /> </list> <integer id="set_property" value="hidn" /> </attachment> We just need to add the following code, inside the list element, underneath the existing attributes, <!-- PROP_FULL_SCREEN_3D_BEING_DRAWN --> <record get_property="Ma3D" test_mode="equal" value="true" comparison_mode="or" skip_if_null="true" /> So it will look like the following: <attachment class="test_multiple_globals_attachment" default_value="false"> <list id="get_properties"> <record get_property="MatS" test_mode="0" value="true" skip_if_null="true" /> <!-- PROP_FULL_SCREEN_3D_BEING_DRAWN --> <record get_property="Ma3D" test_mode="equal" value="true" comparison_mode="or" skip_if_null="true" /> </list> <integer id="set_property" value="hidn" /> </attachment> We just need to do the same for the 'match background picture' underneath <!-- match background picture - covers entire screen --> <widget class="picture" id="Mbkg" scale_picture="true" keep_aspect_ratio="false"> <record id="object_property"> <integer id="get_property" value="bgnd" /> <integer id="set_property" value="file" /> </record> <attachment class="test_multiple_globals_attachment" default_value="true"> <list id="get_properties"> <record get_property="MatS" test_mode="equal" value="false" skip_if_null="true" /> <!-- PROP_FULL_SCREEN_3D_BEING_DRAWN --> <record get_property="Ma3D" test_mode="equal" value="true" comparison_mode="or" skip_if_null="true" /> </list> <integer id="set_property" value="hidn" /> </attachment> </widget> Thats Step 1 done, next up is add manager.xml Step 2: add manager.xml This one is also very simple, at the top of the panel, you'll have the following code. Just remove it, it's that simple. --------------------------------------- This should fix any issues, however if any persist just drop a message and we'll have a look! Massive thanks to @Neil Brock and the SI team for their assistance!
  3. Welcome back to the thread of the only French team who almost won Europa League !! History and glory days... Olympique de Marseille was founded by René Dufaure de Montmirail, a French sports official, in 1892 as an omnisport club. Known as Sporting Club, US Phocéenne and Football Club de Marseille in the first five years after their foundation, the club adopted the name Olympique de Marseille in 1899 in honour of the anniversary of Marseille's founding by Greeks from Phocaea some 25 centuries earlier, with the name Olympique, coming from ancient Olympic Games. The first period of Olympique de Marseille's domination of the French League started in the early 1970s under Marcel Leclerc's presidency (1965–1972). His ambition allowed Marseille to return to the First division in 1965–66. They went on to win the Coupe de France in 1969 as well as the First division in 1971 with a record of 44 goals by Josip Skoblar, helped by Roger Magnusson. The arrival of Georges Carnus and Bernard Bosquier from Saint-Étienne helped them to win the Ligue 1 and the Coupe de France in 1972. Marseille played in the European Cup in 1971–72 and 1972–73, but were knocked-out by Ajax of Johan Cruyff and Juventus, respectively. However, success was not to last. Marcel Leclerc was forced to leave the club on 19 July 1972. The President was a stubborn man, and he threatened the whole league by threatening to withdraw his professional team from Ligue 1 because the federation refused to accept three foreign players in one team (Leclerc wanted to acquire the Hungarian star Zoltán Varga but he had already the maximum number of two foreigners in his team). But Marseille decided, instead of following Leclerc against the league, to fire him.[4] Then followed an era of crisis, with Marseille only winning a Coupe de France in 1976 and being relegated to the second division, where they played with a bunch of young local players: the Minots who allowed the team to return to First division in 1984. Éric Di Meco was one of them. On 12 April 1986, Bernard Tapie became president, thanks to Marseille mayor Gaston Defferre, and promptly built the greatest team ever seen in France. His first signings were Karl-Heinz Forster and Alain Giresse, who were bought after the 1986 FIFA World Cup. Tapie signed a large number of highly regarded players over the next few years in his pursuit of the European Cup, such as Jean-Pierre Papin, Chris Waddle, Klaus Allofs, Enzo Francescoli, Abedi Pelé, Didier Deschamps, Basile Boli, Marcel Desailly, Rudi Völler and Eric Cantona as well as appointing high-profile coaches like Franz Beckenbauer, Gérard Gili and Raymond Goethals. Between 1989 and 1992, Olympique de Marseille won four league titles in a row and the French Cup. The highlight of the club's history is winning the new format Champions League in 1993. Basile Boli scored the only goal against Italy's Milan in the final held in Munich's Olympic Stadium. That triumph was the first time ever for a French club and it made Didier Deschamps and Fabien Barthez the youngest captain and goalkeeper, respectively, to capture the title. This triumph, however, was followed by a decade of decline. In 1994, due to financial irregularities and a match fixing scandal involving then president Bernard Tapie, they suffered enforced relegation to the second division, where Marseille stayed two years before returning to the First division. Moreover, they lost their 1992–93 Division 1 title and the right to play in the UEFA Champions League 1993-94, the 1993 European Super Cup and the 1993 Intercontinental Cup. Marseille returned to the top flight in 1996 with backing from Adidas's owner Robert Louis-Dreyfus. He chose Rolland Courbis as coach, signed Fabrizio Ravanelli, Laurent Blanc, and Andreas Köpke, and Marseille finished 11th for his return. For the 1998–99 season, the team celebrated their centenary and built a team of stars: Robert Pirès, Florian Maurice, and Christophe Dugarry, culminating in a second-place finish in the French championship, behind Bordeaux and an appearance in the UEFA Cup Final in 1999, losing to Parma. Courbis left the team in November 1999 after a poor start to the season. The closest Marseille got to another trophy was when they reached the UEFA Cup Final in 2004, impressively beating Dnipro, Internazionale, Liverpool, and Newcastle United along the way. But they were beaten in the final by newly crowned Spanish champions Valencia and once again fans were forced to continue waiting for the next trophy to come along. In 2005, Marseille succeeded in winning the Intertoto Cup, beating the likes of Lazio and Deportivo de La Coruña in doing so, and earning another shot at the UEFA Cup. The club struggled in the 2011–12 season, going to the bottom of the Ligue 1 table after six matches. Nevertheless, Marseille rebounded, winning 3–0 against Borussia Dortmund in the Champions League, as well as a 3–0 success over rivals PSG in November of that year. Marseille ended 2011 with a good sequence, also qualifying for the knockout stages of the Champions League for the second season running. In February 2012, Marseille embarked on 13 games without victory, but rallied to qualify for the quarter-finals of the Champions League for the first time since winning the competition in 1993. Despite an indifferent club form, OM lost to eventual finalists Bayern Munich, and slumped to an overall tenth-place finish in Ligue 1. However, the club retained the Coupe de la Ligue for the third year running, beating Lyon 1–0 in the Final. In the summer of 2012, Deschamps resigned, and later taking on the France job. Elie Baup took over, leading the club to a surprising second-place finish in the 2012–13 season despite selling multiple key players, including Loïc Rémy, César Azpilicueta and Stéphane Mbia. Marseille returned to the Champions League, spending close to €40 million on the likes of Dimitri Payet, Florian Thauvin and Giannelli Imbula. The club were top of the table at the end of August 2013, but OM proceeded to lose all six games in Europe, suffering the ignominy of becoming the first French team, and the biggest European team to date, to have picked up zero points in a Champions League group stage. Baup was sacked on 7 December 2013, following the 1–0 defeat to Nantes at Stade Velodrome. He was replaced on an interim basis by Jose Anigo. In Anigo's brief tenure, OM went out of the two cups, and struggled, leading to continued protests and jeers by fans. The club finished sixth in the 2014 season, missing out on an important European competition place for the first time in ten years. Anigo left the club soon after, taking on an ambassadorial/scouting role in North Africa, his first post outside of the city for more than four decades. Modern days... We had a tough time with Margarita Louis Dreyfus last days at the club... No money to spend, selling our top players every year, no trophies on our shelves A new era has come with american new owner Frank Mccourt, who definitely wants to give Marseille a boost in order to be successful again which is the club D.N.A !! Stadium If you take in charge Marseille you will discover the wonderful Stade Velodrome, fully renovated in 2014, you now have a breath taking place of 67.000 fans which are going to help you to win ! It's obviously the biggest stadium available for a French Ligue 1 team so far, but you will have to be good enough to fill all the empty seats that the stadium used to have in the last years...and Marseille fans are really tough to convince so be smart ! Your facilities are also excellent, and will need few improvements OM CHAMPIONS PROJECT Marseille just got a new boss Mr Franck McCourt, american bilionnaire, which already came with his ideas and a project "OM CHAMPIONS PROJECT" The aim for him is to be on the top 3 in the league, which means in France, Champions League football, In order to achieve these goals Marseille's boss pumped some significant money last winter bringing back home Payet and some young bolld like Sanson for more than 40M€, which was a huge improvment for the squad The backroom staff had been improved as well with the likes of Zubizareta joining the club as D.O.F New boss and new President all together SEASON 2017/2018 Unexpected and cruel, Marseille reached an European Final after an incredible run with some epic games and atmosphere https://www.youtube.com/watch?v=n1CeuEqvVZA Rivals As you are a playing a successful club, you'll obviously have plenty of rivals, in the south of France you'll have derbies against AS Monaco and OGCN, but the main thing is Paris Saint Germain !! That's the game you MUST not lose ! You can also add Olympique Lyonnais, rivalry on and off the pitch had been brutal as hell last year, it's may be even more important to beat Lyon than PSG now ! Would you stop our 17 18 games streak without a single victory against PSG in any competitions ?? Would you be able to bring back Champions League football in Marseille instead of watching Lyon on Tv ? Kit Why Marseille ? Because you will be lucky enough to manage 3 World Cup Winners !! Because this team requires a skilled manager to take the club to another level !! Because your last victory against PSG was in 2011 !! Because you have to stop PSG dominance and Lyon provocations !! Because your stadium is the most beautiful and noisy in Ligue 1 !! Because the challenge is huge in France as you have top teams around and you're a sleeping giant !! Because your DNA is to bring back another European Trophy on our shelves !! ALLEZ L'OM
  4. [NOTE: FM2011 REQUIRES NO CHANGES TO THE MAKING OF CONFIG FILES FROM FM2010] To get most graphics you have created to display in game you need to also create a config file for them. A config file basically tells the game what the graphic is and where to display it. There are a couple of ways to create a config file: 1.Use a program that will create the file for you such as FM Graphics Configurator or fmxml. 2.Edit an existing config.xml file. 3.Create the file from scratch. How to create a config file from scratch. First thing you need to do is to create a blank file, the easiest way to do this is to open a new file with notepad, (or any other text or webpage editor) when you have opened a new file with notepad paste in the following code: <record> <!-- resource manager options --> <!-- dont preload anything in this folder --> <boolean id="preload" value="false"/> <!-- turn off auto mapping --> <boolean id="amap" value="false"/> <!-- logo mappings --> <!-- the following XML maps pictures inside this folder into other positions in the resource system, which allows this folder to be dropped into any place in the graphics folder and still have the game pick up the graphics files from the correct places --> <list id="maps"> </list> </record> This is the basic code that needs to be in every config file and you shouldn’t ever change any of the above code (well you can remove the commented lines if you want). The bit that you change depending on what you are creating is located between <list id="maps"> and </list> that is currently blank. Now what we are going to do is create a config file to display the normal logo for Manchester United, the code for this is: <record from="680" to="graphics/pictures/club/680/logo"/> So a config file just displaying this logo would look like this: <record> <!-- resource manager options --> <!-- dont preload anything in this folder --> <boolean id="preload" value="false"/> <!-- turn off auto mapping --> <boolean id="amap" value="false"/> <!-- logo mappings --> <!-- the following XML maps pictures inside this folder into other positions in the resource system, which allows this folder to be dropped into any place in the graphics folder and still have the game pick up the graphics files from the correct places --> <list id="maps"> <record from="680" to="graphics/pictures/club/680/logo"/> </list> </record> Now when you have pasted this code into notepad, you can save the file, goto File -> Save As and name the file config.xml – you need to ensure notepad saves the file as config.xml and not config.xml.txt. You have now created a config file, you now need to place this config file in the same folder as your Man Utd logo (in the above example the logo graphic would be called 680). Coding Examples The below codes show what you need to put into the config file to display certain graphics. In the below code: FILE_NAME – is the name of your graphic, in my example above it was 680 (note the lack of a file extension in the name). UNIQUE_ID – is the unique ID of the object, obtainable from the editor or in game. Club Logos: Normal Logo <record from="FILE_NAME" to="graphics/pictures/club/UNIQUE_ID/logo"/> Huge Logo <record from="FILE_NAME" to="graphics/pictures/club/UNIQUE_ID/logo/huge"/> Small Logo (or Small Flag for the case of countries) <record from="FILE_NAME" to="graphics/pictures/club/UNIQUE_ID/icon"/> Background Right Logo <record from="FILE_NAME" to="graphics/pictures/club/UNIQUE_ID/logo/background/right"/> Background Left Logo <record from="FILE_NAME" to="graphics/pictures/club/UNIQUE_ID/logo/background/left"/> For Nations replace club with nation For Competitions replace club with comp For Continents replace club with continent Also for Nations to replace the large flag (wizard and match screen) you need this code: <record from="FILE_NAME" to="graphics/pictures/nation/UNIQUE_ID/flag"/> 3D Kits To change the kits on the 3D match screen you need to add the following to the config file Home Kit <record from="FILE_NAME" to="graphics/pictures/team/UNIQUE_ID/kit_textures/home"/> Away Kit <record from="FILE_NAME" to="graphics/pictures/team/UNIQUE_ID/kit_textures/away"/> Third Kt <record from="FILE_NAME" to="graphics/pictures/team/UNIQUE_ID/kit_textures/third"/> 2D Kits To display the 2D kits in the club information screen (like previous versions) you need the following code (provided you have applied the fix from radestock) Home Kit <record from="FILE_NAME" to="graphics/pictures/team/UNIQUE_ID/kits/home"/> Away Kit <record from="FILE_NAME" to="graphics/pictures/team/UNIQUE_ID/kits/away"/> Third Kit <record from="FILE_NAME" to="graphics/pictures/team/UNIQUE_ID/kits/third"/> Now if after using the above codes for the kits one still doesn’t show you may need to edit the code, as the team may have a special kit they are using for a season, so to enable the kit to show for future seasons you need to add an extra line to the config file, you basically add the year to the end of the line: <record from="FILE_NAME" to="graphics/pictures/team/UNIQUE_ID/kit_textures/third/2010"/> If 2010 doesn’t work try 2008 or 2009 etc... Player Faces Normal Face <record from="FILE_NAME" to="graphics/pictures/person/UNIQUE_ID/portrait"/> Small Face <record from="FILE_NAME" to="graphics/pictures/person/UNIQUE_ID/icon"/> UPDATE FOR FM2010 (This also applies to FM2011): ***** In FM2010 the way the editor creates players has changed and in some cases the unique id may change from game to game (especially if you add more than one editor file to your game) fortantley there is an alternative method to get player faces into the game without needing to know their unique id: Normal Face <record from="FILE_NAME" to="graphics/pictures/person/{FIRSTNAME} {SURNAME} {BIRTHDAY_DD}-{BIRTH_MONTH_MM}/portrait"/> Small Face <record from="FILE_NAME" to="graphics/pictures/person/{FIRSTNAME} {SURNAME} {BIRTHDAY_DD}-{BIRTH_MONTH_MM}/icon"/> So for example if your players name was John Smith and he was born 30th March (year doesn't matter) and the filename of your graphic was johnsmith the line for the normal face would look like: <record from="johnsmith" to="graphics/pictures/person/john smith 30-03/portrait"/> ***** The above examples all depend on the config.xml file being put into the same folder as the graphic file, now you can have the config file in the parent folder to the graphic(s) (This is how SI do it, but I don’t really like it) and if you are doing that you need to adjust the code to look like this: <record from="FOLDER/FILE_NAME" to="graphics/pictures/person/UNIQUE_ID/portrait"/> In the above example you have the config file and a folder called FOLDER in the same folder, but with the graphic in the folder called FOLDER. Editing an Existing Config File This is just a case of copying the file you want to edit to the location you want, then opening the file in notepad and changing either the filename or Unique ID to match your graphic/team. Using FMGraphics Configurator With programs like these, the best option is to name your graphics by unique ID, put all the graphics of the same type in one folder, load the program select the correct options and then drag the folder of graphics you want a config creating for into the program, and it will create the config file for you. FMGraphics Configurator Download Link Other tools may also be around, check out the various fansites or do a web search for them, links to the other programs were dead and thus removed. Finally when you are done, load the game to check that the graphics actually show and no error messages occur.
×
×
  • Create New...