Changeset 59c2dd0c6381876fa119b4c740931f0e843d5218

Show
Ignore:
Timestamp:
06/16/07 17:10:09 (2 years ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1182006609 +0200
git-parent:

[39ff568680edc3ace37b2a005d4ec629da08f2e4]

git-author:
Christopher Jung <bktheg@web.de> 1182006609 +0200
Message:

Weitere Funktionen von Ships nach Ship verschoben

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/net/driftingsouls/ds2/server/ships/Ship.java

    ree931ae r59c2dd0  
    3737 
    3838import net.driftingsouls.ds2.server.ContextCommon; 
     39import net.driftingsouls.ds2.server.Location; 
    3940import net.driftingsouls.ds2.server.Offizier; 
    4041import net.driftingsouls.ds2.server.cargo.Cargo; 
     42import net.driftingsouls.ds2.server.cargo.ItemCargoEntry; 
    4143import net.driftingsouls.ds2.server.cargo.Resources; 
    4244import net.driftingsouls.ds2.server.cargo.modules.Module; 
    4345import net.driftingsouls.ds2.server.cargo.modules.Modules; 
     46import net.driftingsouls.ds2.server.config.Item; 
    4447import net.driftingsouls.ds2.server.config.ItemEffect; 
    4548import net.driftingsouls.ds2.server.entities.User; 
     49import net.driftingsouls.ds2.server.entities.UserFlagschiffLocation; 
    4650import net.driftingsouls.ds2.server.framework.Common; 
    4751import net.driftingsouls.ds2.server.framework.Configuration; 
     52import net.driftingsouls.ds2.server.framework.ContextLocalMessage; 
    4853import net.driftingsouls.ds2.server.framework.ContextMap; 
    4954import net.driftingsouls.ds2.server.framework.Loggable; 
    5055import net.driftingsouls.ds2.server.framework.db.Database; 
    5156import net.driftingsouls.ds2.server.framework.db.SQLResultRow; 
     57import net.driftingsouls.ds2.server.ships.Ships.DockMode; 
    5258import net.driftingsouls.ds2.server.ships.Ships.ModuleEntry; 
     59import net.driftingsouls.ds2.server.tasks.Task; 
    5360import net.driftingsouls.ds2.server.tasks.Taskmanager; 
    5461 
     
    6572@Table(name="ships") 
    6673public class Ship implements Loggable { 
     74        /** 
     75         * Objekt mit Funktionsmeldungen 
     76         */ 
     77        public static final ContextLocalMessage MESSAGE = new ContextLocalMessage(); 
     78         
    6779        @Id @GeneratedValue 
    6880        private int id; 
     
    11801192        public void generateLoot( int destroyer ) { 
    11811193                org.hibernate.Session db = ContextMap.getContext().getDB(); 
    1182                                 
     1194                 
    11831195                ShipTypeData shiptype = this.getTypeData(); 
    11841196         
     
    12911303         
    12921304        /** 
     1305         * Entfernt das Schiff aus der Datenbank 
     1306         */ 
     1307        public void destroy() { 
     1308                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     1309                 
     1310                // Checken wir mal ob die Flotte danach noch bestehen darf.... 
     1311                if( this.fleet != null ) { 
     1312                        int fleetcount = (Integer)db.createQuery("select count(*) from Ship where fleet=?") 
     1313                                .setInteger(0, fleet.getId()) 
     1314                                .iterate().next(); 
     1315                        if( fleetcount <= 2 ) { 
     1316                                db.delete(this.fleet); 
     1317                                this.fleet = null; 
     1318                        } 
     1319                } 
     1320                 
     1321                // Ist das Schiff selbst gedockt? -> Abdocken 
     1322                if( !this.docked.equals("") && (this.docked.charAt(0) != 'l') ) { 
     1323                        Ships.dock( DockMode.UNDOCK, this.owner.getID(), Integer.parseInt(this.docked), new int[] {this.id} ); 
     1324                } 
     1325         
     1326                // Wenn es das Flagschiff ist -> Flagschiff auf null setzen 
     1327                if( (this.owner.getFlagschiff() != null) && (this.id == this.owner.getFlagschiff().getID()) ) { 
     1328                        this.owner.setFlagschiff(null); 
     1329                } 
     1330                 
     1331                // Evt. gedockte Schiffe abdocken 
     1332                ShipTypeData type = this.getTypeData(); 
     1333                if( type.getADocks() != 0 ) { 
     1334                        Ships.dock( DockMode.UNDOCK, this.owner.getID(), this.id, null );        
     1335                } 
     1336                if( type.getJDocks() != 0 ) { 
     1337                        Ships.dock( DockMode.START, this.owner.getID(), this.id, null );         
     1338                } 
     1339                 
     1340                // Gibts bereits eine Loesch-Task? Wenn ja, dann diese entfernen 
     1341                Taskmanager taskmanager = Taskmanager.getInstance(); 
     1342                Task[] tasks = taskmanager.getTasksByData( Taskmanager.Types.SHIP_DESTROY_COUNTDOWN, Integer.toString(this.id), "*", "*"); 
     1343                for( int i=0; i < tasks.length; i++ ) { 
     1344                        taskmanager.removeTask(tasks[i].getTaskID());    
     1345                } 
     1346                 
     1347                // Falls eine respawn-Zeit gesetzt ist und ein Respawn-Image existiert -> respawn-Task setzen 
     1348                if( this.respawn != 0 ) { 
     1349                        Ship negship = (Ship)db.get(Ship.class, -this.id); 
     1350                        if( negship != null ) { 
     1351                                taskmanager.addTask(Taskmanager.Types.SHIP_RESPAWN_COUNTDOWN, this.respawn, Integer.toString(-this.id), "", "");         
     1352                        } 
     1353                } 
     1354         
     1355                // Und nun loeschen wir es... 
     1356                db.createQuery("delete from Offizier where dest=?") 
     1357                        .setString(0, "s "+this.id) 
     1358                        .executeUpdate(); 
     1359                 
     1360                db.createQuery("delete from Jump where shipid=?") 
     1361                        .setInteger(0, this.id) 
     1362                        .executeUpdate(); 
     1363         
     1364                ContextMap.getContext().getDatabase().update("DELETE FROM werften WHERE shipid=",this.id); 
     1365                 
     1366                db.createQuery("delete from ShipModules where id=?") 
     1367                        .setInteger(0, this.id) 
     1368                        .executeUpdate(); 
     1369                db.delete(this); 
     1370        } 
     1371         
     1372        /** 
     1373         * Uebergibt ein Schiff an einen anderen Spieler. Gedockte/Gelandete Schiffe 
     1374         * werden, falls moeglich, mituebergeben. 
     1375         * @param newowner Der neue Besitzer des Schiffs 
     1376         * @param testonly Soll nur getestet (<code>true</code>) oder wirklich uebergeben werden (<code>false</code>) 
     1377         * @return <code>true</code>, falls ein Fehler bei der Uebergabe aufgetaucht ist (Uebergabe nicht erfolgreich) 
     1378         */ 
     1379        public boolean consign( User newowner, boolean testonly ) { 
     1380                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     1381                 
     1382                if( this.id < 0 ) { 
     1383                        throw new UnsupportedOperationException("consign kann nur bei Schiffen mit positiver ID ausgefuhert werden!"); 
     1384                } 
     1385                 
     1386                if( newowner == null ) { 
     1387                        MESSAGE.get().append("Der angegebene Spieler existiert nicht"); 
     1388                        return true; 
     1389                } 
     1390                 
     1391                if( (newowner.getVacationCount() != 0) && (newowner.getWait4VacationCount() == 0) ) { 
     1392                        MESSAGE.get().append("Sie k&ouml;nnen keine Schiffe an Spieler &uuml;bergeben, welche sich im Vacation-Modus befinden"); 
     1393                        return true; 
     1394                } 
     1395                         
     1396                if( newowner.hasFlag( User.FLAG_NO_SHIP_CONSIGN ) ) { 
     1397                        MESSAGE.get().append("Sie k&ouml;nnen diesem Spieler keine Schiffe &uuml;bergeben"); 
     1398                } 
     1399                 
     1400                if( this.lock != null ) { 
     1401                        MESSAGE.get().append("Die '"+this.name+"'("+this.id+") kann nicht &uuml;bergeben werden, da diese in ein Quest eingebunden ist"); 
     1402                        return true; 
     1403                } 
     1404                 
     1405                if( this.status.indexOf("noconsign") != -1 ) { 
     1406                        MESSAGE.get().append("Die '"+this.name+"' ("+this.id+") kann nicht &uuml;bergeben werden"); 
     1407                        return true; 
     1408                } 
     1409                 
     1410                UserFlagschiffLocation flagschiff = this.owner.getFlagschiff(); 
     1411                 
     1412                boolean result = true;           
     1413                if( (flagschiff != null) && (flagschiff.getID() == this.id) ) { 
     1414                        result = newowner.hasFlagschiffSpace(); 
     1415                } 
     1416         
     1417                if( !result  ) { 
     1418                        MESSAGE.get().append("Die "+this.name+" ("+this.id+") kann nicht &uuml;bergeben werden, da der Spieler bereits &uuml;ber ein Flagschiff verf&uuml;gt"); 
     1419                        return true; 
     1420                } 
     1421                 
     1422                User oldOwner = this.owner; 
     1423                 
     1424                if( !testonly ) {        
     1425                        this.history += "&Uuml;bergeben am [tick="+ContextMap.getContext().get(ContextCommon.class).getTick()+"] an "+newowner.getName()+" ("+newowner.getID()+")\n"; 
     1426                                 
     1427                        this.owner = newowner; 
     1428                        db.createQuery("update Offizier set userid=? where dest=?") 
     1429                                .setEntity(0, newowner) 
     1430                                .setString(1, "s "+this.id) 
     1431                                .executeUpdate(); 
     1432         
     1433                        Common.dblog( "consign", Integer.toString(this.id), Integer.toString(newowner.getID()),  
     1434                                        "pos", new Location(this.system, this.x, this.y).toString(), 
     1435                                        "shiptype", Integer.toString(this.type) ); 
     1436                         
     1437                        if( (flagschiff != null) && (flagschiff.getType() == UserFlagschiffLocation.Type.SHIP) &&  
     1438                                (flagschiff.getID() == this.id) ) { 
     1439                                oldOwner.setFlagschiff(null); 
     1440                                newowner.setFlagschiff(this.id); 
     1441                        } 
     1442                } 
     1443                 
     1444                StringBuilder message = MESSAGE.get(); 
     1445                List s = db.createQuery("from Ship where id>0 and docked in (?,?)") 
     1446                        .setString(0, Integer.toString(this.id)) 
     1447                        .setString(1, "l "+this.id) 
     1448                        .list(); 
     1449                for( Iterator iter=s.iterator(); iter.hasNext(); ) { 
     1450                        Ship aship = (Ship)iter.next(); 
     1451                        int oldlength = message.length(); 
     1452                        boolean tmp = aship.consign(newowner, testonly ); 
     1453                        if( tmp && !testonly ) { 
     1454                                Ships.dock( (aship.getDocked().charAt(0) == 'l' ? DockMode.START : DockMode.UNDOCK), newowner.getID(),this.id, new int[] {aship.getId()});                       
     1455                        } 
     1456                         
     1457                        if( oldlength != message.length() ) { 
     1458                                message.insert(oldlength-1, "<br />"); 
     1459                        } 
     1460                } 
     1461                 
     1462                Cargo cargo = this.cargo; 
     1463                List<ItemCargoEntry> itemlist = cargo.getItems(); 
     1464                for( ItemCargoEntry item : itemlist ) { 
     1465                        Item itemobject = item.getItemObject(); 
     1466                        if( itemobject.isUnknownItem() ) { 
     1467                                newowner.addKnownItem(item.getItemID()); 
     1468                        } 
     1469                } 
     1470         
     1471                return false; 
     1472        } 
     1473         
     1474        /** 
     1475         * Entfernt das Schiff aus der Flotte.  
     1476         */ 
     1477        public void removeFromFleet() { 
     1478                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     1479                 
     1480                if( this.id < 0 ) { 
     1481                        throw new UnsupportedOperationException("removeFromFleet kann nur bei Schiffen mit positiver ID ausgefuhert werden!"); 
     1482                } 
     1483                 
     1484                if( this.fleet == null ) { 
     1485                        return; 
     1486                } 
     1487 
     1488                int fleetcount = (Integer)db.createQuery("select count(*) from Ship where fleet=? and id>0") 
     1489                        .setInteger(0, fleet.getId()) 
     1490                        .iterate().next(); 
     1491                                 
     1492                if( fleetcount > 2 ) { 
     1493                        this.fleet = null; 
     1494                        MESSAGE.get().append("aus der Flotte ausgetreten"); 
     1495                }  
     1496                else { 
     1497                        db.delete(this.fleet); 
     1498                        this.fleet = null; 
     1499                        MESSAGE.get().append("Flotte aufgel&ouml;&szlig;t"); 
     1500                } 
     1501        } 
     1502         
     1503        /** 
    12931504         * Gibt die Liste aller Flags zurueck, ueber die der angegebene 
    12941505         * Schiffstyp verfuegt 
     
    13571568                         
    13581569                        Database database = ContextMap.getContext().getDatabase(); 
    1359                         SQLResultRow shipdata = database.prepare("SELECT type,status FROM ships WHERE id>0 AND id= ?") 
     1570                        SQLResultRow shipdata = database.prepare("SELECT type,status FROM ships WHERE id= ?") 
    13601571                                .first(shiptype); 
    13611572                         
  • src/net/driftingsouls/ds2/server/ships/Ships.java

    ree931ae r59c2dd0  
    3030import net.driftingsouls.ds2.server.battles.Battle; 
    3131import net.driftingsouls.ds2.server.cargo.Cargo; 
    32 import net.driftingsouls.ds2.server.cargo.ItemCargoEntry; 
    3332import net.driftingsouls.ds2.server.cargo.modules.Modules; 
    34 import net.driftingsouls.ds2.server.config.Item; 
    3533import net.driftingsouls.ds2.server.config.Rassen; 
    3634import net.driftingsouls.ds2.server.config.StarSystem; 
    3735import net.driftingsouls.ds2.server.config.Systems; 
    3836import net.driftingsouls.ds2.server.entities.User; 
    39 import net.driftingsouls.ds2.server.entities.UserFlagschiffLocation; 
    4037import net.driftingsouls.ds2.server.framework.CacheMap; 
    4138import net.driftingsouls.ds2.server.framework.Common; 
     
    5047import net.driftingsouls.ds2.server.scripting.Quests; 
    5148import net.driftingsouls.ds2.server.scripting.ScriptParser; 
    52 import net.driftingsouls.ds2.server.tasks.Task; 
    53 import net.driftingsouls.ds2.server.tasks.Taskmanager; 
    5449 
    5550import org.apache.commons.lang.StringUtils; 
     
    15991594         */ 
    16001595        public static void destroy(int shipid) { 
    1601                 Database db = ContextMap.getContext().getDatabase(); 
    1602                  
    1603                 SQLResultRow ship = db.first("SELECT id,fleet,owner,docked,type,status,respawn FROM ships WHERE id='",shipid,"'"); 
    1604                  
    1605                 if( ship.isEmpty() ) { 
    1606                         return;  
    1607                 } 
    1608                  
    1609                 SQLResultRow user = db.first("SELECT id,flagschiff FROM users WHERE id='",ship.getInt("owner"),"'");     
    1610          
    1611                 // Checken wir mal ob die Flotte danach noch bestehen darf.... 
    1612                 if( ship.getInt("fleet") != 0 ) { 
    1613                         int fleetcount = db.first("SELECT count(*) count FROM ships WHERE fleet=",ship.getInt("fleet")).getInt("count"); 
    1614                         if( fleetcount <= 2 ) { 
    1615                                 db.update("DELETE FROM ship_fleets WHERE id=",ship.getInt("fleet")); 
    1616                                 db.update("UPDATE ships SET fleet=null WHERE fleet=",ship.getInt("fleet")); 
    1617                         } 
    1618                 } 
    1619                  
    1620                 // Ist das Schiff selbst gedockt? -> Abdocken 
    1621                 if( !ship.getString("docked").equals("") && (ship.getString("docked").charAt(0) != 'l') ) { 
    1622                         dock( DockMode.UNDOCK, ship.getInt("owner"), Integer.parseInt(ship.getString("docked")), new int[] {ship.getInt("id")} ); 
    1623                 } 
    1624          
    1625                 // Wenn es das Flagschiff ist -> Flagschiff auf null setzen 
    1626                 if( ship.getInt("id") == user.getInt("flagschiff") ) { 
    1627                         db.update("UPDATE users SET flagschiff=null WHERE id=",ship.getInt("owner")); 
    1628                 } 
    1629                  
    1630                 // Evt. gedockte Schiffe abdocken 
    1631                 ShipTypeData type = Ship.getShipType( ship ); 
    1632                 if( type.getADocks() != 0 ) { 
    1633                         dock( DockMode.UNDOCK, ship.getInt("owner"), ship.getInt("id"), null );  
    1634                 } 
    1635                 if( type.getJDocks() != 0 ) { 
    1636                         dock( DockMode.START, ship.getInt("owner"), ship.getInt("id"), null );   
    1637                 } 
    1638                  
    1639                 // Gibts bereits eine Loesch-Task? Wenn ja, dann diese entfernen 
    1640                 Taskmanager taskmanager = Taskmanager.getInstance(); 
    1641                 Task[] tasks = taskmanager.getTasksByData( Taskmanager.Types.SHIP_DESTROY_COUNTDOWN, Integer.toString(ship.getInt("id")), "*", "*"); 
    1642                 for( int i=0; i < tasks.length; i++ ) { 
    1643                         taskmanager.removeTask(tasks[i].getTaskID());    
    1644                 } 
    1645                  
    1646                 // Falls eine respawn-Zeit gesetzt ist und ein Respawn-Image existiert -> respawn-Task setzen 
    1647                 if( ship.getInt("respawn") != 0 ) { 
    1648                         int negid = db.first("SELECT id FROM ships WHERE id='",(-shipid),"'").getInt("id"); 
    1649                         if( negid < 0 ) { 
    1650                                 taskmanager.addTask(Taskmanager.Types.SHIP_RESPAWN_COUNTDOWN, ship.getInt("respawn"), Integer.toString(negid), "", "");  
    1651                         } 
    1652                 } 
    1653          
    1654                 // Und nun loeschen wir es... 
    1655                 db.update("DELETE FROM offiziere WHERE dest='s ",ship.getInt("id"),"'"); 
    1656                 db.update("DELETE FROM jumps WHERE shipid=",ship.getInt("id")); 
    1657                  
    1658                 db.update("DELETE FROM werften WHERE shipid=",ship.getInt("id")); 
    1659                 db.update("DELETE FROM ships_modules WHERE id=",ship.getInt("id")); 
    1660                 db.update("DELETE FROM ships WHERE id=",ship.getInt("id")); 
     1596                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     1597 
     1598                Ship ship = (Ship)db.get(Ship.class, shipid); 
     1599                 
     1600                ship.destroy(); 
     1601                 
     1602                MESSAGE.get().append(Ship.MESSAGE.getMessage()); 
    16611603        } 
    16621604         
     
    16791621         * werden, falls moeglich, mituebergeben. 
    16801622         * @param user Der aktuelle Besitzer des Schiffs 
    1681          * @param ship Das zu uebergebende Schiff 
     1623         * @param shipRow Das zu uebergebende Schiff 
    16821624         * @param newowner Der neue Besitzer des Schiffs 
    16831625         * @param testonly Soll nur getestet (<code>true</code>) oder wirklich uebergeben werden (<code>false</code>) 
    16841626         * @return <code>true</code>, falls ein Fehler bei der Uebergabe aufgetaucht ist (Uebergabe nicht erfolgreich) 
    16851627         */ 
    1686         public static boolean consign( User user, SQLResultRow ship, User newowner, boolean testonly ) { 
    1687                 if( newowner == null ) { 
    1688                         MESSAGE.get().append("Der angegebene Spieler existiert nicht"); 
    1689                         return true; 
    1690                 } 
    1691                  
    1692                 if( (newowner.getVacationCount() != 0) && (newowner.getWait4VacationCount() == 0) ) { 
    1693                         MESSAGE.get().append("Sie k&ouml;nnen keine Schiffe an Spieler &uuml;bergeben, welche sich im Vacation-Modus befinden"); 
    1694                         return true; 
    1695                 } 
    1696                          
    1697                 if( newowner.hasFlag( User.FLAG_NO_SHIP_CONSIGN ) ) { 
    1698                         MESSAGE.get().append("Sie k&ouml;nnen diesem Spieler keine Schiffe &uuml;bergeben"); 
    1699                 } 
    1700                  
    1701                 if( ship.getString("lock").length() != 0 ) { 
    1702                         MESSAGE.get().append("Die '"+ship.getString("name")+"'("+ship.getInt("id")+") kann nicht &uuml;bergeben werden, da diese in ein Quest eingebunden ist"); 
    1703                         return true; 
    1704                 } 
    1705                  
    1706                 if( ship.getString("status").indexOf("noconsign") != -1 ) { 
    1707                         MESSAGE.get().append("Die '"+ship.getString("name")+"' ("+ship.getInt("id")+") kann nicht &uuml;bergeben werden"); 
    1708                         return true; 
    1709                 } 
    1710                  
    1711                 UserFlagschiffLocation flagschiff = user.getFlagschiff(); 
    1712                  
    1713                 boolean result = true;           
    1714                 if( (flagschiff != null) && (flagschiff.getID() == ship.getInt("id")) ) { 
    1715                         result = newowner.hasFlagschiffSpace(); 
    1716                 } 
    1717          
    1718                 if( !result  ) { 
    1719                         MESSAGE.get().append("Die "+ship.getString("name")+" ("+ship.getInt("id")+") kann nicht &uuml;bergeben werden, da der Spieler bereits &uuml;ber ein Flagschiff verf&uuml;gt"); 
    1720                         return true; 
    1721                 } 
    1722                  
    1723                 Database db = ContextMap.getContext().getDatabase(); 
    1724                          
    1725                 if( !testonly ) {        
    1726                         ship.put("history", ship.getString("history")+"&Uuml;bergeben am [tick="+ContextMap.getContext().get(ContextCommon.class).getTick()+"] an "+newowner.getName()+" ("+newowner.getID()+")\n"); 
    1727                                  
    1728                         db.prepare("UPDATE ships SET owner= ?,fleet=null,history= ? ,alarm='0' WHERE id= ? AND owner= ?") 
    1729                                         .update(newowner.getID(), ship.getString("history"), ship.getInt("id"), ship.getInt("owner")); 
    1730                         db.update("UPDATE offiziere SET userid='",newowner.getID(),"' WHERE dest='s ",ship.getInt("id"),"'"); 
    1731          
    1732                         Common.dblog( "consign", Integer.toString(ship.getInt("id")), Integer.toString(newowner.getID()),        
    1733                                         "pos", Location.fromResult(ship).toString(), 
    1734                                         "shiptype", Integer.toString(ship.getInt("type")) ); 
    1735                          
    1736                         if( (flagschiff != null) && (flagschiff.getType() == UserFlagschiffLocation.Type.SHIP) &&  
    1737                                 (flagschiff.getID() == ship.getInt("id")) ) { 
    1738                                 user.setFlagschiff(null); 
    1739                                 newowner.setFlagschiff(ship.getInt("id")); 
    1740                         } 
    1741                 } 
    1742                  
    1743                 StringBuilder message = MESSAGE.get(); 
    1744                 SQLQuery s = db.query("SELECT * FROM ships WHERE id>0 AND docked IN ('",ship.getInt("id")+"','l "+ship.getInt("id")+"')"); 
    1745                 while( s.next() ) { 
    1746                         int oldlength = message.length(); 
    1747                         boolean tmp = consign( user, s.getRow(), newowner, testonly ); 
    1748                         if( tmp && !testonly ) { 
    1749                                 dock( (s.getString("docked").charAt(0) == 'l' ? DockMode.START : DockMode.UNDOCK), newowner.getID(), ship.getInt("id"), new int[] {s.getInt("id")});                     
    1750                         } 
    1751                          
    1752                         if( oldlength != message.length() ) { 
    1753                                 message.insert(oldlength-1, "<br />"); 
    1754                         } 
    1755                 } 
    1756                 s.free(); 
    1757                  
    1758                 Cargo cargo = new Cargo( Cargo.Type.STRING, ship.getString("cargo") ); 
    1759                 List<ItemCargoEntry> itemlist = cargo.getItems(); 
    1760                 for( ItemCargoEntry item : itemlist ) { 
    1761                         Item itemobject = item.getItemObject(); 
    1762                         if( itemobject.isUnknownItem() ) { 
    1763                                 newowner.addKnownItem(item.getItemID()); 
    1764                         } 
    1765                 } 
    1766          
    1767                 return false; 
     1628        public static boolean consign( User user, SQLResultRow shipRow, User newowner, boolean testonly ) { 
     1629                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     1630 
     1631                Ship ship = (Ship)db.get(Ship.class, shipRow.getInt("id")); 
     1632                 
     1633                boolean result = ship.consign(newowner, testonly); 
     1634                 
     1635                MESSAGE.get().append(Ship.MESSAGE.getMessage()); 
     1636                 
     1637                return result; 
    17681638        } 
    17691639         
     
    18551725        } 
    18561726         
    1857         private static Map<Integer,Integer> fleetCountList = Collections.synchronizedMap(new CacheMap<Integer,Integer>(500)); 
    1858          
    18591727        /** 
    18601728         * Entfernt das Schiff aus der Flotte.  
    1861          * @param ship Die SQL-Ergebniszeile des Schiffs 
    1862          */ 
    1863         public static void removeFromFleet( SQLResultRow ship ) { 
    1864                 Database db = ContextMap.getContext().getDatabase(); 
    1865                  
    1866                 if( ship.getInt("fleet") == 0 ) { 
    1867                         return; 
    1868                 } 
    1869  
    1870                 if( !fleetCountList.containsKey(ship.getInt("fleet")) ) { 
    1871                         // Kein Check auf id > 0, da auch (Spawn)Schiffe mit einer id < 0 der Flotte angehoeren koennen! 
    1872                         fleetCountList.put(ship.getInt("fleet"), db.first("SELECT count(*) count FROM ships WHERE fleet="+ship.getInt("fleet")).getInt("count")); 
    1873                 } 
    1874                 int fleetcount = fleetCountList.get(ship.getInt("fleet")); 
    1875                                  
    1876                 if( fleetcount > 2 ) { 
    1877                         db.tUpdate(1, "UPDATE ships SET fleet=null WHERE id>0 AND id=",ship.getInt("id")); 
    1878                         MESSAGE.get().append("aus der Flotte ausgetreten"); 
    1879                          
    1880                         fleetCountList.put(ship.getInt("fleet"), --fleetcount); 
    1881                 }  
    1882                 else { 
    1883                         db.tUpdate(1, "UPDATE ships SET fleet=null WHERE fleet="+ship.getInt("fleet")); 
    1884                         db.tUpdate(1, "DELETE FROM ship_fleets WHERE id="+ship.getInt("fleet")); 
    1885                         MESSAGE.get().append("Flotte aufgel&ouml;&szlig;t"); 
    1886                          
    1887                         fleetCountList.remove(ship.getInt("fleet")); 
    1888                 } 
     1729         * @param shipRow Die SQL-Ergebniszeile des Schiffs 
     1730         */ 
     1731        public static void removeFromFleet( SQLResultRow shipRow ) { 
     1732                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     1733 
     1734                Ship ship = (Ship)db.get(Ship.class, shipRow.getInt("id")); 
     1735                 
     1736                ship.removeFromFleet(); 
     1737                 
     1738                MESSAGE.get().append(Ship.MESSAGE.getMessage()); 
    18891739        } 
    18901740}