ID:156806
 
Ive been struggling with this for a while How can I make A perfect clone that has your exact stats and such And control it by going into it and attacking I know 3 key elements

Client.mob

client.eye

client.perspective

I dont want to use this to control actual players just a clone of your self is all Please help >_<


ALSO the problems Ive had in the past with Client.mob control is Bringing you to loading screen Logs out old mob Blank Statpanel No inventory panel which gets annoying ive come in the past with these problems and while ppl did make attempts to help I did try but to no avail I even tried making and alternate to Client.mob

mob/var/Currentmob = /mob

Im afraid that failed as well and if your gonna ask why do I need client.mob if its just a clone the point is to fight in the clone while ur original mob is somewhere safe also the Clones all have different abilities and moves

I also need a way to make it so it returns to the ORIGINAL mob/body if ur clone dies in battle Sorry for the long message but its been weeks to a month now that im struggling with one System >_<

The clones im making are yourself but with extra abilities you wouldnt have on your own so switch into the clone mob with the verbs/abilities please and thanks for all that will help
To make a perfect clone, you need to know about genetics, electronics, neurology (making sure your clone can think like you) and much more. So yeah, making a perfect clone is a huge pain in the butt.

But BYONDwise, it is rather simple. Lets say you have a special path where only clones can be defined under, for example, /Clones (with the parent_type =/mob) or even just /mob/Clones.

Define New() for this special path. Make sure you define the argument to be who you want to clone. Use this procedure to define whatever variables you need to. For example:
/Clone
New(var/mob/Self) // When the /Clone is created
if(!Self) del src // No reference = death
src.name = Self.name
...etc...

Login()
world.log << "Uh-oh! Someone logged in as a client!"
del src


As for the key three elements:

- client.mob will switch the mob that you control. This means Logout() is called on your old /mob and Login() in the new one. A person can save while being this mob and become a /mob/Clone path, something you want to avoid.

- client.perspective & client.eye can be manipulated to show how much and what you see as the center of the map, respectively.

* Now assume you have at least than two clones, how do you want to control them all? One at a time or all amass against someone?

Personally, if it was a one-clone control type of thing, I would have it that I wouldn't touch the client.mob at all. In fact, all I will do is:
- change the eye to the clone
- define under client/Move() that if the eye is not equal to the client.mob, to Move() that mob (via client.eye variable)
- Click() an enemy to attack (though I suppose you can give the clone a copy of your techniques)
- When the clone dies, the body is deleted. While this happens, the client.eye is returned back to the original body (via client.mob reference)
- When the original /mob dies, the clone dies as well, causing what I said previously.
- Have it some way to return to your original body while your clone attacks perhaps?

This type of system is like a Yamanaka body-takeover really, hence the last point. Otherwise it'll be extremely easy for the enemy to kill your original body and the clone body you were fighting with and spent so much time making becomes utterly useless.
In response to GhostAnime
GhostAnime wrote:
To make a perfect clone, you need to know about genetics, electronics, neurology (making sure your clone can think like you) and much more. So yeah, making a perfect clone is a huge pain in the butt.

But BYONDwise, it is rather simple. Lets say you have a special path where only clones can be defined under, for example, /Clones (with the parent_type =/mob) or even just /mob/Clones.

Define New() for this special path. Make sure you define the argument to be who you want to clone. Use this procedure to define whatever variables you need to. For example:
/Clone
> New(var/mob/Self) // When the /Clone is created
> if(!Self) del src // No reference = death
> src.name = Self.name
> ...etc...
>
> Login()
> world.log << "Uh-oh! Someone logged in as a client!"
> del src
>

As for the key three elements:

- client.mob will switch the mob that you control. This means Logout() is called on your old /mob and Login() in the new one. A person can save while being this mob and become a /mob/Clone path, something you want to avoid.

- client.perspective & client.eye can be manipulated to show how much and what you see as the center of the map, respectively.

* Now assume you have at least than two clones, how do you want to control them all? One at a time or all amass against someone?

Personally, if it was a one-clone control type of thing, I would have it that I wouldn't touch the client.mob at all. In fact, all I will do is:
- change the eye to the clone
- define under client/Move() that if the eye is not equal to the client.mob, to Move() that mob (via client.eye variable)
- Click() an enemy to attack (though I suppose you can give the clone a copy of your techniques)
- When the clone dies, the body is deleted. While this happens, the client.eye is returned back to the original body (via client.mob reference)
- When the original /mob dies, the clone dies as well, causing what I said previously.
- Have it some way to return to your original body while your clone attacks perhaps?

This type of system is like a Yamanaka body-takeover really, hence the last point. Otherwise it'll be extremely easy for the enemy to kill your original body and the clone body you were fighting with and spent so much time making becomes utterly useless.

Right it is Naruto related im trying to make the 6 paths of pein so im guessing there isnt really an alternative to client.mob for full mob control jutsus coming from it and such Ill see what i can do but thank you greatly for the help I think I got an idea of what to do now Just gotta figure out a way to keep the old mob from logging out if possible
In response to DarkDevilBat
As mentioned in my long post, the reason why you are logging out is because you are changing the client.mob, causing Logout() to be called on your old /mob and Login() on your new /mob
In response to GhostAnime
I have a system which use client.mob for mob switching which is causing the old mob to logout so what can I do to logout to make sure when your in a certain mode you cant logout regardless?

also not sure if the would cause the client.mob = M switch to not work but meh
In response to DarkDevilBat
Changing the mob of a client calls Logout() on the current mob and Login() on the new one. The DM Reference(F1 in Dream Maker) explains at the bottom of the entries for both procedures how to differentiate between a mob switch and an actual join/quit.
In response to Kaiochao
Kaiochao wrote:
Changing the mob of a client calls Logout() on the current mob and Login() on the new one. The DM Reference(F1 in Dream Maker) explains at the bottom of the entries for both procedures how to differentiate between a mob switch and an actual join/quit.

"Default action:
None.
One may wish to distinguish between a player who has disconnected from the game and one who is simply switching from one mob to another. In the case of a player switching to another mob, by the time Logout() is called, the original mob's key will be null, whereas the key will still be non-null in the case of a player disconnecting from the game."

yes but what would I have to set my key to in order to accomplish that in other words how could I make the key non-null just typing usr.key=non-null wont work or do I have to make a var for non?
In response to DarkDevilBat
Did you even read my post ([link])? I mentioned a method of how to do so. And I mean read, as in actually reading every line, not skimming through.
In response to DarkDevilBat
You can't prevent logout. You can however choose to control how you react to it.

Lummox JR
In response to DarkDevilBat
There's a way to control a mob without making them log out.
Using client.eye,client.eye_perspective,move(),step() Making an attack start at the mob,using for(),get_step().