/exodus00.gif) Third Cicle [5]
![Third Cicle [5] Third Cicle [5]](images/magic/35.gif)
°¡ÀÔÀÏ: 2004³â 04¿ù 25ÀÏ °Ô½Ã¹°: 47
|
1) »õ·Î »ý¼ºµÈ »óÀÚ¿¡, DRAG&DROPÀ¸·Î ¾ÆÀÌÅÛÀ» ³Ö´Â°ÍÀ» ¸·°í½Í½À´Ï´Ù.
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
{
return false;
}
Çß´õ´Ï, À§Ç³´ç´çÇÏ°Ô µé¾î°¡¹ö¸®´õ±º¿ä.
¾î¶»°ÔÇÏ¸é µÉ±î¿ä?
2) Çǹ·ÀººØ´ë ½ºÅ©¸³ÀÔ´Ï´Ù.
Àοë±Û : |
using System;
using System.Collections;
using Server;
using Server.Mobiles;
using Server.Items;
using Server.Network;
using Server.Targeting;
using Server.Gumps;
namespace Server.Items
{
[FlipableAttribute( 0xE20, 0xE22 )]
public class BloodyBandage : Item
{
[Constructable]
public BloodyBandage() : this(1)
{
}
[Constructable]
public BloodyBandage( int amount ) : base( 0xE20 )
{
Stackable = true;
Weight = 0.1;
Amount = amount;
}
public BloodyBandage (Serial serial) : base(serial)
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void OnDoubleClick( Mobile from )
{
if ( from.InRange( GetWorldLocation(), 1 ) )
{
from.RevealingAction();
from.SendMessage( "ºØ´ë¸¦ ¾îµð¿¡ ¼¼Å¹ÇϽðڽÀ´Ï±î?" );
from.Target = new InternalTarget( this );
}
else
{
from.SendMessage( "³Ê¹« ¸Ö¸® ¶³¾îÁ®ÀÖ½À´Ï´Ù." );
}
}
private class InternalTarget : Target
{
private static int[] m_WaterTiles = new int[]
{
0x00A8, 0x00AB,
0x0136, 0x0137,
0x5797, 0x579C,
0x746E, 0x7485,
0x7490, 0x74AB,
0x74B5, 0x75D5,
0xB41, 0xB42,
0xB43, 0xB44
};
private BloodyBandage m_Bandage;
public InternalTarget( BloodyBandage bandage ) : base( 1, false, TargetFlags.Beneficial )
{
m_Bandage = bandage;
}
protected override void OnTarget( Mobile from, object targeted )
{
if ( m_Bandage.Deleted )
return;
if ( checkIsWater( targeted, from ) ) //hoffe das geht so
{
if ( from.InRange( m_Bandage.GetWorldLocation(), 1 ) )
{
int amount = m_Bandage.Amount;
m_Bandage.Consume();
from.AddToBackpack( new Bandage(1) );
}
else
{
from.SendMessage( "³Ê¹« ¸Ö¸® ¶³¾îÁ®ÀÖ½À´Ï´Ù." );
}
}
else
{
from.SendMessage ( "À̰ÍÀº ºØ´ë¸¦ »¡¼öÀÖ´Â ¹°ÀÌ ¾Æ´Õ´Ï´Ù." );
}
}
private bool checkIsWater( object o, Mobile from ) {
int itemID=0;
if( o is StaticTarget ) {
itemID = (((StaticTarget)o).ItemID) | 0x4000;
}
else if ( o is LandTarget ) {
itemID = from.Map.Tiles.GetLandTile( ((LandTarget)o).X, ((LandTarget)o).Y ).ID & 0x3FFF;
}
else if ( o is Target ) {
try {
itemID = ((Item)o).ItemID;
}
catch(Exception e) {
return false;
}
}
for(int i=0;i<=15;i++) {
if( itemID == m_WaterTiles[i])
return true;
}
return false;
}
}
}
}
|
'¼öÁ¶'¿¡ ºØ´ë¸¦ »¡¼öÀÖµµ·Ï
private static int[] m_WaterTiles = new int[]
{
0x00A8, 0x00AB,
0x0136, 0x0137,
0x5797, 0x579C,
0x746E, 0x7485,
0x7490, 0x74AB,
0x74B5, 0x75D5,
0xB41, 0xB42,
0xB43, 0xB44
};
¿Í °°ÀÌ ¼öÁ¶ÀÇ ITEM_IDÀÎ 0xB41~0xB44¸¦ Ãß°¡Çß½À´Ï´Ù.
for(int i=0;i<=15;i++) {
if( itemID == m_WaterTiles[i])
return true;
}
ºÎºÐ¿¡¼ true°ªÀ» ¸®ÅÏÇÏ¿©,
if ( checkIsWater( targeted, from ) ) //hoffe das geht so
{
if ( from.InRange( m_Bandage.GetWorldLocation(), 1 ) )
{
int amount = m_Bandage.Amount;
m_Bandage.Consume();
from.AddToBackpack( new Bandage(1) );
}
else
{
from.SendMessage( "³Ê¹« ¸Ö¸® ¶³¾îÁ®ÀÖ½À´Ï´Ù." );
}
}
ºÎºÐÀÌ ¼öÇàµÅ¾ßÇҰͰ°Àºµ¥, ÀÚ²Ù¸¸
else
{
from.SendMessage ( "À̰ÍÀº ºØ´ë¸¦ »¡¼öÀÖ´Â ¹°ÀÌ ¾Æ´Õ´Ï´Ù." );
}
ºÎºÐÀÇ ¸Þ½ÃÁö°¡ Ãâ·ÂµÇ³×¿ä...
µµ¿òÁÖ½Ã¸é °¨»çÇϰڽÀ´Ï´Ù~
ÁÁÀºÇÏ·çµÇ¼¼¿ä~*
|
|