RunUo.Korean.Forum    :: RunUo Document 2.0 RC1 (Beta):: 
Statistics  Archive (html)  S-BLOG  [RSS FEED]   

 
  RunUo.Korean.Forum
ÀæÀºÁú¹®  ÀæÀºÁú¹®    °Ë»ö   °Ë»ö    ȸ¿ø¸®½ºÆ®  È¸¿ø¸®½ºÆ®   À¯Àú±×·ì  À¯Àú±×·ì   Gabbly äÆÃ¿­±â  Ã¤ÆÃ¿­±â 
 
ȸ¿ø°¡ÀÔ  ::  ·Î±×ÀÎ ÂÊÁö ÇÔ È®ÀÎ
 
RunUo.Korean.Forum ¢º Server Support ¢º ¿äû°­ÀÇ::wind0204´ÔÀÇ ¿äû°­ÀÇ ÀÔ´Ï´Ù.
»õ ±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù.´äº¯±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù. Post Printing
¡Ø TOPIC : ¿äû°­ÀÇ::wind0204´ÔÀÇ ¿äû°­ÀÇ ÀÔ´Ï´Ù. ÀÌÀü ±Û :: ´ÙÀ½ ±Û
±Û ¾´ÀÌ ¸Þ¼¼Áö ³»¿ë
kkung
ÀÛ¼º±ÛÁ¦¸ñ : ¿äû°­ÀÇ::wind0204´ÔÀÇ ¿äû°­ÀÇ ÀÔ´Ï´Ù.   ±Û ÀÛ¼º½Ã°£ : 2005-02-03 ¸ñ 9:32 pm ±ÛÀ» ÀοëÇÏ¿© ÀÛ¼ºÇÕ´Ï´Ù.

°Ô½ÃÆÇ °ü¸®ÀÚ
°Ô½ÃÆÇ °ü¸®ÀÚ

°¡ÀÔÀÏ: 2003³â 12¿ù 28ÀÏ
°Ô½Ã¹°: 12

1. ¹«¾ùÀ» ¸¸µé°ÍÀΰ¡?

Àοë±Û : 

Äɸ¯ÅÍÀÇ ½ºÅÈ¿¡ Àα⵵¸¦ Ãß°¡½Ã۰í [ÃßõÀ» ¹ÞÀ¸¸é Àα⵵°¡ ¿Ã¶ó°¡°í [ºñÃßõÀ» ¹ÞÀ¸¸é Àα⵵°¡ ³»·Á°¡°Ô¿ä. ÇÏ·ç¿¡ Çѹø [Ãßõ [ºñÃßõ ¸í·ÉÀ» ¾µ ¼ö ÀÖ°Ô ÇØÁÖ¼¼¿ä.


Áï, ÀÏÁ¾ÀÇ °Ô½Ã¹°¿¡¼­ÀÇ Ãßõ ºñÃßõÀÇ °³³äÀ» µµÀÔÇϽ÷Á ÇÏ´Â°Í °°½À´Ï´Ù.
»ç¿ëÀÚ¿¡°Ô ³ª¸§´ë·ÎÀÇ Æ÷ÀÎÆ®¸¦ ºÎ¿©ÇÏ¿© ±×°ÍÀ» ÀÌ¿ëÇÏ¿© ¾î¶² °ÍÀ»
ÇϽ÷Á´Â°Í. ¸Â½À´Ï±î? ¹¹ »ç¿ëó´Â ¾î¶µç ÁÁ½À´Ï´Ù. ±×·³ ¾î¶»°Ô ±¸ÇöÇØ¾ß ÇÒ±î¿ä?

2. ±¸ÇöÇØ¾ß ÇÏ´Â ±â´ÉÀº ¹«¾ùÀΰ¡?

¿ì¼± Å©°Ô 2°¡Áö °üÁ¡¿¡¼­ »ý°¢À» ÇØº¾½Ã´Ù.

ù°, »ç¿ëÀÚ°¡ ¸í·É¾î¸¦ÀÌ¿ëÇÏ¿© ´Ù¸¥ »ç¿ëÀÚ¿¡°Ô Æ÷ÀÎÆ®¸¦ ºÎ¿©ÇÑ´Ù´ÂÁ¡.

µÑ°, »ç¿ëÀÚ´Â ÇÏ·ç¿¡ Çѹø¸í·É¾î¸¦ ÀÌ¿ëÇÒ¼ö Àִٴ°Í.

±âº»ÀûÀ¸·Î´Â ÀÌ·¯ÇÑ ±â´ÉÀÌ ÇÙ½ÉÀûÀ¸·Î ÇÊ¿äÇÏ°Ô µË´Ï´Ù. ºÎ¼öÀûÀ¸·Î ´Ù¸¥ ¿©·¯ ±â´Éµé(Æ÷ÀÎÆ®¸¦ º¸¿©ÁشٴøÁö, Æ÷ÀÎÆ®¿¡ ÀÇÇØ ¾î¶² ÇൿÀ» ÇÑ´Ù´øÁö) ÇÏ´Â ºÎºÐ¿¡ À־´Â »ý·«Çϱâ·Î Çϰí, °á·ÐÀûÀ¸·Î´Â Àú µÎ°¡Áö ±â´É¿¡ ÀÇÇØ¼­ °­ÀǸ¦ ¿äûÇϽŠºÐ²²¼­ ¿øÇϽô ±â´ÉÀÌ ÀÌ·ç¾îÁø´Ù ÇϰڽÀ´Ï´Ù.

3. ¾î¶»°Ô ±¸ÇöÇÒ °ÍÀΰ¡?

Step #1 º¯¼ö ¸¸µé±â

¿ì¼± ¿ì¸®°¡ ´Ù·ç¾î¾ßÇÒ ÆÄÀÏÀ» »ìÆì º¾½Ã´Ù.
¿ì¸®°¡ ´Ù·ç¾î¾ßÇÒ ÆÄÀÏÀº, PlayerMobile.cs¶ó´Â ÆÄÀÏÀÔ´Ï´Ù.
Ç÷¹À̾îÀÇ ±¸¼º°ú ¿î¿ë¿¡ ´ëÇÑ Äڵ带 ´ã°í ÀÖÀ¸¸ç, »ó´çÈ÷ ±âÀÎ~
ÄÚµåÀΰÍÀ» º¸½Ç¼ö ÀÖ½À´Ï´Ù. ¿ì¸®´Â ¿©±â¿¡ ¿ì¸®°¡ ¿øÇÏ´Â ±â´ÉÀ» Ãß°¡ÇÏ¿©
»õ·Î¿î ±â´ÉÀ» ±¸ÇöÇØ³¾¼ö ÀÖ½À´Ï´Ù.

PlayerMobile.cs(ÀÌÇÏ ¸ð¹ÙÀÏ ÄÚµå)´Â ±âº»ÀûÀ¸·Î Mobile Ŭ·¡½º¿¡¼­ »ó¼ÓÀ» ¹ÞÀº ¼­ºê Ŭ·¡½º·Î, »ç¿ëÀÚÀÇ ¸ö¿¡ ´ëÇÑ ºÎºÐ¸¸À» ƯȭÀûÀ¸·Î ´Ù·ç°í ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­´Â »ç¿ëÀÚ¿¡ °üÇÏ¿© °¢Á¾ µ¥ÀÌÅ͸¦ ó¸®Çϰí ÀÖ´Â ºÎºÐÀ¸·Î½á ¿ì¸®°¡ ¿øÇÏ´Â ±â´ÉÀÎ 'Æ÷ÀÎÆ®'¸¦ °ü¸®Çϱâ À§Çؼ± º°µµÀÇ º¯¼ö°¡ ÇÊ¿äÇѹÙ, ÀÌ Äڵ忡¼­ ÀÛ¾÷À» ÇÏ°Ô µÇ°Ú½À´Ï´Ù.
ÄÚµå : 

in PlayerMobile.cs class PalyerMobile()

[CommandProperty( AccessLevel.GameMaster )]
public bool PublicMyRunUO
{
           get{ return GetFlag( PlayerFlag.PublicMyRunUO ); }
           set{ SetFla(PlayerFlag.PublicMyRunUO,value );InvalidateMyRunUO(); }
}


À§ Äڵ带 ¿ì¼± »ìÆì º¸°Ú½À´Ï´Ù. ±âº»ÀûÀ¸·Î MyRunUO¸¦ ÅëÇØ¼­
Äɸ¯ÅÍ ÀڷḦ Á¢±ÙÇÒ¼ö ÀÖ°Ô ÇÏ´ÂÁöÀÇ ¿©ºÎ¸¦ ¼±ÅÃÇÏ´Â Ç÷¡±× ÀÔ´Ï´Ù.
¿ì¼± ´ë°ýÈ£([])·Î ¹­¿©ÀÖ´Â ºÎºÐÀº. Attribute¶ó°í Çϴ°ÍÀ¸·Î½á,
ÀÚ¼¼ÇÑ ¾ð¾îÀûÀÎ ¼³¸íÀº »ý·«ÇϰڽÀ´Ï´Ù.

´Ù¸¸ ¿©±â¿¡¼­´Â, °ÔÀÓ³»¿¡¼­ °ª¿¡ Á¢±ÙÇÒ¼ö ÀÖ´Â ±ÇÇÑ, Áï [props ¸í·É¾î µîÀ» ÅëÇÏ¿© °ªÀ» º¯°æÇÒ¼ö ÀÖ´Â ±ÇÇÑÀÇ ÃÖ¼Ò°ªÀ» ÁöÁ¤Çϴ°ÍÀ̶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. À§ÀÇ °ªÀº °ÔÀÓ¸¶½ºÅÍ ÀÌ»ó¸¸ÀÌ Á¢±ÙÇÒ¼ö ÀÖµµ·Ï µÇ¾î Àִ°ÍÀ» º¼¼ö ÀÖ½À´Ï´Ù. ¿ì¸®°¡ ±¸ÇöÇÏ·Á´Â ±â´É ¿ª½Ã Ư¼º»ó °ÔÀÓ¸¶½ºÅÍ ÀÌ»ó¸¸ÀÌ °ªÀ» º¯°æÇÒ¼ö ÀÖµµ·Ï ÇØ¾ßÇϱ⿡ µ¿ÀÏÇÏ°Ô Ã³¸®ÇϰڽÀ´Ï´Ù.

public bool PublicMyRunUOÀÌ ºÎºÐÀÌ °ÔÀÓ»ó¿¡¼­µç ÄÚµå»ó¿¡¼­µç °ªÀ» ÀÌ¿ëÇÒ¼ö ÀÖ´Â º¯¼ö¸íÀ» ÁöÁ¤Çϰí ÀÖ´Â ¼±¾ðºÎ ÀÔ´Ï´Ù. boolÇüÅÂ(Âü/°ÅÁþ)À¸·Î ÁöÁ¤µÇ Àִ°ÍÀ» ¾Ë¼ö ÀÖÀ¸¸ç ±ÇÇÑÀº publicÁï, ¿ÜºÎ Äڵ忡¼­µµ (playermobile ¿Ü¿¡¼­µµ)Á¢±ÙÇÒ¼ö ÀÖµµ·Ï µÇ¾îÀÖÀ¸¸ç À̸§Àº PublicMyRunUO¶ó°í µÇ¾îÀÖ½À´Ï´Ù. ¾ð¾îÀûÀÎ ¸éÀ̱⿡ ±×¸® Å« ¾î·Á¿òÀº ¾øÀ¸½Ç°ÍÀÔ´Ï´Ù.

ÀÌ ±¸ºÐ¿¡¼­´Â º¯¼ö°¡ get-set ÇüÅ·ΠÁöÁ¤µÇ¾î ÀÖ½À´Ï´Ù. ¾î·Á¿î °ÍÀÌ ¾Æ´Ï¶ó, ¹®ÀÚ ±×´ë·Î get Àº º¯¼ö¿¡¼­ °ªÀ» ¾òÀ» ¶§ ÃëÇÒ ÇൿµéÀÌ µÇ´Â°ÍÀ̸ç, set´Â º¯¼ö¿¡ °ªÀ» ¼³Á¤ÇÒ¶§ ÃëÇÏ´Â ÇൿµéÀÌ µË´Ï´Ù. À§ Äڵ忡¼­´Â Ç÷¹±× ¿©ºÎ¸¦ ¸®ÅÏÇϰųª ÁöÁ¤Çϵµ·Ï Çß½À´Ï´Ù. ¿ì¸®´Â ´Ü¼øÈ÷ º¯¼ö¸¦ Çϳª ¼±¾ðÇÏ¿© ±× º¯¼ö¸¦ ÀÌ¿ëÇϵµ·Ï ÇÒ°ÍÀÔ´Ï´Ù.

±×¸®ÇÏ¿©, ¾Æ·¡¿Í °°Àº Äڵ尡 ±¸¼ºµÈ´Ù°í ÇÒ¼ö ÀÖ½À´Ï´Ù.
(ÀÚ¼¼ÇÑ ¼³¸íÀº ÁÖ¼® Âü°í)
ÄÚµå : 


private int m_VotebyPl; //³»ºÎ¿¡¼­ ÀÌ¿ëµÉ º¯¼ö¸íÀÔ´Ï´Ù.

[CommandProperty( AccessLevel.GameMaster )]
public int VoteByPlayer
{
   get
   {
      return m_VotebyPl;  //³»ºÎ º¯¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
   }
   set
   {
      m_VotebyPl = value; //¿ÜºÎ¿¡¼­ ¼³Á¤ÇÑ °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù
   }
}

private DateTime m_NextVotebyPl; //ÇÏ·ç¿¡ Çѹø ÅõÇ¥Çϱâ À§ÇÑ º¯¼ö

[CommandProperty( AccessLevel.GameMaster )]
public DateTime NextVoteByPlayer
{
   get
   {
      return m_NextVotebyPl;
   }
   set
   {
      m_NextVotebyPl = value;
   }
}



ÇÏ·ç¿¡ Çѹø ÅõÇ¥¸¦ ÇÏ°Ô ÇØ¾ßÇϱâ 떄¹®¿¡ ¿À´Ã Çѹø ÅõÇ¥ Çß´Ù! ¶ó´Â »ç½ÇÀ»
±â·ÏÇØµÑ Çʿ䰡 ÀÖ½À´Ï´Ù. ¿©±â¼­´Â »ç¿ëÀÚ°¡ ÅõÇ¥ÇÑÈķκÎÅÍ 24½Ã°£ ÈÄ¿¡ ´Ù½Ã ÅõÇ¥°¡ °¡´ÉÇϵµ·Ï ó¸®Çغ¸°Ú½À´Ï´Ù.

Step #2 º¯¼ö ÀúÀåÇϱâ(Serialize / DeSerialize)

º¯¼ö¸¦ ¸¸µé¾ú´Ù¸é, ±× º¯¼ö¸¦ °è¼Ó ÀÌ¿ëÇϱâ À§Çؼ± µ¥ÀÌÅÍ ÆÄÀÏ¿¡ ÀúÀåÀ»
ÇØ¾ßÇÕ´Ï´Ù. ¸¸¾à ¼­¹ö¸¦ ´Ù½Ã ų¶§¸¶´Ù µ¥ÀÌÅͰ¡ »ç¶óÁø´Ù¸é, ÀÌ´Â ¹«ÀǹÌÇѰÍÀ̰ÚÁÒ. ±×·¯Çϱâ À§Çؼ­ µ¥ÀÌÅ͸¦ ÀúÀåÇØ¾ßÇϴµ¥, ¿©±â¼­ ÀúÀåÀ» À§ÇÑ Serialize¿Í ºÒ·¯¿À±â¸¦ À§ÇÑ DeSerialize¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸°Ú½À´Ï´Ù.

Serialize

PlayerMobile.cs ÆÄÀÏÀ» º¸½Ã¸é ¾Æ·¡¿Í °°Àº ºÎºÐÀÌ ÀÖÀ»²¯ÀÔ´Ï´Ù.

ÄÚµå : 
public override void Serialize( GenericWriter writer )


¹Ù·Î À§ÀÇ ºÎºÐÀÌ ÀúÀåÀ» ´ã´çÇÏ´Â ºÎºÐ! ¿©·¯ºÎºÐÀÌ ÀÖ½À´Ï´Ù¸¸, ¿ì¸®°¡ ÁÖ¸ñÇØ¾ßÇÒ ºÎºÐÀº ¾Æ·¡ ºÎºÐºÎÅÍÀÔ´Ï´Ù.

ÄÚµå : 

base.Serialize( writer );
writer.Write( (int) 18 ); // version
writer.WriteEncodedInt( (int) m_SolenFriendship );


¾Æ ¸ÕÀú Âü°í·Î, ÀúÀå°ú ºÒ·¯¿À±âÀÇ ¼ø¼­´Â Á¤È®È÷ ÀÏÄ¡ÇØ¾ßÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦µé¾î, A->B->CÀÇ ¼øÀ¸·Î ÀúÀåÀ» Çß´Ù¸é ºÒ·¯¿Ã떄 ¿ª½Ã A->B->C¿©¾ß ÇÑ´Ù´ÂÁ¡ÀÔ´Ï´Ù. µû¶ó¼­ ³ªÁß¿¡ Ãß°¡µÈ ³»¿ëÀϼö·Ï °¡Àå ¸ÕÀú ÀúÀåÇÏ°í °¡Àå ¸ÕÀú ºÒ·¯¿Â´Ù°í º¼¼öÀÖÀ¸¸ç, À§¿¡¼­ m_SolenFriendshipÀ̶ó´Â ºÎºÐÀÌ ¹öÀü 18¿¡ Ãß°¡µÈ °¡Àå ¸¶Áö¸· ³»¿ëÀÓÀ» ÃßÃøÇØ º¼¼ö ÀÖ½À´Ï´Ù.

¹öÀüÀÌ ÇÊ¿äÇÑ ÀÌÀ¯´ÂÁö±Ý ¿ì¸®°¡ ½ÃµµÇÏ´Â ÀÛ¾÷°ú °°ÀÌ »õ·Î¿î ³»¿ëÀÌ Ãß°¡µÇ¾úÀ»¶§, °ú°ÅÀÇ ³»¿ë°ú ºñ±³ÇÏ¿© »õ·Î¿î ³»¿ëÀ» Àû¿ëÇϱâ À§Çؼ­ ÀÔ´Ï´Ù.
¸¸¾à ¹öÀüÀÌ ¾ø´Ù¸é, ¾Æ±î ºÐ¸í ÀúÀåÇϴ°Ͱú ºÒ·¯¿À´Â ¼øÀÌ ¶È°°¾Æ¾ß µÈ´Ù°í Çߴµ¥ À̰Ϳ¡ Âø¿À°¡ ¿Ã¼ö ÀÖ½À´Ï´Ù. Áï A->B->C¼øÀ¸·Î ÀúÀåÀ» Çߴµ¥, D¶ó´Â ³»¿ëÀÌ Ãß°¡µÇ¾î D->A->B->C ¼øÀ¸·Î ºÒ·¯¿À°Ô µÇ´Â »çŸ¦ ¸·±â À§ÇÔÀ̶ó°í »ý°¢ÇÏ½Ã¸é µÇ°Ú½À´Ï´Ù.

±×·³ ¿ì¸®´Â, ¹öÀüÀ» Çϳª ³ô¿©¼­ 19·Î ¼³Á¤ÇÏ°í °ªÀ» ÀÔ·ÂÇϵµ·Ï ÇϰڽÀ´Ï´Ù. ±âº»ÀûÀ¸·Î, RunUO¿¡¼­´Â ÀڷḦ ¹ÙÀ̳ʸ® ¹æ½ÄÀ¸·Î ÀúÀåÇϱâ 떄¹®¿¡, ÀڷḦ ÀÔ·ÂÇÒ¶§ Encode¸¦ ½ÃÄÑ¾ß Çϴµ¥ ÀÌ´Â °ü·Ã c#°­Á¸¦ Âü°íÇϽñ⠹ٶó¸ç ¿©±â¼­´Â ±×Àú ±×·¯ÇѰ¡ º¸´Ù Çϰí À̿븸 ÇϰڽÀ´Ï´Ù.

ÄÚµå : 

base.Serialize( writer );
writer.Write( (int) 19 ); // version

//ver 19
writer.WriteEncodedInt( (int) m_VotebyPl );
writer.Write( (DateTime) m_NextVotebyPl );
//ver 19 end

writer.WriteEncodedInt( (int) m_SolenFriendship );



ÀÚ, ÀÌÁ¦ ÀúÀåÇϱⰡ ³¡³µ½À´Ï´Ù. ºÒ·¯¿À±â¸¦ »ìÆìº¸µµ·Ï ÇÏÁö¿ä.

DeSerialize

ÄÚµå : 

public override void Deserialize( GenericReader reader )
{
   base.Deserialize( reader );
   int version = reader.ReadInt();

   switch ( version )
   {
      case 18:


À§ÀÇ Äڵ带 ã¾Æº¸½Ç¼ö ÀÖ½À´Ï´Ù. ¾Æ±î ¸»¾¸µå·Çµç, ¼­·Î ´Ù¸¥ ¹öÀüÀÌ Á¸ÀçÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ »óÀ§¹öÀüºÎÅÍ Ã³¸®Çϰí ÀÖ½À´Ï´Ù. ±×·¸´Ù¸é ¿ì¸®µµ ±×·¸°Ô ÇØ¾ß°ÚÁö¿ä? case 18: À­ ºÎºÐ¿¡ case 19: ¸¦ Ãß°¡ÇÏ¿© ¿ì¸®°¡ ÀúÀåÇÑ °ªÀ» ºÒ·¯¿Àµµ·Ï ÇØº¸°Ú½À´Ï´Ù.

ÄÚµå : 

case 19:
{
   m_VotebyPl = reader.ReadEncodedInt();
   m_NextVotebyPl = reader.ReadDateTime();

   goto case 18;
}   
case 18:


¾Æ±î ¿ì¸®´Â, m_VotebyPl->m_NextVotebyPl¼øÀ¸·Î ÀúÀåµÇµµ·Ï Äڵ带 ¸¸µé¾ú°í, Àоîµå¸±¶§µµ ¿ª½Ã ¸¶Âù°¡Áö·Î ÇϰíÀÖ½À´Ï´Ù. ±×¸®ÇÏ¿© ¹öÀü 19ÀÇ Ã³¸®°¡ ³¡³ª´Âµ¥·Î ¹öÀü 18·Î À̵¿, ´ÙÀ½ 󸮸¦ Çϵµ·Ï Çϰí ÀÖ½À´Ï´Ù. Áï ÀÌ·± ¹æ½ÄÀ» ÅëÇÏ¿© ÇÏÀ§ ȣȯ¼ºÀ» À¯ÁöÇÑ´Ù°í »ý°¢ÇÏ½Ã¸é µÇ°Ú½À´Ï´Ù. ÀÌ·¯ÇÑ ¹ø°Å·Î¿î ÀýÂ÷°¡ ÇÊ¿äÇÑ ÀÌÀ¯´Â ´Ù½Ã °­Á¶ µå¸®Áö¸¸ ¹Ýµå½Ã ÀúÀåÇÑ ¼ø¼­ ±×´ë·Î Àоîµå·Á¾ß Çϱâ 떄¹®ÀÔ´Ï´Ù.(¼øÂ÷ÀûÀÎ ¹æ½ÄÀ̶ó°í »ý°¢ÇÏ½Ã¸é µÇ°Ú½À´Ï´Ù.).

ReadEncodedInt(); ReadDateTime(); µÎ ÇÔ¼ö´Â °¢°¢, ¿£ÄÚµùµÈ Á¤¼öÇü ÀÚ·á°ªÀ» Àоî¿À´Â ÇÔ¼ö¿Í, ³¯Àڽð£ ÀڷḦ Àоî¿À´Â ÇÔ¼öÀÔ´Ï´Ù. GenericReader Ŭ·¡½º ³»ÀÇ ÇÔ¼öÀ̹ǷÎ, ÀúÀåÇÑ ÀÚ·á°ªÀ» µ¿ÀÏ Çü½ÄÀ¸·Î Àоî¿Ã¶§ »ç¿ëµË´Ï´Ù.

Step #3 ¸í·É¾î¸¦ ¸¸µé¾î º¾½Ã´Ù!

ÀÌÁ¦ »ç¿ëÀÚ¿¡°Ô Æ÷ÀÎÆ®¸¦ º¸°üÇÒ¼ö ÀÖ´Â º¯¼öµµ ¸¸µé¾ú°í, ±×°ÍÀ» ÀúÀåÇÏ°í ºÒ·¯µå¸®´Â ºÎºÐÀÇ Ã³¸® ¶ÇÇÑ ±¸ÇöÇÏ¿´½À´Ï´Ù. ±×·¸´Ù¸é ÀÌÁ¦ »ç¿ëÀÚ°¡ ÇÏ·ç¿¡ Çѹø ¸í·É¾î¸¦ ÀÌ¿ëÇÏ¿© ó¸®ÇÒ¼ö ÀÖ°Ô ÇÏ´Â ºÎºÐÀÌ ÇÊ¿äÇØÁý´Ï´Ù.

º°µµÀÇ ÆÄÀÏÀ» Çϳª ¸¸µé¾î¼­ °Å±â¿¡¼­ ó¸®Çغ¸µµ·Ï ÇϰڽÀ´Ï´Ù.
¿©±â¿¡¼­´Â VoteByPlayer.cs ¶ó´Â º°µµÀÇ ÆÄÀÏ¿¡¼­ ÁøÇàÇØ º¸°Ú½À´Ï´Ù.

Step #3-1 ±âÃÊ Å¬·¡½º ¼³°è!

±âº»ÀûÀ¸·Î ¿ì¸®°¡ ±¸ÇöÇØ¾ßÇÒ ±â´ÉÀº °£´ÜÇÑ ¼³°è·Î½á ¸¶¹«¸® ÇÒ¼ö ÀÖ½À´Ï´Ù.
¿ì¼± Äڵ忡¼­ ÁÖ¼®À» ÅëÇØ ¼³¸íÇØº¸°Ú½À´Ï´Ù.

ÄÚµå : 


using System; //System ³×ÀÓ½ºÆäÀ̽º¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ±âº»ÀÔ´Ï´Ù.
using Server; //RunUO ³×ÀÓ½ºÆäÀ̽º¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ±âº»ÀÔ´Ï´Ù.
using Server.Mobiles; //RunUO¿¡¼­ NPC³ª »ç¿ëÀÚ °ü·Ã ºÎºÐÀ» Æ÷ÇÔÇÕ´Ï´Ù.
using Server.Targeting; // Ÿ°ÙÀ» ÀÌ¿ëÇϱâ À§Çؼ­ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù.

namespace Server // ÀÌ Å¬·¡½º°¡ Server ³×ÀÓ½ºÆäÀ̽º¿¡ Æ÷ÇÔµÊÀ» ÀǹÌÇÕ´Ï´Ù.
{
   public class VoteByPlayer
   {
      public static void Initialize() //¼­¹ö ºÎÆÃ½Ã 1ȸ È£ÃâµÇ´Â ÃʱâÈ­ ÇÔ¼öÀÔ´Ï´Ù. ¿©±â¼­ ¸í·É¾î¸¦ µî·ÏÇÏ¸é µË´Ï´Ù.
      {
         // ¼­¹ö¿¡ ¸í·É¾î¸¦ µî·ÏÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.ÇÔ¼öÀÇ Çü½ÄÀº Register(¸í·É¾î,Á¢±Ù±ÇÇÑ,new CommandEventHandler(ó¸® ÇÔ¼ö));ÀÇ Çü½ÄÀ» µû¸¨´Ï´Ù.
         Server.Commands.Register("Ãßõ",AccessLevel.Player,new CommandEventHandler( CmdVote) );
         Server.Commands.Register("ºñÃßõ",AccessLevel.Player,new CommandEventHandler( CmdDeVote) );
      }

      // Usage Attribute´Â ¸í·É¾îÀÇ ÀÌ¿ë¹æ¹ý¿¡ ´ëÇÑ ¼³¸íÀ»,
      // Description Attribute´Â ¸í·É¾î¿¡ ´ëÇÑ ¼³¸íÀÔ´Ï´Ù.
      // ¹®¼­ ÀÚµ¿È­¿¡ ÀÌ¿ëµÇ´Â ºÎºÐÀ¸·Î ¼±ÅûçÇ×ÀÔ´Ï´Ù.
      [Usage("Ãßõ")]
      [Description("ÇØ´ç »ç¿ëÀÚ¸¦ 1ȸ ÃßõÇÕ´Ï´Ù.")]
      public static void CmdVote( CommandEventArgs e)
      {
         // ¿©±â¿¡¼­ Ãßõ¿¡ °üÇÑ ¸í·É¾î¸¦ ó¸®ÇÕ´Ï´Ù.
      }
[Usage("ºñÃßõ")]
      [Description("ÇØ´ç »ç¿ëÀÚ¸¦ 1ȸ ºñÃßõÇÕ´Ï´Ù.")]
      public static void CmdDeVote( CommandEventArgs e)
      {
         // ¿©±â¿¡¼­ ºñÃßõ¿¡ °üÇÑ ¸í·É¾î¸¦ ó¸®ÇÕ´Ï´Ù.
      }

}



Ŭ·¡½º ±¸Á¶ ÀÚü´Â Æò¹üÇϱ⠱×Áö ¾ø´Â Áö±ØÈ÷ °£´ÜÇÑ Å¬·¡½º ÇüÅÂÀÔ´Ï´Ù.

Step #3-2 º»°ÝÀûÀÎ ±â´É ±¸Çö!
Ÿ°ÙÆÃ

ÀÚ, ÀÌÁ¦ µåµð¾î º»°ÝÀûÀ¸·Î ±â´ÉÀ» ±¸ÇöÇÒ ½Ã°£ÀÔ´Ï´Ù.
ÀÏ´Ü ¿ì¸®´Â ¿©±â¼­ 'Ÿ°Ù'À» »ç¿ëÇØ¾ß ÇÔÀ» »ý°¢ÇØ º¼¼ö ÀÖ½À´Ï´Ù.
Áï ÀÚ±â ÀÚ½ÅÀ» ÃßõÇϴ°ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡, Ÿ°ÙÀ» ÀÌ¿ëÇØ¼­ »ó´ë¹æÀ»
ÁöÁ¤ÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. Äڵ忡¼­ Ÿ°ÙÀ» ¾î¶»°Ô ÀÌ¿ëÇØ¾ß ÇÒ±î¿ä?

Ÿ°ÙÆÃ(Ÿ°ÙÀ» ÁöÁ¤Çϵµ·Ï Ŭ¶óÀÌ¾ðÆ®¿¡ Ÿ°ÙÀ» ¶ÙÀ¸´Â°ÍÀ» ¸»ÇÔ.)À» ±¸ÇöÇϱâ À§Çؼ­´Â ¾à°£ º¹ÀâÇÑ ÀýÂ÷¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù¸¸. ±×´ÙÁö Èûµç°Ç ¾Æ´Õ´Ï´Ù. ´Ù¸¸ Ŭ·¡½º¿¡ ´ëÇÑ ±âÃÊÀûÀÎ °³³ä¸¸ ÀÖÀ¸½Ã´Ù¸é ¾Æ¹« ¹®Á¦ ¾ø´ä´Ï´Ù.¹é¹®ÀÌ ºÒ¿©Àϰß! Äڵ带 ÅëÇØ¼­ º¼±î¿ä?


ÄÚµå : 


(in code)
public static void Cmd( CommandEventArgs e )
{
   // Ÿ°ÙÀ» È£Ãâ.
   e.Mobile.Target = new VoteTarget();
}

private class VoteTarget : Target
{
   // Target(Çã¿ë°Å¸®,¶¥ÁöÁ¤¿©ºÎ,Ÿ°Ù ¼Ó¼º(À̷οî,ÇØ·Î¿î,ÀϹÝ)
   public VoteTarget() : base(5, false, TargetFlags.None )
   {
   }

   // Ÿ°Ù ¼±Åýà ȣÃâµÇ´Â ÇÔ¼ö·Î ¿À¹ö¶óÀ̵å ÇÏ¿© »ç¿ëÇÕ´Ï´Ù.
   protected override void OnTarget( Mobile from, object targ )
   {
      //Ÿ°Ù¿¡ ´ëÇÑ ÀڷḦ ó¸®ÇÕ´Ï´Ù.
      //from: Ÿ°ÙÀ» ÁöÁ¤ÇÑ »ç¶÷
      //targ: ÁöÁ¤µÈ Ÿ°Ù. objectÇüÀ̹ǷΠ¿øÇÏ´Â ÇüÅ·ΠÄɽºÆÃÇØ »ç¿ë
   }
}


³»ºÎ¿¡ Target Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ¼­ Ŭ·¡½º¸¦ Çϳª ¸¸µçÈÄ OnTargetÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵å ÇØ¼­ Ÿ°Ù 󸮸¦ Çϰí ÀÖ½À´Ï´Ù. ¾ð¾îÀû ÀÌÇØ°¡ ÀÖÀ¸½Ã´Ù¸é ±×¸® ¾î·Á¿î ºÎºÐÀÌ ¾Æ´Ï¸ç, Àß ÀÌÇØ°¡ ¾ÈµÇ½Å´Ù¸é c# °ü·Ã °­ÀǸ¦ Âü°íÇÏ½Ã´Â°Ô ÁÁ°Ú½À´Ï´Ù.

CommandEventArgs

À§¿¡¼­ Àá½Ã ÇÔ¼ö ÇüŸ¦ º¸µµ·Ï ÇÒ±î¿ä?

ÄÚµå : 
public static void CmdVote( CommandEventArgs e )


ÇÔ¼ö¿¡¼­ ÀÎÀÚ·Î CommandEventAgrs ¶ó´Â Ŭ·¡½º¸¦ ³Ñ°Ü ¹Þ°í ÀÖ½À´Ï´Ù. °ú¿¬ ¾î¶² Ŭ·¡½º Àϱî¿ä?

CommandEventArgs´Â .netÀÇ EventArgs Ŭ·¡½ºÀÇ ÀÚ½Ä Å¬·¡½º·Î½á, ¸í·É¾î°¡ È£ÃâµÉ¶§ °Å±â¿¡ °ü·ÃµÈ ¸î°¡Áö Á¤º¸¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. À̸¦ ÅëÇÏ¿© ¸í·É¾î¸¦ ÀÌ¿ëÇÑ ÀÌ¿ëÀÚ°¡ ´©±¸ÀÎÁö, ¾î¶² ÀÎÀÚ°¡ Àü´ÞµÇ°í ÀÖ´ÂÁö¸¦ È®ÀÎÇÒ¼ö Àִ°ÍÀÌÁÒ. ±¸Á¶´Â ´ÙÀ½°ú °°½À´Ï´Ù.

ÄÚµå : 

public string ArgString; //ÀÎÀÚµéÀÇ ¹®ÀÚ¿­ ¹è¿­À» ÇϳªÀÇ ¹®ÀÚ¿­·Î ¸®ÅÏÇÕ´Ï´Ù.
public string[] Arguments; //ÀÎÀÚµéÀÇ ¹®ÀÚ¿­ ¹è¿­ÀÔ´Ï´Ù.
public string Command; //½ÇÇàµÈ ¸í·É¾î¸¦ ´ãÀ½ÀÔ´Ï´Ù.
public int Length; //ÀÎÀÚÀÇ ÃÑ °³¼ö ÀÔ´Ï´Ù. ÀÎÀÚ¶õ [¸í·É¾î x y z ¿¡¼­ x,y,z¸¦ ¸»ÇÔÀÌÁÒ. ÀÎÀÚÀÇ °³¼ö´Â ¾ó¸¶µçÁö °¡´ÉÇÕ´Ï´Ù. µû¶ó¼­ ÃÑ ¸î°³ÀÇ ÀÎÀÚ°¡ ÀÖ´ÂÁö ÀÌ º¯¼ö·Î Àü´ÞÇϴ°ÅÁÒ
public Server.Mobile Mobile; // ¸í·É¾î¸¦ È£ÃâÇÑ ÀÌ¿ëÀÚ


½Ã°£ °ü·Ã Ŭ·¡½º,ÇÔ¼ö ÀÌ¿ë

°ÔÀÓ³»¿¡¼­ ½Ã°£À̶õ ÂüÀ¸·Î Áß¿äÇÑ ¹®Á¦ÀÔ´Ï´Ù. À̹ø ±â´É ±¸Çö¿¡¼­ ¿ª½Ã 'ÇÏ·ç¿¡ Çѹø'À̶ó´Â ±â´ÉÀ» ±¸ÇöÇϱâ À§Çؼ± ½Ã°£ °ü¸®ÀÇ ¹®Á¦¼ºÀÌ Áß¿ä½Ã µË´Ï´Ù. ´ÙÇàÈ÷ c#¿¡¼­´Â ¸Å¿ì Æí¸®ÇÑ ½Ã°£°ü¸® Ŭ·¡½ºÀÎ DateTimeÀ» Á¦°øÇϴµ¥, À̰ÍÀÌ Æí¸®ÇÏ´Ù ÇÑ ÀÌÀ¯´Â [B½Ã°£¿¡ ´ëÇÑ »çÄ¢¿¬»ê,ºñ±³[/B]°¡ °¡´ÉÇϱ⠶§¹®ÀÔ´Ï´Ù.

À̹ø ¿ª½Ã ¿¹Á¦ ÄÚµå·Î »ìÆìº¸°Ú½À´Ï´Ù.

ÄÚµå : 


// ÇöÀç ½Ã°£¿¡ ÇϷ縦 ´õÇÕ´Ï´Ù. +-*/ ¸ðµÎ °¡´ÉÇÕ´Ï´Ù.
// TimeSpan Àº ½Ã°£ °£°ÝÀ» Á¶ÀýÇÕ´Ï´Ù.
// FromDays, FromHours, FromMinutesµîµî.. ´Ù¾çÇÑ ÇÔ¼ö°¡ Á¦°øµË´Ï´Ù.
DateTime.Now + TimeSpan.FromDays(1);

// ÀúÀåµÇ¾î ÀÖ´Â ½Ã°£°ú ÇöÀç ½Ã°£ÀÇ ¾Õ¼­°í µÞ¼­°í¸¦ ºñ±³ÇÕ´Ï´Ù.
// Áï.. Å« ÂÊÀÌ Á»´õ ¹Ì·¡ÀÇ ½Ã°£À̶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
if ( pm.NextVoteByPlayer > DateTime.Now )



ÀÚ, ÀÌÁ¦ º»°ÝÀûÀ¸·Î ±¸ÇöÇØ º¾½Ã´Ù

ÄÚµåÀÇ ¿¹Á¦¸¦ ÅëÇØ ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù.

VoteByPlayer.cs
ÄÚµå : 

using System;
using Server;
using Server.Mobiles;
using Server.Targeting; // Ÿ°ÙÆÃÀ» À§Çؼ­

namespace Server
{
   public class VoteByPlayer
   {
      public static void Initialize() //¼­¹ö ºÎÆÃ½Ã ´Ü Çѹø ½ÇÇà. ¸í·É¾î¸¦ µî·ÏÇÕ´Ï´Ù.
      {
         Server.Commands.Register("Ãßõ",AccessLevel.Player,new CommandEventHandler( CmdVote) );
         Server.Commands.Register("ºñÃßõ",AccessLevel.Player,new CommandEventHandler( CmdDeVote) );
      }

      [Usage("Ãßõ")]
      [Description("ÇØ´ç »ç¿ëÀÚ¸¦ 1ȸ ÃßõÇÕ´Ï´Ù.")]
      public static void CmdVote( CommandEventArgs e)
      {

         Mobile m = e.Mobile; // ¸í·É¾î¸¦ ½ÇÇàÇÑ ÀÌ¿ëÀÚ
         m.SendMessage("´©±¸¸¦ ÃßõÇϽðڽÀ´Ï±î?");
         //Ÿ°Ù »ý¼º VoteTarget(Ãßõ=true,ºñÃßõ=false)
         m.Target = new VoteTarget(true);
      }

      [Usage("ºñÃßõ")]
      [Description("ÇØ´ç »ç¿ëÀÚ¸¦ 1ȸ ºñÃßõÇÕ´Ï´Ù.")]
      public static void CmdDeVote( CommandEventArgs e)
      {
         Mobile m = e.Mobile;
         m.SendMessage("´©±¸¸¦ ºñÃßõÇϽðڽÀ´Ï±î?");
         m.Target = new VoteTarget(false);
      }

      private class VoteTarget : Target // Target Ŭ·¡½º¿¡¼­ »ó¼Ó¹Þ½À´Ï´Ù.
      {
         bool m_Vote = true; // Ãßõ,ºñÃßõ ¿©ºÎ

         // Target(Çã¿ë°Å¸®,¶¥ÁöÁ¤¿©ºÎ,Ÿ°Ù ¼Ó¼º(À̷οî,ÇØ·Î¿î,ÀϹÝ)
         // ÀÚ¼¼ÇÑ°Ç c#°ü·Ã °­ÁÂÀÇ Å¬·¡½º¿Í Ŭ·¡½ºÀÇ »ó¼ÓºÎºÐÀ» Âü°íÇϼ¼¿ä.
         public VoteTarget(bool Vote) : base(5, false, TargetFlags.None )
         {
            m_Vote = Vote;
         }

         // Ÿ°Ù ¼±Åýà ȣÃâµÇ´Â ÇÔ¼ö·Î ¿À¹ö¶óÀ̵å ÇÏ¿© »ç¿ëÇÕ´Ï´Ù.
         protected override void OnTarget( Mobile from, object targ )
         {
            //Ÿ°Ù¿¡ ´ëÇÑ ÀڷḦ ó¸®ÇÕ´Ï´Ù.
            //from: Ÿ°ÙÀ» ÁöÁ¤ÇÑ »ç¶÷
            //targ: ÁöÁ¤µÈ Ÿ°Ù. objectÇüÀ̹ǷΠ¿øÇÏ´Â ÇüÅ·ΠÄɽºÆÃÇØ »ç¿ë

            if ( m_Vote == true) // ¸¸¾à ÃßõÀ̶ó¸é,
            {
               //CanVote(PlayerMobile) ½Ã°£À» ºñ±³ÇÏ¿© ¸¶Áö¸· ÅõÇ¥·ÎºÎÅÍ
               //24½Ã°£ÀÌ Áö³µ´ÂÁö ÆÄ¾Ç

               if ( !CanVote((PlayerMobile)from) )
               {
                  from.SendMessage("24½Ã°£¿¡ Çѹø¸¸ ÅõÇ¥°¡´ÉÇÕ´Ï´Ù!");
                  return;
               }

               //(PlayerMobile)targ
               //:: objectÇüÀ¸·Î ³Ñ¾î¿Â ÀڷḦ ÄɽºÆÃÇÏ¿© ÇüÀ»
               //º¯È¯ ½Ã۴°ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº c#°ü·Ã °­Á Âü°í.

               PlayerMobile pm = (PlayerMobile)targ;
               pm.VoteByPlayer++;
               //{0},{1}µîÀº c¿¡¼­ÀÇ %s %s ÇÏ´Â ½Ä°ú ºñ½ÁÇÕ´Ï´Ù.
               //Áï, {0},{1}Àº ¾ÆÁ÷ Á¤ÇØÁöÁö ¾ÊÀº °ªµéÀ̸ç, À̰ÍÀ» ,,, ·Î °è¼Ó
               //º¯¼ö¸¦ ÁöÁ¤ÇÏ¿© ³ªÁß¿¡ ½ÇÇà½Ã¿¡´Â ¾Ë¸ÂÀº °ªµé·Î ä¿öÁý´Ï´Ù.
               pm.SendMessage("´ç½ÅÀÌ Ãßõ¹ÞÀº ÃÑ È¸¼ö´Â {0}ȸ ÀÔ´Ï´Ù.",pm.VoteByPlayer);

               PlayerMobile fromp = (PlayerMobile)from;
               //Áö±ÝÀÇ ½Ã°£¿¡ 24½Ã°£À» ´õÇÕ´Ï´Ù.
               fromp.NextVoteByPlayer = DateTime.Now + TimeSpan.FromDays(1);
            }
            else
            {
               if ( !CanVote((PlayerMobile)from) )
               {
                  from.SendMessage("24½Ã°£¿¡ Çѹø¸¸ ÅõÇ¥°¡´ÉÇÕ´Ï´Ù!");
                  return;
               }
               
               PlayerMobile pm = (PlayerMobile)targ;
               
               //0ÀÌÇϷδ ¼³Á¤µÉ¼ö ¾ø±â 떄¹®¿¡ ±× ºÎºÐ¿¡ ´ëÇÑ Ã¼Å©¸¦
               //ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.
               if ( (pm.VoteByPlayer - 1 ) <= 0 )
                  pm.VoteByPlayer = 0;
               else
                  pm.VoteByPlayer--;

               pm.SendMessage("´ç½ÅÀÌ Ãßõ¹ÞÀº ÃÑ È¸¼ö´Â {0}ȸ ÀÔ´Ï´Ù.",pm.VoteByPlayer);

               PlayerMobile fromp = (PlayerMobile)from;
               fromp.NextVoteByPlayer = DateTime.Now + TimeSpan.FromDays(1);
            }
         }

         private bool CanVote(PlayerMobile pm)
         {
            // ÀúÀåµÇ ÀÖ´Â ´ÙÀ½ ÅõÇ¥°¡´É ½Ã°£°ú ºñ±³ÇÏ¿©
            // ¸¸¾à ÅõÇ¥ °¡´É½Ã°£ÀÌ ´õ ¹Ì·¡¶ó¸é
            // ÅõÇ¥°¡ ºÒ°¡´ÉÇÏ´Ù°í ¸®ÅÏÇÏ´Â ±¸Á¶ÀÔ´Ï´Ù.
            if ( pm.NextVoteByPlayer > DateTime.Now )
            {
               return false;
            }
            else
            {
               return true;
            }
         }
      }
   }
}



Áö±Ý±îÁö ³ª´©¾î¼­ ¼³¸íÇß´ø ºÎºÐÀ» Çϳª·Î ¹­¾ú°í, ¶Ç ¸î°¡Áö ÇÊ¿äÇÏ´Ù ½ÍÀº
¼³¸íÀº ÁÖ¼®³»¿¡ Æ÷ÇÔÇÏ¿´½À´Ï´Ù.

¸¶Ä¡¸ç..

¿Â¶óÀÎ »ó¿¡¼­ Á÷Á¢ Äڵ带 ¸¸µé°í ¹Ù·Î ¼³¸íÇØ °¡¸é¼­ ¾´ ±ÛÀ̶ó Äڵ忡 ¿¡·¯°¡ ÀÖÀ»Áöµµ ¸ð¸£°Ú½À´Ï´Ù. ´Ù¸¸ ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ´Ù ¶ó´Â ¹æ¹ýÀ» ¼³¸íÇϱâ À§Çؼ­ ³ë·ÂÇß°í, ¸í·É¾î¸¦ Ãß°¡ÇÏ´Â ¹ý, Ÿ°ÙÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ý µîµî¿¡ ´ëÇÑ ¼³¸íÀ» ´ã°íÀÚ ³ë·ÂÇßÀ¸³ª ÇÊ·ÂÀÌ ¸ðÀÚ¶õ °ü°è·Î ¾î¶»°Ô Àß º¸¼Ì³ª ¸ð¸£°Ú½À´Ï´Ù.

»ç½Ç RunUO¿¡¼­ µµÀÔÇϰí ÀÖ´Â ¹æ½ÄÀº ½ºÅ©¸³ÆÃ(Scripting)À̶ó°í º¸±â¿¡´Â ¹«¸®°¡ ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù. ±×·¡¼­ Á¦ ±Û¿¡¼­µµ ÀǵµÀûÀ¸·Î ½ºÅ©¸³À̶õ Ç¥ÇöÀº ¹èÁ¦ÇÏ¿´½À´Ï´Ù. RunUO¿¡¼­ »ç¿ëÇÑ°Ç Â÷¶ó¸® Ç÷¯±×ÀÎ ¹æ½ÄÀÌ¶ó º¸´Â°Ô Ÿ´çÇϸç, µû¶ó¼­ ¼ÒÀ§ ¸»ÇÏ´Â RunUO ½ºÅ©¸³¿¡´Â ¾ð¾îÀûÀÎ Áö½Ä°ú ¹æ¹ýÀ¸·Î¼­ÀÇ Á¢±ÙÀÌ ÇÊ¿äÇÕ´Ï´Ù. ½ºÇǾ ´Ù¸¥ ¿¹¹°·¹ÀÌÅÍ ½ÄÀ¸·Î ±×Àú ¸í·É¾î ¸î°³, ÇÔ¼ö ¸î°³ ÀÍÇô¼­ µÇ´Â°ÍÀÌ ¾Æ´Ï¶ó´Â ¸»¾¸À» µå¸®°í ½Í½À´Ï´Ù. ¹Ù¶÷ÀÌ ÀÖ´Ù¸é, RunUO¸¦ ÅëÇØ¼­ c#¿¡ °ü½ÉÀ» °¡Áö½Ã°í, ³ª¾Æ°¡ c#À» ÅëÇØ ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °¡Áö¼ÌÀ¸¸é Çϴ°ÍÀÌ ¹Ù¶÷ÀÔ´Ï´Ù¸¸.

¸ðÂÉ·Ï °­Ç³´Ô¿¡°Ô ºÎŹ¹Þ¾Æ ³ª¸§´ë·Î °ü¸®ÀÚÀÇ ÇÑ ÀÚ¸®¸¦ Â÷ÁöÇϰí ÀÖ¾ú½À´Ï´Ù¸¸ ±×µ¿¾È ÀÌ·¸´ÙÇÒ ½ÇÀûµµ ¾ø°í ÇØ¼­ ÀÌ·¸°Ô ºÎÁ·Çϳª¸¶ Çѹø ½áº¸¾Ò½À´Ï´Ù. ¸ðÂÉ·Ï µµ¿òµé µÇ¼Ì±æ ¹Ù¶ó¸ç, ¹°·¯°©´Ï´Ù.

º» ±Û¿¡ °üÇÑ ¹®ÀÇ »çÇ×Àº irc³»¿¡¼­ÀÇ #ultimax ä³ÎÀÇ kkungÀ̳ª,
kkungkkung@gmail.comÀ¸·Î ÁÖ½Ã¸é ºü¸¥ ½ÃÀϳ»¿¡ ´äº¯ÇØ µå¸®°Ú½À´Ï´Ù. ¸ðÂÉ·Ï ºÎÁ·ÇÑ °­ÀÇ Âü°íÇÏ¿©Áּż­ °¨»çÇÕ´Ï´Ù.
¡è ¸Ç À§·Î °¡±â ¡è
ȸ¿ø ÇÁ·ÎÇÊ º¸±â ÂÊÁö º¸³»±â
dh1024
ÀÛ¼º±ÛÁ¦¸ñ : ´ë..´ÜÇϽñº¿ä ;¤±;   ±Û ÀÛ¼º½Ã°£ : 2005-02-04 ±Ý 12:15 am ±ÛÀ» ÀοëÇÏ¿© ÀÛ¼ºÇÕ´Ï´Ù.

Fifth Cicle [4]
Fifth Cicle [4]

°¡ÀÔÀÏ: 2004³â 02¿ù 15ÀÏ
°Ô½Ã¹°: 85
ÁÖ ¼Ò: /

ÀÌ·± ±ÍÂúÀº ÀÏÀ».. ÇϽôٴÏ
;¤±;

Á¸°æ½º·´½À´Ï´Ù.

_________________
Team Utopia "ëÞÔÛ"
¡è ¸Ç À§·Î °¡±â ¡è
ȸ¿ø ÇÁ·ÎÇÊ º¸±â ÂÊÁö º¸³»±â E-Mail º¸³»±â
wind0204
ÀÛ¼º±ÛÁ¦¸ñ :    ±Û ÀÛ¼º½Ã°£ : 2005-02-04 ±Ý 2:15 pm ±ÛÀ» ÀοëÇÏ¿© ÀÛ¼ºÇÕ´Ï´Ù.

Fourth Cicle [3]
Fourth Cicle [3]

°¡ÀÔÀÏ: 2004³â 06¿ù 05ÀÏ
°Ô½Ã¹°: 60
ÁÖ ¼Ò: /

°¨»çÇÕ´Ï´Ù. ¿À´ÃÀÌ Á¦ »ýÀÏÀε¥...... »ýÀÏ ¼±¹°·Î °¨»çÈ÷ ¹ÞÀ»°Ô¿ä. ÇÏÇÏÇÖ!
¡è ¸Ç À§·Î °¡±â ¡è
ȸ¿ø ÇÁ·ÎÇÊ º¸±â ÂÊÁö º¸³»±â E-Mail º¸³»±â
ÀÌÀü °Ô½Ã¹°º¸±â :
»õ ±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù.´äº¯±ÛÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÇöÀçÆäÀÌÁö : 1/1

RunUo.Korean.Forum ¢º Server Support ¢º ¿äû°­ÀÇ::wind0204´ÔÀÇ ¿äû°­ÀÇ ÀÔ´Ï´Ù.
¹Ù·Î°¡±â:


°Ô½Ã¹° ÀÛ¼º : (X)
´äº¯±Û ÀÛ¼º : (X)
°Ô½Ã¹° ¼öÁ¤ : (X)
°Ô½Ã¹° »èÁ¦ : (X)
ÅõÇ¥ Çϱâ : (X)
ÆÄÀÏ ¾÷·Îµå : (X)
ÆÄÀÏ ´Ù¿î·Îµå : (0)



DAJ Glass (1.0.5) template by Dustin Baccetti // template edit by GangPung
EQ graphic based off of a design from www.freeclipart.nu
Powered by phpBB 2001, 2002 phpBB Group, Translated by zzangga

DNS Powered by DNSEver.com