|
Post by daisy_strike on Aug 8, 2010 18:40:12 GMT -5
So you want to make your own slave, do yah? To tell you the truth there pretty simple if you follow these easy steps. Go and down load flash. tryit.adobe.com/us/cs5/flash/tw1/?sdid=FNPGP&Free 30 day trial. Go ahead and open flash create a new .fla file AS3 and name it for your slave... preferred is lower case naming. (mio, orihime, mugi, etc) Next up you will need an image... go find it. Will post a list of needed images later on. Try not to go past size of about 800pixels, (800x600 is best native to fill the entire stage or 4x3 ratio), and no bitmaps (.bmp). Anything larger will just pad the file. Anything smaller then about 400pixels will appear blown up and lose resolution. The game will auto format though to make it the right size and place. Create a layer - Its a good rule of thumb to make a new layer for every image. Just drop your image onto that layer from outside flash and it will appear. Some notes you can lock layers so that they can't be edited and hide layers as well using the x and lock button. So now right click on the image and select Convert to Symbol a dialog box will appear. If this is the first time you are ever using this box you will need to press the advanced button to get the full view. OK now just type in the name of the image "Mio1DildoJob" it really doesn't matter what you call it but it makes fixing problems easier if you follow the standard. Click the button at the bottom that says Export for Action Script. The bottom part will auto propagate. Hit OK and your done. Now go up to the top right and select the properties tab. Now in the little white box put in a name as well for the image. mio1DildoJob note this one is lower case first letter the properties have to be differently named then the symbol version. Its just how flash works, if you want to know why this is not the tutorial. Rinse and repeat for every image. One last thing you will need to add are the icon images. They need to be 50x50 and you must have at least 10. These images can not be .pngs!!!That believe it or not is all that we need for the .fla file. Next tutorial will be on the .as file. Daisy
|
|
|
Post by daisy_strike on Aug 9, 2010 19:25:52 GMT -5
So lets look at the .as file. The real meat and bones as it were. I want to make a note that nothing is final yet and that these files can and will be changed to allow for more jobs. First off go ahead and down load the example. Its easier to just replace stuff then to re-write it again. www.mediafire.com/?rjvx9nttqpf8zji(Last update 8/9/10) First things first everywhere that you see Menace replace to your slaves name. Make sure that the name change is in the same case. For the most part just follow the line by line: Make sure to change the array names at the top to the name of your slave. Fill in the stats and information of the slave as well. Set starting stats for the most part happiness, sanity, and health are the important ones. Keep in mind she was just inslaved so happiness should be low. I want to just make sure that girl mini pics starts at 0 (or the total number is -1) Make sure to change the names of each function with your slave's name and that it is case sensitive. These are the hide functions for every image you put in you have to put in a: [name].visible = false; Mini pics go in there own seprate function. Sets the mini pic... pretty formula just change the names. Right at the top, you will see a pair of variables. var hairColor:String = new String('black'); var hairLength:Boolean = new Boolean(false); set hairColor to what ever color of hair your slave has all lower case (pink, black, blond, green, etc.) hairLength is true if long, short is false. These are used for generic image matching (Not implemented) and yes I know the example code has it as 'Black' please drop down to lower case. Just replace the image names with yours. Right at the start you will see: temp = int(Math.random()*3) + 1; This is how you randomly select images. Just change the 3 to how many pics you have and follow the format of: if (temp == 1) { } else if (temp == 2) { } else { } Try to make the last one always an else not an else if, that way if you screw up it will still work. You will notice that all the pics are in a function slideShowFormatJob(menace.menace1JobBlowjob); auctionScreenFormat(menace.menace1Nude, 1); jobScreenFormat(menace.menace1Maid); Just change the name of the girl and the image name and you are good to go. Remeber that the "menace1JobBlowjob" has to match what ever you called your first blow job image. Front Images are .png files that have a clear back ground and are the ones that appear when the girl floats in front of a background. You don't need to have every type listed but if you don't delete the code for that section and let it fall down to the default. Using the generic images are really easy. Just change the pic number and keep the rest of the format: slideShowFormatJob(genericPics(2340, hairColor, hairLength)); Note that in the end is an else that will make any forgotten images or new jobs and send them to generic. Thats the majority of the .as... next will be intercepting events. Daisy
|
|
|
Post by daisy_strike on Aug 10, 2010 2:12:18 GMT -5
So the last major thing is to interupt and changes events specifically for the girl. Most of the girls don't have events but the ability exists so I want to definitly show it. The first example is the easiest to understand and thats just interupting the conversation slave personal job. first thing you will see is the 2010 this is the job event number that you are interupting. Just change it to whatever number you want to interupt. The current event list is here: www.mediafire.com/?8jnqmibukjdz1nxthere broke into 2 files to make it easier jobs and events. But a good quick cheat is that the event numbers are the same numbers used for the girl image numbers. Next Line is the jobClean(eventNum) if you interupt a job, use this text it cleans the backgrounds and sets up the next day repeat button. Next Line is the background for the image use it if you are using a floating back ground and not an image. The list of the backgrounds are in the job.as that I included with the event files. So far simple, next up we add the text. You can add as many paragraphs as you want just use the storyHopper.push("something"); storyHopper.push("the next line"); storyHopper.push("final line"); format. A current list of people names: 1 playerCharacter.charAsName; //assistant Name 10 GameArray[whatGirl].girlName; //current slaves name 20 playerCharacter.charName; //Trainer's name 1100 Yoko 1125 Bubba 1150 Sugar 1200 Lace and Mew 1201 Lace 1202 Mew 1250 Utau 1300 Anarista 1350 Clerk 1351 Hakurei Reimu 1400 Souseiseki 1450 Yuki 1500 Rena 1550 Unamed Black Smith 1600 Teresa If you don't put a name at the first line make sure to put in <, br, > (remove the , ) so the first line doesn't start in the name block.mainTextStart Does just that. The first variable is the picture of who is talking or the slave pic to show. While in job interuption if you are displaying a girl job or girl picture you have to add a 1 + number. Otherwise just put in the girl or persons number. The second variable is who the other person is talking to. (NOT IMPLEMENTED!!!) The third variable is what event to call next. Most likely if you are interupting a house job it will be 100. If you are interupting a peronal job 110. return true because you did interupt. if (eventNum == 2010) { jobClean(eventNum); slideShowFormatInternal(talkBackground); storyHopper.push("<B>" + peopleName(10) + "</b><br>Hmmph... do you think you can control me?"); mainTextStart(12000, 0, 110); return true; }
|
|
|
Post by daisy_strike on Aug 10, 2010 2:26:08 GMT -5
That was a simple event lets look at a complex one. While taking a Menace out for a walk in the town you meet Anarista. (2041 is town walk). Job clean once again... use it please. I want this event to only happen once so lets set it that way. If you remeber the girlBoolean1 is one of the parts of the object and we set it to false. So for this one to only happen once FOR THIS GIRL ONLY we set GameArray[whatGirl].girlBoolean1 = true, simple enough. A couple notes about GameArray[whatGirl] will change the current girls whatever thats listed in the top of the .as. Such as GameArray[whatGirl].girlEPierce = true if you want to pierce her ears. Don't change stats this way though... we will get into how to change them later on. A background... of the town. Some Text text start and thats it.
|
|
|
Post by daisy_strike on Aug 10, 2010 2:32:44 GMT -5
Next up is choices. Code is in the previous examples code image, but I can copy and paste well: else if (eventNum == 2041 && GameArray[whatGirl].girlBoolean1 == true && GameArray[whatGirl].girlBoolean2 == false ) { jobClean(eventNum); GameArray[whatGirl].girlBoolean1 = true; slideShowFormatInternal(townBackground); storyHopper.push("<B>" + peopleName(1300) + "</b><br>I have some time today, will you let me play with her?"); storyHopper.push("Sure, take your time."); storyHopper.push("No Thanks!"); choiceScreen(1300, 0, 8000, 8001, 0, 0, 0); return true; } So nothing should be that unusual to anyone up until the choiceScreen command which has replaced mainTextStart. But to tell you the truth it works the exact same way. Variable 1 is the girl image, variable 2 is the girl they are talking too... (NOT IMPLEMENTED) and the next 5 are the events that happen when you make a choice. Leaving a 0 just leaves the spot blank and no choice appears. 8000-8999 are reserved for girl specific events SO USE THEM! so for: storyHopper.push("<B>" + peopleName(1300) + "</b><br>I have some time today, will you let me play with her?"); storyHopper.push("Sure, take your time."); storyHopper.push("No Thanks!"); The "I have some time... " is put in the main text box. The other 2 are put in the choice boxes. Here's a picture. So now that Anarista has made her offer you have a choice of letting menace train or not with her.
|
|
|
Post by daisy_strike on Aug 10, 2010 4:42:22 GMT -5
Okay so lets actually do some skill up. First the code: Just to repeat 8000-8999 are held specifically for girl based events. hidePeople() to clean out ana... she should hide, but I like to double check. Raising stats is very easy just use the follow functions x can be positive or negative and is the number of points to adjust happinessRaise( x, whatGirl) sanityRaise( x, whatGirl) healthRaise( x, whatGirl) lustRaise( x, whatGirl) nymphRaise( x, whatGirl) obedienceRaise( x, whatGirl) sexRaise(sex type, x, x, x, whatGirl) sex type 1= straight, 2 = lesbian, 3 = futa. Ignores the ones that don't apply. classRaise(class, x, x, x, whatGirl) Raises the class points ignores those that don't apply (ie for a maid classRaise(0, 1, 1, 0, whatGirl) else if (eventNum == 8000) { hidePeople(); happinessRaise(1, whatGirl); sanityRaise(1, whatGirl); nymphRaise(1, whatGirl); lustRaise(-1, whatGirl); sexRaise(1,1,0,0, whatGirl); sexRaise(2,0,2,2, whatGirl); sexRaise(3,1,1,0, whatGirl); storyHopper.push(peopleName(1300) + " takes " + GameArray[whatGirl].girlName + " back to the auction hall and spends some time training her."); slideShowFormatJob(menace.menace1AnaristaEvent); mainTextStart(0, 0, 110); return true; }
|
|
|
Post by daisy_strike on Aug 10, 2010 4:54:51 GMT -5
Helpful functions:
These functions change all girls including the Arch variables. This way you only have to meet ana once and the next time even with a different Menace she will still act like she has met Menace before.
girlGlobalBoolean(arch:String, spot:int, changer:Boolean) (example: girlGlobalBoolean(GameArray[whatGirl].girlArch, 1, true)
girlGlobalInteger(arch:String, spot:int, changer:int) (example: girlGlobalInteger(GameArray[whatGirl].girlArch, 1, 1)
girlGlobalString(arch:String, stringer:String) I have no idea why anyone would ever need to change a string...
---------------------------------------
addItems(who:Boolean, item:int, position:int) //who character true, else false for girls or item shops //item number //position on girl
example: addItems(true, 1, 0) gives a basic collar
---------------------------------------
function addEffect(who:int, effect:int)
addEffect(whatGirl, 0) recovers virginity...yah
----------------------------------------
learnClass(skill:int, percent:int, girl:int)
learnClass(0, 100, whatGirl) // Girl learns maid 100% chance
---------------------------------------
function loveChance(statmin:int, chance:int, girl:int, eventNext:Boolean){
//if girl falls in love with character. //minstat required before love check //Chance is a percentage that she has fallen //in love. Girl is what girl //event next true if its already part of a story hopper situation false if it needs //to throw up its own text
loveChance(20, 2, whatGirl, false); at 20% or above happiness she has a 2% chance of falling in love with you dont push a statment let it add to the next message.
-------------------------------
looks to see if an item is in the players item list and returns true or false.
checkItemQuest(item:int)
checkItemQuest(1) // checks to see if the character has a basic collar in inventory.
---------------------------------
Removes an item from player inventory
removeItemQuest(item:int)
removeItemQuest(1) // removes a basic collar from the character inventory.
---------------------------------
looks to see if the slave is wearing an item or not returns true or false
checkItemWorn(item:int, girl:int)
checkItemWorn(1, whatGirl) // is she wearing a basic collar?
---------------------------------
looks to see if a girl has an effect on her and returns true or false
checkForEffect(effect:int, girl:int)
checkForEffect(0, whatGirl) // is the girl a virgin?
effect# 0 Virgin 1 Love 2 insane 3 Tetanus
--------------------------------------
checking stats
GameArray[whatGirl].
girlSpecial1Total girlSpecial2Total girlSpecial11Total girlSpecial12Total girlSpecial13Total girlSpecial21Total girlSpecial22Total girlSpecial23Total girlObedienceTotal girlNymphTotal girlHappinessTotal girlSanityTotal girlHealthTotal girlLustTotal girlSexTotal girlSex1Total girlSex2Total girlSex3Total
example
if (GameArray[whatGirl].girlHealthTotal > 80) { happinessRaise( 2 whatGirl); }
Do not change totals or item stats. You can change the basic variables: girlHealth, girlObedience, etc but doing so will mean that they are not checked if there over 100 or under -100 and won't recompute the total with items. Best practice is to use the actual raise functions:
---------------------------------------------------------
Functions to raise or lower stats to lower just use -x. There is a small exception with healthRaise:
healthRaise(0, whatGirl) will lower health based upon the slavers stats for a single job (usually 33 points), this is only for the 0 points and only is done in healthRaise.
happinessRaise( x, whatGirl) sanityRaise( x, whatGirl) healthRaise( x, whatGirl) lustRaise( x, whatGirl) nymphRaise( x, whatGirl) obedienceRaise( x, whatGirl)
---------------------------------------------------------
function sexRaise(raise:int, spot1:int, spot2:int, spot3:int, girl:int)
raise is the type of sex 1 straight, 2 lesbian, 3 futanari spot1 is stat 1 spot2 is stat 2 spot3 is stat 3 girl will most likely be whatGirl
example
sexRaise(1,1,0,0, whatGirl); //straight girl gained blow jobs sexRaise(2,0,2,2, whatGirl); //Lesbian girl gained cun and trib sexRaise(3,1,1,0, whatGirl);//futanari girl gained straight and fucking
-------------------------------------------------------
classRaise(raise:int, spot1:int, spot2:int, spot3:int, girl:int)
raise is the class the game will do a check if that class is not found nothing will happen. spot1 is stat 1 spot2 is stat 2 spot3 is stat 3 girl will most likely be whatGirl
if the girl is a maid
classRaise(0, 1, 1, 1, whatGirl) //slave will gain 1 point in each maid skill
if the girl is not a maid
classRaise(0, 1, 1, 1, whatGirl) //nothing happens.
----------------------------------------------------------------
A generic point changer that will take everything.
pointChange(classes:int, skill1:int, skill2:int, skill3:int, girl:int)
classes this uses the old class point system
-1 Welfare -2 Slave -3 Straight -4 lesbian -5 Futanari -6 all sex 0 Maid 1 House Pet 2 Artist 3 Farm Animal 4 Whore 5 Combat 7 Musician
skill 1 to raise skill 2 to raise skill 3 to raise
girl whatGirl
examples
pointChange(-6, 1, 1, 1, whatGirl) //raises all sex stats no matter what sex she is
pointChange(-1, 1, 0, 0, whatGirl) //raises happiness 1 point
----------------------------------------
function checkClassPoints(classes:int, spot:int, girl:int):int
classesis the class type
spot is the spot ie skill 1 2 or 3
girl is whatGirl
returns -999 if the class does not exist!!!
Also you can check the average for classes but only sex, and class 1 and class 2 by using skill 0.
Example:
if girl is a maid checking cleaning
if (checkClassPoints(0, 1, whatGirl) > 50) { //the girl is a maid with cleaning over do something }
if girl is not a maid
if (checkClassPoints(0, 1, whatGirl) > 50) { //the girl is not a maid and got -999 returned }
what is the average maid skill?
checkClassPoints(0, 0, whatGirl)
Need any other functions post for them?
Daisy
|
|
|
Post by daisy_strike on Aug 10, 2010 5:22:22 GMT -5
Okay so lets test it. Just make the changes listed on these slides to the loader.as --------------------------------------------------- Okay so what if you want to force your girl to show up more often. With 15 girls now trying to pull your girl for testing can be a pain in the ass. Thats where the new loader modifications shine. Make the changes listed here and then you must make sure that where ever the: if (playerCharacter.easyLoader == false) { statement is. Your girls information is in front of it. Follow the changes above to add your girl information but the changes MUST be in front of the if statment. That will lower the number of girls in the game and allow for easier testing. I will keep a version available on the download section of the board that is uncompiled so you can check your slave. daisy
|
|
|
Post by daisy_strike on Aug 24, 2010 19:19:08 GMT -5
Modifications:
10/11/10
Loader updated.
8/24/10
No .pngs for mini pics
Text first line must have a name or a new line
new functions added to list
Daisy
|
|