Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pet
#1
Sinow
Well, for my stage project, LFL, I've been working on a couple new dc techniques, most notably making a pet that follows your character around. After a long and painful process involving hours of debugging, frustration and sharp needles, I think I've gotten the basic function to work. Observe:
[Image: 1022xc.jpg]

That is Tyler and his dog Kero, along with a can of Kirin Lemon. I probably should've shown Tyler summoning Kero, but I haven't really made that part smooth yet, so I left it out.
Anyway, I just thought i'd share that with you guys and see if anyone could think of a way to create a pet. I'd like to see some theories other than my own because hey, there could be an easier, less painful way :P

I should mention that I basically copied a technique that MH used to get the dog to face the correct direction. Thank you MH!

When I get some time to write up an explanation on how to do this, I'll post it here. ^^


[...]


YinYin
i guess i know what you did :P

u used jans healing chase - or lets say you found out how to use it in a different id/dat file without spawning a bunch for the whole party

if thats not it - it would be a nice possibility

otherwise i think you managed to spawn and let some balls/criminals hit each other till the last object (the dog) doesnt belong to the team anymore - buuuut that would make him chase others aswell still .... well yours looks smooth so ill just wait on your answer how you did it instead of tryin myself

good luck with this

edit: and for the stopping thing - having a kind: 9 itr for the dog somewhere below the ground probalby helped a lot - or would ;) - and then you should add the body for the char in any stationary frames (like drinking)


Sinow
Yeah, you've got the basic idea. I used Jan's heal angel chase and an itr to get rid of the extra angels, then used a different kind of chase to prevent it from healing you. I typed it up in another thread, but i should probably post it here:

Just a heads up: To understand everything, you need to know what itr/kind: 8 does and how to use it, and some knowledge about chasing helps as well, though it is not necessary.

Okay, so first the theory behind it:

Using Jan's angel chasing(hit_Fa: 4), we will create an angel that will chase our character. By adding a body to the first frame of the angel and giving a character an itr to hit the angel, we cause it to go to the "hit" frames. We give these frames the transform state so that the angel will transform into a different ball. After transforming, the new ball hits your character and goes to frame 60 and heals you(Like jan's angel would normally do). Then, instead of having it disappear, we have the ball go to a different frame with hit_Fa: 7(Firzen's D^A chasing). This allows the ball to keep its target, but it won't heal them like Jan's angel chasing. Using this, we have a ball that will follow your character around. By adding an itr/kind: 8 in the pet's "walking" frames and bodys in the character's data, we can have it stop when it is near its owner and then by adding different itr/kind: 8s in the pet's "standing" frames we can have the pet react to commands its owner gives it.

That's the basics of the dc you have to use to create this effect, but there are some major details that make coding it slightly painful.

1. We must destroy any excess pets that get created as a result of the ratio of Jan's angel while keeping the one that follows our character.
2. Solving the first problem using the method i chose creates a problem with actually being able to see the pet(you end up creating it really high in the sky).
3. dvy: 550 doesn't work in combination with hit_Fa: 7, and since this is the only one we can use, we have to find a way around it.
4. When the pet stops at the character, he doesn't necessarily face the correct direction.

Quick solution explanation:

1. Having your character fly high up into the sky to summon the pet keeps the pets away from the other characters. So that way, there will be a very small chance that any of your teammates will touch their corresponding pet, thus activating it. The only way to do this is to have two of the pet-creating characters to use their move at the same spot at the same time.
2. After careful calculations, you can find a negative centery value that will make the pet look like its on the ground. Fortunately, other x/y values for body, itr, etc. are measured from the top left corner of the pic and not the centerx/y.
3. By carefully creating a balance between dvy: 550 and dvy: -1 and by using an occasional correction frame, we can counter the sinking effect of the hit_Fa: 7
4. Using a technique MH-LF2 pioneered in Kingdom-LF2, we can use itr/kind: 8 to take the pet to a different frame with a negative next value, thus turning it around.

The way to code these solutions are shown below.. There are some problems that I'm currently trying to fix/find a way around and they will not be in this tutorial yet. Just so you know, they are:

1. Having the pet face the correct direction if it touches you as you are doing the move(simple to fix, i just haven't had time yet.)
2. Finding a way around the pet disappearing when it flys off screen (this could be ignored by finding a solution to the next problem)
3. Finding a way to prevent the character from creating multiple pets without having him transform (simply having the pet kill off the newly created ones doesn't work, especially when there are more than one of the characters with pets in play)
4. Smoothly getting the character to do a move only when his/her own pet is standing next to him/her. (started, haven't finished working on it. Fairly tedious)
5. Preventing the pet from stoping next to an enemy character(started this by using an itr, just haven't perfected it yet).

anyway, I'll break this up into parts.

Editing Jan_chaseh.dat:

-Start off by opening Jan_chaseh.dat. In the first frame, add a body at a very large y(y: 5000 or something) value and a semi-large height(maybe h: 100) and remove the hit_Fa: 4.

-Choose an id to use for your pet. Then go to the rebounding frames and change the state to state: 8### to have it transform into the pet. That should be everything you need to do.

Creating basic summoning and pet interaction for your character:

I assume you know how to make a move for your character, so I won't bother explaining that.
Also, this only explains the main mechanics of the move. To make it look pretty, I suggest opointing a copy of your character that does some actions to summon your pet(make him unhitable).

-For your characters move, you will need to have him fly high into the sky. I accomplished this by using a wait: 1 and dvy: -400.

-In the very next frame, use state: 18, wait: 5(about) and dvy: 550. Opoint Jan's heal angel normally(copy and paste the opoint from jan's data into your characters). For x and y, I used x: 39 y: 40. Also, use facing: 1(might not matter, but it will work with it). Also in the same frame, create an itr with the same large y value that the you used for the angel's body and give a decent height and width to ensure that it will hit.

-Next frame, use state: 3, wait: 4 and dvy: 500. Make sure the duplicate is gone by now(if you use one). End of summon.

-Now, we need to add new bdys to various frames of the character. Start with the standing frames of your character and add a body with an unused large y value(lets call this "Ys" or "Ystand") and a large height. Make the x around 21 and width somewhat large, around 43 is good.

-Using a different y value("Yf" or "Yfacing"), do the same thing only give this body x: 0 and a small width like w: 5.

-Copy these two bodys into all the standing, defending frames, and others if you wish. That should be about it for now.


Creating the Pet data:

-Start a new data file for your pet(you may want to copy jan_chaseh.dat) and give the first frame wait: 1 next: 1000 and hit_Fa: 4.

From now on, just assume that all frames have centery: -1200 unless noted otherwise.

-Create a frame 60 with a next that leads to your pet's standing frame. You can create a sequence of these frames if you wish. Do not give your standing frame any chasing(including hit_Fa: 4)! You will however need to give it state: 3000 centery: -1200 and an itr/kind: 8. For the itr, use y: Yfacing and an x that will hit infront of the pet's centerx, but not behind it. This will enable the pet to face the correct direction. Make the dvx lead to a frame that will turn the pet around(negative dvx will not work)

-Here comes the fun part! Its time to create a sequence of "walking" frames. Start off by giving each frame state: 3000, centery: -1200 and hit_Fa: 7. Now unfortunately, using hit_Fa: 7 causes the pet to fall even with dvy: 550(falls slowly, but it still falls). Since we are perfectionists, we cannot stand this huge error and so we must find a way of preventing this problem. I'll spare you the pain of figuring it out yourself by telling you to do the following and simply trust that it comes out correctly. Of course, if you wish to find a way other than my own, then be my guest.

I did the walking in three frames(all three frames have hit_Fa: 7):
-In the first walking frame, use wait: 0 and dvy: 550.
-Second one, use wait: 0 and dvy: 550. This frame will also be the one used to stop the pet. Add itr/kind: 8 with y: Ystanding and a dvx that leads to a correction frame.
-Finally, this frame will have wait: 0 dvy: -1 and a next that leads to the first frame or one similar to it if you wish to make the walking sequence look very fluent(requres quite a few frames)

I mentioned a correction frame above. All this correction frame does is adjust the pet so that they go to the standing frame at the proper y level. I was inefficient with my method and used four frames. It could almost certainly be reduced to 2 or 3 frames, but since I am not sure, I will just tell you what I did:

-First 2 correction frames, wait: 0 next: (next correction frame) dvy: -1 dvx/z: 550. No hit_Fa of any kind!
-Second 2, wait: 0 next: (next correction frame/standing frame) dvy: 1 dvx/z: 550. again, no hit_Fa.

Anyway, that works for me, so thats why I posted it that way. I know it seems redundant, but I don't care right now. I went through enough simply trying to figure out how to fix the sinking problem, so i don't want to touch anything now that its fixed. So now we have a way from the walking frames to the standing frames, so lets go the other way.

Yeah, i should've done this first, but whatever smilie

-Standing, have the last frame in the sequence lead to a frame that checks to see if the character is still standing(use itr/kind: 8 with y: Ys and dvx that goes to the standing frames). Give this frame a next that goes to the Third frame in your walking sequence. This is very important!


[...]
Silverthorn / Blue Phoenix
~ Breaking LFE since 2008 ~

"Freeze, you're under vrest!" - Mark, probably.

» Gallery | » Sprites | » DeviantArt
Reply




Users browsing this thread: 2 Guest(s)