MAKI Cheats

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • ariszlo
    Major Dude
    • Jun 2015
    • 917

    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.
    Ariszló @ WinCustomize & DeviantArt

    Comment

    • Victhor
      Late skinner & Moderator
      • May 2003
      • 1629

      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 .
      · · Big Bento Modern

      Comment

      • scottiescotsman
        Senior Member
        • Aug 2015
        • 181

        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

        Comment

        • Plague
          f(caffeine){
          return wasabi;
          }
          (Forum King)
          • Jul 2001
          • 3984

          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:

          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:


          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.
          Winique work-in-progress (download) | Stargate:Winamp - SG1 Edition | D-Reliction | wasabi.player skin (plague-edit)
          Winamp3_Default skin (plague fixes) | Opal Redemption | X-Slant | wa2skin.wac

          Comment

          • scottiescotsman
            Senior Member
            • Aug 2015
            • 181

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

            tA Steven

            Comment

            • Plague
              f(caffeine){
              return wasabi;
              }
              (Forum King)
              • Jul 2001
              • 3984

              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.
              Winique work-in-progress (download) | Stargate:Winamp - SG1 Edition | D-Reliction | wasabi.player skin (plague-edit)
              Winamp3_Default skin (plague fixes) | Opal Redemption | X-Slant | wa2skin.wac

              Comment

              • scottiescotsman
                Senior Member
                • Aug 2015
                • 181

                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

                Comment

                • scottiescotsman
                  Senior Member
                  • Aug 2015
                  • 181

                  forget last comment all fixed

                  Comment

                  • Plague
                    f(caffeine){
                    return wasabi;
                    }
                    (Forum King)
                    • Jul 2001
                    • 3984

                    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"");

                    Winique work-in-progress (download) | Stargate:Winamp - SG1 Edition | D-Reliction | wasabi.player skin (plague-edit)
                    Winamp3_Default skin (plague fixes) | Opal Redemption | X-Slant | wa2skin.wac

                    Comment

                    • Plague
                      f(caffeine){
                      return wasabi;
                      }
                      (Forum King)
                      • Jul 2001
                      • 3984

                      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""); 
                      Winique work-in-progress (download) | Stargate:Winamp - SG1 Edition | D-Reliction | wasabi.player skin (plague-edit)
                      Winamp3_Default skin (plague fixes) | Opal Redemption | X-Slant | wa2skin.wac

                      Comment

                      • parisienne17
                        Senior Member
                        • Aug 2007
                        • 214

                        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 ?

                        Comment

                        • ariszlo
                          Major Dude
                          • Jun 2015
                          • 917

                          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.
                          Ariszló @ WinCustomize & DeviantArt

                          Comment

                          • ariszlo
                            Major Dude
                            • Jun 2015
                            • 917

                            This shows elapsed time in one text object and remaining time in another one. If the song is longer than an hour then elapsed/remaining time is shown in HH:MM:SS format, if shorter then in MM:SS.CC format, where CC = centiseconds.
                            Attached Files
                            Ariszló @ WinCustomize & DeviantArt

                            Comment

                            Working...
                            X