[Release] Robo/Dragon Auto Hatcher

Newbie Spellweaver
Joined
Feb 21, 2008
Messages
39
Reaction score
0
Meh, here it is-
,When you double click you robo egg/dragon egg it'll replace your pet with baby robo/baby dragon.
Sexy, I know.

Also, in CSItemHandler (something like that) purchasing robo/ dragon may be blocked, just find the id in that file, and just delete it!

In SpawnPetHandler.java
Chek if you have those imports

Code:
import java.awt.Point;
import java.io.File;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.client.MapleInventoryType;
import net.sf.odinms.client.MaplePet;
import net.sf.odinms.client.PetDataFactory;
import net.sf.odinms.client.SkillFactory;
import net.sf.odinms.client.messages.ServernoticeMapleClientMessageCallback;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.provider.MapleData;
import net.sf.odinms.provider.MapleDataProvider;
import net.sf.odinms.provider.MapleDataProviderFactory;
import net.sf.odinms.provider.MapleDataTool;
import net.sf.odinms.server.MapleInventoryManipulator;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
Add
Code:
private static MapleDataProvider dataRoot = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Item.wz"));
Before

Code:
@Override
    public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
Replace

Code:
// Handle dragons
                    if (c.getPlayer().getInventory(MapleInventoryType.CASH).getItem(slot).getItemId() == 5000028) {
                             new ServernoticeMapleClientMessageCallback(5, c).dropMessage("Dragon eggs cannot currently be hatched.");
                            c.getSession().write(MaplePacketCreator.enableActions());
                             return;
                     }
With

Code:
int petid = c.getPlayer().getInventory(MapleInventoryType.CASH).getItem(slot).getItemId();           
               
        // Handle dragons
        if (petid == 5000028) {
                    if(c.getPlayer().haveItem(5000029)) {
                        new ServernoticeMapleClientMessageCallback(5, c).dropMessage("You cant hatch your Dragon egg if you already have Baby Dragon.");
                             c.getSession().write(MaplePacketCreator.enableActions());
                             return;
                    }else{
            MapleData petData = dataRoot.getData("Pet/" + petid + ".img");
               int evolveid = MapleDataTool.getInt("info/evol1", petData);
                        
                        int petId = MaplePet.createPet(evolveid);
                        if (petId == -1) {
                    return;
                }
                                MaplePet.deletePet(petid, c);
                MapleInventoryManipulator.addById(c,evolveid, (short) 1, "Apperantly, Your Dragon egg hatched!.", null, petId);
                                MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false);
                        c.getSession().write(MaplePacketCreator.enableActions());
            return;
                    }
        }

                // Handle robo
        if (petid == 5000047) {
                    if(c.getPlayer().haveItem(5000048)) {
                        new ServernoticeMapleClientMessageCallback(5, c).dropMessage("You cant hatch your Robo egg if you already have Baby Robo."); //PWNED
                             c.getSession().write(MaplePacketCreator.enableActions());
                             return;
                    }else{
            MapleData petData = dataRoot.getData("Pet/" + petid + ".img"); //wz path
               int evolveid = MapleDataTool.getInt("info/evol1", petData);
                        
                        int petId = MaplePet.createPet(evolveid);
                        if (petId == -1) {
                    return;
                }
                                MaplePet.deletePet(petid, c); // lololololol
                MapleInventoryManipulator.addById(c,evolveid, (short) 1, "Apperantly, Your Robo egg hatched!.", null, petId); // YIPPIE!
                                MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false); //short 1 
                        c.getSession().write(MaplePacketCreator.enableActions());
            return;
                    }
        }
Now go to MaplePet.java

Add

Code:
public static void deletePet(int itemid,MapleClient c) {
        try {
                       IItem player = c.getPlayer().getInventory(MapleInventoryType.CASH).findById(itemid);
            Connection con = DatabaseConnection.getConnection();
            PreparedStatement ps = con.prepareStatement("DELETE FROM pets WHERE `petid` = ?");
            ps.setInt(1,player.getPetId());
            ps.executeUpdate();
            ps.close();

        } catch (SQLException ex) {
            Logger.getLogger(MaplePet.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
After

Code:
public static int createPet(int itemid) {
        try {
            MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance();

            Connection con = DatabaseConnection.getConnection();
            PreparedStatement ps = con.prepareStatement("INSERT INTO pets (name, level, closeness, fullness) VALUES (?, ?, ?, ?)");
            ps.setString(1, mii.getName(itemid));
            ps.setInt(2, 1);
            ps.setInt(3, 0);
            ps.setInt(4, 100);
            ps.executeUpdate();
            ResultSet rs = ps.getGeneratedKeys();
            rs.next();
            int ret = rs.getInt(1);
            rs.close();
            ps.close();
            
            return ret;
        } catch (SQLException ex) {
            Logger.getLogger(MaplePet.class.getName()).log(Level.SEVERE, null, ex);
            return -1;
        }
        
        } 

// ADD IT RIGHT HERE
Your now done!
If you get an error about not having HaveItem syntax, here's the function:

Code:
public boolean haveItem(int itemid) {
        return haveItem(itemid, 1);
    }
Credits to Bav for writing the script. Credits to me for fixing and cleaning.
ENJOYZ!
 
Last edited:
Re: Robo/Dragon Auto Hatcher

good job ;D
and the file is BuyCSItemHandler
you should remove this : 5000028

and add this in MapleCharacter.java :

public boolean haveItem(int itemid) {
return haveItem(itemid, 1);
}

public boolean haveItem(int itemid, int quantity) {
return haveItem(itemid, quantity, false, true);
}
 
Re: Robo/Dragon Auto Hatcher

Your code is -exactly- the same as the one in Flowsion.
Go look at a clean Flowsion source. They've had it for quite a few revs.

Edit: Flowsion doesn't have Robo though, I'm not sure if anything else does.

He cleaned it up a little and added robo here
PHP:
int petid = c.getPlayer().getInventory(MapleInventoryType.CASH).getItem(slot).getItemId();           
               
        // Handle dragons
        if (petid == 5000028) {
                    if(c.getPlayer().haveItem(5000029)) {
                        new ServernoticeMapleClientMessageCallback(5, c).dropMessage("You cant hatch your Dragon egg if you already have Baby Dragon.");
                             c.getSession().write(MaplePacketCreator.enableActions());
                             return;
                    }else{
            MapleData petData = dataRoot.getData("Pet/" + petid + ".img");
               int evolveid = MapleDataTool.getInt("info/evol1", petData);
                        
                        int petId = MaplePet.createPet(evolveid);
                        if (petId == -1) {
                    return;
                }
                                MaplePet.deletePet(petid, c);
                MapleInventoryManipulator.addById(c,evolveid, (short) 1, "Apperantly, Your Dragon egg hatched!.", null, petId);
                                MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false);
                        c.getSession().write(MaplePacketCreator.enableActions());
            return;
                    }
        }

                // Handle robo
        if (petid == 5000047) {
                    if(c.getPlayer().haveItem(5000048)) {
                        new ServernoticeMapleClientMessageCallback(5, c).dropMessage("You cant hatch your Robo egg if you already have Baby Robo.");
                             c.getSession().write(MaplePacketCreator.enableActions());
                             return;
                    }else{
            MapleData petData = dataRoot.getData("Pet/" + petid + ".img");
               int evolveid = MapleDataTool.getInt("info/evol1", petData);
                        
                        int petId = MaplePet.createPet(evolveid);
                        if (petId == -1) {
                    return;
                }
                                MaplePet.deletePet(petid, c);
                MapleInventoryManipulator.addById(c,evolveid, (short) 1, "Apperantly, Your Robo egg hatched!.", null, petId);
                                MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false);
                        c.getSession().write(MaplePacketCreator.enableActions());
            return;
                    }
        }
Good job xD
 
All you fucking idiots why the hell do I bother releasing any shit here?
Ill you guys just complain -- If you guys dont want it, fine, Ill remove it.. You ungrateful bastards.
 
Re: Robo/Dragon Auto Hatcher

He cleaned it up a little and added robo here
PHP:
int petid = c.getPlayer().getInventory(MapleInventoryType.CASH).getItem(slot).getItemId();           
               
        // Handle dragons
        if (petid == 5000028) {
                    if(c.getPlayer().haveItem(5000029)) {
                        new ServernoticeMapleClientMessageCallback(5, c).dropMessage("You cant hatch your Dragon egg if you already have Baby Dragon.");
                             c.getSession().write(MaplePacketCreator.enableActions());
                             return;
                    }else{
            MapleData petData = dataRoot.getData("Pet/" + petid + ".img");
               int evolveid = MapleDataTool.getInt("info/evol1", petData);
                        
                        int petId = MaplePet.createPet(evolveid);
                        if (petId == -1) {
                    return;
                }
                                MaplePet.deletePet(petid, c);
                MapleInventoryManipulator.addById(c,evolveid, (short) 1, "Apperantly, Your Dragon egg hatched!.", null, petId);
                                MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false);
                        c.getSession().write(MaplePacketCreator.enableActions());
            return;
                    }
        }

                // Handle robo
        if (petid == 5000047) {
                    if(c.getPlayer().haveItem(5000048)) {
                        new ServernoticeMapleClientMessageCallback(5, c).dropMessage("You cant hatch your Robo egg if you already have Baby Robo.");
                             c.getSession().write(MaplePacketCreator.enableActions());
                             return;
                    }else{
            MapleData petData = dataRoot.getData("Pet/" + petid + ".img");
               int evolveid = MapleDataTool.getInt("info/evol1", petData);
                        
                        int petId = MaplePet.createPet(evolveid);
                        if (petId == -1) {
                    return;
                }
                                MaplePet.deletePet(petid, c);
                MapleInventoryManipulator.addById(c,evolveid, (short) 1, "Apperantly, Your Robo egg hatched!.", null, petId);
                                MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false);
                        c.getSession().write(MaplePacketCreator.enableActions());
            return;
                    }
        }
Good job xD


Someone who complements my work, thank you.
 
Back