Announcement

Collapse
No announcement yet.

MAKI Cheats

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • ariszlo
    replied
    Originally Posted by parisienne17 View Post

    I've compiled volume.m script but still gets a guru meditation null object called. What can I do ?
    You mean this?
    You get a guru error if your script calls an object that you do not have. Objects in a script are quoted between parentheses like these: ("VolumeAnim"), ("HiddenVolume"), ("songticker"), or ("player.map.volume").
    If you get a guru error then you either add the missing object or remove the lines that call the missing object.

    Leave a comment:


  • parisienne17
    replied
    Originally Posted by frisbeemonkey View Post
    AARGH! Another Animated Volume correction.

    So much for these being helpful, I've become aware of yet another problem with the volume script. If you were sure you were doing everything right, yet for some reason you kept getting a Null Object Called guru meditation... that would be my fault. I changed the .m but forgot to update the .maki in my zip file that I posted. Rather than me post another zip, you can just compile the .m file in the archive and that will work as is or go to this thread and download the volume.zip found there.
    ~FrisbeeMonkey
    PS. Any requests for any other simple scripts? I'm currently out of ideas.
    I've compiled volume.m script but still gets a guru meditation null object called. What can I do ?

    Leave a comment:


  • Plague
    replied
    Attempt #2: Local file path string handling in maki

    Hmm, so it seems getToken doesn't handle multiple characters as token, which means my previous script may not always work.

    There's also an easier way to get the full filepath without the "File:\\" part.
    So, here's a better version, that I've also put into it's own function, for easier handling.
    PHP Code:
    String getParentFolderPath(String path) {
       
    string parentpath "";
       
       
    // we make sure the input path is not empty and that the second to last character is not a colon.
       // if the second to last character is a colon, it means the input is the root of the drive ( c:\ )
       
    if (strlen(path) > && strmid(strright(path2), 01) != ":") {
            
    // we must urlEncode the string, because we cannot search for a single backslash otherwise
            
    path urlEncode(path);
            
    int i strlen(path) - 1;
            while (
    > -1) {
                
    // search for the last backslash ( %5C ) position.
                // we urlDecode all text before that position.
                // the parentpath will then be that decoded text.
                
    if (strsearch(strright(pathstrlen(path) - i), "%5C") > -1) {
                    
    parentpath urlDecode(strleft(pathi));
                    break;
                }
                else
                    
    i--;
            }
        }

        return 
    parentpath;

    Here's how you use it:
    You need to add the following line where you declare your global variables:
    PHP Code:
    Function String getParentFolderPath(String path); 
    Then you can call the function wherever you want, like this:
    PHP Code:
    // get the complete path to the currently playing file.
    string filepath getPath(getPlayItemMetaDataString("filename"));

    // get the parent folder path.
    string parentpath getParentFolderPath(filepath);

    // this messagebox will show the parent folder path
    messagebox(parentpath"test"0""); 

    Leave a comment:


  • Plague
    replied
    Local file path string handling in maki

    Aight, so it's not exactly straight forward to do file handling in maki.
    One problem is that backslashes in strings cannot easily be handled in maki.
    For example, consider this path (which is what a path from getPlayItemString() would look like):
    file:\\c:\music\artist1\album1\song1.mp3

    What if I want to get a string with only:
    c:\music\artist1 ?

    That's not easy.
    getPath(getPlayItemString()) will only return:
    file:\\c:\music\artist1\album1

    We still need to remove:
    file:\\
    and:
    \album1

    Backslash is an escape character, so to search for a backslash in a string, one would normally have to write two backslashes: "\\".
    But, the compiler will not compile the script if one tries to do that.
    Another way is to look for the ASCII code for backslash: 92
    But, if one tries to do a string search for Chr(92), it will return true for every single character in that string.
    Not even getToken will work with backslash as separator.

    However, there is one way to do it: urlEncode.
    If we urlEncode the string, then every backslash will be replaced with: %5C
    Now that we can search for.

    So, here is a small script that finds the parent folder of the currently playing file:
    PHP Code:
    // get the complete path to the currently playing file.
    string path getPath(getPlayItemString());
    string parentpath "";

    if (
    strlen(path) > 0) {
        
    // make sure the file is a local file by searching for "file:\\"
        // the backslashes in "file:\\" are not included in this search, because the script will not compile with them included.
        // we still need to remove the backslashes later however.
        
    int start strsearch(path"file:");
        if (
    start > -1) {
            
    // the 7 is the number of characters to remove ( file:\\ )
            // we must urlEncode the string, because we cannot search for a single backslash otherwise
            
    path urlEncode(strright(pathstrlen(path) - (start 7)));
            
    int i strlen(path) - 1;
            while (
    > -1) {
                
    // search for the last backslash ( %5C ) position.
                // we urlDecode all text before that position.
                // the parentpath will then be that decoded text.
                
    if (getToken(strright(pathstrlen(path) - i), "%5C"1) != "") {
                    
    parentpath urlDecode(strleft(pathi));
                    break;
                }
                else
                    
    i--;
            }
        }
    }

    if (
    parentpath != "") {
        
    // do stuff
        // this messagebox will show the parent folder path
        
    messagebox(parentpath"test"0"");

    Leave a comment:


  • scottiescotsman
    replied
    forget last comment all fixed

    Leave a comment:


  • scottiescotsman
    replied
    can u still ask for a maki script help ?

    I need a maki script [half] written/fixed and compiled as it wont compile on windows 10

    as soon as I get this done my first skin will be complete

    I am making a double tape jvc skin and all working apart from the rotation, the way that I
    have did it is ...
    if I would have did it as one big animation the .png would have been huge [and would have needed 5 of them], so I split it into an individual reel for each animation and then just multiplied it by 4 to make the double cassette. but when I run the script it only works on the first reel and not on the other 3. I have seen a for statement used in a maki script but I have no idea how to write it.

    I included the .m file I am using at present and some .xml code

    hope someone still knows this stuff lol

    Steven

    code:
    <groupdef id="tape.normal.group.cassette" x="0" y="0" w="1284" h="320">

    <!-- Cassettes Back -->

    <layer id="cassette1.base.back" image="cassette.back" x="154" y="34" sysregion="1"/>
    <layer id="cassette2.base.back" image="cassette.back" x="818" y="34" sysregion="1"/>

    <!-- Stop Cassettes -->

    <animatedlayer id="layerStaticCassettes" x="173" y="52" w="134" h="134" image="cassette.tape.stop" autoplay="1" autoreplay="1" speed="60" ghost="1" />
    <animatedlayer id="layerStaticCassettes" x="313" y="52" w="134" h="134" image="cassette.tape.stop" autoplay="1" autoreplay="1" speed="53" ghost="1" />
    <animatedlayer id="layerStaticCassettes" x="837" y="52" w="134" h="134" image="cassette.tape.stop" autoplay="1" autoreplay="1" speed="57" ghost="1" />
    <animatedlayer id="layerStaticCassettes" x="977" y="52" w="134" h="134" image="cassette.tape.stop" autoplay="1" autoreplay="1" speed="51" ghost="1" />

    <!-- Play Cassettes -->

    <animatedlayer id="layerRunningCassettes" x="173" y="52" w="134" h="134" image="cassette.tape.play" autoplay="1" autoreplay="1" speed="60" ghost="1" />
    <animatedlayer id="layerRunningCassettes" x="313" y="52" w="134" h="134" image="cassette.tape.play" autoplay="1" autoreplay="1" speed="53" ghost="1" />
    <animatedlayer id="layerRunningCassettes" x="837" y="52" w="134" h="134" image="cassette.tape.play" autoplay="1" autoreplay="1" speed="57" ghost="1" />
    <animatedlayer id="layerRunningCassettes" x="977" y="52" w="134" h="134" image="cassette.tape.play" autoplay="1" autoreplay="1" speed="51" ghost="1" />

    <!-- Forward Cassettes -->

    <animatedlayer id="layerFastRunningCassettes" x="173" y="52" w="134" h="134" image="cassette.tape.forward" autoplay="1" autoreplay="1" speed="60" ghost="1" />
    <animatedlayer id="layerFastRunningCassettes" x="313" y="52" w="134" h="134" image="cassette.tape.forward" autoplay="1" autoreplay="1" speed="53" ghost="1" />
    <animatedlayer id="layerFastRunningCassettes" x="837" y="52" w="134" h="134" image="cassette.tape.forward" autoplay="1" autoreplay="1" speed="57" ghost="1" />
    <animatedlayer id="layerFastRunningCassettes" x="977" y="52" w="134" h="134" image="cassette.tape.forward" autoplay="1" autoreplay="1" speed="51" ghost="1" />

    <!-- Rewind Cassettes -->

    <animatedlayer id="layerRewindRunningCassettes" x="173" y="52" w="134" h="134" image="cassette.tape.rewind" autoplay="1" autoreplay="1" speed="60" ghost="1" />
    <animatedlayer id="layerRewindRunningCassettes" x="313" y="52" w="134" h="134" image="cassette.tape.rewind" autoplay="1" autoreplay="1" speed="53" ghost="1" />
    <animatedlayer id="layerRewindRunningCassettes" x="837" y="52" w="134" h="134" image="cassette.tape.rewind" autoplay="1" autoreplay="1" speed="57" ghost="1" />
    <animatedlayer id="layerRewindRunningCassettes" x="977" y="52" w="134" h="134" image="cassette.tape.rewind" autoplay="1" autoreplay="1" speed="51" ghost="1" />

    <!-- Pause Cassettes -->

    <animatedlayer id="layerPausingCassettes" x="173" y="52" w="134" h="134" image="cassette.tape.pause" autoplay="1" autoreplay="1" speed="120" ghost="1" />
    <animatedlayer id="layerPausingCassettes" x="313" y="52" w="134" h="134" image="cassette.tape.pause" autoplay="1" autoreplay="1" speed="120" ghost="1" />
    <animatedlayer id="layerPausingCassettes" x="837" y="52" w="134" h="134" image="cassette.tape.pause" autoplay="1" autoreplay="1" speed="120" ghost="1" />
    <animatedlayer id="layerPausingCassettes" x="977" y="52" w="134" h="134" image="cassette.tape.pause" autoplay="1" autoreplay="1" speed="120" ghost="1" />

    <!-- Cassettes Front -->

    <layer id="cassette1.base.front" image="cassette.front" x="154" y="34" sysregion="1"/>
    <layer id="cassette2.base.front" image="cassette.front" x="818" y="34" sysregion="1"/>

    <script id="Animation" file="scripts/playbackanimation.maki"/>


    </groupdef>

    Attached Files

    Leave a comment:


  • Plague
    replied
    I actually recommend you work with the Winamp5 version that I linked in my previous post.
    It contains mostly the same stuff anyways.
    My local copy of the old docs are from the Winamp3 days, and contain some stuff that would not work in Winamp5.

    Leave a comment:


  • scottiescotsman
    replied
    hi plague
    the backup copy of them can you send me a copy please

    tA Steven

    Leave a comment:


  • Plague
    replied
    Originally Posted by ariszlo View Post
    Here is an archived copy of the Maki docs by Ghislain 'Aus' Lacroix.
    Hmm, I was actually referring to the Wasabi XML Object Reference docs (part of Aus's "Canada" docs), but I remembered wrong about them being about Maki.
    The original url was:
    http://canada.landoleet.org/docs/pub...guiobjects.php
    I can't find them on the Wayback Machine, but I do have a local backup of them.

    They are still very good for learning modern skinning though and, as it happens, a Wa5 version is still online:
    http://wiki.winamp.com/wiki/XML_GUI_Objects

    The above docs are great for learning how the XML and XUI components work.
    And there are some pretty advanced stuff that can be done simply by learning how XUI objects work, how to create them, etc.

    Leave a comment:


  • scottiescotsman
    replied
    Its just the stupid little things like bass/treble like volume .. did everything as asked and doesn't work no errors or anything.. I been on this every days for weeks and I only got 3 things left to do and I have done all asked but nothing works ... maybe I over working it I don't know.

    thanks victhor
    Steven

    Leave a comment:


  • Victhor
    replied
    Originally Posted by scottiescotsman View Post
    I give up I cant complete my skin as I don't have the knowledge or xpertise so I will leave it there
    You gave up quickly. My first skin took 3 to 4 months. It would be good anyway to have a break and rest from it, when you feel it you'll get back to it .

    Leave a comment:


  • ariszlo
    replied
    Originally Posted by Plague View Post
    The best source for learning maki was the so called "Canada" documents, but those are offline since a very long time.
    Here is an archived copy of the Maki docs by Ghislain 'Aus' Lacroix.

    Leave a comment:


  • scottiescotsman
    replied
    I give up I cant complete my skin as I don't have the knowledge or xpertise so I will leave it there

    ta

    Leave a comment:


  • Plague
    replied
    No there is no maki book as far as I know.
    The best source for learning maki was the so called "Canada" documents, but those are offline since a very long time.

    There is a Wiki for Modern Skins that you can use for reference:
    http://wiki.shoutcast.com/wiki/Creating_Modern_Skins

    Otherwise, I'd just suggest digging into the included .mi files in Winamp, for example std.mi and config.mi.
    They have good commenting on most of the functions to help you understand how things work.

    Another tip is to start digging through a simple skins sources, for example the Winamp3 base skin or the Wasabi.player base skin (links in my signature).

    My D-Reliction skin (link in my sig) could also be a good source for doing a little bit more advanced stuff, without it getting too complicated to understand.

    All my maki sources are included, and they should be fairly easy to understand.

    The Bento and Winamp Modern skins are in my opinion built in a way that is a bit too complicated if you want to learn basic maki.

    Also, dig through this forum thread, from the beginning, as there are tons of useful small scripts and tips right from the start.

    Leave a comment:


  • scottiescotsman
    replied
    Thanks

    Cheers m8 saw this last night but was to sleepy to comprehend what the code was doing

    Now that I am awake lol I giving it a go!

    Thanks a lot
    Steven

    p.s Is there a maki book that I could get to learn it ?

    also I read a few of the posts on forum about where to store/learn/teach the maki scripts to the masses. I have a web domain that I have had for ages and have struggled to find a useful use for it but would gladly hand to someone to do as they please for the purpose of store/learn/teach the maki script

    Leave a comment:

Working...
X
😀
🥰
🤢
😎
😡
👍
👎