¥á¥¤¥ó | May 2005 »

April 29, 2005

¶À¤â¤Á

¶À¤â¤Á¥Ø¥ë¥¹¥Ñ¥Ã¥¯


¥¯¥ê¥Ã¥¯¤Ç³ÈÂç

¿ïʬ¤ÈÀΤ˺î¤Ã¤¿¤ä¤Ä¤Ç¡¢¤·¤«¤âµ¨Àá¤â¤«¤Ê¤ê°ã¤¤¤Þ¤¹¤¬°ì±þŽ¥Ž¥Ž¥¤È¤¤¤¦¤³¤È¤Ç¡£¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤¬¶À¤â¤Á¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤ì¤À¤±¤Ç¤¹¡£Æ³Æþ¤Ïpk3¤òetmain¤«¤ª¹¥¤­¤ÊMOD¥Õ¥©¥ë¥À¤ËÆþ¤ì¤Æ¤¯¤ì¤ì¤Ð¤ª¤·¤Þ¤¤¤Ç¤¹¡£

¥Õ¥¡¥¤¥ë

¥´¡¼¥ë¥Ç¥ó¥¦¥£¡¼¥¯¤È¤¤¤¦¤³¤È¤Ç¾®Î¹¹Ô¤Ø¤¤¤Ã¤Æ¤­¤Þ¤¹v(^-^

Åê¹Æ¼Ô ikanatto : 11:10 AM | ¥³¥á¥ó¥È (0)

April 28, 2005

ETPRO 3.1.12 & 3.1.13 Features & Fixes ÏÂÌõ

ETPRO¤¬¿·¤·¤¯¤Ê¤Ã¤Æ²¿¤¬ÊѤï¤Ã¤¿¤Î¤«¡¢¤Ë¤Ä¤¤¤Æ¤òÏÂÌõ¤·¤Æ¤ß¤Þ¤·¤¿¡£Æä˿¿¿·¤·¤¤Éôʬ¤â¤Ê¤¯ÌÌÇò¤ß¤â¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢¶½Ì£¤Ê¤É¤´¤¶¤¤¤Þ¤·¤¿¤é¤´¤é¤ó¤¯¤À¤µ¤¤¡£
ËÝÌõ¸µµÚ¤Óetpro¥À¥¦¥ó¥í¡¼¥É

¤Á¤Ê¤ß¤ËETPRO¤Î¥Ð¡¼¥¸¥ç¥óɽ¼¨¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢°ìÈֺǽé¤Î¿ô»ú¤¬¥á¥¸¥ã¡¼¥Ð¡¼¥¸¥ç¥ó¡¢¼¡¤¬¡Ö¥Ñ¥Ö¥ê¥Ã¥¯¸þ¤±¡×¤Î¥Þ¥¤¥Ê¡¼¥Ð¡¼¥¸¥ç¥ó¡¢ºÇ¸å¤¬³«È¯¥Á¡¼¥àÆâ¤ä¥Ù¡¼¥¿¤Ê¤É¤Ç¤Î¥Þ¥¤¥Ê¡¼¥Ð¡¼¥¸¥ç¥ó¡Ê¤Ä¤Þ¤êÀµ¼°¤Ç¤Ï¤Ê¤¤¡Ë¡¢¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¤³¤Î¸åbugfix x.x¤Ê¤ÉÆâÉô¥Ð¡¼¥¸¥ç¥ó¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£

ETPRO Bug Fixes & Features


3.1.12
¥Ð¥°½¤Àµ¡¦¥Á¡¼¥ÈÂкö

cg_autoaction¤¬¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤ÎºÝ¤ËÀµ¾ï¤ËƯ¤«¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
opentimerinput¤Ï¥Þ¥¦¥¹¥Õ¥©¡¼¥«¥¹¤ò¤·¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£
Ũ¤ÎÉé½ý¤·¤¿¡ÊÊ¢¶ÚÃæ¤Î¡Ë¥×¥ì¥¤¥ä¡¼¤¬ÁÉÀ¸¤Î¾ã³²¤È¤Ê¤Ã¤Æ¤¤¤¿ÅÀ¤ò½¤Àµ¡£
¥ì¥Õ¥ê¡¼¤Ë¤è¤ë¹ß»²¤¬¸í¤Ã¤ÆÅêɼ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦ÅÀ¤ò½¤Àµ¡£
cg_teamchatsonly¤¬Á´ÂÎ¥Á¥ã¥Ã¥È¤ò¥Ö¥í¥Ã¥¯¤·¤Ê¤«¤Ã¤¿ÅÀ¤ò½¤Àµ¡£
shuffleteamsxp_norestart¤¬Åêɼ¥á¥Ë¥å¡¼¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿ÅÀ¤ò½¤Àµ¡£
¥Õ¥¡¥¤¥¢¥Á¡¼¥à¤Î¥¢¥¤¥³¥ó¤¬¼ã´³¤º¤ì¤Æɽ¼¨¤µ¤ì¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
cl_language¤¬ÊѤÊËÝÌõʸ¤òɽ¼¨¤·¤Æ¤¤¤¿ÅÀ¤ò½¤Àµ¡£
inviteall¤¬´û¤Ë¥Õ¥¡¥¤¥¢¥Á¡¼¥à¤ËÆþ¤Ã¤Æ¤¤¤ë¥×¥ì¥¤¥ä¡¼¤Ë¤â±Æ¶Á¤·¤Æ¤¤¤¿ÅÀ¤ò½¤Àµ¡£
etpro¤Î¥¢¥ó¥Á¥é¥°µ¡Ç½¤¬¸þ¾å¡£
Á´¤Æ¤ÎÉð´ï¤Îȯ¼ÍΨ¤È¥ª¡¼¥Ð¡¼¥Ò¡¼¥È¤ÏFPS¤Ë°Í¸¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
b_fallingbugfix 1¤Ï¥Õ¥§¥¤¥¯¥Ö¥é¥·¤ò̵»ë¤·¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£
¥Õ¥¡¥¤¥¢¥Á¡¼¥à¤Î¥¢¥¤¥³¥ó¤Ïb_fireteamAlpha¤Ë½¾¤Ã¤ÆÀßÄꤵ¤ì¤Þ¤¹¡£
oasis¤Î¥¹¥¯¥ê¥×¥È¤¬½¤Àµ¤µ¤ì¤Þ¤·¤¿¡£
¥Á¥ã¥Ã¥ÈÃæ¤Ç¤ÎÃÏ̾¤Ï¿§¤¬ÊѤï¤é¤Ê¤«¤Ã¤¿ÅÀ¤ò½¤Àµ¤·¤Þ¤·¤¿¡£
Éé½ý¤·¤¿CVOPS¤¬Áê¼ê¤ÎÉþ¤òÃ¥¤¨¤¿ÅÀ¤ò½¤Àµ¡£
·ìº¯¤¬¥¯¥é¥Ã¥·¥å¤ª¤è¤Ó¥Ï¥ó¥°¤ò°ú¤­µ¯¤³¤·¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¥×¥ì¥¤¥ä¡¼¤¬¥ê¥ó¥Ü¡¼¤Ë¤Ê¤Ã¤¿¾õÂ֤Ǥâ»àÂΤ¬¼ÍÀþ¤ò¼×¤Ã¤Æ¤¤¤¿ÅÀ¤ò½¤Àµ¡£
cg_teamchatsonly¤¬¥Õ¥¡¥¤¥¢¥Á¡¼¥à¥Á¥ã¥Ã¥È¤ò¥Õ¥£¥ë¥¿¡¼¤·¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£

Known bugs:
None

3.1.13
¥Ð¥°½¤Àµ¡¦¥Á¡¼¥ÈÂкö

¥µ¡¼¥Ð¡¼¤¬¥¯¥é¥Ã¥·¥å¤¹¤ëÌäÂê¤ò½¤Àµ¡£
clientkick¤¬°Û¤Ê¤ë¥¯¥é¥¤¥¢¥ó¥È¤ò½³¤ê¤À¤·¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¸í¤Ã¤Æ¥ì¥Õ¥ê¡¼¤¬XP SHUFFLE NO RESTART¤ò¥³¡¼¥ë¤·¤Æ¤·¤Þ¤¦ÌäÂê¤ò½¤Àµ¡£
¥Ý¡¼¥º¤ò¤«¤±¤¿¤È¤­¤Î¥Ð¥°¤ò½¤Àµ¡£
¥À¥¤¥Ê¥Þ¥¤¥ÈÀßÃÖ¡¦²ò½ü¡¢¥ª¥Ö¥¸¥§¥¯¥È¶¯Ã¥¡¦Ã¥´Ô¤Î¥í¥°¤È¥¢¥Ê¥¦¥ó¥¹¤ò½¤Àµ¡£
b_wolfrof¤ÏRtCW¤Împ40¤ÈƱ¤¸È¯¼ÍΨ¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

¿·µ¡Ç½

ET 2.60¤ËÂбþ¡Ê¤Ö¤Ã¤Á¤ã¤±2.60¤Ë¤Î¤ßÂбþ¡Ë¡£

Mac¤ËÂбþ¡£

¥¢¥ó¥Á¥ê¥³¥¤¥ë¤È¥»¥ó¥¿¡¼¥Ó¥å¡¼¥¹¥¯¥ê¥×¥È¤â´¶ÃβÄǽ¡£

¥Ò¥Ã¥È¥µ¥¦¥ó¥É¤ÏÉð´ï¤Ë¤è¤Ã¤ÆÌĤëÌĤé¤Ê¤¤¤¬·è¤Þ¤ê¤Þ¤¹¡£

/guids¤Ï¥¹¥¯¥ê¥×¥È²òÀϤΤ¿¤á¤Ë¥Ø¥Ã¥À¡¼¤È¥Õ¥Ã¥¿¡¼¤ò½ÐÎϤ·¤Þ¤¹¡£
freecamSetPos¤Ï¼¡¤ÎÆó¼ïÎà¤Î¹½Ê¸¤Ë¤è¤ë»ÈÍѤ¬²Äǽ¤Ç¤¹¡£
freecamSetPos x y z
freecamSetPos x y z pitch yaw roll

b_noactivatelean¤Ë¤è¤Ã¤Æactivate¤Èstrafe¤ÎƱ»þ²¡¤·¤Çlean¤Ë¤Ê¤ë¤³¤È¤òÍÞÀ©¤Ç¤­¤Þ¤¹¡£
b_drawspectatorteamflags¤Ë¤è¤Ã¤Æ¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼ÃæHUD¤Ë¥Á¡¼¥à¤Î´ú¤òɽ¼¨¤Ç¤­¤Þ¤¹¡£
b_flushitems for ground-oriented items (medpacks, ammopacks)
b_simpleitems by fretn
surrender¡Ê¹ß»²¡Ë¤¬¥³¡¼¥ë¤Ç¤­¤Þ¤¹¡£¡Êvote_allow_surrender¤Ë¤è¤Ã¤Æµö²ÄÉÔµö²Ä¡Ë
¥³¥ó¥½¡¼¥ë¤«¤é¥×¥é¥¤¥Ù¡¼¥È¥á¥Ã¥»¡¼¥¸¤¬Á÷¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
shuffleteamsxp_norestart¤¬Äɲ䵤졢¥Þ¥Ã¥×¤ò¥ê¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤Ê¤¯¥·¥ã¥Ã¥Õ¥ë¤¬²Äǽ¤Ç¤¹¡£
fireteam inviteall¤Ï¥Õ¥¡¥¤¥¢¥Á¡¼¥à¤ËÆþ¤Ã¤Æ¤¤¤Ê¤¤Á´¤Æ¤Î¿Í¤ò¾·ÂÔ¤·¤Þ¤¹¡£
fireteam invite¤ÏÎ¥¤ì¤¿Ì¾Á°¤Ë¤âÂбþ¤·¤Þ¤¹¡£
¼êÜØÃƤò»ý¤Ã¤¿¾õÂÖ¤Çaltweapon¤¹¤ë¤Èvsay_team FireInTheHole¤ÈƱ¤¸Æ°ºî¤ò¤·¤Þ¤¹¡£

ÁȤ߹þ¤ß¼°¥¹¥Ñ¥¦¥ó¥¿¥¤¥Þ¡¼
/timerSet¤ÇÀßÄꤷ¤Þ¤¹¡£
/openTimerInput¤Ë¤è¤Ã¤Æ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ò³«¤­¤Þ¤¹¡£
/resetTimer¤Ç¥ê¥»¥Ã¥È¤·¤Þ¤¹¡£

New headbox code
¿·¤·¤¤¥Ø¥Ã¥É¥Ò¥Ã¥È¥Ü¥Ã¥¯¥¹¥³¡¼¥É
b_realhead 1¤Ë¤è¤Ã¤Æ¿·¤·¤¤¥³¡¼¥É¤òŬÍѤǤ­¤Þ¤¹¡Ê+256,+512,+1024,+2048¤òÄɲ乤뤳¤È¤Ç¥Ç¥Ð¥Ã¥°¥â¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡Ë¡£
Ãí°Õ£±¡§Éú¤»¤¿¾õÂ֤ǤΥܥǥ£¤Î¥Ü¥Ã¥¯¥¹¤Ï¥Ò¥Ã¥È¤Ç¤Ï¤Ê¤¯¾×ÆÍȽÄê¤Î¤¿¤á¤Ë»È¤ï¤ì¤Æ¤¤¤ë¤Î¤Ç¸í¤Ã¤Æɽ¼¨¤µ¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
Ãí°Õ£²¡§¥Ç¥Ð¥Ã¥°¥â¡¼¥É¤ËÆþ¤Ã¤¿¤é¡¢g_smoothclients 0¤â»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤Ç¤Ê¤¤¤È¥Ç¥Ð¥Ã¥°¥Ü¥Ã¥¯¥¹¤Îɽ¼¨¤¬ÊѤˤʤ뤫¤â¤·¤ì¤Þ¤»¤ó¡£

Location names
°ÌÃÖ̾ɽ¼¨µ¡Ç½¤òÁ´ÌÌŪ¤Ë¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¥¯¥é¥¤¥¢¥ó¥È¤Ï_loc_override.dat¤òÆɤ߹þ¤â¤¦¤È¤·¡¢¤³¤ì¤ò_loc.dat¤Î¾å½ñ¤­¥Ç¡¼¥¿¤È¤·¤Þ¤¹¡£¤É¤Á¤é¤Î¥Õ¥¡¥¤¥ë¤â¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¢¼«Æ°Åª¤Ë°ÌÃÖ¼þÊÕ¤Îʪ¤ò̾¾Î¤È¤·¤ÆÀ¸À®¤·¤Þ¤¹¡£

ɸ½à6¥Þ¥Ã¥×¤Ë¤Ä¤¤¤Æ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç°ÌÃÖ̾¥Õ¥¡¥¤¥ë¤ò´Þ¤á¤Æ¤¤¤Þ¤¹¡£

°ÌÃÖɽ¼¨¤Ë´Ø¤¹¤ë¥³¥Þ¥ó¥É
loc_add , loc_del (operates on closest), loc_rename (closest), loc_save [full], loc_load, loc_show (closest).

Cvars:
b_emptyscript
ºÇ¸å¤Î¥×¥ì¥¤¥ä¡¼¤¬¥µ¡¼¥Ð¡¼¤«¤éÈ´¤±¤¿¤È¤­¤Ë»ØÄꤷ¤¿¥¹¥¯¥ê¥×¥È¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

b_defaultbantime x -
ÌÀ³Î¤Ê»þ´ÖÀßÄê¤òɬÍפȤ·¤Ê¤¤ban»þ´Ö¤òÉäÇÀßÄꤷ¤Þ¤¹¡£¡Ê¥Ç¥Õ¥©¥ë¥È300ÉáË

b_wolfrof x -
SMG¤Î»þ´ÖÅö¤¿¤êȯ¼ÍΨ¤òÊѹ¹¤·¤Þ¤¹¡£0¤ÏETɸ½à¤Îȯ¼ÍΨ¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¢1¤ÇRTCW¤Î(mp40)ȯ¼ÍΨ¤Ë¤Ê¤ê¤Þ¤¹¡£

b_shrug x -
/shrug¤òÍ­¸ú̵¸ú¤Ë¤¹¤ë¤«¤Ç¤¹¡£0¤Ç̵¸ú¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¢1¤ÇÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£

b_distancefalloff x -
µ÷Î¥¤Ë¤è¤ë¥À¥á¡¼¥¸¸º¾¯¤ÎÍ­¸ú̵¸ú¡£0¤Ï¤Ê¤·¡¢1¤ÏÍ­¸ú¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡£

b_locationMode x -
°ÌÃÖɽ¼¨¤Ë´Ø¤¹¤ëÀßÄê¤Ç¤¹¡£0¤Ç̵¸ú¡¢1¤Ç°ÌÃÖ¤Î̾Á°¤òɽ¼¨¡¢2¤ÏºÂɸ¤òɽ¼¨¡¢4¤ÏPVS¤Î¥Á¥§¥Ã¥¯¤Ê¤·¡¢8¤Ï°ÌÃÖ̾¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿»þ¤ËºÂɸ¤òÊÖ¤¹¤³¤È¤òÍÞÀ©¤·¤Þ¤¹¡£

b_debuglocations x (cheat) -
°ÌÃÖɽ¼¨¤Ë´Ø¤¹¤ë¥Ç¥Ð¥Ã¥°É½¼¨¤ÎÀßÄê¤Ç¤¹¡£1¤Ï°ÌÃÖ¥Þ¡¼¥«¡¼¤ËË¢¥¹¥×¥é¥¤¥È¤òɽ¼¨¤·¤Þ¤¹¡£¡ÊÎСáºÇû¡¢À֡᤽¤ì°Ê³°¡Ë¡£2¤Ï1¤¬Ë¢¤Ç¤Ï¤Ê¤¯¸÷¤Ë¤Ê¤ê¤Þ¤¹¡£4¤Ï¥Þ¡¼¥«¤Î¾å¤Ë̾Á°¤òɽ¼¨¤·¤Þ¤¹¡£8¤Ï¾¤Î¥×¥ì¥¤¥ä¡¼¤Ë¤è¤ë°ÌÃÖÊѹ¹¤ò¼õ¤±Æþ¤ì¤Þ¤¹¡£16¤Ï¾¤Î¥×¥ì¥¤¥ä¡¼¤Ø°ÌÃÖ¾ðÊó¤òÁ÷¤ê¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 04:46 PM | ¥³¥á¥ó¥È (13)

April 27, 2005

Urban Terror for Enemy Territory FAQ

ET:UrT FAQ

Urban Terror for Enemy Territory¤Ë´Ø¤¹¤ëFAQ¤òÏÂÌõ¤·¤Æ¤ß¤Þ¤·¤¿¡£ÂÔ¤Á±ó¤·¤¯¤Æ»ÅÊý¤¬¤Ê¤¤»ä¤È¤¢¤Ê¤¿¡¢¤·¤Ð¤é¤¯¤ÏÈàÅù¤Î´èÄ¥¤ê¤ò¸«¼é¤ê¤Ä¤ÄET¤òÍ·¤Ó¤Þ¤·¤ç¤¦¡£¤½¤â¤½¤âÈàÅù¤Ï¼ñÌ£¤Ç¤ä¤Ã¤Æ¤¤¤ë¤À¤±¤Ê¤Î¤Ç¶¯ÍפǤ­¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢¤½¤ì¤Ç¤â¤Ç¤­¤ë¤À¤±Á᤯ºî¤Ã¤ÆÍߤ·¤¤¤È´ê¤¦¤Î¤Ï¿Í¤Î¥µ¥¬¤Ç¤·¤ç¤¦¤«¡£

Urban Terror for Enemy Territory FAQ

άµ­¡§UrT(Urban Terror) ET(Enemy Territory) SD(Splash Damage) Q3(Quake 3 Arena) CoD(Call of Duty)

URBAN TERROR FOR ENEMY TERRITORY FAQ(update 04-08-04)

ET¤Ã¤Æ²¿¤Ç¤¹¤«¡£

¥¦¥ë¥Õ¥§¥ó¥·¥å¥¿¥¤¥ó¥·¥ê¡¼¥º¤ÎºÇ¿·ºîÉʤǤ¹¡£Allies¤ÈAxis¤ËÊ̤졢¤Ä¤Ê¤¬¤ê¤Î¤¢¤ë¥Þ¥Ã¥×·²¤òÀ襤¤Ì¤¯¤â¤Î¤Ç¤¹¡£

UrT¤Ï¥¹¥¿¥ó¥É¥¢¥í¥ó¤Ç¤¹¤«¡£

id software¤È¶¨µÄ¤·¤¿·ë²Ì¥¹¥¿¥ó¥É¥¢¥í¥ó¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ET¤ÈUrT¤òÊÌ¡¹¤ËƳÆþ¤·¤Æ¤¯¤À¤µ¤¤¡£

ÈÒÉÛ¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤Ï¤É¤ì¤¯¤é¤¤¤Ë¤Ê¤ê¤½¤¦¤Ç¤¹¤«¡£

Ìó260MB¤Ë¤Ê¤ê¤½¤¦¤Ç¤¹¡£

Macintosh¤Ë¤âÂбþ¤·¤Þ¤¹¤«¡£

º£¤Î¤È¤³¤íÂоݳ°¤Ç¤¹¡£¤·¤«¤·¥³¡¼¥À¡¼¤¬SD¤ÈÏä·¹ç¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢·ë²Ì¤¬½Ð¼¡ÂèÄɤäÆWeb¤Çȯɽ¤·¤Þ¤¹¡£

ET:UT¤Ë¤Ï¥Þ¥Ã¥×¤¬¤¤¤¯¤Ä´Þ¤Þ¤ì¤Þ¤¹¤«¡£

12¸Ä¤òͽÄꤷ¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÃæ¤Ë¤ÏAbbey2¡¢Casa¡¢Druglord3¡¢Prague¡¢Turnpike¤¬´Þ¤Þ¤ì¤Þ¤¹¡£

32¿Í°Ê¾å¤Î¥µ¡¼¥Ð¡¼¤òΩ¤Æ¤ë¤Î¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«¡£

¥×¥í¥°¥é¥àÌ̤ÇÌäÂê¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥Þ¥Ã¥×¤¬16¿Í¤ò¾å¸Â¤Ë¥Ç¥¶¥¤¥ó¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç16¡Á20¤ò¸ÂÅ٤ˤ·¤¿Êý¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£

¥¹¥È¥ì¥¤¥Õ¥¸¥ã¥ó¥×¤Î¤è¤¦¤Ë¡¢Q3¤ÈʪÍý±é»»¤ÏƱ¤¸¤Ç¤¹¤«¡£

¤Ï¤¤¡£

¾¤Î¥¨¥ó¥¸¥ó¤ËUrT¤ò°Ü¿¢Í½Äê¤Ï¤¢¤ê¤Þ¤»¤ó¤«¡£

¤¢¤ê¤Þ¤»¤ó¡£

Q3¤ÇETÈǤÎUrT¤ò¥×¥ì¥¤¤Ç¤­¤Þ¤¹¤«¡£

¤Ç¤­¤Þ¤»¤ó¡£

ET¥¨¥ó¥¸¥ó¤ÏŬÀڤʥ¹¥±¥ë¥È¥ó¥¢¥Ë¥á¡¼¥·¥ç¥ó¤¬¤Ê¤¤¤Î¤Ç¤Ï¡£

¿·¤¿¤Ê¥×¥ì¥¤¥ä¡¼¥â¥Ç¥ë¤òºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Éð´ï¤â¥Þ¥Ã¥×¤â¥³¥ó¥Ð¡¼¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¥³¡¼¥É¤Ï»÷¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢¤½¤ì¤Ç¤â2¥ö·î°Ê¾å¤«¤«¤ë¸«Ä̤·¤Ç¤¹¡£

TeamKill¤ÏET¤Î¤è¤¦¤Ë°·¤ï¤ì¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£

3²óTK¤¹¤ë¤È¥µ¡¼¥Ð¡¼¤«¤é½³¤ê¤À¤µ¤ì¤Þ¤¹¡£

Á´¤Æ¤Îºî¶È¤¬½ª¤ï¤ë¤Þ¤Ç¤Ë6¥ö·îÄø¤«¤«¤ë¤Î¤Ç¤Ï¤È¸«¹þ¤ó¤Ç¤ª¤ê¤Þ¤¹¤¬¡£

º£¤Î¤È¤³¤í¾¯¤Ê¤¯¤È¤â3¥ö·î°Ê¾å¤«¤«¤ë¤â¤Î¤È¤ß¤Æ¤¤¤Þ¤¹¡£

Q3¤Ç¤Ï¤Ê¤¯ET¤Ë°Ü¹Ô¤¹¤ë¥á¥ê¥Ã¥È¤È¤Ï¡£

ºÇ½é¤Ë¤·¤ÆºÇÂç¤ÎÅÀ¤¬¡¢ET¤¬¥Õ¥ê¡¼¥¦¥§¥¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

Q3¤è¤ê¤âÍ¥¤ì¤¿¥¨¥ó¥¸¥ó¤¬Åо줷¤¿»þUrT¤Ï¤É¤¦¤Ê¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£

¥²¡¼¥à¥·¥¹¥Æ¥à¤¬Â礭¤¯ÊѤï¤ë¤³¤È¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£¤¿¤À¡¢¥Þ¥Ã¥×¡¢¥¢¥Ë¥á¡¼¥·¥ç¥ó¡¢¥Ò¥Ã¥ÈȽÄ꤬ÂçÉý¤Ë²þÎɤµ¤ì¤ë¤Ê¤É¤Ï´üÂÔ¤µ¤ì¤Þ¤¹¡£

ET:UT¤Ï¥Ñ¥ó¥¯¥Ð¥¹¥¿¡¼¤Î¥µ¥Ý¡¼¥È¤òÆÀ¤Þ¤¹¤«¡£

¤Ï¤¤¡£

ET:UT¤Ç¤Ï¥²¡¼¥à¥â¡¼¥É¤ÎÄɲõڤӺï½ü¤Ï¤¢¤ê¤Þ¤¹¤«¡£

¸½ºßÏä·¹ç¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢Äɲ䵤ì¤ë¸«¹þ¤ß¤Ï¤Ê¤µ¤½¤¦¤Ç¤¹¡£

ET¤Î¤è¤¦¤Ê¥¯¥é¥¹¤Î³µÇ°¤Ï¤¢¤ê¤Þ¤¹¤«¡£

¤½¤ÎͽÄê¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤â¤È¤â¤ÈUrT¤ÏÁªÂò¤¹¤ëÉð´ï¤ÈÁõÈ÷¤ÇÀ­³Ê¤Å¤±¤¬²Äǽ¤Ç¤¹¤Î¤Ç¡¢²þ¤á¤ÆÄɲ乤ëɬÍפâ¤Ê¤¤¤Î¤Ç¤¹¡£

ET¤Î¥½¡¼¥¹¥³¡¼¥É¤¬GPL¥é¥¤¥»¥ó¥¹¤Ë¤Ê¤Ã¤¿¾ì¹ç¡¢UrT¤Î¥³¡¼¥É¤â¸ø³«¤µ¤ì¤Þ¤¹¤«¡£

¤¤¤¤¤¨¡£

CoD¤ËUrT¤Î°Ü¿¢¤·¤Æ¤¯¤ì¤Þ¤»¤ó¤«¡£

ET¤Ë°Ü¿¢¤¹¤ë¤­¤Ã¤«¤±¤Ï¡¢id software¤ÈSD¤ÈÃ礬¤è¤«¤Ã¤¿¤³¤È¡¢¤½¤·¤Æ̵ÎÁ¤Ç¤¢¤ë¤³¤È¤Ç¤¹¡ÊCoD¤ÏInfinity Ward¤ÈÏ¢Íí¤ò¤È¤Ã¤Æ¤¤¤Ê¤¤¤¿¤áÌÌÅÝ¡Ë¡£

UrT¤òET¤Ø°Ü¿¢¤¹¤ë¤³¤È¤ÏSID¤Ë¤É¤Î¤è¤¦¤Ê±Æ¶Á¤ò¤â¤¿¤é¤·¤Þ¤¹¤«¡£

MODȯɽÅö½é¤è¤êid software¤ÈSD¡Ê¥¢¥Þ¥Á¥å¥¢¤Î¤³¤í¡Ë¤ÈÏ¢Íí¤ò¼è¤ê³¤±¤Æ¤¤¤Þ¤¹¡£UrT¤òET¤Ë°Ü¿¢¤¹¤ë¤³¤È¤Ç¤³¤ì¤ò¿¤¯¤Î¥²¡¼¥à¥³¥ß¥å¥Ë¥Æ¥£¤Ë¾Ò²ð¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£¤¹¤Ç¤Ë¤¤¤¯¤Ä¤«¤Î¾­ÍèŪ¤Ê¥¿¥¤¥È¥ë¤Ë¸þ¤±¤¿¥¢¥¤¥Ç¥¢¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤ì¤ò¼Â¸½¤¹¤ëµ¡²ñ¤¬ÆÀ¤é¤ì¤Æ¤¤¤Ê¤¤¾õ¶·¤Ç¤¹¡£UrT¤Î°Ü¿¢¤Ë¤è¤ê¡¢¥¢¥¤¥Ç¥¢¤ò¼Â¸½¤µ¤»¤ë¤¿¤á¤ÎÀÜ¿¨¤¬ÆÀ¤é¤ì¤ë¤È¹Í¤¨¤Æ¤¤¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:37 PM | ¥³¥á¥ó¥È (16)

ETpro crashes ET servers and administrators

¡¡ÀèÆü¥ê¥ê¡¼¥¹¤µ¤ì¤¿ETPRO¡¢¥Ù¡¼¥¿ÈǤȤ¤¤¦³«È¯¼Ô¤Î°Õ¿Þ¤Ë¸Æ±þ¤·¤¿¤«¤Î¤è¤¦¤Ë³Æ½ê¤Ç¥¯¥é¥Ã¥·¥å¤òµ¯¤³¤·¤Æ¤¤¤ë¡£
¡¡¶ñÂÎŪ¤Ë²¿¤¬ÌäÂê¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ÏÄ꤫¤Ç¤Ï¤Ê¤¤¤¬¡¢º£¤Þ¤ÇÀµ¾ï¤Ë²ÔÆ°¤·¤Æ¤¤¤¿¥µ¡¼¥Ð¡¼¤¬Æä˥³¥ó¥Õ¥£¥°¤òÄ´À°¤¹¤ë¤³¤È¤â¤Ê¤¯Æ°¤«¤·¤Æ¤Î¥¯¥é¥Ã¥·¥å¤È¤¤¤¦¤³¤È¤ÇETPRO¼«ÂΤ¬¸¶°ø¤À¤í¤¦¤«¡£

¡¡¤¿¤À¤·¡¢¥¯¥é¥¤¥¢¥ó¥È¥µ¥¤¥É¤ÈWindows·Ï¤Ç¤Ï¤³¤ÎÌäÂê¤ÏÀ¸¤¸¤Æ¤¤¤Ê¤¤¤è¤¦¤Ç¤¢¤ë¡£¥¯¥é¥¤¥¢¥ó¥È¥µ¥¤¥É¤Ç¤Ï¥×¥ì¥¤¥ä¡¼¤ò¥­¥Ã¥¯¤¹¤ëµ¡Ç½¤Ë¥Ð¥°¤¬¤¢¤ë¤è¤¦¤À¤¬¡¢¤½¤ì°Ê³°¤Ï¤ª¤ª¤à¤ÍÌäÂê¤Ê¤¯µ¡Ç½¤·¤Æ¤¤¤ë¡£¤¿¤À¤·¡¢µ¡Ç½¤¬¥Ð¥é¥ó¥¹¤òÊÝ»ý¤·¤Æ¤¤¤ë¤«¤ÏÊÌÌäÂê¤Ç¤¢¤ê¡¢ROF¤Ê¤É¥²¡¼¥àÀ­¤òÊѲ½¤µ¤»¤ë¥Õ¥£¡¼¥Á¥ã¡¼¤Ë´Ø¤·¤Æ¤Ï(¡©)¤Ç¤¢¤ë¡£RtCW¤Ë¤ÏRtCW¤Î¡¢ET¤Ë¤ÏET¤ÎÌ£¤¬¤¢¤ë¤Î¤Ç¤Ï¤Ê¤«¤í¤¦¤«¡£
¡¡[N]¤µ¤ó¤Î²Ë¤Ä¤Ö¤·¥µ¡¼¥Ð¤âÎã³°¤Ç¤Ï¤Ê¤¤¤è¤¦¤Ç¡¢´û¤ËET2.56¤Ø¥Ð¡¼¥¸¥ç¥ó¤òº¹¤·Ìᤷ¤Æ¤¤¤ë¡£Á°¥Ð¡¼¥¸¥ç¥ó¤¬Èó¾ï¤Ë°ÂÄê¤Ç¤¢¤Ã¤¿¤À¤±¤Ëº£²ó¤ÎÁûÆ°¤ÏÈó¾ï¤Ë»ÄÇ°¤Ç¤¢¤ë¡£
¡¡³ÆÃϤΥե©¡¼¥é¥à¤ò¸«¤Æ²ó¤Ã¤¿¸Â¤ê¡¢¥¯¥é¥Ã¥·¥å¤òµ¯¤³¤·¤Æ¤¤¤ë¿¤¯¤¬Linux·ÏDedicated¡£¥í¥°¤ò³Îǧ¤¹¤ë¤È¡¢ÂçÄñ¤Î¾ì¹ç¥¤¥ó¥¿¡¼¥ß¥Ã¥·¥ç¥ó¤ò½ª¤¨¤Æ¥­¥ã¥ó¥Ú¡¼¥ó¤Ê¤¤¤·¥Þ¥Ã¥×¤òÆɤ߹þ¤ß¤Ê¤ª¤¹»þ¤Ë¥¯¥é¥Ã¥·¥å¤¬À¸¤¸¤Æ¤¤¤ë¤è¤¦¤Ç¤¢¤ë¡£¤Þ¤¿¥Þ¥Ã¥×½ªÎ»»þ¤Ë½ÐÎϤµ¤ì¤ë¥ê¥¶¥ë¥È¤â¼ã´³É½¼¨¤¬¤ª¤«¤·¤¤¤³¤È¤âÊó¹ð¤µ¤ì¤Æ¤¤¤ë¡£³«È¯¼Ô¦¤Î¹Í¤¨¤Ç¤Ï¥Ñ¥ó¥¯¥Ð¥¹¥¿¡¼¤È¤ÎÁêÀ­ÉÔÎɤˤè¤Ã¤ÆÀ¸¤¸¤Æ¤¤¤ë¤é¤·¤¤¡£

Åê¹Æ¼Ô ikanatto : 05:45 PM | ¥³¥á¥ó¥È (13)

April 26, 2005

ETpro available for ver 2.60

ET Pro 3.1.12

ETPRO¤Î2.60ÂбþÈǤ¬¥Ù¡¼¥¿¤Ê¤¬¤é½Ð¤¿¤è¤¦¤Ç¤¹¡£

ETPro Forums News

¥Ð¡¼¥¸¥ç¥ó¤ÏET Pro 3.1.12 ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

Â礭¤ÊÌäÂê¤Ï¤Ê¤¤¤è¤¦¤Ç¤¹¤¬¡¢¥µ¡¼¥Ð¡¼¤Ëµ­Ï¿¤µ¤ì¤ë¥í¥°¤¬Àµ¾ï¤Ë½ÐÎϤµ¤ì¤Ê¤¤ÌÏÍͤǤ¹¡£

Readme Overview

¥Ð¥°¥Õ¥£¥Ã¥¯¥¹¤Ê¤É¤ÏÆÃÉ®¤¹¤Ù¤­Éôʬ¤Ï¾¯¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£Ê¢¶ÚÃæ¤Î¥×¥ì¥¤¥ä¡¼¤¬ÁÉÀ¸¤ä¥À¥¤¥Ê¥Þ¥¤¥È²ò½ü¤Î¾ã³²¤È¤Ê¤ëÉôʬ¤¬½¤Àµ¤µ¤ì¤¿¤³¤È¤Ï¥Á¥§¥Ã¥¯¤¹¤ë¤Ù¤­¤«¤â¤·¤ì¤Þ¤»¤ó¡£

2.60´°Á´Âбþ¤È¤¤¤¦¤³¤È¤ÇMac¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ÅöÁ³¤È¤¤¤¨¤ÐÅöÁ³¤Ç¤¹¡£

ÃíÌܤ¹¤Ù¤­¤Ï¡¢¥ê¥³¥¤¥ë¥­¥ã¥ó¥»¥ë¤È¥»¥ó¥¿¡¼¥Ó¥å¡¼¤Î¥¹¥¯¥ê¥×¥È¤âETpro¤Ë¤è¤Ã¤ÆÇÓ½ü²Äǽ¤Ë¤Ê¤Ã¤¿¤È¤¤¤¦¤È¤³¤í¤Ç¤·¤ç¤¦¤«¡£¸Ä¿ÍŪ¤Ë¤Ï¤³¤ì¤Ë¤Ï¤¢¤Þ¤ê»¿Æ±¤Ç¤­¤Þ¤»¤ó¤¬¡¢É¬ÍפȤ¹¤ë¿Í¤â¤¤¤ë¤è¤¦¤Ê¤Î¤Ç¤è¤¦¤ä¤¯¡¢¤È¤¤¤Ã¤¿¤È¤³¤í¤Ç¤¹¡£¤¿¤ÀETPro¤¬²¿¤ò¥»¥ó¥·¥ó¥°¤·¤Æ¥¹¥¯¥ê¥×¥ÈȽÄê¤ò²¼¤·¤Æ¤¤¤ë¤Î¤«¤À¤¤¤¿¤¤Í½ÁۤϤĤ¯¤Î¤Ç¡¢¤³¤Î΢¤ò¤«¤¤¤¿¥¹¥¯¥ê¥×¥È¤¬¤¤¤º¤ìÅо줹¤ë¤ä¤â¤·¤ì¤Þ¤»¤ó¡£

Ƭ¤Î¥Ò¥Ã¥È¥Ü¥Ã¥¯¥¹¤Ë´Ø¤¹¤ë¥³¡¼¥É¤¬¤Þ¤¿ÊѤï¤Ã¤¿¤½¤¦¤Ç¤¹¡£¤É¤¦¤Ê¤Ã¤¿¤Î¤Ç¤·¤ç¤¦¤Í¡©

¥Þ¥Ã¥×¤Î°ÌÃÖ¤È̾¾Î¤òÊÌ¥Õ¥¡¥¤¥ë¤ÇÄêµÁ¤¹¤ë¤³¤È¤Ç´°Á´Âбþ¤µ¤»¤é¤ì¤ë¤è¤¦¤Ç¤¹¡£ÌÌÅݤǤ¹¤¬²ÁÃͤϤ¢¤ë¤Î¤«¤â¤·¤ì¤Þ¤»¤ó¡£

¤¢¤È¤Ï¿·µ¬¤ËÄɲ䵤줿µ¡Ç½´Ø·¸¤ÎCvar¤¬¤¤¤¯¤Ä¤«¿·¤¿¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£È¯¼ÍΨ¤òRtCW¤ËÊѹ¹¤¹¤ë¤â¤Î¤â¤¢¤ë¤è¤¦¤Ç¤¹¡£¤¢¤È¥µ¡¼¥Ð¡¼¤Ëï¤â¤¤¤Ê¤¯¤Ê¤Ã¤¿¤È¤­¤Ë¥¹¥¯¥ê¥×¥È¤òÁö¤é¤»¤ëCvar¤âÄɲ䵤ì¤Æ¤¤¤Þ¤¹¡£¤Ê¤«¤Ê¤«¿´Áþ¤¤µ¡Ç½¤Ç¤¹¡£

°Ê²¼¤Ï¾åµ­¥Õ¥©¡¼¥é¥à¤«¤é¤ÎžºÜ¤Ç¤¹¡£

Version 3.1.12
cg_autoaction was broken for screenshots
opentimerinput doesnt get mouse focus
enemy wounded could block team wounded for revive
ref surrender menu callvoted by mistake
cg_teamchatsonly didnt ignore public chats
shuffleteamsxp_norestart was missing from vote menu
fireteam objective icon was misaligned slightly
cl_language could cause garbage translations
inviteall tried to invite players already on a fireteam
etpro unlagged accuracy increased
all weapon rof / overheat are now completely fps independent
b_fallingbugfix 1 no longer ignores fake brushes
fireteam objective icon now obeys b_fireteamAlpha
oasis script fixed (remove end of round delay after destroying both guns)
location names didn't reset color in chats
wounded covops could steal uniforms if close enough
bloodtrail crash/hang fixed
corpses could be "shot" after players tapped out
cg_teamchatsonly incorrectly filtered fireteam chats

New features:

ET 2.60 support (in fact, 2.60 only)

Mac OSX support

Anti-recoil and centerview scripts defeated

hitsounds are now generated for hitscan weapons only

/guids now outputs a header/footer for easier script parsing

freecamSetPos now supports two syntaxes:
freecamSetPos x y z
freecamSetPos x y z pitch yaw roll

b_noactivatelean (default 0, disabled) to enable/disable strafe+activate=lean
show team flag on hud while spectator following, b_drawspectatorteamflags to enable/disable
b_flushitems for ground-oriented items (medpacks, ammopacks)
b_simpleitems by fretn
callvote surrender (vote_allow_surrender enables/disables)
console can now send pm's
shuffleteamsxp_norestart to shuffle teams without restarting the map
'fireteam inviteall' to invite all players on your team who arent already on a fireteam
fireteam invite can now match on partial names
altweapon while holding grenade will vsay_team FireInTheHole

builtin spawntimer:
/timerSet to set it (eg from a script)
/openTimerInput for a ui popup
/resetTimer to reset the timer

New headbox code
new headbox code, enabled through b_realhead 1 (+256,+512,+1024,+2048 enables various hitbox debugging modes)
note: debugging body box for prone may "appear" wrong because its the box used for player collisions, not shots.
note2: if you use one of the debugging modes, use g_smoothclients 0 as well, or the debugging boxes will "appear" wrong.

Location names
Added full location name support - client will attempt to load from _loc_override.dat (for user's own location names) followed by _loc.dat (for server-supplied location names in e.g. a pk3), and failing both, client will build locations from target_location entities in the map.

Included rough draft versions of locations for all 6 stock maps.

Quick summary of location code:

Commands:
loc_add , loc_del (operates on closest), loc_rename (closest), loc_save [full], loc_load, loc_show (closest).

Cvars:
b_emptyscript
Name of a script to execute when the last player leaves the server

b_defaultbantime x -
Time in seconds for bans without explicitly defined ban time (default 300)

b_wolfrof x -
0 = ET Standard SMG Rate of fire (default
1 = RTCW Standard SMG Rate of fire

b_shrug x -
0 = Disable /shrug (default)
1 = Enable /shrug

b_distancefalloff x -
0 = Disable distance damage falloff for bullet weapons
1 = Enable distance damage falloff for bullet weapons (default)

b_locationMode x -
0 = Disabled
1 = Location names (Default)
2 = Location coordinates
4 = Don't check PVS when finding nearest location name
8 = Don't fall back on coordinates when no location found (return "unknown")

b_debuglocations x (cheat) -
1 - Draw bubble sprites at location markers (green = nearest, red = others)
2 - Draw dlights at location markers (red = nearest, green = others)
4 - Float location names at location markers (currently no scaling)
8 - Accept location updates from other players
16 - Send location updates to other players

8 + 16 simply bounce the command to other players on a loc_add/del/rename, so that multiple people can work on marking up a level with location names.

Åê¹Æ¼Ô ikanatto : 12:17 AM | ¥³¥á¥ó¥È (21)

April 24, 2005

Conception of mds/mdm/mdx importer

MDS/MDM/MDX importer for 3ds max

This plan is still conceptional. I have done a little about this, scratching some ideas and learning c++ from c :p Arrrgg, Object orientation??? what the hell is this...

I cant even figure out how long this work takes till an available version comes. God may only know. Or even he doesn't.

What this plugin does

The final target of this plugin concept is free and easy input/output between 3ds max and ET(RtCW). There are some formats for ET and they have different import/export gateways. Yes, this is REALLY BOTHERING. One more thing I have to say, there is no tools to export/import mdm or mdx. Whoever should be blamed, this environment is sucked for all modders as wll as me.

Eh, simple reasons why I try this. Let you guess a sec.

Model Formats in ET

MD3 is a versatile format to the quale3-engine-based games and used for various things. In ET, MD3 is common object models for map objects, weapons(partly there are some MDCs), accesseries and so on. MD3 can include animations.

MDM is a mesh data however MDM itself can not be used as model data. Combination of MDM and MDX makes a model. MDM has only vertex weights and texture coordinates and tags. MDX has bones and thier animations. Normally most humans have same bones( i think you have two arms and legs, and a head, dont you? ) so ET handles one mdx to all models and saves memory.MDM and MDX are used for player models.

MDS is used in RtCW. In fact, MDS = MDM + MDX however tags are somewhat different. Still they are almost same. The problem of MDS is to consume quite memory. Each MDS has animation data, which is ordinally enormus. So loading many MDSes leadd to high memory consumption.

Åê¹Æ¼Ô ikanatto : 12:07 AM | ¥³¥á¥ó¥È (132)

April 22, 2005

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡Êä­£²

Reading the Source Code of W:ET Appendix #2

The world of an 'Entity'

¤ß¤Ê¤µ¤ó¤³¤ó¤Ë¤Á¤Ï¡£°§»¢¤·¤Æ¤â¶²¤é¤¯Ã¯¤â¤³¤³¤ò¸«¤Æ¤¤¤Ê¤¤¤Î¤¬¼ä¤·¤¤¤È¤³¤í¤Ç¤¹¡£¤·¤«¤·¤á¤²¤º¤Ëº£²ó¤â¥½¡¼¥¹¥³¡¼¥É¤òÆɤó¤Ç¤¤¤­¤Þ¤¹¡£

¤³¤Î²ó¤Ç¼è¤ê¾å¤²¤ë¤Î¤Ï¼ÂºÝ¤Î½èÍýÉôʬ¤Ç¤Ï¤Ê¤¯¡¢entity¤È¤¤¤¦¹½Â¤ÂΤǤ¹¡£Quake3¤Î¥³¡¼¥ÉÄ󶡤ò¼õ¤±¤Æ³«È¯¤µ¤ì¤¿¥²¡¼¥à¤Î¤Û¤ÜÁ´¤Æ¤Ï¤³¤Î¹½Â¤ÂΤâ·Ñ¾µ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤À¤±½ÅÍפÊÉôʬ¤È¤¤¤¦¤³¤È¤Ç¤¹¤«¤é¡¢¥½¡¼¥¹¥³¡¼¥É¤òÆɤàΩ¾ì¤Î²æ¡¹¤â¤³¤ì¤òÃΤäƤª¤¯É¬Íפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£

An Entity

entity¤È¤¤¤¦±Ññ¸ì¤Ï¤Ê¤«¤Ê¤«Ìܤˤ·¤Þ¤»¤ó¡£¼­½ñ¤Ç°ÕÌ£¤òÄ´¤Ù¤ë¤È¡¢¡Ö¡Ê¼Âºß¤¹¤ë¡Ëʪ¡¨¡Ê¾¤«¤éÆÈΩ¤·¤¿¡Ë¸ºß¡Êʪ¡Ë¡×¤È¡¢¼Â¤Ë¤¢¤¤¤Þ¤¤¤Êµ­½Ò¤Ë¤È¤É¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£»úÌ̤ò¤½¤Î¤Þ¤Þ²ò¼á¤¹¤ì¤Ð¡¢Íפ¹¤ë¤Ë²¿¤«¡Ö¤â¤Î¡×¤ò»Ø¤¹ÊØÍø¤Ê¸ÀÍդǡ¢thing¤Ë¶á¤¤¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£

Î㤨¤Ð¤¢¤Ê¤¿¤¬¼êÜØÃƤòÅꤲ¤Þ¤¹¤È¡¢gentity_t¤È¤¤¤¦·¿¤ò»ý¤Ã¤¿g_entitiesÇÛÎó¤ÎÃæ¤Î»È¤ï¤ì¤Æ¤¤¤Ê¤¤°ì¤Ä¤¬ÁªÂò¤µ¤ì¡¢¼êÜØÃƤξðÊ󤬽ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£½ñ¤­¹þ¤Þ¤ì¤ëÆâÍƤϡ¢°Üư®ÅÙ¡¢¸þ¤­¡¢Åꤲ¤¿¿Í¡¢¥Ø¥ë¥¹¡¢ÃÆÀ­¡¢Â礭¤µ¡¢¸«¤¿ÌÜ¡¢ßÚÎö¤·¤¿»þ¤Î²»¡¢¥À¥á¡¼¥¸ÎÌ¡¢ßÚÎöÈÏ°Ï¡¢Çúȯ¤¹¤ë¤Þ¤Ç¤Î»þ´Ö¡¢Çúȯ»þ´Ö¤Ë㤷¤¿»þ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ê¤É¤Ê¤É¡¢¤³¤Î¼êÜØÃƤ˴ؤ¹¤ë¤¢¤é¤æ¤ë¾ðÊ󤬳ÊǼ¤µ¤ì¤Þ¤¹¡£

Éð´ï¤Ë¸Â¤é¤º¡¢¥²¡¼¥àÃæ¤ËÅо줹¤ë¤Û¤ÜÁ´¤Æ¤Î¤â¤Î¤¬g_entities¤Ë¤è¤Ã¤Æ´ÉÍýÀ©¸æ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥×¥ì¥¤¥ä¡¼¤â¤½¤Î°ì¤Ä¤Ç¤¹¡Ê¸·Ì©¤Ë¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Ïentity¤Ë²Ã¤¨¤Æplayerstate_t¤Ê¤É¤ò´Þ¤àgclient_t¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤Þ¤¹¡Ë¡£

·ë¶É¤Î¤È¤³¤í¡¢entity¤È¤Ï¤Ä¤Þ¤ê²¿¤Ç¤â¤¢¤ê¤Ç¡¢¤È¤Ë¤«¤¯¥²¡¼¥àÃæÅо줹¤ëÁ´¤Æ¤Î¤â¤Î¤ò°ì¸µ´ÉÍý¤¹¤ë¥¢¥¤¥Ç¥¢¤Î²¼¤Ëºî¤é¤ì¤¿¹½Â¤ÂΤǤ¢¤ë¤â¤Î¤Ç¤·¤ç¤¦¡£¤½¤³¤Ï¥«¡¼¥Þ¥Ã¥¯¤µ¤ó¤Ë¿Ò¤Í¤Æ¤ß¤Ê¤¤¤È¿¿¼Â¤Ï¤ï¤«¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢³ÈÄ¥À­¤Î¹â¤¤¥·¥¹¥Æ¥à¤Ç¤¢¤ë¤³¤È¤Ë¤Ï´Ö°ã¤¤¤Ê¤¤¤Î¤Ç¡¢¤µ¤¹¤¬¤Ï¥«¡¼¥Þ¥Ã¥¯¤µ¤ó¤È¤¤¤Ã¤¿¤È¤³¤í¤Ç¤¹¡£¥¹¡¼¥Ñ¡¼¥×¥í¥°¥é¥Þ¡¼¤È¤Ï¤«¤¯¤¢¤ê¤­¤Ç¤¹¤Í¡£

A Structure 'entity_t'

³µÇ°Åª¤Ê¤³¤È¤Ð¤«¤ê¾Ò²ð¤·¤Æ¤â¥¤¥á¡¼¥¸¤¬ÄϤߤˤ¯¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¤Î¤Ç¡¢¼ÂºÝ¤É¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤ò¸«¤Æ¤æ¤­¤Þ¤·¤ç¤¦¡£gentity_t¹½Â¤ÂΤÎÄêµÁ¤Ïg_local.h¤Ë¤¢¤ê¤Þ¤¹¡£213¹Ô°Ê¹ß¤Ç¤¹¡£g_entities¤ÎÀë¸À¤Ïg_main.c¤ÎºÇ½é¤¢¤¿¤ê¤Ë¤¢¤ê¤Þ¤¹¡£¤Þ¤º¤Ïg_main.c¤«¤é¤ß¤Þ¤·¤ç¤¦¡£

gentity_t		g_entities[MAX_GENTITIES];

ËÁƬ¶á˵¤Ç¤³¤Î¤è¤¦¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ë¤«¤È»×¤¤¤Þ¤¹¡£¤Á¤Ê¤ß¤ËMAX_GENTITIES¤ÏÊ̤ΤȤ³¤í¤ÇÄêµÁ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£

#define	GENTITYNUM_BITS		10
#define	MAX_GENTITIES		(1<<GENTITYNUM_BITS)

¤Ê¤¼Äê¿ôÄêµÁ¤Ë¥Ó¥Ã¥È±é»»¤òÍѤ¤¤Æ¤¤¤ë¤Î¤«¿Ó¤Àµ¿Ìä¤Ç¤Ï¤´¤¶¤¤¤Þ¤¹¤¬¡¢·ë¶ÉMAX_GENTITIES¤Ï2¤Î10¾è¡¢¤Ä¤Þ¤ê1024¤Ç¤¹¡£¤Ä¤Þ¤ê1024¸Ä¤Îentity¤òƱ»þ¤Ë°·¤¦¤³¤È¤¬½ÐÍè¤ë¤ï¤±¤Ç¤¹¡£

¤Ç¤Ïgentity_t¤ÎÄêµÁ¤ò¤ß¤Æ¤ß¤Þ¤·¤ç¤¦¡£

struct gentity_s {
	entityState_t	s;				// communicated by server to clients
	entityShared_t	r;				// shared by both the server system and game
	// DO NOT MODIFY ANYTHING ABOVE THIS, THE SERVER
	// EXPECTS THE FIELDS IN THAT ORDER!
	//================================
	struct gclient_s	*client;			// NULL if not a client
	qboolean	inuse;
	
	¡Ê¾Êά¡Ë

	// bleh - ugly
	int		backupWeaponTime;
	int		mg42weapHeat;
	vec3_t	oldOrigin;
	qboolean runthisframe;
	g_constructible_stats_t	constructibleStats;
};

¤«¤Ê¤êÂ礭¤¯Ê£»¨¤Ê¹½Â¤ÂΤˤʤäƤª¤ê¤Þ¤¹¡£¤â¤·C++¤ÇÁȤޤì¤Æ¤¤¤¿¤é¤â¤¦¾¯¤·¥¹¥Þ¡¼¥È¤Ê¥¯¥é¥¹¤È¤·¤ÆÄêµÁ¤Ç¤­¤¿¤«¤â¤·¤ì¤Þ¤»¤ó¤Í¡£

¤Þ¤º¤ÏºÇ½é¤ÎÉôʬ¤ò¤ß¤Æ¤ß¤Þ¤·¤ç¤¦¡£

	entityState_t	s;				// communicated by server to clients
	entityShared_t	r;				// shared by both the server system and game

Ãí¼á¤ò¸«¤ë¤È¤ï¤«¤ë¤È¤ª¤ê¡¢¥µ¡¼¥Ð¡¼ÄÌ¿®µ¡Ç½¤È¥²¡¼¥à½èÍýÉôʬ¤Ë¤è¤Ã¤Æs¤Èr¤¬¶èÊ̤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é¤É¤Á¤é¤âentity¤Î´ðËÜŪ¤Ê¾ðÊó¤ò´Þ¤ó¤Ç¤¤¤ë¤³¤È¤Ë¤ÏÊѤï¤ê¤Þ¤»¤ó¡£¶ñÂÎŪ¤Ë¤Ï°ÌÃÖ¡¢Â®ÅÙ¡¢¸þ¤­¡¢¼ïÎà¡¢Â礭¤µ¡¢¥¤¥Ù¥ó¥È¤Ê¤É¤Ê¤É¡£¥µ¡¼¥Ð¡¼¤È¥¯¥é¥¤¥¢¥ó¥È¤Ç¤ä¤ê¼è¤ê¤µ¤ì¤Æ¤¤¤ëÉôʬ¤Ç¤â¤¢¤ê¤Þ¤¹¡£

	struct gclient_s	*client;			// NULL if not a client
	qboolean	inuse;
	vec3_t		instantVelocity;	// ydnar: per entity instantaneous velocity, set per frame
	char		*classname;			// set in QuakeEd
	int			spawnflags;			// set in QuakeEd

ÂçÄñ¤Î¤â¤Î¤Ë¤ÏÃí¼á¤¬¤Ä¤¤¤Æ¤ª¤ê¡¢¤Û¤È¤ó¤É¤Î¾ì¹ç¤½¤ÎÄ̤ê¤Î»È¤ï¤ìÊý¤ò¤·¤Æ¤¤¤Þ¤¹¡£client¤Ïentity¤¬¥¯¥é¥¤¥¢¥ó¥È¤«¤É¤¦¤«¤Ë¤Ä¤¤¤Æ¤Î¤â¤Î¤Ç¡¢¤â¤·¤½¤¦¤Ê¤é¥¯¥é¥¤¥¢¥ó¥È¾ðÊó¤ò´Þ¤à¥¢¥É¥ì¥¹¡¢¤½¤¦¤Ç¤Ê¤¤¤Ê¤é0¤È¤Ê¤ê¤Þ¤¹¡£inuse¤Ï¤³¤Îentity¤¬»ÈÍÑÃ椫¤É¤¦¤«¤Î¥Õ¥é¥°¤Ç¤¹¡£instantVelociity¤ÏÃí¼á¤É¤ª¤ê¥Õ¥ì¡¼¥à¤Ë¤ª¤±¤ë½Ö´Ö®Å٤Ǥ¹¡£classname¤Èspawnflag¤Ï¥Þ¥Ã¥×¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤ÆÄêµÁ¤µ¤ì¡¢¥Þ¥Ã¥×¥¨¥Ç¥£¥¿Ãæ¤ÇÀßÄꤷ¤¿Ãͤ¬¤³¤³¤ËÆþ¤ê¤Þ¤¹¡£

¤³¤ì°Ê³°¤âentity¤ÎÀ­¼Á¡¢¾õÂÖ¡¢Æ°¤­¤Ë´Ø¤¹¤ë¥Ç¡¼¥¿¤¬Ê¤ó¤Ç¤¤¤Þ¤¹¡£¤³¤ÎÃæ¤ÇÃíÌܤ¹¤Ù¤­¤Ï¥¤¥Ù¥ó¥ÈȯÀ¸¤Ë´Ø¤¹¤ëÉôʬ¤Ç¤¹¡£

	int		nextthink;
	void		(*free)(gentity_t *self);
	void		(*think)(gentity_t *self);
	void		(*reached)(gentity_t *self);	// movers call this when hitting endpoint
	void		(*blocked)(gentity_t *self, gentity_t *other);
	void		(*touch)(gentity_t *self, gentity_t *other, trace_t *trace);
	void		(*use)(gentity_t *self, gentity_t *other, gentity_t *activator);
	void		(*pain)(gentity_t *self, gentity_t *attacker, int damage, vec3_t point);
	void		(*die)(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod);

nextthink¤ÏÀßÄꤵ¤ì¤¿¥¤¥Ù¥ó¥È¤¬È¯À¸¤¹¤ë¤Þ¤Ç¤Î»þ´Ö¤Ç¡¢¥ß¥êÉä¬Ã±°Ì¤Ç¤¹¡£°Ê²¼¤Ëʤ֤Τ¬³Æ¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Î¥¢¥É¥ì¥¹¤Ç¤¹¡£free¤Ï¤³¤Îentity¤¬³«Êü¤µ¤ì¤ë¡¢¤Ä¤Þ¤êinuse¤Ë¤Ê¤ë»þ¤Ë¥³¡¼¥ë¤µ¤ì¤Þ¤¹¡£think¤ÏÀßÄꤷ¤¿»þ¹ï¤¬·Ð²á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£¼êÜØÃƤ¬5Éøå¤ËÇúȯ¤¹¤ë¤Î¤Ï¤³¤Î¤¿¤á¤Ç¤¹¡£¤½¤Î¾³Æ¥¤¥Ù¥ó¥È¤Ë¤âÂбþ¤·¤¿½èÍý¤¬¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤Þ¤¹¡£¤Ê¤«¤Ê¤«¶½Ì£¿¼¤¤Éôʬ¤Ç¤¹¡£

¶ñÂÎŪ¤ÊÎã¤È¤·¤Æ¡¢g_weapon.c¤Î2237¹Ô¤Ë¶õÇú´Ì¤Ë´Ø¤¹¤ë¥³¡¼¥É¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£

void weapon_checkAirStrikeThink1( gentity_t *ent ) {
	if( !weapon_checkAirStrike( ent ) ) {
		ent->think = G_ExplodeMissile;
		ent->nextthink = level.time + 1000;
		return;
	}

	ent->think = weapon_callAirStrike;
	ent->nextthink = level.time + 1500;
}

´Ø¿ô¤Î°ú¿ô¤È¤·¤Æent¤È¤¤¤¦entity¤¬ÅϤµ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¶õÇú´Ì¤ò»Ø¤·¤Æ¤¤¤ëentity¤Ç¤¹¡£ifʸ¤Ï¶õÇú¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤ë¾ò·ï¤Î¤â¤È¤Ë¶õÇú´Ì¤¬Åꤲ¤é¤ì¤¿¤«¤ò¸«¤Æ¤¤¤Þ¤¹¡£¤½¤¦¤Ç¤Ê¤¤¤Ê¤é¤³¤Î¶õÇú´Ì¤Ï¶õÇú¤ò¤»¤º¤ËG_ExplodeMissile¤È¤¤¤¦Ã±¤ËÇúȯ¤¹¤ë¤À¤±¤Î½èÍý¤òlevel.time + 1000¥ß¥êÉø塢¤Ä¤Þ¤ê°ìÉøå¤Ë¹Ô¤¤¤Þ¤¹¡£¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤¿¾ì¹ç¡¢¶õÇú´Ì¤Ï¶õÇú½èÍý¤ò¹Ô¤¦weapon_callAirStrike¤ò1.5Éøå¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

Entity is Everything

¤³¤ì¤Þ¤Ç¤ß¤¿¤è¤¦¤Ë¡¢entity¤È¤Ï¤Ä¤Þ¤ê¤Ê¤ó¤Ç¤â¤¢¤ê¤È¤¤¤¦¤³¤È¤¬Íý²ò¤·¤Æ¤â¤é¤¨¤¿¤«¤È»×¤¤¤Þ¤¹¡£¤Þ¤¿¥Ç¡¼¥¿¤Ç¤Ê¤¯¥¤¥Ù¥ó¥È¼«Æ°½èÍý¤Ë´Ø¤¹¤ë¹àÌܤâ´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¤¤¤«¤Ë¥²¡¼¥à½èÍý¥¢¥ë¥´¥ê¥º¥à¤ÎÂ礭¤Ê¤È¤³¤í¤òô¤Ã¤Æ¤¤¤ë¤«¤â¤ªÊ¬¤«¤ê¤Ê¤Ã¤¿¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£

º£²ó¾Ò²ð¤·¤¿Éôʬ°Ê³°¤Ë¤â¥³¡¼¥É¤ËÅо줹¤ë¹½Â¤ÂΤϤ¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¡£¥¯¥é¥¤¥¢¥ó¥È¡¢¥¢¥¤¥Æ¥à¡¢Éð´ï¡¢¥Þ¥Ã¥×¡¢¥³¥ó¥Õ¥£¥°¤Ê¤É¤Ê¤É¿§¡¹¤Ê¤â¤Î¤Ë¹½Â¤ÂΤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¿·¤·¤¯MOD¤òºî¤ë¾ì¹ç¤Ë¤Ï¤³¤ì¤é¤ÎÍý²ò¤¬·ç¤«¤»¤Þ¤»¤ó¤Î¤Ç¡¢¤½¤Î¤ª¤Ä¤â¤ê¤Î¤¢¤ë¾ì¹ç¤ÏÀ§Èó°ì¸«¤Ê¤µ¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:11 PM | ¥³¥á¥ó¥È (110)

April 21, 2005

Urban Terror Equipments

Equipment selection

Urban Terror¡Ê°Ê²¼UrT¡Ë¤Ç¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤¬¤É¤Î¤è¤¦¤ÊÉðÁõ¤ò¤¹¤ë¤«¤ÏÈÏ°ÏÆâ¤ÇǤ°Õ¤Ë·è¤á¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤È¤á¤ë¤È°Ê²¼¤Îɽ¤Î¤è¤¦¤ËÁªÂò¤Ç¤­¤Þ¤¹¡£

¥á¥¤¥ó¡Ê¥µ¥¤¥É´Þ¤à¡Ë1¤Ä¡¢½à¥á¥¤¥ó°ì¤Ä¡¢¥Ï¥ó¥É¥¬¥ó1¤Ä¡¢ÁõÈ÷ÉÊ°ì¤Ä

¥á¥¤¥ó1¤Ä¡¢¥Ï¥ó¥É¥¬¥ó1¤Ä¡¢ÁõÈ÷ÉÊ2¤Ä

¥µ¥¤¥É°ì¤Ä¡¢¥Ï¥ó¥É¥¬¥ó1¤Ä¡¢ÁõÈ÷ÉÊ2¤Ä

¥Ï¥ó¥É¥¬¥ó1¤Ä¡¢ÁõÈ÷ÉÊ3¤Ä

¶ñÂÎŪ¤Ê¥Ñ¥¿¡¼¥ó¤È¤·¤Æ¡¢M4 Assault Rifle¡ÜMP5K¡ÜBeretta¡ÜHE Grenade¤Ê¤ó¤«¤ò¥Á¥ç¥¤¥¹¤¹¤ë¤³¤È¤Ç¤Ò¤¿¤¹¤é·â¤Á¤Þ¤¯¤ë¥¹¥¿¥¤¥ë¤ò¤È¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿HK69¡ÜDE¡ÜHE Grenade¡ÜÄɲÃÃÆÌô¤ÇÁö¤ëÇúÃÆËâ¤Ë¤Ê¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

»ä¤¬¹¥¤­¤ÊÁȤ߹ç¤ï¤»¤Ï¡¢M4¡ÜDE¡ÜFlash Grenade¡ÜËÉÃÆ¥Á¥ç¥Ã¥­¤ÈËÉÃƥإë¥á¥Ã¥È¤ÇÁ®¸÷ÆÍ·â·¿¡¢FFA¤Ê¤ó¤«¤À¤ÈSR-8¡ÜUMP45¡ÜDE¡Ü°Å»ë¥¹¥³¡¼¥×¤Ç¥ª¡¼¥ë¥é¥¦¥ó¥É·¿¤Ç¤¹¡£¤³¤Î¤¢¤¿¤ê¤Ï¤½¤Î¿Í¤Î¸ÄÀ­¤¬Îɤ¯¸½¤ì¤Þ¤¹¡£¤Þ¤¿Éð´ï¤Ë¤³¤À¤ï¤ê¤Î¤¢¤ë¾ì¹ç¤â¤¢¤ë¤Î¤Ç¡¢¤Ê¤«¤Ê¤«¸«¤Æ¤¤¤ë¤À¤±¤Ç¤â³Ú¤·¤¤¤â¤Î¤Ç¤¹¡£

Urban Terror Fire-arms

¤½¤ó¤Ê½Æ·âÀï¤òºÌ¤ëUrT¤ÇÅо줹¤ë²Ð´ï¤ò¾Ò²ð¤·¤Þ¤¹¡£¾Ò²ð¤¹¤ë¤È¤Ï¤¤¤Ã¤¿¤â¤Î¤Î¡¢»ä¤Ï¼Âºß¤Î²Ð´ïÎà¤Ë¤Ï¤Þ¤Ã¤¿¤¯¾Ü¤·¤¯¤Ê¤¤¤Î¤Ç¥²¡¼¥à¤ËÅо줹¤ëÉð´ï¤È¤·¤Æ¤ÎÀâÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£¼ÂºÝ¤ÎÀ­Ç½¤Ê¤É¤Ë¤Ä¤¤¤Æ¤Ï¸¡º÷¤¹¤ë¤³¤È¤ÇÍưפËÃΤ뤳¤È¤¬¤Ç¤­¤ë¤«¤È»×¤¤¤Þ¤¹¡£

ZM300

¤â¤È¤â¤ÈUrT¤Ë¤Ïͭ̾¤ÊM4 Assault Rifle¤¬¤¢¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢¤½¤Á¤é¤¬¥â¥Ç¥ë¥Á¥§¥ó¥¸¤·¤Æ¤³¤Á¤é¤Ë¤Ê¤ê¤Þ¤·¤¿¡£À­Ç½¤ÏM4¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£Èó¾ï¤Ë¥Ð¥é¥ó¥¹¤Î¼è¤ì¤¿½Æ¤Ç¡¢ÆÍ·â¤Ê¤É¤Î¶áµ÷Î¥¡¢Áø¶øÀï¤È¤¤¤Ã¤¿Ãæµ÷Î¥¤«¤é±óµ÷Î¥¤Þ¤ÇÁ´¤Æ¤ËÂбþ¤Ç¤­¤Þ¤¹¡£º¤¤Ã¤¿¤é¤³¤ì¤òÁª¤Ù¤Ð¤Þ¤¡´Ö°ã¤¤¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£

ÁõŶÃÆ¿ô30¡¦°ÒÎÏ¡û¡¦Ï¢¼Í¡û¡¦½¸ÃÆ¡û

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥µ¥¤¥ì¥ó¥µ¡¼¡¢¥ì¡¼¥¶¡¼¥µ¥¤¥È

ʬÎࡧ¥á¥¤¥ó¥¦¥§¥Ý¥ó

AK103

»ä¤ÎÃæ¤Ç¤Ï¡¢¥Æ¥í¥ê¥¹¥ÈÄêÈ֤νƤȤ¤¤¦°õ¾Ý¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤âÈó¾ï¤Ë¥Ð¥é¥ó¥¹¤Î¤è¤¤½Æ¤Ç¤¹¤¬¡¢¼ã´³M4¤è¤ê¤â°ÒÎϤ¬¹â¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£µ¤¤Î¤»¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£¥µ¥¤¥ì¥ó¥µ¡¼¤Ï¤Ä¤­¤Þ¤»¤ó¡£

ÁõŶÃÆ¿ô30¡¦°ÒÎÏ¡û¡Ü¡¦Ï¢¼Í¡û¡¦½¸ÃÆ¡û

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥ì¡¼¥¶¡¼¥µ¥¤¥È

ʬÎࡧ¥á¥¤¥ó¥¦¥§¥Ý¥ó

G36

¤³¤ì¤Ï¤«¤Ê¤êÌÌÇò¤¤Éð´ï¤Ç¤¹¡£²¿¤¬ÌÌÇò¤¤¤«¤È¤¤¤¦¤È¡¢ÁÀ·â½Æ¤È¤·¤Æ¥Þ¥·¥ó¥¬¥ó¤È¤·¤Æ¤â»È¤¨¤ëÅÀ¤Ç¤¹¡£¤½¤Î¤¿¤á±óµ÷Î¥¤«¤é¶áµ÷Î¥¤Þ¤Ç¡¢Á´¤Æ¤Î¥ì¥ó¥¸¤¬¤³¤ÎÉð´ï¤ÎÆÀ°ÕÎΰè¤Ë¤Ê¤ê¤Þ¤¹¡£¼ã´³°ÒÎϤ¬Ä㤤µ¤¤â¤·¤Þ¤¹¤¬¡¢¤½¤ì¤Ç¤â¤ä¤Ï¤êÌÌÇò¤¤Éð´ï¤Ç¤¹¡£

ÁõŶÃÆ¿ô30¡¦°ÒÎÏ¡û-¡¦Ï¢¼Í¡û¡¦½¸ÃÆ¡û

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥µ¥¤¥ì¥ó¥µ¡¼

ÇÜΨ¡§2ÇܤޤÇ

ʬÎࡧ¥á¥¤¥ó¥¦¥§¥Ý¥ó

PSG-1

UrT¤Ë¤â¶áÂå¤òÉñÂæ¤Ë¤·¤¿¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°¤ª·è¤Þ¤ê¤ÎÁÀ·â½Æ¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤¦¤Á¤Î°ì¤Ä¤¬¤³¤ÎPSG-1¤Ç¤¹¡£SR-8¤ÈÈæ³Ó¤·¤¿»þ¤ËºÇ¤â°Û¤Ê¤ë¤Î¤¬¡¢ÁÀ·â½Æ¤Ê¤¬¤é¤â¥»¥ß¥ª¡¼¥È¥Þ¥Á¥Ã¥¯¤Ê¤Î¤Ç¥»¥«¥ó¥É¥·¥ç¥Ã¥È¤òÁÇÁ᤯¹Ô¤¨¤ëÅÀ¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î°Ù½éÃƤÇÅݤ»¤Ê¤¯¤È¤â¡¢¼¡¤Î¹¶·â¤Ë¤è¤êÅݤ¹¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£

ÁõŶÃÆ¿ô5¡¦°ÒÎÏ¡ý¡¦Ï¢¼Í¢¤¡¦½¸ÃÆ¡½

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥µ¥¤¥ì¥ó¥µ¡¼

ÇÜΨ¡§2ÇÜ¡¦4ÇÜ¡¦6ÇÜ

ʬÎࡧ¥á¥¤¥ó¥¦¥§¥Ý¥ó

SR-8

ÁÀ·â½Æ¤ÎÂåɽ³Ê¤Ç¤¹¡£ÀäÂç¤Ê°ÒÎϤò¸Ø¤ë¤¿¤á¡¢ËÉÃÆ¥Á¥ç¥Ã¥­¤òÃ夿Áê¼ê¤Ç¤â¤Û¤Ü½Ö»¦¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£¼ê­¤ËÅö¤¿¤Ã¤¿¾ì¹ç¤Ç¤âÂÎÎϤò8³ä°Ê¾åÃ¥¤¨¤Þ¤¹¡£·çÅÀ¤Ï¼¡¤ÎÃƤò·â¤Ä¤Þ¤Ç¤Ë»þ´Ö¤¬¤«¤«¤ë¤³¤È¡¢¶áÀܤˤÏÂбþ¤Ç¤­¤Ê¤¤¤³¤È¤Ç¤¹¡£¤·¤«¤·¤½¤ì¤òÊä¤Ã¤Æ;¤ê¤¢¤ë°ÒÎϤϤä¤Ï¤êÌ¥ÎÏŪ¤Ç¤¹¡£

ÁõŶÃÆ¿ô5¡¦°ÒÎÏ¡ý¡ý¡¦Ï¢¼Í¡ß¡¦½¸ÃÆ¡½

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¤Ê¤·

ÇÜΨ¡§2ÇÜ¡¦4ÇÜ¡¦6ÇÜ

ʬÎࡧ¥á¥¤¥ó¥¦¥§¥Ý¥ó

HK69

ÆÃħŪ¤Ê²Ð´ï¤Ç¤¹¡£ÃƤòÈô¤Ð¤¹ÅÀ¤Ç¤Ï¾¤Î²Ð´ï¤ÈÊѤï¤ê¤Þ¤»¤ó¤¬¡¢Èô¤ó¤Ç¤¤¤¯ÃƤ¬¼Â¤ÏÇúÃƤʤΤǤ¹¡£±ó¤¯¤ËÈô¤Ð¤»¤ë¼êÜØÃƤȹͤ¨¤ë¤È¤ï¤«¤ê¤¤¤¤¤Ç¤·¤ç¤¦¤«¡£Â¯¤Ë¸À¤¦¥°¥ì¥Í¡¼¥É¥é¥ó¥Á¥ã¡¼¤Ç¤¹¡£¤³¤Á¤é¤ÎÉð´ï¤Ï¤«¤Ê¤ê°ÒÎϤ¬Ä´À°¤µ¤ì¤¿Îò»Ë¤¬¤¢¤ê¡¢¤½¤ì¤À¤±»È¤¤¾¡¼ê¤Î¤¤¤¤¤â¤Î¤Ç¤¹¡£Èô¤Ð¤¹µ÷Î¥¤âÃʳ¬Åª¤ËÄ´À°¤Ç¤­¤Þ¤¹¡£¤³¤ì¤ò¥Þ¥¹¥¿¡¼¤·¤Æ¤¢¤Ê¤¿¤â¥¸¥§¥É¡¦¹ë»Î¡ª¡©

ÁõŶÃÆ¿ô4¡¦°ÒÎÏ¡ý¡ý¡ý¡¦Ï¢¼Í¡ß¡¦½¸ÃÆ¡½

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¤Ê¤·

ʬÎࡧ¥á¥¤¥ó¥¦¥§¥Ý¥ó

Negev

°ì¸À¤Ç¤¤¤¨¤Ð¥Þ¥·¥ó¥¬¥ó¤Ç¤¹¡£¤½¤ì¤âʤǤϤʤ¯¡¢À¨¤¤Ï¢¼Í¤Ç¤­¤ë¥Þ¥·¥ó¥¬¥ó¤Ç¤¹¡£150ȯʬ¤ÎÃƴݤ¬ÁõŶ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢»×¤¤¤Î¾æÏ¢¼Í¤Ç¤­¤Þ¤¹¡£¤½¤ÎÂå¤ï¤ê¤Ë½¸ÃÆÀ­¤¬µ¾À·¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢»È¤¤Êý¤Ë¤Á¤ç¤Ã¤È¹©Éפ¬¤¤¤ë¤Ç¤·¤ç¤¦¡£

ÁõŶÃÆ¿ô150¡¦°ÒÎÏ¡û¡¦Ï¢¼Í¡ý¡¦½¸ÃÆ¢¤

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥ì¡¼¥¶¡¼¥µ¥¤¥È

ʬÎࡧ¥á¥¤¥ó¥¦¥§¥Ý¥ó

MP5K

¥³¥ó¥Ñ¥¯¥È¤Ê¥Þ¥·¥ó¥¬¥ó¤Ç¤¹¡£¤½¤Î¤¿¤á°ÒÎϤ¬¤«¤Ê¤ê¸«Îô¤ê¤·¤Þ¤¹¤¬¡¢Ï¢¼ÍÀ­Ç½¤Ë´Ø¤·¤Æ¤Ï¾¤Î¥Þ¥·¥ó¥¬¥ó¤ÈÊѤï¤ê¤Þ¤»¤ó¡£¥Ø¥Ã¥É¥·¥ç¥Ã¥È¤òÀѶËŪ¤ËÁÀ¤¤¤¿¤¤¤È¤³¤í¤Ç¤¹¡£

ÁõŶÃÆ¿ô30¡¦°ÒÎÏ¢¤¡¦Ï¢¼Í¡û¡¦½¸ÃÆ¡û

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥µ¥¤¥ì¥ó¥µ¡¼¡¦¥ì¡¼¥¶¡¼¥µ¥¤¥È

ʬÎࡧ¥µ¥¤¥É¥¦¥§¥Ý¥ó

UMP45

¥µ¥¤¥É¥¦¥§¥Ý¥ó¤Î¥Þ¥·¥ó¥¬¥ó¤Ê¤¬¤é°ÒÎϤϹâ¤á¤Ç¤¹¡£¤½¤ÎÂå¤ï¤ê¤ËÏ¢¼ÍÀ­¤ÈÃÆ¿ô¤¬¾¯¤·¾¯¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢MP5K¤È¤É¤Á¤é¤òÁª¤Ö¤«¤Ï¸Ä¿ÍŪ¤Ê¼ñÌ£¤Î°ã¤¤¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¡£

ÁõŶÃÆ¿ô25¡¦°ÒÎÏ¡û¡¦Ï¢¼Í¢¤¡¦½¸ÃÆ¡û

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥µ¥¤¥ì¥ó¥µ¡¼¡¦¥ì¡¼¥¶¡¼¥µ¥¤¥È

ʬÎࡧ¥µ¥¤¥É¥¦¥§¥Ý¥ó

SPAS12

¥·¥ç¥Ã¥È¥¬¥ó¤Ç¤¹¡£¤¿¤À¤·°·¤¤¤¬¥µ¥¤¥É¥¦¥§¥Ý¥ó¤Î´Ø·¸¾å¡¢Á´ÃÆÌ¿Ã椷¤ÆÁê¼ê¤ò°ì·â¤ÇÅݤ»¤ëÄøÅ٤ΰÒÎϤˤʤäƤ¤¤Þ¤¹¡£¤·¤«¤·¤³¤Î¥·¥ç¥Ã¥È¥¬¥ó¤Î¶Ã¤¯¤Ù¤­ÆÃħ¤È¤·¤Æ¡¢Èó¾ï¤ËÏ¢¼ÍÀ­¤¬¹â¤¤ÅÀ¤¬µó¤²¤é¤ì¤Þ¤¹¡£¤³¤Î¤¿¤á´Ö¹ç¤¤¤Î¶á¤¤¾õÂ֤ʤéÈó¾ï¤ËÍ­Íø¤ËÀ臘¤³¤È¤¬½ÐÍè¤ë¤Ç¤·¤ç¤¦¡£·çÅÀ¤òµó¤²¤ë¤È¤¹¤ë¤Ê¤é¥Ø¥Ã¥É¥·¥ç¥Ã¥ÈȽÄ꤬¤Ê¤¤¤³¤È¤Ç¤¹¡£

ÁõŶÃÆ¿ô8¡¦°ÒÎÏ¡û¡¦Ï¢¼Í¢¤¡¦½¸ÃÆ¡ß

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¤Ê¤·

ʬÎࡧ¥µ¥¤¥É¥¦¥§¥Ý¥ó

Beretta

¤´¤¯ÉáÄ̤Υϥó¥É¥¬¥ó¤Ç¤¹¡£¤½¤Î°Ù°ÒÎϤϹµ¤¨¤á¤Ç¤¹¤¬¡¢15ȯÁõŶ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç°Õ³°¤ËÀ廊¤Þ¤¹¡£

ÁõŶÃÆ¿ô30¡¦°ÒÎÏ¢¤¡¦Ï¢¼Í¢¤¡¦½¸ÃÆ¡ý

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥µ¥¤¥ì¥ó¥µ¡¼¡¦¥ì¡¼¥¶¡¼¥µ¥¤¥È

ʬÎࡧ¥Ï¥ó¥É¥¬¥ó

Desert Eagle

¤Ç¤Ã¤«¤¤¥Ï¥ó¥É¥¬¥ó¤Ç¤¹¡£¤Ç¤«¤¤¤Î¤Ç°ÒÎϤ¬¤¹¤´¤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢M4¤è¤ê¤â¶¯ÎϤʰì·â¤ò¸«Éñ¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¤³¤ÎÉð´ï¤ÇÂç³èÌö¤·¤Æ¤·¤Þ¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£

ÁõŶÃÆ¿ô7¡¦°ÒÎÏ¡ý¡¦Ï¢¼Í¢¤¡¦½¸ÃÆ¡û

¥¢¥¿¥Ã¥Á¥á¥ó¥È¡§¥ì¡¼¥¶¡¼¥µ¥¤¥È

ʬÎࡧ¥Ï¥ó¥É¥¬¥ó

Urban Terror Gear

UrT¤Ï¤½¤Î¾¥×¥ì¥¤¥ä¡¼¤òÆÃħÉÕ¤±¤ë¤â¤Î¤È¤·¤Æ¡¢ÁõÈ÷ÉʤòÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ÁªÂò¤Ç¤­¤ëÁõÈ÷ÉʤϺÇÂç¤Ç3¸Ä¤Ç¡¢ÁªÂò¤·¤¿Éð´ï¤Î¸Ä¿ô¤Ë¤è¤Ã¤ÆÁý¸º¤·¤Þ¤¹¡£

Kevlar Vest

¤¤¤ï¤æ¤ëËÉÃÆ¥Á¥ç¥Ã¥­¤Ç¤¹¡£Æ¹ÂΤؤΥÀ¥á¡¼¥¸¤ò·Ú¸º¤·¡¢Î®·ì¤òËɤ®¤Þ¤¹¡£¤¿¤À¤·SR-8¤Î¤è¤¦¤Ê¶¯Îõ¤ÊÃƴݤϴÓÄ̤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

Kevlar Helmet

ËÉÃƥإë¥á¥Ã¥È¤Ç¤¹¡£¥Á¥ç¥Ã¥­¤ÈƱ¤¸¤¯Æ¬Éô¤Ø¤Î¥À¥á¡¼¥¸¤ò·Ú¸º¤·¡¢Â¨»à¤ò²óÈò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¶¯ÎϤÊÉð´ï¤ËÂФ·¤Æ¤Ï°ÕÌ£¤¬¤¢¤ê¤Þ¤»¤ó¡£

HE Grenade

¼êÜØÃƤǤ¹¡£ßÚÎö¤·¤¿¼þ°Ï¤Î¥×¥ì¥¤¥ä¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤Þ¤¹¡£¶á¤±¤ì¤Ð¨»à¤Ç¤¹¡£

Flash Grenade

Á®¸÷ÜØÃƤǤ¹¡£ßÚÎö¤·¤¿½Ö´Ö¤Ë¼þ°Ï¤Î¥×¥ì¥¤¥ä¡¼¤Î»ëÎϤòÃ¥¤¤¤Þ¤¹¡£»ëÎϤ¬²óÉü¤¹¤ë¤Þ¤Ç¤Î»þ´Ö¤Ï¡¢Á®¸÷ÃƤȤε÷Î¥¤È¸þ¤­¤Ë¤è¤Ã¤ÆÊѤï¤ê¤Þ¤¹¡£

Smoke Grenade

±ìËëÃƤǤ¹¡£¤³¤ì¤¬ßÚÎö¤·¤¿¼þ°Ï¤ËÇ»¤¤±ì¤òȯÀ¸¤µ¤»¤Æ¥×¥ì¥¤¥ä¡¼¤Î»ëÌî¤ò¶¹¤¯¤·¤Þ¤¹¡£

Laser Sight

¥ì¡¼¥¶¡¼¤ò¾È¼Í¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÁÀ¤¤¤òÄê¤á¤ë¤â¤Î¤Ç¤¹¡£²Ð´ï¤Î½¸ÃÆÀ­¤¬¸þ¾å¤·¤Þ¤¹¡£

Silencer

²Ð´ï¤Î¼Í·â²»¤ò·Ú¸º¤·¤Þ¤¹¡£¼ã´³½¸ÃÆÀ­¤â¸þ¾å¤·¤Þ¤¹¡£¥ì¡¼¥¶¡¼¥µ¥¤¥È¤ÈƱ»þ¤Ë»È¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

Night Vision Goggles

°Å»ë¥¹¥³¡¼¥×¤Ç¤¹¡£¤³¤ì¤ò»È¤¦¤³¤È¤Ç°Å°Ç¤ËÀø¤à¥×¥ì¥¤¥ä¡¼¤â±ó¤¯¤«¤é³Îǧ¤Ç¤­¤Þ¤¹¤Î¤Ç¡¢¥¹¥Ê¥¤¥Ñ¡¼¤ò¤¹¤ë¤Ê¤é¥ª¥¹¥¹¥á¤Ç¤¹¡£¤¿¤À¤·¤³¤ì¤òÁõÃ夷¤¿¾õÂ֤ǥեé¥Ã¥·¥å¥°¥ì¥Í¡¼¥É¤Î±Æ¶Á¤ò¼õ¤±¤ë¤È¤È¤Æ¤âŤ¤´Ö»ëÎϤòÃ¥¤ï¤ì¤Þ¤¹¡£

Backpack Medkit

¤³¤ì¤Ï¾¤Î¿Í¤ËÂФ·¤Æ¼£ÎŤò¤¹¤ë¤È¤­¤Ë°ÕÌ£¤Î¤¢¤ë¤â¤Î¤Ç¤¹¡£Ä̾CÎŤò¤·¤Æ¤âºÇÂç40¥Ñ¡¼¥»¥ó¥È¤Þ¤Ç¤·¤«ÂÎÎϤϲóÉü¤·¤Þ¤»¤ó¡£¤·¤«¤·¤³¤ì¤ò¤â¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï80¥Ñ¡¼¥»¥ó¥È¤Þ¤Ç²óÉü¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¿¤À¤·¼«Ê¬¼«¿È¤Ë¤Ï̵¸ú¤Ê¤Î¤Ç¤´Ãí°Õ¤¯¤À¤µ¤¤¡£

Åê¹Æ¼Ô ikanatto : 11:40 PM | ¥³¥á¥ó¥È (11)

April 20, 2005

ET 2.60 patch Readme ÏÂÌõ

¤¹¤Ã¤«¤ê½Ü¤òƨ¤·¤Þ¤·¤¿¤¬2.60 Readme¤ÎÏÂÌõ¤Ç¤¹¡£
ÏÂÌõ¤·¤¿¤â¤Î¤Î°ÕÌ£¤Î¤ï¤«¤é¤Ê¤¤¤â¤Î¤¬»ä¼«¿È¤¿¤¯¤µ¤ó¤¢¤Ã¤¿¤Î¤Ç¡©¡©¡©¤ÊÉôʬ¤¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¤â¤·È¯¸«¤Ê¤µ¤ì¤¿¾ì¹ç¤Ï¥³¥á¥ó¥È¤Ê¤É¤Ç¤´»ØŦ¤¤¤¿¤À¤±¤ì¤Ð¹¬¤¤¤Ç¤¹¡£

Ver 2.60 »¨´¶

¤·¤«¤·2.60¤Ë¤Ê¤Ã¤Æ¿ïʬ¤È¿§¡¹¤ÈÊѤï¤Ã¤¿´¶¤¸¤¬¤·¤Þ¤¹¤Í¡£Åö¤¿¤êȽÄꤢ¤¿¤ê¤¬¤«¤Ê¤êÊѤï¤Ã¤¿µ¤¤¬¤¹¤ë¤Î¤Ï»ä¤À¤±¤Ç¤·¤ç¤¦¤«¡ª¡©¥Ð¥°¥Õ¥£¥Ã¥¯¥¹´ØÏ¢¤Ï³µ¤Í¤è¤¤´¶¤¸¤Ç¤¹¤¬¡¢¤Þ¤À²Ð±êÊü¼Í´ï¤¬´ñÅ·Îõ¤ÊÅö¤¿¤êȽÄê¤òȯÀ¸¤µ¤»¤ë¤¢¤¿¤ê¤Ï¤É¤¦¤Ë¤â¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤è¤¦¤Ç¤¹¡£»ÄÇ°¡£

¤¢¤È¼ÂÍÑÀ­¤Ë˳¤·¤¤¤È¸Ä¿ÍŪ¤Ë»×¤¦¥Õ¥£¡¼¥Á¥ã¡¼¤¬¤¤¤¯¤Ä¤«Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£°ÛÊýÀ­¥·¥§¡¼¥À¡¼¤Ê¤ó¤Æ»È¤¦µ¡²ñ¤¢¤ë¤ó¤Ç¤·¤ç¤¦¤«¤Í¡£Îã³°¤È¤·¤ÆHTTP¥ê¥À¥¤¥ì¥¯¥È¤µ¤»¤ë¤È¤­¤Ë¥¨¡¼¥¸¥§¥ó¥È¾ðÊó¤òÉÕÍ¿¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤Ï¤è¤¤¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£

¤Ê¤ó¤Ë¤·¤Æ¤â¡¢Â¾MOD¤¬2.6¤ËÂбþ¤¹¤ë¤Î¤¬ÂÔ¤Á±ó¤·¤¤¤Ç¤¹¤Í¡£ETPRO¤Ï¥Ñ¥Ã¥Á¼«ÂΤ˴ؤï¤Ã¤Æ¤¤¤¿¤Î¤Ç¤¹¤°Âбþ¤Ç¤­¤ë¤â¤Î¤À¤È¤Ð¤«¤êŽ¥Ž¥Ž¥¡£

2.60 Fixes:

¿·µ¬Äɲûö¹à

¥µ¡¼¥Ð¡¼¤È¥¯¥é¥¤¥¢¥ó¥È¤ËÄã®CPU¸þ¤±¤Î¼ã´³ºÇŬ²½¤ò¤·¤¿¡£
¥¯¥é¥¤¥¢¥ó¥È¤Ï¥²¡¼¥à¤òwavÊݸ²Äǽ¤Ë¤Ê¤Ã¤¿¡£
wav_record¤Ç²»À¼¥ì¥³¡¼¥Ç¥£¥ó¥°³«»Ï¡£
wav_stoprecord¤ÇÄä»ß¡£
cl_wavefilerecord¤ò1¤Ë¤¹¤ë¤È¡¢¥Ç¥âºÆÀ¸³«»Ï¤«¤é¾¯¤·¸å¤Ë¥ì¥³¡¼¥Ç¥£¥ó¥°¤¬»Ï¤Þ¤ë¡£
"Unable to load an official pak file"¤Î¥á¥Ã¥»¡¼¥¸¤Ï¤É¤Î¥Õ¥¡¥¤¥ë¤¬¤Ê¤¤¤Î¤«¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
Win32¤È¥ê¥Ê¥Ã¥¯¥¹¤Ç¥µ¥¦¥ó¥É´ØÏ¢cvar¤¬Åý°ì¤µ¤ì¤¿¡£:
s_khz, s_bits, s_numchannels
s_khz¤ÏCVAR_LATCH¤ËÊѹ¹¡£
¥×¥ì¥¤¥ä¡¼¤Ïcom_ignorecrash 1¤Ë¤¹¤ë¤³¤È¤Ç¥¯¥é¥Ã¥·¥å¤¹¤ë¤è¤¦¤Ê´í¸±¤ÊcvarÀßÄê¤ò¾å½ñ¤­¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¡£
"server is full"¤ÎÂå¤ï¤ê¤Ësv_fullmsg¤ÇÊ̤Υá¥Ã¥»¡¼¥¸¤òɽ¼¨¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤ë¡£
¥µ¡¼¥Ð¡¼¤ÏÀܳ¿ô¤¬°ìÇդλþ¤Ë¿·µ¬Àܳ¥×¥ì¥¤¥ä¡¼¤òÊ̤Υµ¡¼¥Ð¡¼¤Ë¥ê¥À¥¤¥ì¥¯¥È¤Ç¤­¤ë¡£sv_fullmsg "ET://host.to.redirect.to:port¤òÀßÄê¡£
map¥³¥Þ¥ó¥É¤Ç¥­¥ã¥ó¥Ú¡¼¥ó¤ò³«»Ï¤Ç¤­¤Ê¤«¤Ã¤¿»þ¡¢¥µ¡¼¥Ð¡¼¤ÏGT_WOLF¤òÆɤ߹þ¤à¡£
¥Ç¥âºÆÀ¸¥³¥Þ¥ó¥É¤Ïdm_83³ÈÄ¥»Ò¤òÌÀ³Î¤ËȽÊ̤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£³ÈÄ¥»Ò¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢dm_83¤«dm_84¤È¤·¤Æ°·¤¦¤³¤È¤ò»î¹Ô¤·¤Þ¤¹¡£
ÀܳÃæ¤Î¥×¥ì¥¤¥ä¡¼¤Ë¤Ï´Êά¤µ¤ì¤¿¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤òÁ÷¿®¤¹¤ë¤³¤È¤ÇÄÌ¿®ÂÓ°è¤òÀáÌ󤹤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
¥¯¥é¥¤¥¢¥ó¥È¤Ï¥Ç¥â¤ò¥ì¥³¡¼¥Ç¥£¥ó¥°Ãæ¡¢cg_recording_statusline¤òÀßÄꤹ¤ë¤³¤È¤Ç¥ì¥³¡¼¥Ç¥£¥ó¥°¥¹¥Æ¡¼¥¿¥¹¤Îɽ¼¨°ÌÃÖ¤òÊѤ¨¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£0¤Ë¤¹¤ë¤ÈÈóɽ¼¨¤È¤Ê¤ë¡£
/buyNow¤È/singlePlayLink¤Ïºï½ü¡£
¥á¥Ë¥å¡¼¤ËMODS¤òÄɲá£
°ÛÊýÀ­¥Æ¥¯¥¹¥Á¥ã¡¼¥Õ¥£¥ë¥¿¥ê¥ó¥°¤¬ÉÁ²è¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤¿¡£r_ext_texture_filter_anisotropic 1¤ÇÍ­¸ú¡£r_textureAnisotropy¤Ç¤É¤ÎÄøÅÙ½èÍý¤¹¤ë¤«¤òÀßÄê¡£
cg_draw2D¤Ïcheat protected¤Ç¤Ï¤Ê¤¯¤Ê¤Ã¤¿¡£
Ê¢¶Ú¾õÂ֤ΤȤ­¤Ë¼þ°Ï¤ò¸«¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£¤Þ¤¿½èÍý¤ò´°Á´¤Ë¥¯¥é¥¤¥¢¥ó¥È¥µ¥¤¥É¤Ë°Ü¤·¤¿¤Î¤Ç¥é¥°¤¬¤Ê¤¯¤Ê¤Ã¤¿¡£
Åêɼ´ØÏ¢¤Ë¤Ä¤¤¤Æ¤â¥³¥ó¥½¡¼¥ë¥í¥°¤Ëή¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£

¡öwin32¤Î¤ß:
¥¯¥é¥¤¥¢¥ó¥È¤Ï/clearviewlog¤ÇÀìÍÑ¥³¥ó¥½¡¼¥ë¥í¥°¤ò¥¯¥ê¥¢¤Ç¤­¤ë¡£
s_khz 44¤¬Àµ¾ï¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£

¡öLinux¤Î¤ß:
dgamouse 2¤ËÀßÄꤹ¤ë¤³¤È¤Ç¥¯¥é¥¤¥¢¥ó¥È¤ÏOS¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥Þ¥¦¥¹²Ã®µ¡Ç½¤ò̵¸ú¤Ë½ÐÍè¤ë¡£
r_swapInterval¤ò»ÈÍѲÄǽ¤Ë¤Ê¤Ã¤¿¡£
¥­¡¼¤Î³ä¤êÅö¤Æ¤òLinux¸þ¤±¤ËÄ´À°¡£CTRL/SHIFT/ALT¤Ê¤É¡¢Àµ¾ï¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¡£

¥Ð¥°½¤Àµ´ØÏ¢

¥¯¥é¥¹¤Ê¤É:
Ê¢¶Ú¾õÂÖ¤ÎCo¤¬ÊÑÁõ²Äǽ¤ò½¤Àµ¡£
Lv4¤ÎCo¤¬Ê¢¶ÚÃæ¤ÎÁê¼ê¤ËÉÔŬÀڤʥʥ¤¥Õ¥À¥á¡¼¥¸¤òÍ¿¤¨¤Æ¤¤¤¿¤Î¤ò½¤Àµ¡£
ÊÑÁõCo¤ÎÂÎÎϤ¬Áê¼ê¥Á¡¼¥à¤Ëɽ¼¨¤µ¤ì¤ë»þ¤Ë¥é¥°¤¬¤¢¤Ã¤¿¤Î¤ò½¤Àµ¡£
Lv3¤Î¥¨¥ó¥¸¥Ë¥¢¤¬ÃÏÍë¤Ë»È¤¦¥Á¥ã¡¼¥¸¤ò½¤Àµ¡£
Fo¤¬Ammo Pack¤ò½Ð¤¹¤Î¤ËMed¤Î¥Á¥ã¡¼¥¸¤ò¾ÃÈñ¤ò¤·¤Æ¤¤¤¿¤³¤È¤ò½¤Àµ¡£

¤½¤Î¾°ìÈÌ:

HTTP¥À¥¦¥ó¥í¡¼¥É¤Ç¤Þ¤ì¤Ë¥¯¥é¥Ã¥·¥å¤¹¤ëÉÔ¶ñ¹ç¤ò½¤Àµ¡£
¥À¥¦¥ó¥í¡¼¥É»þ¤Ë¥¯¥é¥¤¥¢¥ó¥È¤ÏID_DOWNLOAD/2.0 libcurl/7.12.2¤È¤¤¤¦UserAgent¾ðÊó¤òÁ÷¿®¤¹¤ë¡£¤Þ¤¿¥ê¥Õ¥¡¥é¡¼¤È¤·¤ÆET://server.IP.address:port¤òÉղ乤롣
¥µ¡¼¥Ð¡¼¥¨¥ó¥¸¥ó¤Î³Æ¼ï¥¯¥é¥Ã¥·¥åÉÔ¶ñ¹ç¤ò½¤Àµ¡£
¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼¤¬Àܳ»þ¤Ë»þ¡¹Êɤò¤¹¤êÈ´¤±¤Æ¤·¤Þ¤¦ÉÔ¶ñ¹ç¤ò½¤Àµ¡£
profile.pid¤ÎÌäÂê¤ò½¤Àµ¡£
1¥­¥ã¥ó¥Ú¡¼¥óÃæ¤Ë10¥Þ¥Ã¥×°Ê¾å´Þ¤Þ¤ì¤ë»þ¡¢¥¯¥é¥Ã¥·¥å¤¹¤ëÉÔ¶ñ¹ç¤ò½¤Àµ¡£
À¸¤­¤Æ¤¤¤ë¥×¥ì¥¤¥ä¡¼¤Ç¤â¥¹¥³¥¢¤Ë¤É¤¯¤í¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ëÌäÂê¤ò½¤Àµ¡£
¥­¥ã¥ó¥Ú¡¼¥ó¤´¤È¤Ë¥­¥ã¥ó¥Ú¡¼¥ó¿ô¤¬¥«¥¦¥ó¥È¤µ¤ì¤Æ¤¤¤ëÌäÂê¤ò½¤Àµ¡£
cg_drawgun 0¤Ë¤¹¤ë¤È¼ÖºÜ½Æ¤Î½Æ¸ý¸¶ÅÀ°ÌÃÖ¤¬Àµ¤·¤¯¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£¤Þ¤¿²Ð±êÊü¼Í´ï¤È¼ÖºÜ½Æ¤òƱ»þ¤Ëȯ¼Í¤Ç¤­¤ëÌäÂê¤â½¤Àµ¡£
Light Weapon¤ÈHeavy Weapon¤¬Lv4¤Ë¤Ê¤ë¤È¥¯¥é¥¹¤¬Soldier¤Ë¤Ê¤ëÌäÂê¤ò½¤Àµ¡£
¥ì¥Õ¥ê¡¼¥á¥Ë¥å¡¼¤Î¿§¤òÆóÅÙ³ÈÄ¥¤¹¤ëÉÔ¶ñ¹ç¤ò½¤Àµ¡£
³¤³°¤Î¥­¡¼¥Ü¡¼¥É(±Ñ¸ì·÷°Ê³°)¤Ç¥³¥ó¥½¡¼¥ë¤ò³«¤¤¤¿¾õÂ֤ǥµ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤Ê¸»ú¤òÂǤÁ¹þ¤á¤ëÌäÂê¤ò½¤Àµ¡£
cl_language¤¬Ž°1¤«0¤Î¤È¤­¤ËËÝÌõ¤¬ÉÔŬÀÚ¤À¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
²¿¤«¤ò½¦¤Ã¤¿»þ(Radar Parts¤Ê¤É)¡¢HUD¤Ëɽ¼¨¤µ¤ì¤ë¤Þ¤Ç¥é¥°¤¬¤¢¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
ÃÏÍ뤬¤È¤­¤É¤­ºîÆ°¤·¤Æ¤â̵²»¤À¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
Bind¤·¤¿ÆâÍƤ¬Á´¤ÆLowercast¤µ¤ì¤ë(ÀèƬñ¸ì¤¬¥³¥Þ¥ó¥É¤Î¾ì¹çÌäÅú̵ÍѤǼ¹Ԥµ¤ì¤ë)ÌäÂê¤ò½¤Àµ¡£
ÁÉÀ¸¤¹¤ë¤È¥×¥ì¥¤¥ä¡¼¤Î»ëÀþ¤¬²óž¤¹¤ëÌäÂê¤ò½¤Àµ¡£
Players_Axis/Players_Allies¤¬Â礭¤¯¤Ê¤ê¤¹¤®¤Æ¥µ¡¼¥Ð¡¼¤ò¥¯¥é¥Ã¥·¥å¤µ¤»¤ëÌäÂê¤ò½¤Àµ¡£
¥×¥ì¥¤¥ä¡¼Æ±»Î¤¬¤Ö¤Ä¤«¤Ã¤Æ¡¦½Å¤Ê¤Ã¤Æ¥¹¥¿¥Ã¥¯¤¹¤ëÌäÂê¤ò½¤Àµ¡£
Æ°¤¯¤â¤Î¤Î¾å¤Ë¥À¥¤¥Ê¥Þ¥¤¥È¤òÀßÃÖ¤·¤Æ¥ª¥Ö¥¸¥§¥¯¥Æ¥£¥Ö¤¬ºîÆ°¤¹¤ëÌäÂê¤ò½¤Àµ¡£
"configstring > max_configstrings"¤ÇÀܳ¤Ç¤­¤Ê¤¤ÌäÂê¤ò½¤Àµ¡£
¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼Ãæ¤Ë¥µ¥Ã¥Á¥§¥ëÇúÃƤ¬Àµ¾ï¤ËºîÆ°¤·¤Ê¤¤ÌäÂê¤ò½¤Àµ¡£
ºîÀ®¤¬´°Î»¤·¤¿·ú¤ʪ¤Ç¤Î´í¸±Í½Â¬¥á¥Ã¥»¡¼¥¸É½¼¨¤ò½¤Àµ¡£¤Þ¤¿ÄÆÍî»þ¤â½¤Àµ¡£

¼ç¤Ë¥Ð¥é¥ó¥¹Ä´À°¤Ê¤É¡§

¥¢¥ó¥Á¥Ð¥Ë¡¼¥Û¥Ã¥×¤ò½¤Àµ¡£
¥¤¥Ù¥ó¥È¤¬Æ±»þ¤Ëµ¯¤³¤ëÌäÂê¤ò½¤Àµ¡£
¥Ô¥¹¥È¥ë¤¬Á᤯·â¤Æ¤ëÌäÂê¤ò½¤Àµ¡£
MG42ȯ¼Í®Å٤Υե졼¥à¥ì¡¼¥È°Í¸À­¤ò½¤Àµ¡£
¥Þ¥Ã¥×ºÇ²¼ÅÀ¤ËÊ¿¤é¤ÊÌ̤¬¤¢¤ë¾ì¹ç¥È¥ì¡¼¥¹¥Þ¥Ã¥×¤¬²õ¤ì¤ëÌäÂê¤ò½¤Àµ¡£
Lv4ǽÎϤò³ÍÆÀ¤·¤¿»þ¥é¥ó¥À¥à¤Ç¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼¤ËÊѤï¤Ã¤Æ¤·¤Þ¤¦ÌäÂê¤ò½¤Àµ¡£
Antilag¤ò½¤Àµ¡£
¥í¥°¤Ç¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬°ìÉôºï½ü¤µ¤ì¤Æ¤¤¤ëÌäÂê¤ò½¤Àµ¡£
¥ì¥ó¥À¥ê¥ó¥°»þ¿­Ä¥²èÁü¤¬Â¿¤¹¤®¤ë¤È¥¯¥é¥Ã¥·¥å¤¹¤ëÌäÂê¤ò½¤Àµ¡£
ÆÃÄê¤ÎÃÏ·Á¤ÇÈô¤Ö¤ÈÄÀ¤ó¤Ç¤æ¤­¤ä¤¬¤ÆÄÆÍ¤ëÌäÂê¤ò½¤Àµ¡£
ÆÃÄê¤ÎIP¤ÈLAN¥¢¥É¥ì¥¹¤ò¸í¤Ã¤Æ²ò¼á¤¹¤ëÌäÂê¤ò½¤Àµ¡£
¹â¼¡¥¢¥¹¥­¡¼Ê¸»ú¤¬¸í¤Ã¤¿¿§¤Çɽ¼¨¤µ¤ì¤ë³ÈÄ¥½ñ¼°¤ÎÌäÂê¤ò½¤Àµ¡£
ˤ·â¥Þ¡¼¥«¡¼¤¬¥³¥ó¥Ñ¥¹¾å¤ÇÀµ¾ï¤Ëɽ¼¨¤µ¤ì¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
9ʸ»úÌܤ˥ԥꥪ¥É¤ò´Þ¤ßÁ´ÂΤÎŤµ¤¬21»ú¤Î¥Û¥¹¥È¤¬IPX¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
MAX_GLOBAL_SERVERS°Ê¾å¤¬¥Þ¥¹¥¿¡¼¥µ¡¼¥Ð¡¼¤«¤éÌá¤Ã¤Æ¤­¤¿¤È¤­¤Ë¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¥ë¥¬¡¼¤Î»¶ÃÆΨ¤ÈºÇ¸å¤ÎÃƤò·â¤Ã¤¿¤È¤­¤Î¹Åľ¤ò½¤Àµ¡£
ÆóÃú·ý½Æ¤¬Á᤯·â¤Æ¤ëÌäÂê¤ò½¤Àµ¡£
ÁÀ·â¤Î¥º¡¼¥à¤ò½¤Àµ¡£
¥¯¥é¥¤¥¢¥ó¥È¤¬IP¤ò¾å½ñ¤­¤Ç¤­¤ë¥»¥­¥å¥ê¥Æ¥£¥Û¡¼¥ë¤ò½¤Àµ¡£
¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼¤È¥ê¥ó¥Ü¡¼¥«¥á¥é¤¬¤æ¤Ã¤¯¤ê¤È³ê¤Ã¤Æ¤È¤Þ¤é¤Ê¤¤ÌäÂê¤ò½¤Àµ¡£
¥µ¡¼¥Ð¡¼¥³¥ó¥½¡¼¥ë¤Ë¥ê¥À¥¤¥ì¥¯¥ÈÄÌÃΤ¬²¿ÅÙ¤âɽ¼¨¤µ¤ì¤ë¤³¤È¤ò½¤Àµ¡£
LMS¤Ë¤ÆFIRST BLOOD¤¬É½¼¨¤µ¤ì¤Ê¤«¤Ã¤¿¤Î¤ò½¤Àµ¡£
LMS¤Ë¤Æ¥Á¡¼¥à¤¬²¿¾¡¤·¤Æ¤¤¤ë¤Î¤«¤òɽ¼¨¤·¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
Åêɼ¤¬¹Ô¤ï¤ì¤Æ¤¤¤ëºÇÃæ¤ËÀܳ¤·¤Æ¤­¤¿¥×¥ì¥¤¥ä¡¼¤¬¥Þ¥Ã¥×½ª¤ï¤ë¤Þ¤ÇÅêɼ¤Ç¤­¤Ê¤¤ÌäÂê¤ò½¤Àµ¡£
Fuel Dump¤Ë¤Æ"base fortification"¤Èɽ¼¨¤µ¤ì¤ë¾ì½ê¤Ë¥À¥¤¥Ê¥Þ¥¤¥È¤òÀßÃÖ¤·¤Æ¤âFuel Dump¤¬Ç˲õ¤Ç¤­¤ëÌäÂê¤ò½¤Àµ¡£
pmove¤ÈÉð´ï¥Á¥ã¡¼¥¸¤Ë´Ø¤¹¤ëÉÔŬÅö¤ÊÉôʬ¤ò½¤Àµ¡£
Radar¤Ç¥À¥¤¥Ê¥Þ¥¤¥È²ò½ü¤Ë´Ø¤¹¤ë¥Ð¥°¤ò½¤Àµ¡£
¥Á¡¼¥à¤ÎÃÏÍ뤬Á´¤Æ»È¤ï¤ì¤Æ¤¤¤ë¤È¤­¤ËÁê¼ê¥Á¡¼¥à¤ÎÃÏÍë¤ò²ò½ü¤Ç¤­¤Ê¤«¤Ã¤¿¥Ð¥°¤ò½¤Àµ¡£
ÃÏÍë¤Î¥«¥¦¥ó¥È¤¬Àµ¤·¤¯¤µ¤ì¤Ê¤«¤Ã¤¿¥Ð¥°¤ò½¤Àµ¡£
Goldrush¤Ç¥À¥¤¥Ê¥Þ¥¤¥ÈÀßÃÖ¥¢¥Ê¥¦¥ó¥¹¤È¼ÂºÝ¤¬¹çÃפ·¤Ê¤¤ÌäÂê¤ò½¤Àµ¡£
¥×¥ì¥¤¥ä¡¼¤¬·úÀß²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë¤¿¤á¤Î¥À¥¤¥Ê¥Þ¥¤¥È¤òÁ˳²¤¹¤ëÌäÂê¤ò½¤Àµ¡£
¥×¥ì¥¤¥ä¡¼¤ÎÉú¤»¾õÂÖ¤¬¥Ñ¥±¥Ã¥È¥í¥¹¤Ë¤è¤Ã¤Æ¼º¤ï¤ì¤ëÌäÂê¤ò½¤Àµ¡£
3ÉðÊÆâ¤ËÁê¼ê¤òÁ´ÌǤµ¤»¡¢¤«¤Ä¼«Ê¬¤é¤¬¼«»¦¤·¤¿¾ì¹ç¤Ë¾¡Íø¤·¤¿¥Á¡¼¥à¤¬¾¡Íø¤È¤Ê¤é¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
LMS¤Ë¤Æ°ìÊý¤Î¥Á¡¼¥à¤¬Á´ÌǤ·¤Æ¤â½ª¤ï¤é¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
¥Ý¡¼¥ºÃæ¤Ç¤ÎÉð´ï»ý¤ÁÂؤ¨¤ò½¤Àµ¡£
ÆóÃú·ý½Æ¤ÈMG42¤¬cg_autoreload¤ò̵»ë¤·¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
timelimit 0¤Ë¤ª¤±¤ëMaxlivesÄ´À°¤ò½¤Àµ¡£
¾È½à¤Ëɽ¼¨¤µ¤ì¤ë̾Á°¤¬¤¿¤Þ¤ËÀµ¤·¤¯¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
g_{axies,allies}mapxp¤¬Ä¹¤¤¥­¥ã¥ó¥Ú¡¼¥ó¤Ë¤Æ¥ª¡¼¥Ð¥Õ¥í¡¼¤òµ¯¤³¤·¥µ¡¼¥Ð¡¼¤ò¥¯¥é¥Ã¥·¥å¤µ¤»¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¸ÇÄꤵ¤ì¤¿MG42¤¬¥Õ¥§¥ó¥¹¤Ê¤É¤Î¾ã³²Êª¤òÇ˲õ¤·¤Ê¤¤ÌäÂê¤ò½¤Àµ¡£
¥×¥ì¥¤¥ä¡¼¤¬¥Ç¥£¥¹¥³¥Í¥¯¥È¤·¤¿»þ¤Ë'complaint dismissed'¤Èɽ¼¨¤µ¤ì¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
MG42¤¬¥¢¥ó¥Á¥é¥°½èÍý¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
¥é¥¤¥Õ¥ë¥°¥ì¥Í¡¼¥É¤¬¥Á¡¼¥à¥É¥¢¤ò´ÓÄ̤·¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¥¤¥ó¥¿¡¼¥ß¥Ã¥·¥ç¥ó¤Ë¤ª¤±¤ëReady½èÍý¤òmatch_readypercent¤ËÊѹ¹¡£
¥¤¥ó¥¿¡¼¥ß¥Ã¥·¥ç¥ó¤ÎReady¤Ï¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼¤Î¤â¤Î¤ò´Þ¤Þ¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
²á¾ê¤Êcg_errordecay¤¬½ÐÎϤµ¤ì¤ëÌäÂê¤ò½¤Àµ¡£
Co¤ÎÃÏÍëȯ¸«¤Ë´Ø¤¹¤ëÌäÂê¤ò½¤Àµ¡£
¥Ê¥¤¥Õ¤¬¥¢¥ó¥Á¥é¥°½èÍý¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
Ç˲õ¤Ç¤­¤ë¥ª¥Ö¥¸¥§¥¯¥È±Û¤·¤ËÉú¤»¤¿»þ¡¢¥×¥ì¥¤¥ä¡¼¤¬¼«¿È¤ÎƬÉô¤ò·â¤Ã¤Æ¤·¤Þ¤¦ÌäÂê¤ò½¤Àµ¡£
Ê¢¶Ú»þ¤Ë»þ¡¹Med°Ê³°¤Î¥¯¥é¥¹¤Ç¤â»ëÀþ¤¬¸ÇÄꤵ¤ì¤Æ¤·¤Þ¤¦ÌäÂê¤ò½¤Àµ¡£
Â礭¤¹¤®¤ë¥µ¡¼¥Ð¡¼¥³¥Þ¥ó¥É¤¬¥¯¥é¥¤¥¢¥ó¥È¤ò¥¯¥é¥Ã¥·¥å¤µ¤»¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¥µ¡¼¥Ð¡¼¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤Æ//¤¬½èÍý¤µ¤ì¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¥¬¡¼¥é¥ó¥É¤ÈK43¤ÎÃÆÌôÊü½Ð¤Ë¤Ä¤¤¤Æ½¤Àµ¡£
¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼¤Ë¤Ê¤Ã¤¿»þ¤ËÃÆÌô¤¬ÇÛ¤é¤ì¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¥ê¥ó¥Ü¡¼Ãæ¤Î¥×¥ì¥¤¥ä¡¼¤¬¥­¥ã¥ê¥¢Ãæ¤Î¥×¥ì¥¤¥ä¡¼¤ò¸«¤Æ¤¤¤ë¤È¤­¤Ë¥Ç¥£¥¹¥³¥Í¥¯¥È¤¹¤ë¤È¥µ¡¼¥Ð¡¼¤¬Íî¤Á¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¹¶·âµ÷Î¥¤Ë¤è¤ë¥À¥á¡¼¥¸¸º¾¯¤ÎÉÔ¶ñ¹ç¤ò½¤Àµ¡£
setu ch¤¬¥µ¡¼¥Ð¡¼¤ò¥¯¥é¥Ã¥·¥å¤µ¤»¤ëÌäÂê¤ò½¤Àµ¡£

Éú¤»¤Æ¤¤¤ë¥×¥ì¥¤¥ä¡¼¤¬Êɤˤá¤ê¹þ¤àÌäÂê¤ò½¤Àµ¡£
Ctrl-`¤Ç¥ß¥Ë¥³¥ó¥½¡¼¥ë¤¬³«¤¤¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
¥¹¥Ú¥¯¥Æ¥¤¥¿¡¼»þ¡¢ÊÑÁõ¤·¤Æ¤¤¤ë¥×¥ì¥¤¥ä¡¼¤Î¸µ¤Î̾Á°¤ÈÉþ¤òÃ¥¤Ã¤¿Áê¼ê¤Î̾Á°¤¬½Ð¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
̾Á°¤¬32ʸ»ú°Ê¾å¤Î¥×¥ì¥¤¥ä¡¼¤ËÂФ¹¤ëkick/mute/referee/etc¤¬½ÐÍè¤Ê¤«¤Ã¤¿ÌäÂê¤ò½¤Àµ¡£
¥ª¡¼¥Ð¡¼¥Ò¡¼¥È¤·¤¿Éð´ï¤¬»þ¡¹ºÇÂçÃͤòĶ¤¨¤ë¤ÈÇ®¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£
·ì¤äÇËÊÒ¤¬À¸¤¸¤¿»þ¤Ë¤Þ¤ì¤ËÆ°¤±¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ¡£

Battery¤Ë¤ª¤¤¤Æ¡¢bunker¤Î´ú¤ò¤È¤ë¤È¼«Æ°Åª¤Ë¥¹¥Ñ¥¦¥ó¥Ý¥¤¥ó¥È¤¬°ÜÆ°¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
Railgun¤Î²ßʪ¼Ö¤Î¤è¤¦¤Ê°ÜÆ°¥ª¥Ö¥¸¥§¥¯¥È¤ÏÄä»ß¤è¤ê¤â·Ñ³°ÜÆ°¤¹¤ë¤³¤È¤òÍ¥À褵¤»¤Þ¤¹¡£
¥¯¥é¥¤¥¢¥ó¥È¤Ï/userinfo¤¬»È¤¨¤Ê¤¯¤Ê¤ê¡¢¤³¤ì¤Ë¤è¤êuserinfo nuke¤â½ÐÍè¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
MG42¤È¥â¡¼¥¿¡¼¤ò¹½¤¨¤¿¤È¤­¤ËÁдã¶À¤Ï»È¤¨¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£

¥¤¥ó¥¿¡¼¥ß¥Ã¥·¥ç¥óÀ£Á°¤Ë»à¤ó¤Ç¤â"Killed by "¤¬É½¼¨¤µ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£
̤»ÈÍÑcvar¤Îcg_specswing¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿¡£

F13¡ÁF15¤Î¥­¡¼¤â»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
Linux¤Ç¤âCapslock¤Èkp_numlock¤Èkp_equals¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

Made some minor fixes to Linux keyhandling.
¤½¤Î¾Linux¤Ç¤Î¥­¡¼ÆþÎϤ˴ؤ¹¤ë¥Þ¥¤¥Ê¡¼¤Ê½¤Àµ¤ò¹Ô¤¤¤Þ¤·¤¿¡£

Åê¹Æ¼Ô ikanatto : 01:28 AM

April 18, 2005

Wolfenstein:Enemy Territory´ØÏ¢¤Î¥Õ¥¡¥¤¥ë

Files

ºî¤Ã¤¿¤â¤Î¤Ê¤É¤Ç¤¹¡£½ÐÍ褬¤¢¤Þ¤ê¤è¤í¤·¤¯¤Ê¤¤¤Î¤Ï½é¿´¼Ô¤È¤¤¤¦¤³¤È¤Ç¤´´ªÊÛ¤¯¤À¤µ¤¤¡£

¸½ºß¥Õ¥¡¥¤¥ë¤ÎÇÛÉۤϽô»ö¾ð¤Ë¤è¤ê¸«¹ç¤ï¤»¤Æ¤¤¤Þ¤¹¡£

Several files were removed because of some reasons.

zip¤ärar¤Ï¤½¤Î¤Þ¤Þ²òÅष¤Æ¤¯¤À¤µ¤¤¡£pk3¥Õ¥¡¥¤¥ë¤¬½Ð¤Æ¤­¤¿¤é¡¢etmain¤«¤´´õ˾¤ÎMOD¥Õ¥©¥ë¥À¤ËÆþ¤ì¤Æ¤¯¤À¤µ¤ì¤Ð¤½¤ì¤ÇƳÆþ¤Ï¤ª¤·¤Þ¤¤¤Ç¤¹¡£Ë°¤­¤¿¾ì¹ç¤Ë¤Ï°Ü¤·¤¿pk3¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë¤³¤È¤Ç¤Ê¤«¤Ã¤¿¤³¤È¤Ë¤Ç¤­¤Þ¤¹¡£

ET¥¢¥Ë¥á¥¹¥­¥ó

¥Õ¥¡¥¤¥ë

¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È

¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¸«¤Æ¤¤¤¿¤À¤±¤ì¤ÐÀâÌÀÉÔÍפǤ·¤ç¤¦¤«¡£»×¤¤¤Ã¤­¤ê¼ñÌ£¤Ê¤Î¤Çµ¤»ý¤Á°­¤¤¤È´¶¤¸¤¿Êý¤Ï̵Íý¤ËƳÆþ¤¹¤ë¤³¤È¤Ï¤Ê¤¤¤«¤È¸¤¸¤Þ¤¹¡£¤¢¤È¥­¥ã¥é¥¯¥¿¡¼¤´¤È¤Ëºî¤ê¤Î»¨¤µ¤¬°ã¤¦¤Î¤Ï¡¢ºî¤Ã¤¿¿Í¤¬°ã¤¦¤¿¤á¤Ç¤¹¡£¤è¤ê»¨¤Ç¤­¤¿¤Ê¤¤½ÐÍè¤Î¤â¤Î¤¬ikanattoºî¡¢¤½¤¦¤Ç¤Ê¤¤¤â¤Î¤Ï¤È¤¢¤ëÃΤê¹ç¤¤¤Î¤â¤Î¤Ç¤¹¡£

»ö¾ð¤Ë¤è¤ê¥Õ¥¡¥¤¥ë¤Ïºï½ü¤·¤Þ¤·¤¿¡£

Wolfenstein:Enemy Territory Custom Model Depot Yard¤Î¥¢¡¼¥«¥¤¥Ö·²

¥Õ¥¡¥¤¥ë

Àκî¤Ã¤¿Ê¸½ñ¤ò¤Þ¤È¤á¤Æzip¤·¤¿¤â¤Î¤Ç¤¹¡£¤Á¤Ê¤ß¤Ëzip¤·¤¿Ê¸½ñ¤Ï¸½weblog¤ËÂçȾ¤Ï°Ü¤·¤Æ¤¢¤ë¤Î¤Ç²þ¤á¤ÆɬÍפˤʤ뤳¤È¤Ï¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£

W:ET¡¡¥×¥ì¥¤¥ä¡¼¥â¥Ç¥ë¥¢¥Ë¥á¡¼¥·¥ç¥ó

¥à¡¼¥Ó¡¼

ET¤Ç»È¤ï¤ì¤Æ¤¤¤ë¥×¥ì¥¤¥ä¡¼¥â¥Ç¥ë¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤òϢ³ºÆÀ¸¤·¤¿¤â¤Î¤Ç¤¹¡£¤Á¤Ê¤ß¤Ë¤³¤ì¤À¤±¤Ç¤Ï»È¤¤¤è¤¦¤¬¤Ê¤¤¤Î¤Ç¡¢¤Õ¡¼¤ó¡¢¤³¤ó¤Ê¤Î¤â¤¢¤ë¤ó¤À¡¼ÄøÅ٤˸«¤Æ¤ä¤Ã¤Æ¤¯¤À¤µ¤¤¡£

W:ET¡¡¥×¥ì¥¤¥ä¡¼¥â¥Ç¥ë¥¢¥Ë¥á¡¼¥·¥ç¥ó¡¡3ds max¥Ç¡¼¥¿

¥Õ¥¡¥¤¥ë(rar)¡¡

¾åµ­¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Î3ds max¥Ç¡¼¥¿¤Ç¤¹¡£»ä¤Î3ds max´Ä¶­¤Ï5.1J¤Ëcharactor studio 3.0¤Ç¤¹¡£¥á¥Ã¥·¥å¥Ç¡¼¥¿¤È¤·¤ÆAxis¤ÎCovert Ops¤¬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¥ê¥¯¥¨¥¹¥È¤¢¤ì¤Ð¾¤Î¥á¥Ã¥·¥å¥Ç¡¼¥¿¤Ë¤âÂбþ¤Ç¤­¤Þ¤¹¤Î¤Ç¤´ÁêÃ̤¯¤À¤µ¤¤¡£

Åê¹Æ¼Ô ikanatto : 06:34 PM | ¥³¥á¥ó¥È (383)

April 17, 2005

¤´°Õ¸«¡¦¤´´¶ÁÛ

Movable Type¤Ï·Ç¼¨ÈĤΥ¢¥É¥¤¥ó¤¬¤Ê¤¤¤è¤¦¤Ç¤¹¡£¤È¤¤¤¦¤³¤È¤Ç¡¢¤´°Õ¸«¤Ê¤É¤´¤¶¤¤¤Þ¤·¤¿¤é¤³¤Á¤é¤Îʸ½ñ¤Ë¥³¥á¥ó¥È¤È¤·¤Æ¤´Åê¹Æ¤¯¤À¤µ¤¤¡£

Åê¹Æ¼Ô ikanatto : 03:51 AM | ¥³¥á¥ó¥È (1191)

What's Urban Terror

»ä¤ÎÂç¹¥¤­¤Ê¥²¡¼¥à¤Î°ì¤ÄQ3A¤ÎMOD¡¢Urban Terror¤Ë¤Ä¤¤¤Æ¤Î¾Ò²ð¤Ç¤¹¡£

¤â¤¦¤Á¤ç¤Ã¤È¤ÇET¤Ë¤â°Ü¿¢¤µ¤ì¤ëÍͻҤʤΤǡ¢À޳Ѥε¡²ñ¤È¤È¤¤¤¦¤³¤È¤Ç¾Ò²ðʸ¤òºî¤Ã¤Æ¤ß¤Þ¤¹¡£

Urban Terror¤È¤Ï

Urban Terror¤Ï¡¢Sillicon Ice development¡ÊMODºîÀ®Í­»Ö¡Ë¤Ë¤è¤Ã¤Æºî¤é¤ì¤¿Q3A¤ÎMOD¤Î°ì¤Ä¤Ç¤¹¡£¥Æ¡¼¥Þ¤È¤·¤Æ¤Ï¤´Â¸ÃÎCounter Strike¤Ë¶á¤¤¤â¤Î¤Ç¡¢¶áÂå¤òÉñÂæ¤Ë¥Æ¥í¥ê¥¹¥È¤ÈÆüìÉôÂâ¤Ë¤è¤ë½Æ·âÀï¤Ç¤¹¡£

¥×¥ì¥¤´¶³Ð¤È¤·¤Æ¤Ï¡¢¥À¥á¡¼¥¸¥·¥¹¥Æ¥à¤¬¥ê¥¢¥ë·Ï¡¢±¿Æ°¥·¥¹¥Æ¥à¤¬¥¹¥Ý¡¼¥Ä·Ï¤È¤Ê¤Ã¤Æ¤ª¤ê¾¤ÎMOD¤È¤Ï°ìÌ£°ã¤Ã¤¿Ì£ÉÕ¤±¤Ç¤¹¡£»ä¸Ä¿Í¤È¤·¤Æ¤Ï¡¢CS¤è¤ê¤â¤³¤Á¤é¤ÎÊý¤¬¹¥¤­¤Ç¤¹¡£

Quake2¤ËAction Quake2¤È¤¤¤¦MOD¤¬¤¢¤Ã¤¿¤Î¤ò¤´Â¸ÃΤÎÊý¤¬¤¤¤é¤Ã¤·¤ã¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¤Þ¤µ¤·¤¯¤½¤ì¤Î¸å·Ñ¼Ô¤È¤¤¤Ã¤¿´¶¤¸¤Ç¤¹¡£

Urban Terror¤Î³µÍ×

Åо줹¤ëÉð´ï¤Ï´ðËÜŪ¤Ë¼Âºß¤Î¤â¤Î¤Ç¡¢Æ¬Éô¤Ø¤ÎÈïÃƤϨ»à¡¢¤½¤ì°Ê³°¤Ç¤âÂçÄñ½Å¾É¤È¤Ê¤ê¤Þ¤¹¡£µÓÉô¤Ø¤Î¥À¥á¡¼¥¸¤¬±¿Æ°Ç½ÎϤÎÄã²¼¡¢ÏӤؤϾȽà¤Î¤Ö¤ì¤Ê¤É¡¢¼Â¤Ë¶Å¤Ã¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿Éð´ï°Ê³°¤Ë¤âÁõÈ÷ÉʤòÁª¤Ö¤³¤È¤¬²Äǽ¤Ç¡¢ËÉÃÆ¥Á¥ç¥Ã¥­¡¢¥Ø¥ë¥á¥Ã¥È¡¢ÄɲÃÃÆÌô¡¢¥Ê¥¤¥È¥Ó¥¸¥ç¥ó¡¢¼êÜØÃÆ¡¢Á®¸÷ÃÆ¡¢±ì´É¡¢¥µ¥¤¥ì¥ó¥µ¡¼¡¢¥ì¡¼¥¶¡¼¥µ¥¤¥È¤Ê¤É¤¬ÁªÂò²Äǽ¤Ç¤¹¡£

¥²¡¼¥à¥â¡¼¥É¤Ï¥Ç¥¹¥Þ¥Ã¥Á¡ÊFFA¡Ë¡¢¥Á¡¼¥à¥Ç¥¹¥Þ¥Ã¥Á¡¢CTF¤Ë²Ã¤¨¤ÆET¤Ç¤¤¤¦LMS¤ËÁêÅö¤¹¤ëSurvivor¤¬¤¢¤ê¤Þ¤¹¡£¤É¤Î¥²¡¼¥à¥â¡¼¥É¤Ç¤â³Ú¤·¤¯Í·¤Ö¤³¤È¤¬½ÐÍè¤Þ¤¹¡£Æä˥µ¥Ð¥¤¥Ð¡¼¥â¡¼¥É¤ÏÏ¢·È¤¬¤â¤Î¤ò¤¤¤¦¥¯¥é¥óÀï¸þ¤±¤Î¥â¡¼¥É¤Ç¤¹¤«¤é¡¢¥é¥¤¥È¥æ¡¼¥¶¡¼¤«¤é¥Ø¥Ó¡¼¥×¥ì¥¤¥ä¡¼¤Ë¤Þ¤ÇÂбþ¤Ç¤­¤Þ¤¹¡£

Ver3°Ê¹ß¤«¤éBomb¥â¡¼¥É¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ÏCounter Strike¤Ë¤¢¤ë¤è¤¦¤Ê¡¢¥À¥¤¥Ê¥Þ¥¤¥È¤ò¥Þ¥Ã¥×µ¬Äê²Õ½ê¤ËÀßÃÖ¤·¡¢¤³¤ì¤òËɱҤޤ¿¤Ï²ò½ü¤ò½ä¤Ã¤ÆÁ褦¤â¤Î¤Ç¤¹¡£¤Ê¤«¤Ê¤«¤Ë¥¢¥Ä¥¤¤Ç¤¹¡£

¤Þ¤¿Åо줷¤Æ¤«¤é¤½¤³¤½¤³Ç¯·î¤¬·Ð²á¤·¤Æ¤ª¤ê¡¢¥æ¡¼¥¶¡¼¤ä¥ª¥Õ¥£¥·¥ã¥ë¤Ë¤è¤ë¥«¥¹¥¿¥à¥Þ¥Ã¥×¤ä¥¹¥­¥ó¤¬Î®Ä̤·¤Æ¤¤¤ë¤³¤È¤â¸«Æ¨¤»¤Þ¤»¤ó¡£¤¤¤¯¤é¤Ç¤âÍ·¤Ö¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

Urban Terror¤ÎƳÆþÊýË¡

¤Þ¤º»Ï¤á¤ËQuake 3 Arena¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¿Í¤ÏÇã¤Ã¤Æ¤¯¤À¤µ¤¤¡£º£¤È¤Ê¤Ã¤Æ¤Ï¤È¤Æ¤â°Â²Á¤ËÇ㤦¤³¤È¤¬½ÐÍè¤ë¤È»×¤¤¤Þ¤¹¡£¤½¤·¤ÆQ3A¤ÎºÇ¿·¥Ñ¥Ã¥Á¤òÅö¤Æ¤Æ¤¯¤À¤µ¤¤¡£1.32¤¢¤¿¤ê¤¬ºÇ¿·¤Ç¤·¤ç¤¦¤«¡£

¤½¤·¤Æ¡¢Urban Terror¥µ¥¤¥È¤Ë¤ÆºÇ¿·¤ÎUrban Terror¤Î¥Õ¥¡¥¤¥ë¤ò¼ê¤ËÆþ¤ì¤Æ¤¯¤À¤µ¤¤¡£¶²¤é¤¯3.7¤¬Q3AÈǺǿ·¥Ð¡¼¥¸¥ç¥ó¤Ç¤·¤ç¤¦¡£

¥À¥¦¥ó¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤ò²òÅष¤Æ½Ð¤Æ¤­¤¿pk3·²¤òQ3A¥Õ¥©¥ë¥À°Ê²¼¤ËÃÖ¤±¤Ð´ðËÜŪ¤Ë½àÈ÷¤Ï´°Î»¤Ç¤¹¡£¤è¤ê¾ÜºÙ¤ÊƳÆþÊýË¡¤ä¥Þ¥Ã¥×¤Ê¤É¤Î¼ê¤ËÆþ¤ìÊý¤ÏETUT¤¬½Ð¤Æ¤«¤é¤Þ¤¿½ñ¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 03:08 AM | ¥³¥á¥ó¥È (940)

April 16, 2005

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡ÂèÏ»²ó

Reading the Source Code of W:ET #6

º£²ó¤Î¤Í¤é¤¤

²¿¤À¤«¤ó¤À¤ÇÏ»²óÌܤˤʤê¤Þ¤·¤¿¡£ET¤âµ×¤·¤Ö¤ê¤Î¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤ò¼õ¤±¡¢2.60¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¤³¤ì¤Ëȼ¤¤¡¢¥½¡¼¥¹¥³¡¼¥É¤â¿·¤·¤¤¤â¤Î¤¬ÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£º£²ó¤«¤é¤Ï¤³¤Á¤é¤ò°·¤¤¤Þ¤¹¡£¥À¥á¡¼¥¸¸º¿ê¤Ë´Ø¤¹¤ë¥³¡¼¥É½¤Àµ¤½¤Î¾¤¤¤í¤¤¤í¥Õ¥£¥Ã¥¯¥¹¤¬¤Ê¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£

º£²ó¤Ï¥¢¥ó¥Á¥é¥°µ¡Ç½¤¬¤É¤Î¤è¤¦¤ËƯ¤¤¤Æ¤¤¤ë¤Î¤«¡¢¤Ë¤Ä¤¤¤Æ¤ß¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

¥¢¥ó¥Á¥é¥°¤Ã¤Æ¡©

¥¢¥ó¥Á¥é¥°¤Ï²¿¤¹¤ë¤â¤Î¤¾¡¢¤È»×¤ï¤ì¤ëÊý¤¬¤¤¤é¤Ã¤·¤ã¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¥é¥°¤È¤Ï¤´Â¸ÃΤÎÄ̤ꡢ¥¯¥é¥¤¥¢¥ó¥È¥µ¡¼¥Ð¡¼´Ö¤Ç¤ÎÄÌ¿®½èÍý¤Ë¤è¤Ã¤ÆÀ¸¤º¤ëƱ´ü¤Î¤º¤ì¡¢¥¿¥¤¥à¥é¥°¤Î¤³¤È¤Ç¤¹¡£¤½¤Î¤¿¤á¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤Ï¤­¤Á¤ó¤È¥¿¡¼¥²¥Ã¥È¤ËÂФ·¤ÆÌ¿Ã椹¤ëÊý¸þ¤Ç¤â¡¢¥µ¡¼¥Ð¡¼¾å¤Î¥Ç¡¼¥¿¤Ç¤Ï´û¤Ë¥¿¡¼¥²¥Ã¥È¤Ï¤½¤³¤Ë¤Ï¤ª¤é¤ºÌ¿Ã椷¤Ê¤¤¸½¾Ý¤¬µ¯¤­¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢Ping¤ÎÂ礭¤Ê¥µ¡¼¥Ð¡¼¤Ç¤Ï¡ÖÀèÆɤߡפò¤·¤Æ¹¶·â¤ò¹Ô¤¦¤³¤È¤¬¤¤¤ï¤ÐFPS¤Î¾ï¼±¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£

¤³¤ì¤ò²ò·è¤¹¤ë¤¿¤á¤Ë¥¢¥ó¥Á¥é¥°¤¬Æ³Æþ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÎÆ°ºîÆâÍƤȹԤä¿»þ´Ö¤ò¥µ¡¼¥Ð¡¼¤¬¹Íθ¤·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¼ÂºÝ¤Ë¸«¤Æ¤¤¤ë¾ò·ï²¼¤Ë¤ÆÅö¤¿¤êȽÄê¤ò¹Ô¤¦¤â¤Î¤Ç¤¹¡£¤³¤Î¤¿¤á¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÏÀèÆɤߤò¤¹¤ëɬÍפϤʤ¯¤Ê¤ê¤Þ¤¹¡£

¤·¤«¤·¤Þ¤Ã¤¿¤¯ÌäÂ꤬¤Ê¤¤¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Ping¤Î¾®¤µ¤¤¿Í¤ÈÂ礭¤Ê¿Í¤¬½Ð²ñ¤¤Æ¬¤Ë¥Ñ¥ó¥Ä¥¡¡¼¥Õ¥¡¥¦¥¹¥È¤ò·â¤Ã¤¿¤È¤·¤Þ¤¹¡£·ë²Ì¡¢Ping¤Î¾®¤µ¤¤¿Í¤¬Â礭¤Ê¿Í¤ò¡Öɬ¤º¡×ÀèÀ©¤·¤Þ¤¹¡£¤³¤ì¤ÏÄÌ¿®È¿±þ®Å٤κ¹¤Ç¤¢¤ê¡¢¥¢¥ó¥Á¥é¥°µ¡Ç½¤ò¤â¤Ã¤Æ¤·¤Æ¤â¤³¤ì¤òËä¤á¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤Î¤Ç¤¹¡£

¥¢¥ó¥Á¥é¥°µ¡Ç½¼Â¸½¤Î¤¿¤á¤Î¥³¡¼¥É·²¤¬Æþ¤Ã¤Æ¤¤¤ë¤Î¤Ïg_antilag.c¤¬¼ç¤Ç¤¹¡£Ver2.60¤Ë¤Ê¤Ã¤Æ¤«¤é¥Ê¥¤¥Õ¤ÈMG42¤Ë´Ø¤·¤Æ¤â¥¢¥ó¥Á¥é¥°µ¡Ç½¤¬Æ¯¤¯¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¤Ä¤Þ¤ê¡¢Åö¤¿¤êȽÄê¤ÎºÝ¤Ë¤Ï¤³¤³¤Î´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤µ¤Ã¤½¤¯¤ß¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

¥¢¥ó¥Á¥é¥°¡§°ÌÃÖ¾ðÊóÊݸ

void G_StoreClientPosition( gentity_t* ent ) {
	int top, currentTime;
	
	if (!(	ent->inuse && 
 			(ent->client->sess.sessionTeam == TEAM_AXIS || ent->client->sess.sessionTeam == TEAM_ALLIES) && 
 			ent->r.linked &&
 			(ent->health > 0) &&
 			!(ent->client->ps.pm_flags & PMF_LIMBO) &&
			(ent->client->ps.pm_type == PM_NORMAL)
 	)) {
		return;
	}

	(¾Êά)

	ent->client->clientMarkers[top].servertime =	level.time;
	ent->client->clientMarkers[top].time =			currentTime;
}

°ìÈֺǽé¤Î´Ø¿ô¤Ç¤¹¡£G_StoreClientPosition¤È¤¤¤¦Ì¾Á°¤«¤é¤·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤Î°ÌÃÖ¾ðÊó¤òÊݸ¤·¤Æ¤ª¤¯¤â¤Î¤Î¤è¤¦¤Ç¤¹¤Í¡£¾Ü¤·¤¯¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

	top = ent->client->topMarker;

	// new frame, mark the old marker's time as the end of the last frame
	if( ent->client->clientMarkers[top].time < level.time) {
		ent->client->clientMarkers[top].time = level.previousTime;
		top = ent->client->topMarker = ent->client->topMarker == MAX_CLIENT_MARKERS - 1 ? 0 : ent->client->topMarker + 1;
	}

top¤ËtopMarker¤òÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢top¤Ï¥µ¡¼¥Ð¡¼¤Ëµ­Ï¿¤µ¤ì¤Æ¤¤¤ëºÇ¿·¤Î¥¯¥é¥¤¥¢¥ó¥È°ÌÃÖ¾ðÊó¤Î¡ÖÈÖ¹æ¡×¤Ç¤¹¡£

¼¡¤Îif¾ò·ï¤Ï¡¢µ­Ï¿¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤Î»þ´Ö¤¬¥µ¡¼¥Ð¡¼¤Î»þ´Ö¤è¤ê¤â¾®¤µ¤¤¤«¤É¤¦¤«¤ò¤ß¤Æ¤¤¤Þ¤¹¡£¤â¤·¤½¤¦¤Ê¤é¡¢¤³¤Îµ­Ï¿»þ´Ö¤òpreviousTime¤ËÃÖ¤­´¹¤¨¡¢top¤ò1¸ÄÁý¤ä¤¹¡¢¤Ä¤Þ¤ê¿·¤·¤¤µ­Ï¿ÈÖ¹æ¤Ë¤·¤Þ¤¹¡£


	VectorCopy( ent->r.mins,						ent->client->clientMarkers[top].mins );
	VectorCopy( ent->r.maxs,						ent->client->clientMarkers[top].maxs );
	VectorCopy( ent->r.currentOrigin,				ent->client->clientMarkers[top].origin );
	ent->client->clientMarkers[top].servertime =	level.time;
	ent->client->clientMarkers[top].time =			currentTime;

¤³¤³¤Ç¤Ï¿·¤·¤¯¥¯¥é¥¤¥¢¥ó¥È¤Î°ÌÃÖ¾ðÊó¤È»þ´Ö¤òµ­Ï¿¤·¤Æ¤¤¤Þ¤¹¡£

¥µ¡¼¥Ð¡¼¤Ç¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Î¡Ö°ÌÃ֡פȡֻþ´Ö¡×¤¬¥»¥Ã¥È¤Çµ­Ï¿¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò²±¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¤Í¡£

¥¢¥ó¥Á¥é¥°¡§Historical Trace

¥¯¥é¥¤¥¢¥ó¥È¤Î°ÌÃÖ¾ðÊ󤬻þ´Ö¤È¤È¤â¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤·¤¿¡£¤½¤ì¤Ç¤Ï¼ÂºÝ¤ÎÅö¤¿¤êȽÄê¤ò¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£¤³¤ì¤ÏG_HistoricalTrace´Ø¿ô¤Ç¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£

	if( !g_antilag.integer || !ent->client) {
		G_AttachBodyParts( ent ) ;

		trap_Trace( results, start, mins, maxs, end, passEntityNum, contentmask );

		res = G_SwitchBodyPartEntity(&g_entities[results->entityNum]);
		POSITION_READJUST

		G_DettachBodyParts();
		return;
	}

¤³¤³¤Ï¥¢¥ó¥Á¥é¥°µ¡Ç½¤¬Ìµ¸ú¡¢¤Þ¤¿¤ÏÂоݤ¬¥¯¥é¥¤¥¢¥ó¥È¤Ç¤Ê¤¤¾ì¹ç¤Î½èÍý¤Ç¤¹¡£¤¤¤ï¤æ¤ëÉáÄ̤ÎÅö¤¿¤êȽÄê¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£¤Á¤Ê¤ß¤ËG_AttachBodyParts¤ÈG_DettachBodyParts¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Ë¥Ø¥Ã¥É¤ä­¤Ê¤É¤Î¸ÄÊ̤ÎÅö¤¿¤êȽÄê²Õ½ê¤ò¤¯¤Ã¤Ä¤±¤¿¤ê¼è¤ê½ü¤¤¤¿¤ê¤·¤Þ¤¹¡£

	G_AdjustClientPositions( ent, ent->client->pers.cmd.serverTime, qtrue );

	G_AttachBodyParts( ent ) ;

	trap_Trace( results, start, mins, maxs, end, passEntityNum, contentmask );

	res = G_SwitchBodyPartEntity(&g_entities[results->entityNum]);
	POSITION_READJUST

	G_DettachBodyParts();

¤½¤·¤Æ¤³¤Á¤é¤¬¥¢¥ó¥Á¥é¥°µ¡Ç½¤¬Í­¸ú¤Ê¾ì¹ç¤ÎÅö¤¿¤êȽÄê¤Ç¤¹¡£¤Þ¤º¤ÏG_AdjustClientPositions¤«¤é¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£Æó¤ÄÌܤΰú¿ô¤Ë¡¢ent->client->pers.cmd.serverTime¤ò¥¨¥ó¥È¥ê¡¼¤·¤Æ¤¤¤ëÅÀ¤ò²±¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¿ôÃͤϡ¢¥¯¥é¥¤¥¢¥ó¥È¤¬ºÇ¸å¤Ë¼õ¤±¼è¤Ã¤¿¥Ç¡¼¥¿¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬º£¼ÂºÝ¤Ë¸«¤Æ¤¤¤ë¾õ¶·¤òºÆ¸½¤¹¤ë¥µ¡¼¥Ð¡¼»þ´Ö¤Ç¤¹¡£

void G_AdjustClientPositions( gentity_t* ent, int time, qboolean forward) {
	int			i;
	gentity_t	*list;

	for ( i = 0; i < level.numConnectedClients; i++, list++) {
		list = g_entities + level.sortedClients[i];
		// Gordon: ok lets test everything under the sun
 		if (	list->client && 
 				list->inuse && 
 				(list->client->sess.sessionTeam == TEAM_AXIS || list->client->sess.sessionTeam == TEAM_ALLIES) && 
 				(list != ent) &&
 				list->r.linked &&
 				(list->health > 0) &&
 				!(list->client->ps.pm_flags & PMF_LIMBO) &&
				(list->client->ps.pm_type == PM_NORMAL)
 		) {
			if(forward) {
				G_AdjustSingleClientPosition( list, time );
			} else {
				G_ReAdjustSingleClientPosition( list );
			}
		}
	}
}

Â礭¤Êif¾ò·ï¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤Þ¤È¤á¤ë¤ÈÂоݤ¬¥¯¥é¥¤¥¢¥ó¥È¤Ç¥Á¡¼¥à¤Ë»²²Ã¤·¤Æ¤¤¤Æ¹¶·âÂоݤȹ¶·â¼Ô¤¬Æ±¤¸¤Ç¤Ï¤Ê¤¯¤Æ¥Ø¥ë¥¹¤¬1°Ê¾å¤Ç¤¢¤ë¤³¤È¤ò¤ß¤Æ¤¤¤Þ¤¹¡£¤â¤·¤½¤¦¤Ê¤é¡¢G_AdjustSingleClientPosition¤Ë¤è¤Ã¤Æ¹¶·âÂоݡʾò·ï¤òËþ¤¿¤¹¤¹¤Ù¤Æ¤Î¥¯¥é¥¤¥¢¥ó¥È¡Ë¤Î°ÌÃÖ¾ðÊó¤ò¹¶·â¤·¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤Îtime¡Êent->client->pers.cmd.serverTime¡Ë¤Ë¤è¤Ã¤Æ½¤Àµ¤·¤Þ¤¹¡£¼ÂºÝ¤Î¥³¡¼¥É¤ò¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

static void G_AdjustSingleClientPosition( gentity_t* ent, int time ) {
	int i, j;

	if( time > level.time) {
		time = level.time;
	} // no lerping forward....

	i = j = ent->client->topMarker;
	do {
		if(ent->client->clientMarkers[i].time <= time) {
			break;
		}

		j = i;
		i = (i > 0) ? i - 1 : MAX_CLIENT_MARKERS - 1;
	} while(i != ent->client->topMarker);

	if(i == j) { // oops, no valid stored markers
		return;
	}

ºÇ½é¤Îifʸ¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¥µ¡¼¥Ð¡¼¤è¤ê¤âÀè¤Î¥Õ¥ì¡¼¥à¤Ë㤷¤Æ¤¤¤¿¾ì¹ç¤³¤ì¤ò¥µ¡¼¥Ð¡¼¤Î»þ´Ö¤ËƱ´ü¤µ¤»¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡Ê¤³¤ó¤Ê¾õ¶·¤Ï¥í¡¼¥«¥ëÀܳ¤Ç¤â¤·¤Ê¤¤¸Â¤ê¤Ê¤«¤Ê¤«µ¯¤³¤ê¤¨¤Þ¤»¤ó¤¬Ž¥Ž¥Ž¥¡Ë¡£¹«¤Ç¤Ïcom_maxfps¤òÁàºî¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÅö¤¿¤ê¤ä¤¹¤¯¤Ê¤ë¤Ê¤É¤Î±½¤¬Óñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£¼ÂºÝ¤ËfpsÀßÄêÃͤϤ³¤Î¤¢¤¿¤ê¤Ç¥Õ¥ì¡¼¥à¤´¤È¤Î»þ´Ö¤È¤¤¤¦·Á¤Ç¸ú¤¤¤Æ¤­¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥Õ¥ì¡¼¥à¤´¤È¤Î»þ´Ö¤¬Ã»¤¤¤Û¤É°ÌÃÖ¾ðÊ󤬾ܤ·¤¯µ­Ï¿¤µ¤ì¤ë¤¿¤á¡¢Åö¤¿¤êȽÄ꤬ºÙ¤«¤¯·×»»¤µ¤ì¤Þ¤¹¡£¤³¤Î¤¿¤áÅö¤¿¤ê°×¤µ¤Ëº¹¤¬À¸¤¸¤ë²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç¤¹¡£

¼¡¤Îwhile¹½Ê¸¤¬¤Þ¤µ¤Ë¥¢¥ó¥Á¥é¥°µ¡Ç½¤½¤Î¤â¤Î¤Ç¤¹¡£½¤ÀµÂоݤȤʤ륯¥é¥¤¥¢¥ó¥È¤Î°ÌÃÖ¾ðÊó¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤È¹¶·â¼Ô¤¬¸«¤Æ¤¤¤ë»þ´Ö¤òÈæ³Ó¤·¤Æ¡¢Æ±¤¸¤«Á°¼Ô¤¬¸å¼Ô¤è¤ê¤âÁ°¤Ë¤Ê¤Ã¤¿¤È¤­¤Î°ÌÃÖÅÐÏ¿ÈÖ¹æ¤òµá¤á¤Æ¤¤¤Þ¤¹¡£

¤³¤ì¤Ë¤è¤Ã¤Æ¡Ö¹¶·â¼Ô»ëÅÀ¤«¤é¡×¤Î¥¿¥¤¥à¥é¥°¤òÂǤÁ¾Ã¤·¥¹¥È¥ì¥¹¤Î¤Ê¤¤¥²¡¼¥à¥×¥ì¥¤¤ò¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£¤¿¤À¤·¡¢¡ÖÈﹶ·â¼Ô¡×¤«¤é¤Ï¼«¿È¤¬¹¶·â¤ò¼õ¤±¤ë¥¿¥¤¥ß¥ó¥°¤Ç¤Ï¤Ê¤¤¤Ï¤º¤Î»þ¤Ë¤â¥À¥á¡¼¥¸¤òÈï¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¹¶·â¼Ô¤ÎPing¤¬°­¤±¤ì¤Ð°­¤¤¤Û¤ÉÀ¸¤¸¤ä¤¹¤¯¤Ê¤ë¤Î¤Ç¡¢¤É¤³¤Þ¤Ç¤³¤Îµ¡Ç½¤òÍ­¸ú¤Ë¤¹¤ë¤«¤Ï¼Â¤Ë¹Í¤¨¤É¤³¤í¤Ç¤¹¡£

¼¡¤Ë»²¤ê¤Þ¤·¤ç¤¦¡£

	if(i != ent->client->topMarker) {
		float frac = ((float)(ent->client->clientMarkers[j].time - time)) / (ent->client->clientMarkers[j].time - ent->client->clientMarkers[i].time);

		LerpPosition(ent->client->clientMarkers[j].origin,		ent->client->clientMarkers[i].origin,	frac,	ent->r.currentOrigin);
		LerpPosition(ent->client->clientMarkers[j].mins,		ent->client->clientMarkers[i].mins,		frac,	ent->r.mins);
		LerpPosition(ent->client->clientMarkers[j].maxs,		ent->client->clientMarkers[i].maxs,		frac,	ent->r.maxs);
	} else {
		VectorCopy( ent->client->clientMarkers[j].origin,		ent->r.currentOrigin );
		VectorCopy( ent->client->clientMarkers[j].mins,			ent->r.mins );
		VectorCopy( ent->client->clientMarkers[j].maxs,			ent->r.maxs );
	}

¤³¤³¤Ï¡¢¥Õ¥ì¡¼¥à¤È¥Õ¥ì¡¼¥à¤Î´Ö¤Î¡Ö»þ´ÖŪ¤Ê¡×·ä´Ö¤òÊä´°¤¹¤ë¤¿¤á¤ÎÉôʬ¤Ç¤¹¡£Î㤨¤Ð¹¶·â¼Ô¤¬¹ÔÆ°¤·¤¿»þ´Ö¤¬3Éäá¤À¤Ã¤È¤È¤·¤Þ¤¹¡£¤È¤³¤í¤¬¥µ¡¼¥Ð¡¼¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤Î°ÌÃÖ¾ðÊó¤¬1ÉäÈ5ÉäΤâ¤Î¤·¤«¤Ê¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤½¤ó¤Ê»þ¡¢3ÉÃÌܤΰÌÃÖ¾ðÊó¤ò¿ä¬¤¹¤ë¤¿¤á¤Ë¡¢Ä¾Á°¤Èľ¸å¤Î°ÌÃÖ¤ò¥¯¥é¥¤¥¢¥ó¥È¤¬Ä¾ÀþŪ¤ËÆ°¤¤¤¿¤È²¾Äꤷ¡¢¹¶·â¼Ô¤Î¹ÔÆ°»þ´Ö¤Ç¤Î°ÌÃÖ¤ò·×»»¤·¤Æ¤¤¤Þ¤¹¡£

ÅöÁ³¤Ê¤¬¤é¤³¤³¤Ë¤â¸íº¹¤ò´Þ¤à²ÄǽÀ­¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢ÂçÄñ¤Î¾ì¹ç¤ÏÎɹ¥¤Ê·ë²Ì¤È¤Ê¤ê¤Þ¤¹¡£¤³¤¦¤¤¤Ã¤¿Éôʬ¤ò¸«¤Æ¤â¡¢¼ÂÀ蘆¤Ê¤¬¤é¤Î¥¸¥°¥¶¥°¤ÊÆ°¤­¤¬Áê¼ê¤Î¹¶·â¤ò²óÈò¤¹¤ë¾å¤Ç¤È¤Æ¤âÍ­¸ú¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£

¤µ¤Æ¡¢ÏäòG_HistoricalTrace¤ËÌᤷ¤Þ¤¹¡£G_AdjustSingleClientPosition¤Ë¤è¤Ã¤Æ¥¯¥é¥¤¥¢¥ó¥È¤Î°ÌÃÖ¤ò½¤Àµ¤â¤·¤¯¤ÏÊä´°¤·¡¢¤½¤·¤Ætrap_Trace¤Ë¤è¤êÅö¤¿¤êȽÄê¤ò¸«¤Æ¤¤¤Þ¤¹¡£¤³¤Î·ë²Ì¤Ïresults¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£¤½¤·¤Æ²áµî¤Î¾õÂ֤ˤʤäƤ¤¤ë³Æ¥¯¥é¥¤¥¢¥ó¥È¤Î°ÌÃÖ¾ðÊó¤ò¡¢G_AdjustClientPositions¤ò3¤ÄÌܤΰú¿ô¤òfalse¤Ç¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¸µ¤ËÌᤷ¤Æ¤¤¤Þ¤¹¡£

¤Á¤Ê¤ß¤ËG_SwitchBodyPartEntity¤ÏÅö¤¿¤Ã¤¿ÂΤÎÉô°Ì¤Ë±þ¤¸¤Æ½èÍý¤òʬ¤±¤ë´Ø¿ô¤Î¤è¤¦¤Ç¤¹¤¬¡¢¸½ºß¤Î¤È¤³¤íÌܤÀ¤Ã¤¿µ¡Ç½¤Ï²Ì¤¿¤·¤Æ¤¤¤Þ¤»¤ó¡£Æ¬¤Ç¤âƹÂΤǤ⭤Ǥâ¡Ö¥¯¥é¥¤¥¢¥ó¥È¤ËÅö¤¿¤Ã¤¿¡×¤È¤·¤Æ¤¤¤Þ¤¹¡£

¤³¤ì°Ê¹ß¤Î¥³¡¼¥É¤Ï¡¢°ÌÃÖ½¤Àµ¤·¤Æ¥¯¥é¥¤¥¢¥ó¥È¤Ë¥Ò¥Ã¥È¤·¤¿¤È¤­°ÌÃÖ½¤Àµ¤Ê¤·¤Ç¤ÎÅö¤¿¤êȽÄê¤ò¹Ô¤¤¡¢¤³¤Î·ë²Ì¤òres¤ËÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£

¤Þ¤È¤á

º£²ó¤Ï¥¢¥ó¥Á¥é¥°µ¡Ç½¤È¤¤¤¦¤³¤È¤Ç¡¢¥µ¡¼¥Ð¡¼¤È¥¯¥é¥¤¥¢¥ó¥È´Ö¤Ç¤Î»þ´Öº¹¤ò¹Íθ¤¹¤ë¥³¡¼¥É¤ò¸«¤Æ¤­¤Þ¤·¤¿¡£¤Ê¤«¤Ê¤«¶½Ì£¿¼¤¤Éôʬ¤Ç¤·¤¿¤Í¡£¥¯¥é¥¤¥¢¥ó¥È´Ö¤Î´Ä¶­º¹¤Ï»ÅÊý¤Î¤Ê¤¤¤³¤È¤È¤¤¤¨¤Ð¤½¤ì¤Þ¤Ç¤Ç¤¹¤¬¡¢¥³¡¼¥É¤Ç¤³¤ì¤ò¸øÊ¿¤ËÊ䤦¤³¤È¤¬½ÐÍè¤ë¤Ê¤éÁÇÀ²¤é¤·¤¤¤³¤È¤À¤È»×¤¤¤Þ¤¹¡£¥¯¥é¥¤¥¢¥ó¥È¤¬¸Ä¿Í¤ò±×¤¹¤ë¤¿¤á¤ËÊäÀµ¤ò¤«¤±¤ë¤³¤È¤Ï¥Á¡¼¥È¹Ô°Ù¤Ç¤¹¡£¤ä¤á¤Þ¤·¤ç¤¦¤Í¡£

Åê¹Æ¼Ô ikanatto : 06:14 PM | ¥³¥á¥ó¥È (1269)

April 15, 2005

Trouble Shootings for Modeling

"OMG! WHAT THE HELL IS THIS!?"

I can not remember how often I have said the above words. Yes, still saying that. But the activity of the modeling for a half of year, I have earned some know-hows.

If you are a new challanger of modeling, my knowledgements may help you. I hope so, hope so.

Troubles in ET

Checking the console log first!

Generally if errors occured while loading model data, console log displays those.


In this situation, ET failed to find the image file for accessory and body because of missing of skin file and path to non-existing files.

The console log is extremely useful for us to shoot the bugs. If you have problems in game, check console log first.

Black and yellow texture appears instead of your image file.


This means that ET failed to find the shader to object(s). The model data holds its shader info in it, but almost models has nothing about it.

So we need to define their shader by using the skin file. Check your definition file has proper path or name.

The skin filename must be modelname_classname.skin if your player model name is modelname.mdm.

For other models, like helmets or accesseries, the md3 also needs the skin files. If model name is modelname.md3, the skin file must be modelname.skin.

The model does not appear.


Looks like no errors but your model does not be seen, its reason can be that skin file exists correctly but defines the non-existing image file.

Check the console log and the skin file descriptions.

One more thing you must remember that the image width and height to be used as texture must be the numbers powered by 2. e.g. 512*512 or 128*256 are OK but 384*512 and 64*768 are NG.

The XYZ orientations appear instead of your model.


This will occur when the model file is not found. Check your definition files such as .char or .skin.

ET crashes when the model you made should be rendered.

This will occur when your model data has invalid value. e.g. too large bounding box otherwords too far vertices, negative value which must be positive( bone length, index number as well ). These invalid values are almost generated when the model data is converted, also may be done by my mdstool.

There are a little ways to correct this. Preventing the models from converting will do but you can not use the model in wanted format.

The player model looks floating or sinking!

This is caused if the mdx information is not compatible for your player model. The default mdx is best for the models which are similar to the default models. Their height is 80 in max unit. You can correct this by modification of mdx. My mdstool supports mdx adjustment and rescaling. But other problem will happen with mdx modification. Using the different mdx costs more memory. Thus your player model can be hard to use for low power PC users.

WTF!? My player model is collapsed but it looked well before exporting to mds!!

Be easy first. This can be caused if you rescaled the models which had been already physiqued with the biped.

I think this it the 3ds max bug or problem of the export-skelton plugin. So you should adjust your model size before physique. My mdstool supports to rescale mdm and mdx though I can not recommand this way because the rescaled model may look something weird...

Troubles in Exporting

When you export skl from max, max says that error occured and closes.

The indicator of progress goes for some point and but max closes... This can be caused if your player model has too many vertices.

I do not know the precise number of max vertices, though models with over 2000 vertices always fails to be exported, a 1500 vertices model can be exported.

So make sure that your model has lower vertex(or poly?) counts as possible as it can. Of course lower poly design tech required.

In max, the player model has several objects, but exported model has only 1 object.

This is caused if you forgot to assign the unique material number to each object. The sklout plugin regards the obejects which has the same material number as one united object. Thus although the objects has the same material, the material number must be different each other.

e.g. u_body assigned 1, u_lfthand 2, u_rthand 3, l_legs 4.

Some md3 exporters of max have issue.

This is not a common problem, but for the some max plugins which enable to export md3.

The plugins which do not require the setting of texture file path will implant the texture file path which is currently used in md3.

If md3 is loaded in ET, the texture file must be in /etmain/ subdirectories, so path must be such as "models/players/temperate/somemodel/". Although if you work on the different folder structure, the texture file path will not point the correct path with those plugins.

This can be corrected with using the skin file. However error message remains in console, but the texture applied by refering the skin file.

How can I handle MDC?

MDC is a model data like md3 but compressed. Its benefit is saving some memory, however, not much memory.

A man of SD said that you should not bother with mdc, just use md3. mdc is slightly difficult to use than md3 because not so popular.

Rather than using mdc, md3 prefered clearly.

Åê¹Æ¼Ô ikanatto : 07:26 PM | ¥³¥á¥ó¥È (228)

Adding New Animations

This tutorial spots how we can add the new animations to the existing player model system. I will explain that how we add the new animations to the deafault bone system, but you should be able to do this in another bone system.

Quick tutorial for adding the new animations


1. Create animations with biped in max

Well, the first step to climb up is creating animations. To do this, you must create the default biped. For more detail about the default biped, here. This work is pretty fun for me :). If you are doing with the Character studio plugin, it will help you to create smart animations easily. When it is done, write down somewhere about "Name of animation", "First frame number", "Length", "FPS to play this animation" for each animation you got.

You may want to know the default biped figure. Yes I wanted to know that. So I have adjusted the biped to fit the normal player character. You can get it here( figure file ).

2. Skin up the biped roughly.

As for the mds exporting plugin can not reguard the biped mesh itself as the model object, we need to make a skin around the biped. No need to make a detail skin, just dummy. Physique the model with biped roughly, but remember each bone must have a link to 1 vertex at least.

Guess what is the most simple skin that fullfill that state...? Yes, it can be an object with one triangle. Attaching this object to the biped node and assign the vertices to all bones. Whoa, you have made it. Easy?

3. Export mds and cut into mdx

Now we are going to export mds so that we can get the animation data into ET. You can cut mds into mdx by my tool with running mode 2.

4. Configure the .aninc file

What is the .aninc file...? The aninc file is the definition of the mdx to tell ET what animations this mdx holds and those properties, so that ET can handle the series of frames as an animation to play.

The aninc file format is the followings. Each animation requires this description.
<Animation Name> <First Frame Number> <Length of Animation> <Looping> <FPS to play> <Move speed> <Transition> <Revered>

For example, suppose that a mdx holds the 3 types of animation, punch, kick, guard. The punch animation ranges from 0 to 14 frames and it should be played at 30 fps. The kick animation is 15-44 frames at 30 fps and the guard animation is 45-59 frames at 45 fps. The animc for this mdx is the followings:

// animation config for the custom mdx
	punch	0	15	0	30	0	0	0
	kick	15	30	0	30	0	0	0
	guard	45	15	0	45	0	0	0

Save your aninc text as animationname.animc. animationname prefers to be the same as the mdx name animationname.mdx.

5. Put the mdx and aninc into the folder tree

Maybe you already have, if you do not then just make, the folder animations/base/human somewhere on your disk. Put the your mdx and animc file into animations/base/human/.

6. Configure the anim file to include your mdx

Now let's copy the human_base.anim at animations/ to your tree and open it with text editor. Then, add the lines to the line before the last '}' like this:

animgroup
{
	animfile "animations/human/base/body.mdx"
	{
		#include "animations/human/base/body.aninc"
	}
	animfile "animations/human/base/mortar.mdx"
	{
		#include "animations/human/base/mortar.aninc"
	}
	animfile "animations/human/base/akimbo.mdx"
	{
		#include "animations/human/base/akimbo.aninc"
	}
	animfile "animations/human/base/prone_pistol.mdx"
	{
		#include "animations/human/base/prone_pistol.aninc"
	}	
	animfile "animations/human/base/prone_rifle.mdx"
	{
		#include "animations/human/base/prone_rifle.aninc"
	}	
	animfile "animations/human/base/prone_dual_pistols.mdx"
	{
		#include "animations/human/base/prone_dual_pistols.aninc"
	}		
	animfile "animations/human/base/prone_mortar.mdx"
	{
		#include "animations/human/base/prone_mortar.aninc"
	}
	animfile "animations/human/base/binocs.mdx"
	{
		#include "animations/human/base/binocs.aninc"
	}
	animfile "animations/human/base/no_juice.mdx"
	{
		#include "animations/human/base/no_juice.aninc"
	}
	animfile "animations/human/base/swim.mdx"
	{
		#include "animations/human/base/swim.aninc"
	}
	animfile "animations/human/base/youranimation.mdx"
	{
		#include "animations/human/base/youranimation.aninc"
	}
}

Save this text. Therefore we have configured the anim file to let the default human animation have your animations included and enable to use them in ET.

7. Assign the animations to the actions

Okay, almost done... the left thing is assigning those animations to the specific actions. Copy into your tree the script at animations/script/ of pak0.pk3 then open in text editor. Oi, indeed oi, huge text file. This is the script for assigning the animations to actions. Find out and replace the existing animation to yours where you want the model to play, or if you are modding totally and adding new actions then add the script by refering the existing. As you can see, the player animation is separated to 2 parts, torso and legs. Due to this feature we can save the time to build animations of whole body parts. Nice SD :)

8. Done!

Congraturations, you have added(replaced) the new animations. If you have added the new another action, you need to code to activate it. I think this work also fun for coders...isn't it? To see your new animations in ET, just compress the folder animations and rename its extension to pk3(recommand to rename it as its name starts with a letter 'q' or alphabetically later), place it to etmain.

Åê¹Æ¼Ô ikanatto : 07:22 PM | ¥³¥á¥ó¥È (62)

Making player model using default mdx

Using the deafult mdx is a nice idea to save our time to make original animations. The default mdx holds more than 4500 frames. Can you tolerate to make it all by yourself?

If you intend to use the deafault mdx as your mdm's bones and frames, you must create a biped figure which has the same bone strucure as the default has. The default biped is almost normal except having 5 fingers with 3 links, 1 toe with 1 link.




The default biped figure bone list:
Bip01 Pelvis
Bip01 Spine
Bip01 Spine1
Bip01 Spine2
Bip01 Spine3
Bip01 Neck
Bip01 Head
Bip01 L Clavicle
Bip01 L UpperArm
Bip01 L Forearm
Bip01 L Hand
Bip01 L Finger0
Bip01 L Finger01
Bip01 L Finger02
Bip01 L Finger1
Bip01 L Finger11
Bip01 L Finger12
Bip01 L Finger2
Bip01 L Finger21
Bip01 L Finger22
Bip01 L Finger3
Bip01 L Finger31
Bip01 L Finger32
Bip01 L Finger4
Bip01 L Finger41
Bip01 L Finger42
Bip01 R Clavicle
Bip01 R UpperArm
Bip01 R Forearm
Bip01 R Hand
Bip01 R Finger0
Bip01 R Finger01
Bip01 R Finger02
Bip01 R Finger1
Bip01 R Finger11
Bip01 R Finger12
Bip01 R Finger2
Bip01 R Finger21
Bip01 R Finger22
Bip01 R Finger3
Bip01 R Finger31
Bip01 R Finger32
Bip01 R Finger4
Bip01 R Finger41
Bip01 R Finger42
Bip01 L Thigh
Bip01 L Calf
Bip01 L Foot
Bip01 L Toe0
Bip01 R Thigh
Bip01 R Calf
Bip01 R Foot
Bip01 R Toe0

Total 53 bones

Note that if there is a bone which does not link to any vertex when exporting skl, the sklout plugin will ignore that bone. So to get the same bone structure from the default biped figure, you must assign 1 or more vertices at least to each bone.

1. Make the model with textured.


No special things about this work. Same as the standard low polygon modeling.
One thing you should take care of is that an object can use 1 texture because a mds vertex can only 1 uv coordinate. Otherwords, multi material can not be used. However you can use the shader script to player model for multi mapping or ambient and so on.

2. Create the default biped figure and physique your model.


See above about the default biped.

3. Export mds with one frame that model stands ease.

You can get a good tutorial about 2 and 3 process at http://www.mothermushroom.com/images/miscFiles/mdsExport.html.
Nice work pants :)
If you encounter some problems when exporting, my Trouble Shootings may help.

4. Convert this mds to mdm and mdx.

To do this, run the tool with MODE 3.

5. Replace the bone structure of the default mdx to one of the converted mdx.

To do this, set config to use the converted mdx as reference mdx and the default mdx as source mdx, then run the tool with Mode 5. Now your mdx has an original bone structure and the default mdx's animations. You can get the default mdx in animations/human/base/body.mdx by unpacking pak0.pk3.

6. Build up the folder structure to pack up.

Build tree such as:
[root]
 |
 |-[models]
 |  |-[players]
 |     |-[temperate]
 |        |-[yourmodel]
 |
 |-[characters]
 |  |-[temperate]
 |     |-[allied or axis]
 |
 |-[animations]
    |-[human]
       |-[base]

7. Put your mesh, textures, animation file into tree.

mdm, textures, other accesseries model in models/players/temperate/yourmodel/. Put the adjusted mdx in /animations/human/base/ and rename mdx such as body_yourmodel.mdx.

8. Make a anim file.

Open the text editor and write down like as the followings.
animgroup
{
	animfile "animations/human/base/body_yourmodel.mdx"
	{
		#include "animations/human/base/body.aninc"
	}
	animfile "animations/human/base/mortar.mdx"
	{
		#include "animations/human/base/mortar.aninc"
	}
	animfile "animations/human/base/akimbo.mdx"
	{
		#include "animations/human/base/akimbo.aninc"
	}
	animfile "animations/human/base/prone_pistol.mdx"
	{
		#include "animations/human/base/prone_pistol.aninc"
	}	
	animfile "animations/human/base/prone_rifle.mdx"
	{
		#include "animations/human/base/prone_rifle.aninc"
	}	
	animfile "animations/human/base/prone_dual_pistols.mdx"
	{
		#include "animations/human/base/prone_dual_pistols.aninc"
	}		
	animfile "animations/human/base/prone_mortar.mdx"
	{
		#include "animations/human/base/prone_mortar.aninc"
	}
	animfile "animations/human/base/binocs.mdx"
	{
		#include "animations/human/base/binocs.aninc"
	}
	animfile "animations/human/base/no_juice.mdx"
	{
		#include "animations/human/base/no_juice.aninc"
	}
	animfile "animations/human/base/swim.mdx"
	{
		#include "animations/human/base/swim.aninc"
	}
}
The red descriptions depend on what name you saved the mdx as. Save this text as human_base_yourmodel.anim and put it in /animations/.

9. Make a char file.

Open up the text editor, write down like as the followings.
characterDef
{
	skin			"class"

	mesh			"models/players/temperate/yourmodel/body.mdm"
	animationgroup		"animations/human_base_yourmodel.anim"
	animationscript		"animations/scripts/human_base.script"

	undressedCorpseModel	"models/players/temperate/yourmodel/body.mdm"
	undressedCorpseSkin	"naked.skin"

	hudhead			"models/players/hud/head.md3"
	hudheadanims		"animations/human/heads/base.anim"
	hudheadskin		"models/players/hud/team_class.skin"
}
Where class is soldier, medic, engineer, fieldops or cvops if you will replace the exisiting class model.
mesh refers where is the mdm for this model.
animationgroup refers where is the animation setting file for this model. We have made this file so we should set this path to refer it.
undressedCorpseSkin refers the skin file applied when uniform taken by covert ops.

Save this text as classname.char. classname depends on what class you want use this model for. Place this file at /characters/temperate/allied or axis/.

10. Put the skin files.

The skin files are required when models are wrapped. The skin file format is:
objectname,	path of an image file for this object wrapping
If you have u_body, u_lfthand, u_rthand, l_legs objects in your model and they are using the image files body.tga and legs.tga, the skin file should be the followings:
u_body,		"models/players/temperate/yourmodel/body.tga"
u_lfthand,	"models/players/temperate/yourmodel/body.tga"
u_rthand, 	"models/players/temperate/yourmodel/body.tga"
l_legs,		"models/players/temperate/yourmodel/legs.tga"
You can attach some accesseries such as helmet or backpack with adding lines into the skin file. The followings are quoted from Splash Damage http://www.splashdamage.com/files/docs/playermodels.html.
md3_beltr Attaches to tag tag_bright. 
md3_beltl Attaches to tag tag_bleft. 
md3_belt Attaches to tag tag_ubelt. 
md3_back Attaches to tag tag_back. 
md3_weapon Attaches to tag tag_weapon. 
md3_weapon2 Attaches to tag tag_weapon2. 

md3_hat Attaches to tag_mouth, gets removed when a headshot is given. 
md3_hat2 Attaches to tag tag_mouth. 
md3_hat3 Attaches to tag tag_mouth. 
The skin filename should be modelname_class.skin. e.g. model name is body.mdm and it is for medic, the skin filename should be body_medic.skin. Unlike player models, such as heads or accesseries requires the skin files but its name should be modelname.skin.

11. Finish!


Congraturations, you have made the player model with the default animations. To play with your model, just compress the 3 folders models, animations, characters into 1 zip file and rename its extension to pk3. Place it your etmain folder or mod folder to play with it.


Åê¹Æ¼Ô ikanatto : 07:18 PM | ¥³¥á¥ó¥È (13)

unofficial MDM&MDX specification

Here is the data structure of mdm and mdx which I am using in the tool. but there is no guarantee to ensure this document saying truth. So use these info at your own risk.

Player model in ET

Each character used in ET is assigned in characters of pak0.pk3. There are some files to define a character, they refer what class it is, what mesh it uses, what animation group it uses, what mesh it uses when it is undressed, what model its head is.

The mdm is a mesh data file for player models. mdm includes the surfaces and tags. The surface is a geometric data of model or polygon data. Skinning the surfaces with textures, the model appears in ET. The tag is a position info to attach another model to this model. The tag has its position and degree at each frame.

The mdx is a animation data file which contains bone structure and frames. The bone is a skeltal model data. Each bone has its length and its parent bone. The frame is a 3D-position data of the bones. one of the mdx frames have slightly different bone position compared with the previous frame. Thus a series of those frame will make an animation of a action. Ordinarily the mdx has several(or massive) number of animations in it.

A combination of mdm and mdx makes the polygons live, act, be a player.

This system is extremely good for sharing the animations which are used by the similar models. For example, ET only has one mdx( precisely there are more but they are a little ) to be used by the player models, 5 classes of allies and axis team. If we need to create the animation data for each model as like RtCW, The file size will be more bigger and memory requirements will be higher.

However the combination of mdm and mdx is valid when they have the same bone structure. This means that we must create new mdx if we make a non-humanlike model or a small or tall person. I myself think that separating the model data into a set of meshes, tags and bone structure and frames is better if we want to make a small or large human model.

MDM Data Structure

[MDM]
  |
  |--[MDM HEADER]
  |
  |--[Surface]
  |     |
  |     |--[Header]
  |     |--[Vertex]
  |     |--[Triangle]
  |     |--[Collapsemap]
  |     |--[Bone Reference]
  |     :
  |
  |--[Tag]
  |    :
  |
  |--[EOF]


[MDX]
  |
  |--[MDX HEADER]
  |
  |--[Frame]
  |     |
  |     |--[Frame State]
  |     |--[Compressed Bone Frame]
  |     :
  |
  |--[Bone]
  |    :
  |
  |--[EOF]

Detail Data Structure

Here is a data specifications of mdm and mdx. Repeatly I say, they are not guaranteed to be right.

MDM HEADER

MDM HEADER is the header section of mdm. There are information of version, location, Level of Detail, number and offset of the surfaces and tags and so on.
MDM HEADER
NameType and SizeDescription
MDM Identificationchar * 4Magic Number. It should be 'MDMW'.
MDM Versionint32 * 1mdm version. It should be 3.
MDM Namechar * 64Name and virtual path to this mdm.
LoD Biasfloat * 1These are coeffcients of Level of Detail.
LoD Scalefloat * 1
Number of Surfacesint32 * 1Number of surfaces this mdm has.
Offset to Surfacesint32 * 1Offset to the address of the surfaces from this header. Header size is fixed then this value also fixed.
Number of Tagsint32 * 1Number of tags this mdm has.
Offset to Tagsint32 * 1Offset to the address of the tags from this header.
Offset to EoFint32 * 1Offset to EoF of this mdm. Otherwords this mdm file size.

Surface

Surface is a mesh data which will be seen as a part of the player model in ET. Generally a mdm has several surfaces. They are almost separated upper and lower parts, also hands and torso. Example:
MDM SURFACE HEADER
NameType and SizeDescription
Surface Identificationint32 * 1ID or version of surface. It should be 0x00000009.
Surface Namechar * 64Name of this surface. Generally it refers what part it is. Such as u_body, l_legs.
Shader Namechar * 64Name and virtual path of the shader to apply this surface. The ET mdm has nothing here. The skin file defines what shader this surface uses.
Shader Indexint32 * 1?? I dont know what this means. However this is always 0.
LoD Minimumint32 * 1This determines the maximum LoD effect on this surface.
Offset to MDM Headerint32 * 1Offset to MDM Header from this surface address. always negative value.
Number of Verticesint32 * 1Number of vertices this surface has.
Offset to Verticesint32 * 1Offset to the address of the vertices data from the head of surface data.
Number of Trianglesint32 * 1Number of triagles(polygons) which consist of this surface.
Offset to Trianglesint32 * 1Offset to the address of the triangles data from the head of surface.
Offset to Collapsemapint32 * 1Offset to the address of the collapsemap. The collapsemap is the list of triangle indices in order to apply LoD. This list indicates the triangle(or vertex?) will be omitted in that order.
Number of Reference Bonesint32 * 1Number of the bones which are used when this surface will be rendered with calculating its vertices.
Offset to Reference Bonesint32 * 1Offset to the address of the reference bone list.
Offset to Next Surfaceint32 * 1Offset to the next surface or this surface data size.
NameType and SizeDescription

MDM SURAFCE VERTEX is a vertex data of this surface.

MDM SURFACE VERTEX
NameType and SizeDescription
Vertex Normalized Vectorfloat * 3Normalized vector of this vertex. Maybe used for lightening effect.
Texture Coordinatesfloat * 2UV coordinates of the texture image. 3 vertices will cut an triangle image which their potisions are refered by this uv coords from the texture. This value is standardized so ranges from 0 to 1.
Number of Bone Weightsint32 * 1Number of the bone weights which will affect this vertex.

Weight is a element to determine where the vertex is. The vetex potision is calculated by summation of the multiple of the weight and its position of each bone.

MDM SURFACE WEIGHT
NameType and SizeDescription
Bone Indexint32 * 1Index number of the bone which affect the vertex.
Weightfloat * 1A coefficient how much this bone affects the vertex position. A summation of this value must be 1.
Position Vectorfloat * 3The position vector of vertex when this bone is treated as an origin.

Triangle is combinations of 3 vertex indices to buld a polygon.

MDM SURFACE TRIANGLE
NameType and SizeDescription
Vertex Indicesint32 * 33 vertex indices to make a polygon.

Collapsemap data is not specified yet. Reference Bone data is the continuous number of the bone index. They are int32 and their amount is same as the number of Number of Reference Bones in Surface Header.

Tag

Tag is popular for Quake3-Engine-Based game modders. Tag is used to attach another model to this model. mds which has been used in RtCW has different tag data type. mds treat the tags as bones so the position of tag will be changed at each frame.
MDM TAG
NameType and SizeDescription
Tag Namechar * 64Name of this tag.
Rotation Matrixfloat * 9A 3*3 rotation matrix to calculate another model's pose or angles.
Attach Bone Indexint32 * 1Index of the bone which this tag is attached to.
Position Vectorfloat * 3The position vector of tag when attached bone is treated as an origin.
Number of Reference Bonesint32 * 1The number of bones to calculate the tag's parent bone position. Ther are from a root bone to the previous bone of the attached to.
Offset to Reference Bonesint32 * 1The relative offset to the Reference Bones data from the head of this tag data.
Offset to Next Tagint32 * 1Offset to the next tag data or this tag data size.
Reference Bone Listint32 * Number of Reference BonesIndex list of the Reference Bones.

MDX HEADER

MDX Header refers the version, numbers and offset of the frame and bone structure of this mdx.

MDX HEADER
NameType and SizeDescription
MDX Identificationchar * 4ID of mdx, it should be 'MDXW'.
MDX Versionint32 * 1MDX version, should be 2 for now.
MDX Namechar * 4Name and virtual path of this mdx.
Number of Framesint32 * 1Number of the frames this mdx has.
Number of Bonesint32 * 1Number of the bones this mdx has.
Offset to Framesint32 * 1Offset to the address of frames from the header.
Offset to Bonesint32 * 1Offset to the address of bones from the header.
Torso Parent Bone Indexint32 * 1Bone Index to be a torso parent.
Offset to EoFint32 * 1Offset to EoF of mdx otherwords size of this mdx.

MDX FRAME

Frame is a state of the skeltal model at a moment. It can be the scene of firing Panzer, or dying by the head shot, or Nazi salutling. There are 2 sections in Frame, Frame State and Compressed Bone Frame. Frame State refers the bounding box of this model at this frame and a base position which will be used as the parent bone by the root bone. Compressed Bone Frame is the bone position data at this frame. "Compressed" means that each data is not 32bit, but 16bit.

MDX FRAME STATE
NameType and SizeDescription
Bounding Box Vector 1float * 3The relation of 1 and 2 is diagonal. The box area created by using vector 1 and 2 to the box diagonal positions is called Bounding Box. The Bounding Box is used for checking collision or hitting box or trigger entity and so on.
Bounding Box Vector 2float * 3
Local Originfloat *3The origin position which is used at this frame.
Bounding Sphere Radiusfloat * 1Another Bounding area, sphere type. Used for the explosion damage etc.
Parent of Root Bone Tfloat * 3The position used by calculatin of the root bone position.

The Compressed Bone Frame follows after Frame State. It will repeat same times as the number of bones.

MDX COMPRESSED BONE FRAME
NameType and SizeDescription
Angle(Pitch)int16 * 1These are used to calculate the rotation matrix of this bone.
Angle(Yaw)int16 * 1
Angle(Roll)Type and Size
(unused?)int16 * 1Maybe this is inserted to make an unit of Compressed Bone Frame has 32bit order.
Offset Angle(Pitch)int16 * 1This is used to calculate where is this tag.
Offset Angle(Yaw)int16 * 1

To know the bone position, you have to summation the vectors which are calcurated by using ( Parent Distance, 0 , 0 ) as a start vector, rotating it with Offset Angles.

To convert angles to radian, just do this: Radian = 2 * 3.14 * Angle / 65536.0

MDX BONE

Bone Structure is like a puppet. A puppet has joints and fixed-length bones. Bones in ET is so. The meshed are attached around the bones. If a bone moves, mesh moves. If a bone is rotated, mesh is rotated as well.

MDX BONE
NameType and SizeDescription
Bone Namechar * 64Name of this boen.
Index of Parent Boneint32 * 1Index of the parent bone to calculate this bone position.
Torso Weightfloat * 1Coeeficient how much this bone tends to be like torso.
Parent Distancefloat * 1Distance from this bone's parent.
Flag(?)int32 * 1If this bone is a tag, this value is 1 or not, 0. but in ET there is no longer tags as bones, this is always 0.

References and Thanks

http://mojo.gmaxsupport.com/Articles/MDSFileFormat.html

Chris Cookson speced the mds, and this is extremely helpful for ET modder as well. Thanks that great documents.

Åê¹Æ¼Ô ikanatto : 07:11 PM | ¥³¥á¥ó¥È (13)

Enemy Territory¤Ç¼«Ê¬¤À¤±¤Î¥â¥Ç¥ë¤òºî¤í¤¦

¤Ï¤¸¤á¤Æ¤Î3DÂθ³

À޳Ѥ³¤Î¥µ¥¤¥È¤ËÍè¤Æ¤¯¤ì¤¿¤Î¤Ë²¿¤âÆÀ¤ë¤â¤Î¤¬Ìµ¤«¤Ã¤¿¤Ê¤ó¤Æ¡¢¤³¤Á¤é¤È¤·¤Æ¤â¿½¤·Ìõ¤Ê¤¤¤Î¤Ç¡¢´Êñ¤Ê¤¬¤é¡¢1¤«¤é½Ðȯ¤¹¤ëMD3ºîÀ®¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò½ñ¤¤¤Æ¹Ô¤³¤¦¤«¤È»×¤¤¤Þ¤¹¡£

Âç¶Ä¤Ê¤³¤È¤ò½ñ¤­¤Þ¤·¤¿¤¬¡¢»ä¤âET¤Ë¿¨¤ì¤ë¤Þ¤ÇMODºî¤ëµ¤¤Ê¤ó¤Æ¤³¤ì¤Ã¤Ý¤Ã¤Á¤â¤Ê¤«¤Ã¤¿¿Í´Ö¤Ç¤¹¡£¤·¤«¤·¡¢¤ª¤è¤½È¾Ç¯¤¯¤é¤¤¤Î¤Û¤Û¤ó¤È¼è¤êÁȤó¤Ç¤¤¤¿¤é¡¢¤½¤ì¤Ê¤ê¤Î¤â¤Î¤¬ºî¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¤½¤ÎÄøÅ٤Τ³¤È¤Ê¤Î¤Ç¤¹¡£Ê̤ˤ³¤ì¤Ç¥á¥·¤ò¶ô¤¦¡ª¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤À¤«¤é¡¢¤½¤ÎÄøÅ٤ε¤¹½¤¨¤ÇÂç¾æÉפǤ¹¡£

¤½¤ÎÁ°¤Ë¡¢»ä¤ÎÀÛ¤¤²òÀâ¤è¤ê¤â¤è¤ê¤ï¤«¤ê¤ä¤¹¤¯¡¢¤Þ¤¿¥Æ¡¼¥Þ¤È¤·¤Æ¤âÌÌÇò¤¤ÏÂʸ¥Á¥å¡¼¥È¥ê¥¢¥ë¤¬¤¢¤ë¤Î¤Ç¡¢¤½¤Á¤é¤ò»²¹Í¤Ë¤¹¤ë¤Î¤âÎɤ¤¤È»×¤¤¤Þ¤¹¡£

Clan [N]

¥Ê¥¤¥Õ¤ò¤Ê¤ó¤È¥¢¥¤¥¹¥Ô¥Ã¥¯¤Ë¤·¤Æ¤·¤Þ¤ª¤¦¤È¤¤¤¦¥Á¥å¡¼¥È¥ê¥¢¥ë¡£¤³¤Á¤é¤Ï¥á¥¤¥ó¥Ä¡¼¥ë¤ËMilkshape¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£²èÁü¤ò»È¤Ã¤¿ÃúÇ«¤Ç´Ê·é¤ÊÀâÌÀ¤Ç¤ï¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£

¡Ö¤¦¤ë¤Õ¤§¤ó¡×¤Ï¤¸¤á¤Þ¤·¤¿¡£

¤³¤Á¤é¤Ï¤¢¤í¤¦¤³¤È¤«¡¢½÷À­¤Î¶»Éô¤ò¥Ø¥ë¥á¥Ã¥È¤Ë¤·¤Æ¤·¤Þ¤ª¤¦¤È¤¤¤¦¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ç¤¹¡£¤½¤ÎÂêºà¤Ë¤Ä¤¤¤ÆÀ§Èó¤ÏÃÖ¤¤¤È¤¤¤Æ¡¢¥á¥¤¥ó¥Ä¡¼¥ë¤È¤·¤Ægmax¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£¤³¤Á¤é¤â²èÁü¤ÈÃúÇ«¤Ê²òÀâ¤Ê¤ª¤«¤²¤ÇÌäÂê¤Ê¤¯Íý²ò¤Ç¤­¤ë¤Ï¤º¤Ç¤¹¡£

¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î¥Æ¡¼¥Þ

¤µ¤Æ¡¢¤Ê¤Ë¤Ï¤È¤â¤¢¤ì¡¢¤Þ¤º¼«Ê¬¤¬ºî¤ê¤¿¤¤¤â¤Î¤¬¤¢¤ë¤È»×¤¤¤Þ¤¹¡£¤³¤ì¤ò»ä¤Ï¡Ö¥Æ¡¼¥Þ¡×¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¤¬¡¢¤³¤Î¡Ö¡Á¤·¤¿¤¤¡×¤È¤¤¤¦½é´ü¤Î¾×Æ°¤µ¤¨»ý³¤¹¤ì¤Ð²¿»ö¤âãÀ®²Äǽ¤Ç¤¹¡£¾å¤Ç¾Ò²ð¤·¤¿¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ï¡¢¡Ö¤ï¤«¤ê¤ä¤¹¤¤¥Á¥å¡¼¥È¥ê¥¢¥ë¡¢¤À¤±¤ÉÌÌÇò¤ª¤«¤·¤¯¤·¤¿¤¤¡×¤È¤¤¤¦¥Æ¡¼¥Þ¤À¤Ã¤¿¤Î¤Ç¤·¤ç¤¦¡¢¤­¤Ã¤È¡£»ä¤Ï¤¢¤Ê¤¿¤Î¡Ö¡Á¤·¤¿¤¤¡×¤Ë¤Ä¤¤¤ÆÃΤë½Ñ¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢»ä¤Ï¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ë¤è¤Ã¤Æ¡¢¤¢¤Ê¤¿¤¬¼«Ê¬¤Çºî¤ë¥â¥Ç¥ë¤ÏET¤ÎÃæ¤Ç²¿¤Ë¤Ê¤ë¤Î¤«Íý²ò¤·¡¢¼ÂÁ©¤Ç¤­¤ë¤³¤È¤ò¥Æ¡¼¥Þ¤È¤·¤ÆºîÀ®¤·¤Æ¤¤¤Þ¤¹¡£ Íפϡ¢²¿¤é¤«¤Î¥Ä¡¼¥ë¤ÇºîÀ®¤·¤¿3D¥ª¥Ö¥¸¥§¥¯¥È¤ò¼ÂºÝ¤Ë¥²¡¼¥àÃæ¤Çɽ¼¨¤µ¤»¤ëÊýË¡¤Î¾Ò²ð¤Ç¤¹¡£

»ä¤Î¾ì¹ç¡¢¥â¥Ç¥ê¥ó¥°¤Ë¸Â¤é¤º¼Â̳¾å¤Î¤â¤Î¤ä¼ñÌ£¤Ç¶½Ì£¤¬¤¢¤ë¤±¤ÉÆñ¤·¤¤¤ÊŽ¥Ž¥Ž¥¤ÈÍý²ò¤Î˸¤²¤Ë¤Ê¤ë¤Î¤Ï¡¢·è¤Þ¤Ã¤ÆÀìÌçÍѸì¤À¤Ã¤¿¤ê¤·¤Þ¤¹¡£»ä¤Ï²½³ØÅ̤ʤΤÇÍý²Ê¥Á¥Ã¥¯¤Êµ»½ÑŪÍѸì¤Ï¤Ê¤ó¤È¤Ê¤¯¤ï¤«¤ë¤Î¤Ç¤¹¤¬¡¢Ë¡Î§¤äʸ³Ø¤Ë´Ø¤¹¤ëÊýÌ̤Ϥµ¤Ã¤Ñ¤ê¤ï¤«¤ê¤Þ¤»¤ó¡£¤½¤ì¤é¤ò¹Íθ¤ËÆþ¤ì¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ï¤Ê¤ë¤Ù¤¯ÍѸì¤Ê¤É¤òÍѤ¤¤º¡¢»È¤Ã¤Æ¤âÊ¿°×¤Ë¤½¤ì¤ò²òÀ⤷¤Ê¤¬¤é¡¢¤è¤ê¿¤¯¤Î¿Í¤¬Æɤá¤ë¤è¤¦¤Ë¿Ê¤á¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ç¡¢¤¢¤¢¡¢¥â¥Ç¥ê¥ó¥°¤Ã¤Æ·ë¹½´Êñ¤Ê¤ó¤À¤Ê¤È»×¤Ã¤Æ¤¯¤ì¤Æ¡¢¾¯¤·¤Ç¤âÆüËܤÎMODºîÀ®¼Ô¤¬Áý¤¨¤ì¤Ð¤È´ê¤¦¤Ð¤«¤ê¤Ç¤¹¡£

MOD3ʬ¥á¥¤¥­¥ó¥°

ËÜÂê¤ËÆþ¤ê¤Þ¤¹¡£

º£²ó¤Î¤è¤¦¤Ë¿·¤¿¤Ë¥â¥Ç¥ë¤òºî¤Ã¤¿¤êÃÖ¤­´¹¤¨¤ë¤Ê¤É¡¢¤È¤Ë¤«¤¯¥²¡¼¥à¤Î²¿¤é¤«¤ÎÍ×ÁǤò²þÊѤ¹¤ë¤â¤Î¤òMOD¤È¸Æ¤Ó¤Þ¤¹¡£MOD¤ÏModification¤Îά¤Ç²þ¤¤È¤«¤½¤¦¤¤¤¦°ÕÌ£¤Ç¤¹¡£MOD¤Ïµ¬ÌϤÎÂç¾®¤Ï¤¢¤ì¤É¡¢¥²¡¼¥à¤Ë¼ê¤ò²Ã¤¨¤ë¤È¤¤¤¦ÅÀ¤Ç¤Ï¤ß¤ó¤ÊƱ¤¸¤Ç¤¹¡£Æäˡ¢Â絬ÌϤǹ­ÈϰϤˤ錄¤ëMOD¤òTC¡¢Total Conversion¡¢¤È¸Æ¤Ó¤Þ¤¹¡£¤è¤¯ÃΤé¤ì¤Æ¤¤¤ëCounter Strike¤ÏHalflife¤ÎTC¤Ç¤¹¡£

¤Þ¤º¡¢MODºîÀ®¤Î¤È¤Æ¤â´Êñ¤Ê°ìÎã¤ò¤¢¤²¤Þ¤¹¡£É¬Íפʤâ¤Î¤Ï¡¢notepad.exe¤Î¤è¤¦¤Ê¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¡¼¤È¡¢lhasa¤Î¤è¤¦¤Êzip¥¢¡¼¥«¥¤¥Ð¡¼¤Ç¤¹¡£

¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¡¼¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤¿¤â¤Î¤ò¡¢body_soldier.skin¤È¤·¤ÆÊݸ¤·¤Æ¤¯¤À¤µ¤¤¡§

// This is your first mod to change helmets of allied soldiers to covert ops caps. 

md3_back,		"models/players/temperate/allied/soldier/acc/backpack.md3"
md3_hat,		"models/players/temperate/allied/cap.md3"

l_legs,			"models/players/temperate/allied/leg01.tga"
u_body,			"models/players/temperate/allied/soldier/body.tga"
u_rthand,		"models/players/temperate/allied/soldier/body.tga"
u_lfthand,		"models/players/temperate/allied/soldier/body.tga"

ƱÍͤˡ¢¼¡¤ÎÆâÍƤòcap_soldier.skin¤È¤·¤ÆÊݸ¤·¤Æ¤¯¤À¤µ¤¤¡£

helmet,			"models/players/temperate/allied/cvops/cap"

¼¡¤Ë¡¢models¤È¤¤¤¦Ì¾Á°¤Ç¤É¤³¤«¤Ë¥Õ¥©¥ë¥À¤òºî¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤·¤Æ¡¢¤½¤Îmodels¥Õ¥©¥ë¥À¤ÎÃæ¤Ë¡¢players¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥©¥ë¥À¤òºî¤Ã¤Æ¤¯¤À¤µ¤¤¡£°Ê²¼¡¢temperate¡¢allied¡¢soldier¤Þ¤ÇƱÍͤˤ·¤Æºî¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤·¤Æsoldier¥Õ¥©¥ë¥À¤ÎÃæ¤Ë¡¢ÀèÄøÊݸ¤·¤¿body_soldier.skin¤Ècap_soldier.skin¤ò¤½¤ì¤¾¤ìsoldier¤Èallied¤Ë°ÜÆ°¤·¤Æ¤¯¤À¤µ¤¤¡£ºÇ½ªÅª¤Ë¡¢models/players/temperate/allied/soldier/body_soldier.skin¤Èmodels/players/temperate/allied/cap_soldier.skin¤¬ÆÀ¤é¤ì¤ì¤Ð·ë¹½¤Ç¤¹¡£

³¤¤¤Æ¡¢ºî¤Ã¤¿¥Õ¥©¥ë¥À¥Ä¥ê¡¼¤ò¡¢models¤«¤é´Ý¤´¤È̵°µ½Ì¤Çzip¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ÆÀ¤é¤ì¤¿zip¥Õ¥¡¥¤¥ë¤ò¡¢¤Þ¤¢Å¬Åö¤Ë¡¢test1.pk3¤È¤Ç¤â̾Á°¤òÊѤ¨¤Æ¡¢ET¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥Õ¥©¥ë¥ÀÃæ¤Îetmain¥Õ¥©¥ë¥À¤ËÆþ¤ì¤Æ¤¯¤À¤µ¤¤¡£

¤µ¤Æ¡¢¼Â¤Ï¤³¤Î»þÅÀ¤Ç¤â¤¦ºî¶È¤Ï´°Î»¤·¤Æ¤¤¤Þ¤¹¡£¤Ç¤Ï¼ÂºÝ¤Ë¥²¡¼¥à¤òµ¯Æ°¤·¤Æ²¿¤¬ÊѤï¤Ã¤¿¤Î¤«¤ò³Î¤«¤á¤Æ¤ß¤Þ¤·¤ç¤¦¡£ET¤òµ¯Æ°¤·¤ÆŬÅö¤ËHOST GAME¤·¤Æ¤¯¤À¤µ¤¤¡£¤¿¤À¤·Dedicated¤ÏOFF¤Ç¡£

Allies¤ÎSoldier¤Î¥Ø¥ë¥á¥Ã¥È¤¬¡¢Covert Ops¤Î˹»Ò¤ËÊѤï¤Ã¤Æ¤¤¤ë¤³¤È¤Ëµ¤¤Å¤­¤Þ¤·¤¿¤«¡©

¤Ç¤Ï¡¢¤¢¤Ê¤¿¤¬º£¤Þ¤Ç¤·¤¿¤³¤È¤Î°ÕÌ£¤òÀâÌÀ¤·¤Þ¤¹¡£ºÇ½é¤ËºîÀ®¤·¤¿¡Á.skin¤È¤¤¤¦¤Î¤Ï¡¢3D¥ª¥Ö¥¸¥§¥¯¥È¤Ë´Ø¤¹¤ëÀßÄê¥Õ¥¡¥¤¥ë¤Ç¤¹¡£º£²óÊѹ¹¤·¤¿¤Î¤Ï¡¢¤½¤ÎÃæ¤Î°ì¹Ô¡§

md3_hat,	"models/players/temperate/allied/cvops/cap.md3"

¤³¤ÎÉôʬ¤À¤±¤Ç¤¹¡£¸µ¡¹¤Ï¥Ø¥ë¥á¥Ã¥È¤Î¥â¥Ç¥ë¤ò»ØÄꤷ¤Æ¤¤¤¿¤³¤Î¹Ô¤ò¡¢Covert Ops¤Î˹»Ò¤Ë»ØÄꤷ¤Þ¤·¤¿¡£Â³¤¤¤Æ¥Õ¥©¥ë¥À¥Ä¥ê¡¼models/players/temperate/allied/soldier/¤òºîÀ®¤·¤Þ¤·¤¿¤¬¡¢¤³¤ì¤Ïpak0.pk3¤Ë¸½Â¸¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¿·¤¿¤ËºîÀ®¤·¤¿ÀßÄê¥Õ¥¡¥¤¥ë¤Ç¾å½ñ¤­¤·¤¿¤¤¤Î¤Ç¡¢¥Õ¥©¥ë¥À°ÌÃÖ¤òƱ¤¸¤â¤Î¤Ë»ØÄꤹ¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤½¤·¤Æzip¤Ë¤·¤Æpk3¤Ë¤·¤Þ¤·¤¿¤¬¡¢pk3¤Ë¤¹¤ë¤³¤È¤ÇETµ¯Æ°»þ¤Ë¼«Æ°Åª¤ËÆɤ߹þ¤Þ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£½ÅÍפÊÅÀ¤È¤·¤Æ¡¢´û¤ËÆɤ߹þ¤Þ¤ì¤¿pk3Ãæ¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤ÈƱ̾¤Î¥Õ¥¡¥¤¥ë¤¬¸å¤«¤éÆɤ߹þ¤ó¤Àpk3Ãæ¤Ë¤¢¤Ã¤¿¾ì¹ç¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤Ï¸å¤«¤éÆɤ߹þ¤Þ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ç¾å½ñ¤­¤µ¤ì¤Þ¤¹¡£º£²ó¤Ï¤½¤ì¤òÍøÍѤ·¤Þ¤·¤¿¡£

¤µ¤Æ¡¢¾åµ­¤ÎÎã¤ÇET¤Ç¤Î¥â¥Ç¥ë¤Î°·¤¤¤¬¤Ê¤ó¤È¤Ê¤¯¤ï¤«¤Ã¤¿¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ET¤Ç¤Ï¡¢ÀßÄê¥Õ¥¡¥¤¥ëÃæ¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¥â¥Ç¥ë¤ä¥Æ¥¯¥¹¥Á¥ã(¸å½Ò)¤ò²Äǽ¤Ê¸Â¤êÍøÍѤ·¤è¤¦¤È¤·¤Þ¤¹¡£¤Ç¤¹¤«¤é¡¢²æ¡¹¤ÎÌÜɸ¤Ç¤¢¤ë¼«Ê¬¤Çºî¤Ã¤¿¥â¥Ç¥ë¤ò¥²¡¼¥àÃæ¤ËÅо줵¤»¤ë¤Ë¤Ï¡¢ÀßÄê¥Õ¥¡¥¤¥ë¤ò²þÊѤ·¼«Ê¬¤Îºî¤Ã¤¿¥â¥Ç¥ë¤ò»ØÄꤹ¤ë¤«¡¢¸½Â¸¤¹¤ë¥â¥Ç¥ë̾¤ÈƱ̾¤Î¥Õ¥¡¥¤¥ë̾¤Ë¤·¤Æ¾å½ñ¤­¤¹¤ë¤«¡¢¤³¤Î¤É¤Á¤é¤«¤Ë¤è¤Ã¤Æ¼Â¸½²Äǽ¤Ç¤¹¡£

¥â¥Ç¥ê¥ó¥°¥Ä¡¼¥ë¤ò¼ê¤ËÆþ¤ì¤è¤¦

ÅƤˤâ³Ñ¤Ë¤â¡¢¤Þ¤º¤Ï3D¥ª¥Ö¥¸¥§¥¯¥È¤ò¤Ä¤¯¤é¤Ê¤±¤ì¤Ðº£²ó¤Î´ë²è¤Ï»Ï¤Þ¤ê¤Þ¤»¤ó¡£3D¥ª¥Ö¥¸¥§¥¯¥È¤È¤Ï¡¢»ä¤¿¤Á¤¬¥²¡¼¥àÃæ¤ÇÌܤˤ¹¤ëΩÂÎŪ¤Ê¤â¤Î°ìÈ̤ò»Ø¤·¤Þ¤¹¡£¤Á¤Ê¤ß¤Ë3D¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤ë¤³¤È¤ò¥â¥Ç¥ê¥ó¥°¤È¤¤¤¤¤Þ¤¹¡£ºî¤ë¿Í¤ò¥â¥Ç¥é¡¼¤È¤¤¤¤¤Þ¤¹¡£¥â¥Ç¥ê¥ó¥°¤¹¤ë¤Ë¤ÏwindowsÉÕ°¤Î¥Ú¥¤¥ó¥È¤Ç¤ÏÎÏÉÔ­¤Ç¡¢¤½¤ìÁê±þ¤Î¥Ä¡¼¥ë¤¬É¬Íפˤʤê¤Þ¤¹¡£¤Þ¤º¡¢¤½¤Î¾Ò²ð¤ò¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£ET¤ÏÀ޳ѤΥե꡼¥½¥Õ¥È¤Ê¤Î¤Ç¡¢¥Ä¡¼¥ë¤â̵ÎÁ¤Þ¤¿¤Ï°Â²Á¤Ê¤â¤Î¤¬Îɤ¤¤Ç¤·¤ç¤¦¡¢¤È¤¤¤¦¤³¤È¤Ç¥Õ¥ê¡¼¥½¥Õ¥È¤òÃæ¿´¤Ë¾Ò²ð¤·¤Þ¤¹¡£

gmax *Free*

gmax¤Ïdiscreet¤¬Ä󶡤¹¤ë¥Õ¥ê¡¼¤Î¹âÀ­Ç½¥â¥Ç¥ê¥ó¥°¥Ä¡¼¥ë¤Ç¤¹¡£¤â¤È¤â¤È3ds max¤È¤¤¤¦¥Ä¡¼¥ë¤¬ÊìÂΤȤʤäƤ¤¤Æ¡¢¤½¤Îµ¡Ç½¤ÈÊݸ·Á¼°¤òÉôʬŪ¤Ë¤·¤¿¤â¤Î¤¬gmax¤Ç¤¹¡£3ds max¤Ï3D¥â¥Ç¥ê¥ó¥°¥½¥Õ¥È¤ÎʬÌî¤Ç¤«¤Ê¤ê¤Î¥·¥§¥¢¤ò¸Ø¤Ã¤Æ¤ª¤ê¡¢¤½¤ÎÀ­Ç½¤Ï¾¤ÎÄÉ¿ï¤òµö¤µ¤Ê¤¤¤â¤Î¤À¤½¤¦¤Ç¤¹¡£ÊìÂΤ¬¾¦ÍѤǤ·¤«¤âºÇÂ祷¥§¥¢¤Î¤â¤Î¤À¤±¤¢¤Ã¤Æ¡¢gmax¤â¥Õ¥ê¡¼¥Ä¡¼¥ë¤ÎÃæ¤Ç¥â¥Ç¥ê¥ó¥°Ç½ÎϤϷ²¤òÈ´¤¤¤Æ¤¤¤Þ¤¹¡£¥ª¥¹¥¹¥á¤Ç¤¹¡£¤¿¤À¤·¡¢Êݸ¤Ç¤­¤ë·Á¼°¤¬¸Â¤é¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ºî¤Ã¤¿¤â¤Î¤ÎÌÜŪ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½ÐÍè¤Ê¤«¤Ã¤¿Ž¥Ž¥Ž¥¤Ê¤ó¤ÆÈᤷ¤¤¥ª¥Á¤¬ÂԤäƤ¤¤ë¤³¤È¤â¤¢¤ë¤Î¤ÇÍ×Ãí°Õ¤Ç¤¹¡£

Milkshape 3D *Share* $25 or EUR 25(¥æ¡¼¥í)

Milkshape 3D¤Ï¡¢¥²¡¼¥à¥â¥Ç¥é¡¼¤Î´Ö¤Ç¥ê¡¼¥º¥Ê¥Ö¥ë¤Ê¥â¥Ç¥ê¥ó¥°¥Ä¡¼¥ë¤È¤·¤ÆÈó¾ï¤ËÉáµÚ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤ÎÆÃħ¤Ï¡¢¸µ¡¹¥²¡¼¥à¤Î¥â¥Ç¥ëºî¤ê¤òÌÜŪ¤È¤·¤Æ³«È¯¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¿ô¿¤¯¤Î¥²¡¼¥à¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÂбþ¤·¤Æ¤¤¤ë¤³¤È¤Ç¤¹¡£¤â¤Á¤í¤óMD3¤â¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£»È¤¤¾¡¼ê¤È¤·¤Æ¤â¤Ê¤«¤Ê¤«Îɤ¤¤È»×¤¤¤Þ¤¹¡£°ì¥ö·î¤Î̵ÎÁ»îÍÑ´ü´Ö¤¬¤¢¤ë¤Î¤Ç¡¢¤½¤Î´Ö¤ËÍÑ»ö¤òºÑ¤Þ¤»¤Æ¤·¤Þ¤¨¤Ð»ö¼Â¾å¡¢¡Ö̵ÎÁ¡×¤Ç¤¹¡£

Metasequoia *Free* and *Share* \5000

¥²¡¼¥à¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤Metasequoia(¥á¥¿¥»¥³¥¤¥¢)¤ò´º¤¨¤Æ¾Ò²ð¤¹¤ëÍýͳ¤Ï¡¢¤³¤Î¥â¥Ç¥ê¥ó¥°¥½¥Õ¥È¤¬Èó¾ï¤Ëľ´¶Åª¤«¤Ä´Êñ¤ËÁàºî¤Ç¤­¤ë¤«¤é¤Ç¤¹¡£¤Þ¤¿ÆüËܸì¤Ç¤¢¤ë¡¢¤È¤¤¤¦ÅÀ¤â½é¿´¼Ô¤ÎÊý¤Ë¤Ï¸«Æ¨¤»¤Ê¤¤Í×ÁǤÀ¤È»×¤¤¤Þ¤¹¡£¤È¤Ë¤«¤¯¡¢Áàºî¤¬³Ú¤Ç¤¹¡£»ëÅÀ°ÜÆ°¡¢²óž¡¢¥º¡¼¥à¥¤¥ó¥¢¥¦¥È¡¢ÌÌŽ¤ê¡¢UV¤È¤¤¤Ã¤¿ËÜÍè¤Ê¤éÈѤ路¤¤ºî¶È¤¬´Êñ¤Ë¤Ç¤­¤Þ¤¹¡£¤¿¤À¤·Êݸ·Á¼°¤ÇMD3¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢°ìÅÙɸ½àŪ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤ÇÊݸ¤·¤Æ¤½¤ì¤ò¾¤Î¥½¥Õ¥È¤Ç³«¤¤¤ÆÊÑ´¹¤¹¤ëºî¶È¤¬É¬Íפˤʤê¤Þ¤¹¡£

Light Ray 3D *Share* EUR 70

Milkshape 3D¤Ï¡¢ºÇ¶á¿·¤¿¤Ê¥Ð¡¼¥¸¥ç¥ó¤Ø°Ü¹Ô¤¹¤ë¤¿¤á¤ËÂбþ¥Õ¥©¡¼¥Þ¥Ã¥È¹¹¿·ºî¶È¤¬ÂڤäƤ¤¤ë´¶¤¸¤¬¤·¤Þ¤¹¡£¤½¤³¤Ç¤³¤ÎLight Ray 3D¤¬¤Ê¤«¤Ê¤«¥ª¥¹¥¹¥á¤Ç¤¹¡£Quake¤Ë¸Â¤é¤ºCall Of Duty¤ä¤½¤Î¾ͭ̾¥²¡¼¥à¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÂбþ¤·¤Æ¤¤¤Ê¤¬¤é¡¢¤µ¤é¤Ë¥¢¥Ë¥á¡¼¥·¥ç¥óÊÔ½¸¤â½ÐÍè¤ë¥Õ¥ê¡¼¤Î¥½¥Õ¥È¤Ç¤¹¡£¥Õ¥©¡¼¥é¥à¤Î¤Û¤¦¤ÇET¤Î¥×¥ì¥¤¥ä¡¼¥â¥Ç¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤Ä¤¤¤Æ¤ÎÂбþ¤â¸¡Æ¤¤·¤Æ¤¤¤ë¤³¤È¤«¤é¡¢º£¸å¤ÎÆ°¤­¼¡Âè¤Ç¤Ï¥â¥Ç¥ê¥ó¥°¥Ä¡¼¥ë¤Î¥×¥é¥¤¥ª¥ê¥Æ¥£¤ò³ÍÆÀ¤¹¤ë²ÄǽÀ­¤â¤¢¤ê¤Þ¤¹¡£»ä¼«¿È¡¢¤³¤Î¥½¥Õ¥È¤ò»È¤Ã¤¿¤³¤È¤¬Ìµ¤¤¤Î¤ÇÁàºî´¶¤Ê¤É¤Ë¤Ä¤¤¤Æ¤Ï½Ò¤Ù¤é¤ì¤Þ¤»¤ó¤¬¡¢Áàºî²èÌ̤ʤɤò¸«¤ë¤Èɸ½àŪ¤Ê¥â¥Ç¥ê¥ó¥°¥Ä¡¼¥ë¤ÈÂ纹¤Ê¤¤¤è¤¦¤Ë»×¤¨¤Þ¤¹¡£ÆÃÉ®»ö¹à¤È¤·¤Æ¡¢¤½¤Î³ÈÄ¥À­¤Î¹â¤µ¤¬¤¢¤ê¤Þ¤¹¡£SDK¤Ê¤É¤Î¥Ä¡¼¥ë¤¬¸ø³«¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¥¢¥É¥ª¥ó¤ä¥¹¥¯¥ê¥×¥È¤Ê¤É¤¬Íưפ˺îÀ®¡¿ÍøÍѤǤ­¤Þ¤¹¡£

¤É¤Î¥Ä¡¼¥ë¤ò»È¤Ã¤¿¤È¤·¤Æ¤â¡¢ºÇ½ªÅª¤ËºîÀ®¤·¤¿3D¥â¥Ç¥ë¤òET¤¬°·¤¦¤³¤È¤Î½ÐÍè¤ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¢¤ëMD3¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤³¤ÎÊÑ´¹ºî¶È¤ÏÍøÍѤ·¤Æ¤¤¤ë¥½¥Õ¥È¤Ë¤è¤Ã¤Æ¤Þ¤Á¤Þ¤Á¤Ç¤¹¡£

¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ï¡¢¥Õ¥ê¡¼¤Ç¥²¡¼¥à¥â¥Ç¥ë¡¢ÆäËQuake3´ØÏ¢¤Î¤â¤Î¤òºîÀ®¤¹¤ë¤Î¤ËºÇŬ¤Êgmax¤ò»È¤Ã¤ÆÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤¹¡£

¤µ¤¢¡¢»Ï¤á¤è¤¦¡ª

¤µ¤¢¡¢¥â¥Ç¥ê¥ó¥°¤Î½àÈ÷¤ÏÀ°¤¤¤Þ¤·¤¿¡£¤Ç¤â¤½¤ÎÁ°¤ËÂç»ö¤Ê¤³¤È¤ò·è¤á¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£²¿¤òºî¤ë¤«¡©¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ËÜÍè¤Ê¤éÀè¤Ë¤½¤ì¤¬¤¢¤Ã¤Æ¡¢ºî¶È¤Ë°Ü¤ë¤Î¤Ç¤¹¤¬¡¢º£²ó¤Ï¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ç¤¹¤«¤éÌÜŪ¤È¼êÃʤ¬µÕ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£¥Æ¡¼¥ÞÀßÄê¤ÎÎɤ·°­¤·¤Ï¡¢ºîÉʤνÐÍè¤À¤±¤Ç¤Ê¤¯ºî¶ÈÃæ¤Î¼«Ê¬¤Î¥â¥Á¥Ù¡¼¥·¥ç¥ó°Ý»ý¤Ë¤âÂçÀڤʤâ¤Î¤Ç¤¹¡£

¤³¤ì¤Ï¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ê¤Î¤Ç¡¢´Êñ¤Ê¤â¤Î¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ÏäÏÊѤï¤ê¤Þ¤¹¤¬¡¢¥á¥Ç¥£¥Ã¥¯¤ÏÀï¾ì¤Ç½ý¤Ä¤¤¤¿Ãç´Ö¤ò½õ¤±¤ë¡¢´Ç¸îÉؤΤ褦¤Ê¡¢¤Ä¤Þ¤ê¤ÏÀïÆ®Éþ¤òÃ夿ŷ»È¤Î¤è¤¦¤Ê¸ºß¤Ç¤¹(°Âľ¤Ç¤¹¤«¡©)¡£¤È¤¤¤¦¤³¤È¤Ç¡¢º£²ó¤Ï¥á¥Ç¥£¥Ã¥¯¤òÅ·»ÈÍͤˤ·¤Æ¤·¤Þ¤¤¤Þ¤·¤ç¤¦¡£Å·»È¤È¤¤¤¨¤Ð²Ä°¦¤¤½÷¤Î»ÒŽ¥Ž¥Ž¥¡¢¤È¤¤¤¦¤Î¤ÏÆüËܤΥ¢¥Ë¥áʸ²½¤ËÆǤµ¤ì²á¤®¤Ç¤¹¡£Å·»È¤È¤¤¤¨¤Ð¡¢¥¨¥ó¥¸¥§¥ë¥Ï¥¤¥í¥¦¡¢¤½¤·¤ÆÍã¤Ç¤¹¡£¤½¤³¤Ç¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ç¤ÏºÇ½ªÅª¤ËAllies¤Î¥á¥Ç¥£¥Ã¥¯¤ËÅ·»È¤ÎÎؤȱ©¤ò¤¯¤Ã¤Ä¤±¤ë¤³¤È¤òÌÜɸ¤È¤·¤Þ¤¹¡£

ºî¤ë¤â¤Î¤¬·è¤Þ¤ì¤Ð¡¢¸å¤Ï¤½¤ì¤òºî¤Ã¤Æ¤¯¤Ã¤Ä¤±¤ë¤À¤±¤Ç¤¹¡£ËÜÅö¤Ë¤½¤¦¤Ê¤Î¤Ç¤¹¡£¼Â¤Ï²¿¤òºî¤ë¤«¤µ¤¨·è¤Þ¤Ã¤Æ¤µ¤¨¤¹¤ì¤Ð¸å¤Î¾ã³²¤Ïµ»½ÑŪ¤Ê¤â¤Î¤À¤±¤Ê¤Î¤Ç¡¢¤¢¤È¤Ï»þ´Ö¤µ¤¨¤«¤±¤ì¤Ð²¿¤È¤Ç¤â¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

Å·»È¤ÎÎؤòºî¤í¤¦

¤Ç¤Ï¤Ç¤ÏÁᮡ¢gmax¤òµ¯Æ°¤·¤Æ¤¯¤À¤µ¤¤¡£ÌÌÅݤʥ쥸¥¹¥È¥ì¡¼¥·¥ç¥ó¤Ê¤É¤ò½ª¤¨¤ë¤È¡¢»Íʬ³ä¤µ¤ì¤¿¥¦¥£¥ó¥É¥¦¤ä¤é¿§¡¹½Ð¤Æ¤­¤¿¤È»×¤¤¤Þ¤¹¡£¤Þ¤ººÇ½é¤ËÅ·»È¤ÎÎؤòºî¤ê¤Þ¤·¤ç¤¦¡£¤³¤ì¤Ï¤È¡¼¡¼¡¼¤Ã¤Æ¤â´Êñ¤Ç¤¹¡£¤Ê¤¼¡©¤È»×¤ï¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢gmax¤Ï¥É¡¼¥Ê¥Ä¾õ¤Î¥Ý¥ê¥´¥ó¤ò°ìÁàºî¤Çºî¤ì¤Þ¤¹¡£¤½¤ì¤ò¥¯¥ê¡¼¥à¿§¤ËÃ忧¤¹¤ì¤Ð¡¢¤Û¤éÅ·»È¤ÎÎؤνÐÍè¾å¤¬¤ê¡ª¤½¤ì¤Ç¤Ï¼ÂºÝ¤Îºî¶È¤Îή¤ì¤òÄɤäƤ¤¤­¤Þ¤·¤ç¤¦¡£

¤Þ¤º¤Ïµ¯Æ°¤·¤¿¾õÂÖ¤«¤é¡¢­¡¡¢­¢¤È¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥É¡¼¥Ê¥Ä¾õ¤Î¥Ý¥ê¥´¥ó¤òÀ¸À®¤¹¤ë¤¿¤á¤ÎÀßÄꥦ¥£¥ó¥É¥¦¤¬±¦²¼¤Ë½Ð¤Þ¤¹¡£¤³¤Î¾õÂ֤ˤʤë¤È¡¢Ãæ±û¤Îºî¶È¥¦¥¤¥ó¥É¥¦¤Ë¥Þ¥¦¥¹¤Ç¥É¥é¥Ã¥°¤¹¤ë¤È¥É¡¼¥Ê¥Ä¾õ¤Î¥Ý¥ê¥´¥ó¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤½¤ì¤Ç¤Ïºî¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£

­¡¤Î°ÌÃÖ¤«¤é­¢¤Î°ÌÃ֤ޤǺ¸¥É¥é¥Ã¥°¤·¤Þ¤¹¡£¤¹¤ë¤È¥É¡¼¥Ê¥Ä¤ÎÆâ·Â¤¬·èÄꤷ¤Þ¤¹¡£Â³¤¤¤Æ­£¤Î°ÌÃ֤Ǻ¸¥¯¥ê¥Ã¥¯¤¹¤ë¤È³°·Â¤¬·èÄꤵ¤ì¡¢¥É¡¼¥Ê¥Ä¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤½¤Î¥É¡¼¥Ê¥Ä¤Ï±¦²¼¤Î¥¦¥£¥ó¥É¥¦¤Ç³Îǧ¤Ç¤­¤Þ¤¹¡£¤³¤³¤Ç³Æ¥¦¥£¥ó¥É¥¦¤ÎÀâÌÀ¤ò¤·¤Æ¤ª¤¯¤È¡¢º¸¾å¤ÏTop¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢¤³¤Î¥¦¥£¥ó¥É¥¦¤Ç¤Ï¥â¥Ç¥ë¤ò¿¿¾å¤«¤é¸«¤¿¤â¤Î¤Ç¤¹¡£±¦¾å¤Èº¸²¼¤Ï¤½¤ì¤¾¤ìÀµÌÌ¡¢º¸Â¦Ì̤«¤é¸«¤¿¤â¤Î¤Ç¤¹¡£±¦²¼¤Ï¥Ñ¡¼¥¹¥Ú¥¯¥Æ¥£¥Ö¡¢¤Ä¤Þ¤êÄ»â×Ū¤Ë¤ß¤¿¤â¤Î¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£Ä»â×Ū¤Ëɽ¼¨¤µ¤ì¤ë¤È¡¢¸½¼Â¤Ë¤¢¤ë±ó¶áË¡¤¬È¿±Ç¤µ¤ì¤ë¤¿¤á¡¢¼ÂºÝ¤Ë¸«¤¿´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£

ºî¤Ã¤¿¥É¡¼¥Ê¥Ä¤Î·Á¾õ¤¬¤¢¤Ê¤¿¤Î´¶À­¤Ë¹ç¤ï¤Ê¤¤¾ì¹ç¡¢¤³¤Î¥É¡¼¥Ê¥Ä¤Ïºï½ü¤Þ¤¿¤Ï½¤Àµ¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ºï½ü¤Ï´Êñ¡¢¤³¤Î¥É¡¼¥Ê¥Ä¤¬ÁªÂò¤µ¤ì¤¿¾õÂÖ¤ÇDel¥­¡¼¤Ç¤¹¡£½¤Àµ¤¹¤ë¤Ë¤Ï¡¢ÀèÄø¥É¡¼¥Ê¥Ä¤òºî¤ì¤ë¾õÂ֤ˤ·¤¿²èÌ̱¦Éô¤Ë¤¢¤ë¤È¤³¤í¤ò¤¤¤¸¤ê¤Þ¤¹¡£

¤³¤³¤Î¹àÌܤò¤¤¤¸¤ë¤È¡¢Â礭¤µ°Ê³°¤Ë¤â¿§¡¹¤ÈÊѹ¹¤Ç¤­¤Þ¤¹¡£¼ÂºÝ¼«Ê¬¤Ç¿§¡¹Êѹ¹¤·¤Æ¤ß¤Æ¡¢²¿¤ò¤É¤¦¤¹¤ë¤È¤É¤¦¤Ê¤ë¤«¤ò±¦²¼¤Î¥¦¥£¥ó¥É¥¦¤Ê¤É¸«¤Ê¤¬¤é³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£¥¢¥ó¥É¥¥¤ÏCtrl+Z¤Ç¤¹¡£¼ý½¦¤Ä¤«¤Ê¤¯¤Ê¤Ã¤¿¤éDel¤Çºï½ü¤·¤Æ¿·¤¿¤Ëºî¤êľ¤·¤Þ¤·¤ç¤¦¡£

¤µ¤Æ¡¢Ëþ­¤Î¹Ô¤¯¥É¡¼¥Ê¥Ä¡¢¤â¤È¤¤Å·»È¤ÎÎؤηÁ¾õ¤Ë¤Ê¤ê¤Þ¤·¤¿¤«¡©¼¡¤Ë¡¢¤³¤Î¥É¡¼¥Ê¥Ä¤Ë¿§¤ò¤Ä¤±¤ÆÅ·»È¤ÎÎؤ餷¤¯¤·¤Þ¤·¤ç¤¦¡£¤³¤Î¥Ý¥ê¥´¥ó¤Ë¿§¤äÌÏÍͤò¤Ä¤±¤ëºî¶È¤ò¥¹¥­¥Ë¥ó¥°¤È¤¤¤¤¤Þ¤¹¡£

Å·»È¤ÎÎؤϱ߷Á·Ö¸÷Åô¤Î¤è¤¦¤Ê¤â¤Î¤Ã¤Ý¤¤¤Î¤Ç¡¢º£²ó¤ÏÃÈ¿§¤Î¥Ù¥¿Åɤê²èÁü¤òÍÑ°Õ¤·¤Þ¤·¤¿¡£³§¤µ¤ó¤Ï³Æ¼«¹¥¤­¤Ê¿§¡¿ÌÏÍͤβèÁü¤òÍÑ°Õ¤·¤Æ¤â¤é¤Ã¤Æ¹½¤¤¤Þ¤»¤ó¤¬¡¢Ãí°ÕÅÀ¤È¤·¤Æ²èÁü¤Î½Ä²£¥µ¥¤¥º¤Ï64/128¡¿256¡¿512¥Ô¥¯¥»¥ë¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤Ç¤Ï¤³¤Î²èÁü¤ò¥É¡¼¥Ê¥Ä¤ËŽ¤êÉÕ¤±¤Þ¤·¤ç¤¦¡£¤È¡¢¤½¤ÎÁ°¤Ëºî¶È¥Õ¥©¥ë¥À¤Ç¤âºî¤Ã¤Æ¤½¤ÎÃæ¤Ë¤³¤Î¥É¡¼¥Ê¥Ä¤òÊݸ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£Êݸ¤ÏCtrl-S¤Ç¤¹¡£º£¤Ï¤Þ¤Àgmax·Á¼°Êݸ¤Ç·ë¹½¤Ç¤¹¡£

¾å¿Þ¤Î¥Ü¥¿¥ó¤ò²¡¤¹¤È¡¢¥Ý¥ê¥´¥ó¤ËŽ¤êÉÕ¤±¤ë¡Ö¥Þ¥Æ¥ê¥¢¥ë¡×¤òÊÔ½¸¤¹¤ë¥¦¥£¥ó¥É¥¦¤¬½Ð¤Æ¤­¤Þ¤¹¡£¥Þ¥Æ¥ê¥¢¥ë¤È¤Ï¡¢¤Ä¤Þ¤êÌÏÍͤΤ³¤È¤Ç¤¹¡£¶ñÂÎŪ¤ÊÏäÏÈò¤±¤Þ¤¹¤¬¡¢¤È¤Æ¤â±ü¤Î¿¼¤¤¤â¤Î¤Ç¤¹¡£¤³¤³¤Ç¤Ï¤³¤ì¤òñ¤ËÌÏÍͤòÊÔ½¸¤¹¤ë¤â¤Î¡¢¤È¤·¤Æ¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£

¤È¤ê¤¢¤¨¤º½Ð¤Æ¤­¤¿¥¦¥£¥ó¥É¥¦¤ÎNew¥Ü¥¿¥ó¤ò²¡¤·¤Æ¡¢½Ð¤Æ¤­¤¿¥¦¥£¥ó¥É¥¦¤ÇStandard¤òÁªÂò¤·¤ÆOK¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£

¤³¤³¤Ç¤Ï³Æ¹àÌܤˤĤ¤¤Æ¿¼¤¯¹Í¤¨¤º¤Ë¡¢Blinn¥Ñ¥é¥á¡¼¥¿¤ÎÃæ¤ÎDiffuse¹àÌܤα¦¤Î¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¤¹¤ë¤È¤Þ¤¿¥¦¥£¥ó¥É¥¦¤¬½Ð¤Æ¤­¤Þ¤¹¤¬¡¢¤³¤Î¥¦¥£¥ó¥É¥¦¤Ç¼ÂºÝ¤ËŽ¤êÉÕ¤±¤ë²èÁü¤òÁª¤Ó¤Þ¤¹¡£½Ð¤Æ¤­¤¿¥¦¥£¥ó¥É¥¦¤ÎBitmap¤ò¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥Õ¥¡¥¤¥ë¤òÁªÂò¤¹¤ë¤è¤¦¤Ê¥À¥¤¥¢¥í¥°¤¬½Ð¤Æ¤¯¤ë¤Î¤Ç¡¢¤¢¤Ê¤¿¤¬ÍÑ°Õ¤·¤¿Å·»È¤ÎÎزèÁü¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£

»ØÄ꤬½ª¤ï¤ë¤È¡¢º¸¾å¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ëµå¤Ë¿§¤äÌÏÍͤ¬¤Ä¤¤¤¿¤È»×¤¤¤Þ¤¹¡£¤³¤ì¤ò³Îǧ¤·¤Æ¡¢­¡¡¢­¢¤Î½ã¤Ç¥¯¥ê¥Ã¥¯¤·¤Æ¡¢°ìö¤³¤Î¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤Æ¤¯¤À¤µ¤¤¡£

¡¦¡¦¡¦¡£¤Þ¤¡Ìܰ¤Ȥ·¤Æ¤¤¤¿¤Î¤¬±ß·Á·Ö¸÷Åô¤Ç¤¹¤«¤é¡¢·ë²ÌŪ¤Ë·Ö¸÷Åô¤Ë¤Ê¤ë¤Î¤Ï»ÅÊý¤Î̵¤¤¤³¤È¤Ç¤¹¤Í¡£

¤½¤ì¤Ç¤Ïºî¤Ã¤¿Å·»È¤ÎÎؤòET¤Ç»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¡¢Â礭¤µ¤ä°ÌÃ֤ν¤Àµ¡¢MD3¤Ø¤ÎÊÑ´¹ºî¶È¤Ë°Ü¤ê¤Þ¤¹¡£¤³¤Î¤¢¤¿¤ê¤Ï¥²¡¼¥à¥â¥Ç¥ëºîÀ®¸ÇÍ­¤Îºî¶È¤Ç¡¢¥â¥Ç¥ê¥ó¥°¤ò¤·¤Æ¤¤¤ë¿Í¤¬É¬¤º¤·¤âÃΤäƤ¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç0¤«¤é³Ø½¬¤¹¤ë¤Î¤¬Æñ¤·¤¤Éôʬ¤Ç¤â¤¢¤ê¤Þ¤¹¡£ °ìögmax¤Ç¤Îºî¶È¤òCtrl-S¤ÇÊݸ¤·¤Æ¡¢ÊĤ¸¤Þ¤¹¡£¤È¤¤¤¦¤Î¤â¡¢MD3¤ò°·¤¦¤¿¤á¤Ë¤Ïgmax¤ËÄɲäΥ¹¥¯¥ê¥×¥È¤ä¥¢¥É¥ª¥ó¤¬É¬ÍפÀ¤«¤é¤Ç¤¹¡£http://mojo.gmaxsupport.com/¤«¤é¡¢MaxScripts¤ÎQuake3 MD3 Importer¤ÈPlugins¤ÎEnhanced MD3 Exporter¤ò¥À¥¦¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤ì¤¾¤ì²òÅष¤Æ½Ð¤Æ¤­¤¿¥Õ¥¡¥¤¥ë¤ò¡¢gmax¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥Õ¥©¥ë¥ÀÃæ¤Îscripts/startup¡¢plugins¤ËÆþ¤ì¤Æ¤¯¤À¤µ¤¤¡£½ª¤ï¤Ã¤¿¤é¡¢gmax¤òºÆµ¯Æ°¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤·¤ÆÀèÄøÊݸ¤·¤¿¥Õ¥¡¥¤¥ë¤ò³«¤­¤Ê¤ª¤·¤Æ¤¯¤À¤µ¤¤¡£

2004ǯ7·î2Æü ̤´°À®

Åê¹Æ¼Ô ikanatto : 07:02 PM | ¥³¥á¥ó¥È (10)

¥À¥¤¥Ê¥Þ¥¤¥È¤ÇÇ˲õ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È

Dynamite Object

ËÝÌõ¸µ¡§http://etmapping.andityler.com/dynamiteobject.php

1. ¤ª¹¥¤ß¤Î¥µ¥¤¥º¤Î¥Ö¥é¥·¤òºî¤Ã¤Æ¤¯¤À¤µ¤¤¡£


2. ºî¤Ã¤¿¥Ö¥é¥·¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¾õÂ֤ǡ¢2Dɽ¼¨¥¦¥£¥ó¥É¥¦¾å¤Î¤É¤ì¤Ç¤â¤¤¤¤¤Î¤Ç±¦¥¯¥ê¥Ã¥¯¤ò²¡¤·¡¢func/func_explosive¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤¡£


3.¥Ö¥é¥·¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¾õÂ֤ǡ¢N¤ò²¡¤·¤Æentity¥¦¥£¥ó¥É¥¦¤òɽ¼¨¤µ¤»¤Æ¤¯¤À¤µ¤¤¡£É½¼¨¤µ¤ì¤¿¥¦¥£¥ó¥É¥¦¤Ç¤Ï¡¢¾åÉô¤Çfunc_explosive¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¾õÂ֤ǡ¢Ãæ±ûÉôʬ¤Ë¤Ï¥­¡¼¤È¤½¤ÎÃͤ¬É½¼¨¤µ¤ì¤Æ¤ª¤ê¡¢²¼Éô¤Ç¤ÏÊѹ¹¤·¤¿¤¤Éôʬ¤ÈÆþÎϤ¹¤ë¤Ù¤­ÃͤΥ¬¥¤¥À¥ó¥¹¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£¥­¡¼ÆþÎÏÍó¤Ë'scriptname'¤È¤¤¤ì¤Æ¡¢Tab¤ò²¡¤·¤ÆÃÍÆþÎÏÍó¤Ë°Ü¤ê'dynamitetest'¤ÈÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤½¤¦¤·¤¿¤é¡¢Enter¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ç¡¢¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¹¥¯¥ê¥×¥È¤ò»È¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£dynamitetest°Ê³°¤Î̾Á°¤Ç¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢Êѹ¹¤·¤¿¤é¸å¤Û¤Éºî¤ë³ºÅö¤¹¤ë¥Õ¥¡¥¤¥ë̾¤âÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¤Í¡£


***¥ª¥×¥·¥ç¥ó***
4. ¥­¡¼¤Ë'mass'¡¢ÃͤË'400'¤òÆþ¤ì¤Æ¡¢Enter¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ë¤è¤ê¡¢¤³¤ì¤¬ÇúÇˤµ¤ì¤¿»þ¤Ë¤è¤ê¿¤¯¤ÎÇËÊÒ¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£¤Þ¤¿use shader¤òº¸¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢ÇËÊҤˤâ¥Æ¥¯¥¹¥Á¥ã¤È¥·¥§¡¼¥À¡¼¤¬Å¬±þ¤µ¤ì¤Þ¤¹¡£Â¾¤Ë¤â¿§¡¹¤Ê¥­¡¼¤ÈÃͤ¬¤¢¤ë¤Î¤Ç¡¢»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¤Í¡£


5. Esc¤ò²¡¤·¤ÆÁªÂò¾õÂÖ¤ò²ò½ü¤·¤Þ¤¹¡£Ê̤Υ֥饷¤ò¡¢Àè¤Û¤Éºî¤Ã¤¿¥Ö¥é¥·¤òʤ¤¦¤è¤¦¤Ëºî¤Ã¤Æ¤¯¤À¤µ¤¤¡£¥·¥§¡¼¥À¡¼¤Ë¡¢'common/trigger'¤ò»È¤¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤Ã¤Æ¥²¡¼¥àÃæ¤Ç¤Ï¡¢¤³¤Î¥Ö¥é¥·¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥È¥ê¥¬¡¼¥Ö¥é¥·¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤ËÇúÇ˲Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤¬¶á¤¯¤Ë¤¢¤ê¤Þ¤¹¤è¤ÈÃΤ餻¤ë¤Î¤È¡¢¤³¤Î¥Ö¥é¥·Ãæ¤Ë¥À¥¤¥Ê¥Þ¥¤¥È¤òÀßÃÖ¤·¤Ê¤µ¤¤¡¢¤È¤¤¤¦ÈϰϤòÄê¤á¤Þ¤¹¡£


6. ¥È¥ê¥¬¡¼¥Ö¥é¥·¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¾õÂ֤ǡ¢2D¥¦¥£¥ó¥É¥¦¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤ò²¡¤·¡¢'trigger/trigger_objective_info'¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤¡£


7. ¥È¥ê¥¬¡¼¥Ö¥é¥·¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¾õÂ֤ǡ¢N¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£Entity¥¦¥£¥ó¥É¥¦¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¥­¡¼ÆþÎÏÍó¤Ë¡¢'track'¤ÈÆþÎϤ·¡¢ÃÍÆþÎÏÍó¤Ë'the Dynamite Tes'¤ÈÆþÎϤ·¡¢Enter¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£º£ÆþÎϤ·¤¿¤â¤Î¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤¬¥È¥ê¥¬¥Ö¥é¥·¤Ë¿¨¤ì¤ë¤Èɽ¼¨¤µ¤ì¤ë¤â¤Î¤Ç¤¹¤Î¤Ç¡¢¼«Ê¬¤Î˾¤à¤â¤Î¤òÀßÄꤷ¤Þ¤·¤ç¤¦¡£¼ÂºÝ¤Ë¤Ï¡ÖYou are near ¡Á¡×¤Èɽ¼¨¤µ¤ì¤Þ¤¹¡£
¤µ¤Æ¡¢¤Þ¤À¤Þ¤ÀÆþÎϤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¥­¡¼¤ÈÃͤ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤º¡¢¥­¡¼¤Ë'shortname'¡¢ÃͤË'Dynamite Tes'¤òÃͤËÆþÎϤ·¤ÆEnter¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ï¡¢¥³¥Þ¥ó¥É¥Þ¥Ã¥×¾å¤Ç¥×¥ì¥¤¥ä¡¼¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎÙ¤Ëɽ¼¨¤µ¤ì¤ë¤â¤Î¤Ç¤¹(¤Á¤ç¤Ã¤È¤è¤¯¤ï¤«¤ó¤Ê¤¤¤Ç¤¹¡¢¤´¤á¤ó¤Ê¤µ¤¤ by ika)¡£¼¡¤Ë¡¢¥­¡¼¤Ë'objflag'¡¢ÃͤË'4'¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤Ï¡¢¥³¥Þ¥ó¥É¥Þ¥Ã¥×¾å¤Ç¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ì½ê¤Ë¥À¥¤¥Ê¥Þ¥¤¥È¤Î¥¢¥¤¥³¥ó¤òɽ¼¨¤µ¤»¡¢¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬¥À¥¤¥Ê¥Þ¥¤¥È¤Ç¤Î¤ßÇ˲õ¤Ç¤­¤ë¤È¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£ºÇ¸å¤Ë¡¢¤É¤Á¤é¤Î¥Á¡¼¥à¤¬¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë¤Î¤«¤È¤¤¤¦¤³¤È¤òÀßÄꤷ¤Þ¤¹¡£Axis_objective¤òº¸¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÏAxis¤Îʪ¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¡¢Allied¤¬¤³¤ì¤òÇúÇˤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£Allied_objective¤òÁª¤Ö¤È¡¢µÕ¤Ë¤Ê¤ê¤Þ¤¹¡£
ikanattoÊä­¡§objflag¤Ï1¡Á4¤È¤¢¤ê¡¢4¤Ï´û¤ËÀâÌÀ¤·¤¿¤è¤¦¤Ë¥À¥¤¥Ê¥Þ¥¤¥È¤Ç¤Î¤ßÇ˲õ²Äǽ¤Ç¤¢¤ë¤³¤È¤òɽ¤·¡¢1¤ÏÁ´¤Æ¤ÎÉð´ï¤Ç¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì(Áë¤Ê¤É¤ËÀßÄê)¡¢2¤ÏÇúȯʪ¤Ê¤éÁ´¤Æ¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì(Àï¼Ö¤Ê¤É)¡¢3¤Ï¥À¥¤¥Ê¥Þ¥¤¥È¤«Co¤Î¥ê¥â¡¼¥È¤ÇÇ˲õ²Äǽ¤È¤¤¤¦¤³¤È¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£1¤È2¤Ë¤ÏÊ̤˥ª¥Ö¥¸¥§¥¯¥È¤ÎÇ˲õ¤µ¤ì¤ë¤Þ¤Ç¤ËÍ¿¤¨¤ë¥À¥á¡¼¥¸¤òÀßÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¤¬¡¢¾Ü¤·¤¯¤Ï¾¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¤¿¤Ö¤ó¤½¤Î¤¦¤ÁÏÂÌõ¤·¤Þ¤¹¡£¤¿¤Ö¤ó¡£


8. ¼¡¤Ë¡¢¥È¥ê¥¬¡¼¥Ö¥é¥·¤òÁªÂò¤·¡¢¤½¤Î¸åÇ˲õ¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Þ¤¹¡£¤³¤Î½ç¤É¤ª¤ê¤ËÁªÂò¤·¤¿¤é¡¢Ctrl+K¤ò²¡¤·¤Æ¤³¤ÎÆó¤Ä¤ò¥ê¥ó¥¯¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤Ã¤Æ¡¢Æó¤Ä¤Ë'targetname'¤È¥é¥ó¥À¥à¤Ê¤â¤Î¤¬¥­¡¼¤ÈÃͤȤ·¤ÆÀßÄꤵ¤ì¤Þ¤¹¡£¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë´Ö¤Ê¤é¡¢¤¤¤Ä¤Ç¤â¤³¤ÎÆó¤Ä¤ËƱ¤¸¥­¡¼¤ÈÃͤ¬ÄɲäǤ­¤Þ¤¹¡£

9. ¤¤¤è¤¤¤è¼ÂºÝ¤Ë¥À¥¤¥Ê¥Þ¥¤¥ÈÇúÇˤνèÍý¤ò¤¹¤ë¥¹¥¯¥ê¥×¥È¤òºî¤ê¤Þ¤¹¡£¤¬¡¢¤½¤ÎÁ°¤Ë¡¢¤³¤ì¤«¤éºî¤ë¥¹¥¯¥ê¥×¥È¤¬»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤ÎEntity¤òºî¤é¤Í¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Esc¤ò²¡¤·¤ÆÁªÂò¾õÂÖ¤ò²ò½ü¤·¡¢2D²èÌ̤DZ¦¥¯¥ê¥Ã¥¯¤ò²¡¤·¤Æ¡¢script/script_multiplayer¤òÁª¤Ó¤Þ¤¹¡£¤³¤ì¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¾õÂÖ¤ÇN¤ò²¡¤·¡¢¥­¡¼¤Ë'scriptname'¡¢ÃͤË'game_manager'¤ÈÆþÎϤ·¤ÆEnter¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£ºÆ¤ÓEsc¤ò²¡¤·¤ÆÈóÁªÂò¾õÂ֤ˤ·¤Þ¤¹¡£¤³¤ì¤Ç¥¹¥¯¥ê¥×¥È¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£(¤â¤·¡¢´û¤Ë¤³¤ÎEntity¤òºî¤Ã¤Æ¤¤¤ë¤Ê¤é²þ¤á¤Æºî¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£)


10. Radiant¤ò»È¤Ã¤Æ¤ÎÀßÄê¤Ï¤³¤ì¤Ç½ª¤ï¤ê¤Ç¤¹¡£¤Ç¤Ï¥¹¥¯¥ê¥×¥È¥Õ¥¡¥¤¥ë¤òºî¤ê¤Þ¤·¤ç¤¦¡£(¤â¤·´û¤Ë¥¹¥¯¥ê¥×¥È¥Õ¥¡¥¤¥ë¤òºî¤Ã¤Æ¤¤¤ë¤Î¤Ê¤é¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤Ë²¼¤Î¤â¤Î¤òÄɲ乤ì¤ÐOK¤Ç¤¹)¡£¿·µ¬¤Î¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤òºî¤ê¡¢²¼¤Î¤â¤Î¤òÆþÎϤ·¤Æ¤¢¤Ê¤¿¤Î¥Þ¥Ã¥×¤¬Êݸ¤·¤Æ¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢'¤¢¤Ê¤¿¤Îºî¤Ã¤Æ¤¤¤ë¥Þ¥Ã¥×¤Î̾Á°.script'¤ÈÊݸ¤·¤Æ¤¯¤À¤µ¤¤¡£¥¹¥¯¥ê¥×¥ÈÃæ¤Ë¤¢¤ëwm_announce°Ê²¼¤Î¥À¥Ö¥ë¥¯¥ª¡¼¥Æ¡¼¥·¥ç¥ó¤Ç°Ï¤Þ¤ì¤¿Éôʬ¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬¥À¥¤¥Ê¥Þ¥¤¥È¤ÇÇ˲õ¤µ¤ì¤¿»þ¤Ë¥×¥ì¥¤¥ä¡¼¤Ëɽ¼¨¤µ¤ì¤ë¥á¥Ã¥»¡¼¥¸¤Ç¤¹¤Î¤Ç¡¢¤ª¹¥¤­¤Ê¤è¤¦¤ËÊѤ¨¤Æ¤¯¤À¤µ¤¤¡£

game_manager
{
   spawn
   {
   }
}

dynamitetest
{
   spawn
   {
      wait 200
      constructible_class 3
   }
   death
   {
      wm_announce "Allies have blown up the Dynamite Test!"
   }
}


¤´¶ìÏ«ÍͤǤ¹¡£¤³¤ì¤ÇÁ´¤Æ¤ÎÀßÄ꤬´°Î»¤·¤Þ¤·¤¿¡£¥²¡¼¥àÃæ¤Ç¤Ï¡¢Ç˲õÌÜɸ¤Ë¶á¤Å¤±¤Ð¥À¥¤¥Ê¥Þ¥¤¥È¤Î¥¢¥¤¥³¥ó¤¬É½¼¨¤µ¤ì¤ë¤Ï¤º¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢¤³¤ì¤¬¥À¥¤¥Ê¥Þ¥¤¥È¤ÇÇ˲õ¤Ç¤­¤ë¤È¤¤¤¦¤³¤È¤òɽ¤·¤Æ¤¤¤Þ¤¹¡ª

Åê¹Æ¼Ô ikanatto : 06:46 PM

MG42¤Îºî¤êÊý

ËÝÌõ¸µ¡§http://www.splashdamage.com/forums/viewtopic.php?t=2658

À½ºî¥µ¥¤¥É¤Î¿Í¤Îȯ¸À¤ò¸ÂÄêŪ¤ËÏÂÌõ¡£

ikaÃí¡§
entity¤òºî¤ëºÝ¤Ë¤¯¤É¤¯¸¶ÅÀ¥Ö¥é¥·¤ò´Þ¤à¤è¤¦¤Ë¤È¤¤¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ET¤Ë¤Ï´ñ̯¤Ê¥Ð¥°¤È
¤¤¤¦¤«»ÅÍͤΤ褦¤Ê¤â¤Î¤¬¤¢¤ê¡¢¸¶ÅÀ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È°ìÏ¢¤Î¥¹¥¯¥ê¥×¥È¤Î½èÍý¤¬¤¦
¤Þ¤¯¤¤¤«¤Ê¤¤¤½¤¦¤Ç¤¹¡£¤Ç¤¹¤Î¤Ç¡¢ñÙ¤µ¤ì¤¿¤È»×¤Ã¤ÆÀßÄꤷ¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£
¤Þ¤¿¡¢¤³¤³¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤ë¥­¡¼¤ÈÃͤˤĤ¤¤Æ¤Ç¤¹¤¬¡¢¤³¤ì¤é¤Î¿ôÃͤϼ«Ê¬¤¬ÀßÃÖ¤·¤è¤¦
¤È¤·¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤è¤Ã¤ÆÊѤï¤ê¤¦¤ë¤Î¤ÇÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

°Ê²¼ËÜʸ¡§

A. Radiant¤Ç¤¹¤ë¤³¤È¡£

1. misc_gamemodel¤ÎEntity¤òºî¤ë(¥¤¥ó¥Ý¡¼¥È¤·¤í¤È¤¤¤¦¤³¤È¤Ç¤¹¤Ê)¡£¤³¤ì¤¬ºî¶ÈÈ¢(¹©
»ö¤Î¤È¤­¤Ë¥Ú¥ó¥Á¤Ç¤Ä¤Í¤ëÂоÝ)¤Ë¤Ê¤ë¡£ºî¤Ã¤¿¤é°Ê²¼¤Î¥­¡¼¤òÆþÎÏ¡£

classname, misc_gamemodel
skin, models/mapobjects/cmarker/allied_crates.skin
model, models/mapobjects/cmarker/cmarker_crates.md3
targetname, construction_materials

2. ¼¡¤Ë¡¢È¢¤Î¤½¤Ð¤ËΩ¤Ä¤É¤Á¤é¤Î¥Á¡¼¥à¤¬·úÀߤǤ­¤ë¤Î¤«¤òɽ¤¹´ú¤È¤Ê¤ëEntity¤òºî¤ë¡£
¤½¤ì¤Ë¡¢°Ê²¼¤Î¥­¡¼¤òÆþÎÏ¡£

classname, misc_gamemodel
skin, models/mapobjects/cmarker/allied_cflag.skin
model, models/mapobjects/cmarker/cmarker_flag.md3
targetname, construction_materials
angle, 180 (Facing direction)
modescale, 0.4
spawnflags, 2 (Animated)
frames, 190 (Total frames)

3. ·úÀßÈ¢¤È´ú¤Ê¤É¤Î¥»¥Ã¥È¤ò°Ï¤à¡¢¥¯¥ê¥Ã¥Ô¥ó¥°(¤½¤Îentity¤Ø¤Î°ÜÆ°¤òÀ©¸Â)¥Ö¥é¥·¤ò
ºî¤ë¡£ºî¤Ã¤¿¤é¡¢¤½¤ì¤é¤òscript_mover entity¤È¤¹¤ë¡£¤½¤ÎºÝ¤Ë¡¢¸¶ÅÀ¥Ö¥é¥·¤ò´Þ¤à¤³
¤È¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¡£Á´¤Æ¤Îscript_mover entity¤Ï¡¢¤½¤ì¤¬»È¤ï¤ì¤ë¤«¤É¤¦¤«¤Ë´Ø·¸¤Ê
¤¯scriptname¤Î¥­¡¼¤¬É¬ÍפǤ¢¤ë¡£

classname, script_mover
targetname, construction_materials
scriptname, construction_materials
spawnflags, 2 (This makes the script_mover solid)

4. ·úÀßÈ¢¤Î¤Þ¤ï¤ê¤ËTrigger_objective_info¤Î¥Ö¥é¥·¤òºî¤ë¡£¤³¤ì¤¬¼ÂºÝ¤Ë¥¨¥ó¥¸¥Ë¥¢
¤¬ºî¶È¤ò¹Ô¤Ê¤¨¤ëÈϰϤȤʤ롣¸¶ÅÀ¥Ö¥é¥·¤ò¤ò´Þ¤à¤³¤È¤ò˺¤ì¤º¤Ë¡£

classname, trigger_objective_info
targetname, construction_toi
scriptname, construction_toi
target, construction_target (Points to the func_constructible)
shortname, Construction MG (Command map name)
track, the Construction MG
spawnflags, 1 (This is constructible by Allied)

MG42 Entity¤ò˾¤à¾ì½ê¤Ëºî¤ë¡£

classname, misc_mg42
targetname, construction_mg42 (Needs to be different because of the repairmg42 c
ommand)
track, construction_track (This links all the extra stuff together)
accuracy, 0.5
angle, 90

6. MG42¤ò°Ï¤à¤è¤¦¤Ë¡¢2¤Ä¤ÎÅÚǹ¥â¥Ç¥ë¤òºî¤ë¡£

classname, misc_gamemodel
targetname, construction_extra
track, construction_track (This links all the extra stuff together)
model, models/mapobjects/miltary_trim/sandbag1_45s.md3
angle, 215

classname, misc_gamemodel
targetname, construction_extra
track, construction_track (This links all the extra stuff together)
model, models/mapobjects/miltary_trim/sandbag1_45s.md3
angle, 135

7. ºÇ¸å¤Ë¡¢func_constructible Entity¤òºî¤ë¡£¤³¤ì¤ÏÂçÄñÅÚǹ¤äMG42¤ÎÁ°¤¢¤¿¤ê¤Ëºî¤ê¡¢
¥×¥ì¥¤¥ä¡¼¤ò¥¯¥ê¥Ã¥Ô¥ó¥°¤¹¤ë¤Î¤Ë»È¤¦¡£¸¶ÅÀ¥Ö¥é¥·¤âºî¤ë¤Î¤ò˺¤ì¤º¤Ë¡£

classname, func_constructible
targetname, construction_target
track, construction_track (This links all the extra stuff together)
scriptname, construction_script (The main script routine)
spawnflags, 8 (Allied construction)

³µÍס§

func_constructble¡¢ÅÚǹ¡¢MG42¤ÏƱ¤¸track key¤ò»ý¤Ä¤¿¤á¡¢·úÀߥ¹¥¯¥ê¥×¥È¤Î½èÍý¤ÎºÝ
¤Ë¤³¤ì¤é¤¬°ì¤Ä¤Î¤â¤Î¤È¤·¤Æǧ¼±¤µ¤ì¤Æ¡¢·úÀß´°Î»¤ÎºÝ¤Ë¤Ï°ìÅ٤˽и½¤·¡¢Ç˲õ¤ÎºÝ¤Ë¤Ï
°ìÅ٤˾䨤롣

MG42 Entity¤Ï°ã¤¦targetname¤¬É¬Íפˤʤ롣¤È¤¤¤¦¤Î¤â¡¢MG42¤ò½¤Íý¤¹¤ë¥³¥Þ¥ó¥É¤Ë¤Ï¡¢
¤½¤ÎEntity¤òľÀÜ»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤é¤À¡£¤³¤Î¥³¥Þ¥ó¥É¤¬¤Ê¤¤¤È¡¢MG42¤Ï²õ¤ì¤Ê
¤¯¤Ê¤ë¡£

·úÀßÈ¢¡¢´ú¡¢script_mover¥¯¥ê¥Ã¥Ô¥ó¥°¥Ö¥é¥·¤Ï¡¢¤¹¤Ù¤ÆƱ¤¸targetname¤Ç¤¢¤ëconstruc
tion_materials¤È¤Ê¤Ã¤Æ¤¤¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¥¹¥¯¥ê¥×¥È¤ÏÂоݤ¬construction_materials
¤È¤µ¤ì¤¿»þ¤Ë¤Ï¡¢¤³¤ì¤éÁ´¤Æ¤ò»²¾È¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£

ºÇ¸å¤Ë¡¢Trigger_objective_info Entity¤Ïfunc_constructible¤Ë¥ê¥ó¥¯¤µ¤ì¤ë¡£

¥¹¥¯¥ê¥×¥È¡§

Code:
construction_script
{
spawn
{
wait 200
constructible_class 2
trigger self startup
}

buildstart final
{
}

built final
{
setstate construction_extra default
setstate construction_mg42 default
setstate construction_materials invisible

// Some kind of UI pop-up to alert players
wm_announce "Allied team has built the construction!"
}

decayed final
{
trigger self startup
}

death
{
trigger self startup
// Some kind of UI pop-up to alert players
wm_announce "Axis team has destroyed the construction!"
}

trigger startup
{
setstate construction_extra invisible
setstate construction_mg42 invisible
setstate construction_materials default
repairmg42 construction_mg42
}
}


The code is an alternative way again of creating single staged constructions but
instead of duplicating the same commands over and over again in each of the dif
ferent functions. I use a single trigger function at the bottom of the routine w
hich does the same stuff.

(¡ªÌõÉÔÌÀÎÆ¡§¤³¤Î¥³¡¼¥É¤Ï¡¢°Û¤Ê¤ë¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤´¤È¤Ë²¿Å٤ⲿÅÙ¤âƱ¤¸¥³¥Þ¥ó¥É¤ò
¤»¤º¤Ë°ìÃʳ¬·ú¤ʪ¤Î·ú¤¡¿Ç˲õ¤ò¹Ô¤Ê¤¦¤â¤Î¤Ç¤¹¡£»ä(À½ºî¼Ô)¤ÏƱ¤¸¤è¤¦¤Ê¥·¥ó¥°¥ë¥È
¥ê¥¬¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤ò¥ë¡¼¥Á¥ó¤Î²¼¤ËÃÖ¤¤¤Æ¤¤¤Þ¤¹¡£)

Åê¹Æ¼Ô ikanatto : 06:45 PM

¥­¥ã¥Ó¥Í¥Ã¥È¤Ë´Ø¤¹¤ë¼Áµ¿±þÅú¤ÎÏÂÌõ

ËÝÌõ¸µ¡§
http://www.splashdamage.com/forums/viewtopic.php?t=2751
http://dleblanc.dyndns.org/etdocs/cabinets.html

´Ê°×²óÉü¥­¥ã¥Ó¥Í¥Ã¥È
(Ãí¡§¤³¤ì¤ÏËÜÅö¤Ë´Ê°×ÈǤǤ¹¡£¸«¤¿ÌܤÏÉáÄ̤Ǥ¹¤¬¡¢¥×¥ì¥¤¥ä¡¼¤Ï¥­¥ã¥Ó¥Í¥Ã¥È¤òÄ̤ê¤Ì¤±¤é¤ì¤Þ¤¹¤·¡¢¥­¥ã¥Ó¥Í¥Ã¥È¤Î¸«¤¿ÌܤâÊѲ½¤·¤Þ¤»¤ó¡£¾Ü¤·¤¯¤Ï¸å¼Ô¤Î¥ê¥ó¥¯¤ò¤¿¤É¤Ã¤Æ¤¤¤Ã¤Æ¤¯¤À¤µ¤¤¡£)

Ì䤤¡§¥­¥ã¥Ó¥Í¥Ã¥ÈÃÖ¤¤¤¿¤ó¤À¤±¤É²óÉü¤·¤Æ¤¯¤ì¤Ê¤¤¤ó¤À¡£¤É¤¦¤¹¤ê¤ã¤¤¤¤¤ó¤À¡©

[BXtreme]¡§

¤Þ¤º¡¢misc_cabinet_health¤Îentity¤òºî¤ë¤Î¤µ¡£(¥â¥Ç¥ë¤ò¥¤¥ó¥Ý¡¼¥È¤·¤í¤Ã¤Æ¤³¤È¤Ç¤¹
¤Ê)

¤½¤¦¤·¤¿¤é¡¢¤½¤ì¤Ë°Ê²¼¤ò²Ã¤¨¤Æ¤¯¤ì¡§(Entity¤ÎÀßÄê¤Ç)
key: scriptname value: healthcabinet
key: targetname value: healthcabinet

¼¡¤Ë¤³¤Î¥­¥ã¥Ó¥Í¥Ã¥È¤Î¤Þ¤ï¤ê¤Ë¡¢¥×¥ì¥¤¥ä¡¼¤¬¤³¤ÎÈϰϤËÆþ¤Ã¤¿¤é²óÉü¤µ¤»¤ë¤È¤¤¤¦¥È
¥ê¥¬¡¼¥Ö¥é¥·¤òºî¤Ã¤Æ¤¯¤ì¡£ºî¤Ã¤¿¤é¤½¤¤¤Ä¤Î̾Á°¤Ïtrigger_heal¤Ë¤Ç¤â¤·¤Æ¤ª¤¤¤Æ¤¯¤ì
¤ä¡£½ÐÍ褿¤é¤³¤ì¤Ë¼¡¤ÎÃͤòÀßÄꤷ¤Æ¤¯¤ì¡£
key: healtotal value: 400
key: healrate value: 3
key: target value: healthcabinet
key: scriptname value: hcab_trigger_heal
key: targetname value: hcab_trigger_heal

¤³¤ì¤Ç¤É¤¦¤è¡©

healtotal value¤Ï¤³¤Î¥­¥ã¥Ó¥Í¥Ã¥È¤¬ÊÝ»ý¤·¤Æ¤¤¤ë¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤Î¹ç·×²óÉüÎÌ¡¢healrat
e value¤Ï¥×¥ì¥¤¥ä¡¼¤¬ËèÉò¿¥Ø¥ë¥¹²óÉü¤¹¤ë¤«¤Ã¤Æ¤³¤È¤ò·è¤á¤Æ¤ë¤«¤é¡¢¼«Ê¬¤Î¹¥¤­¤Ê
¤è¤¦¤ËÀßÄꤷ¤Æ¤¯¤ì¤è¤Ê¡£

¥¢¥â¥­¥ã¥Ó¥Í¥Ã¥È¤â¼ê½ç¤Ï¤³¤ì¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤µ¡£ÀßÄꤹ¤ë»þ¤Ë¥Ø¥ë¥¹¥­¥ã¥Ó¥Í¥Ã¥È¤ÈÊÑ
¤ï¤ë¤Î¤Ï¡§
misc_cabinet_health = misc_cabinet_supply
trigger_heal = trigger_ammo
healtotal = ammototal
healrate = ammorate
¤³¤ó¤Ê¤È¤³¤í¤µ¡£

Ì䤤¡§¤ª¤ª¡¢³Î¤«¤Ë²óÉü¤·¤Æ¤¯¤ì¤¿¤¼¡£ŽÀŽÞŽÝŽ¹BXtreme¡ª¤À¤±¤É¡¢¾ÃÈñÎ̤˱þ¤¸¤Æ¥­¥ã¥Ó¥Í
¥Ã¥È¤Î¸«¤¿Ìܤ¬ÊѤï¤é¤Ê¤¤¤ó¤À¤±¤É¤É¤¦¤·¤¿¤é¤¤¤¤¤è¡©

¾¤Î¿Í¡§¤¢¤¢¡¢¤½¤ê¤ã¤½¤¦¤À¡£¤Ê¤ó¤»¤³¤ì¤Ï¤¿¤Àñ¤Ë¥­¥ã¥Ó¥Í¥Ã¥È¤Î¤Þ¤ï¤ê¤Ë¼«Æ°Åª¤Ë²ó
Éü¤¹¤ë¥¨¥ê¥¢¤òºî¤Ã¤¿¤À¤±¤À¤«¤é¤Ê¡£
¤â¤·¡¢¸«¤¿ÌܤâÊѲ½¤µ¤»¤¿¤¤¤È¤Ê¤ë¤È¤Á¤ç¤Ã¤ÈÌÌÅݤÀ¤¼¡£¾Ü¤·¤¯¤Ïhttp://dleblanc.dynd
ns.org/etdocs/cabinets.html¤ò¸«¤Æ¤¯¤ì¤è¤Ê¡£

// [ikanatto] ¤½¤Ã¤Á¤Ï¤Þ¤ÀÏÂÌõ¤·¤Æ¤Þ¤»¤ó¡£

Åê¹Æ¼Ô ikanatto : 06:43 PM

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡Êä­£±

Reading the Source Code of W:ET Appendix #1

Èô¹Ôµ¡¤Ï¤É¤³¤Ø¹Ô¤¯

ET¤Ï»°¼¡¸µ¶õ´Ö¤Ç¿¿Í¿ô¤¬Æþ¤êÍð¤ì¤ë¥·¥å¡¼¥Æ¥£¥ó¥°¥²¡¼¥à¤Ç¤¹¡£¤³¤ì¤ò¼Â¸½¤¹¤ë¥³¡¼¥É¤Ë¤ÏÅöÁ³¤Ç¤¹¤¬3¼¡¸µ¶õ´Ö¤Î½èÍý¡¢ÄÌ¿®¡¢ÉÁ²è¡¢¤½¤Î¾ÍÍ¡¹¤Ê¤â¤Î¤¬É¬Íפˤʤê¤Þ¤¹¡£

»°¼¡¸µ¶õ´Ö¤Ë¤Ï¹â¤µ¡¢Éý¡¢¤½¤·¤Æ±ü¹Ô¤­¤¬¤¢¤ê¤Þ¤¹¤è¤Í¡£¤³¤Î»°¤Ä¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¶õ´Ö¾å¤Î°ÌÃÖ¤ò·è¤á¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¿ô³ØŪ¤Ë¤Ï¡¢»°¼¡¸µÄ¾¸òºÂɸ·Ï¤Ç1ÅÀ¤Î°ÌÃÖ¤ò°ì°Õ¤Ë·è¤á¤ëɬÍ×½½Ê¬¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤¿¤È¤¤¤¨¤Þ¤¹¡£

»°¼¡¸µ¶õ´Ö¤ËÈô¹Ôµ¡¤¬Èô¤ó¤Ç¤¤¤¿¤È¤·¤Þ¤¹¡£Àè½Ò¤·¤¿¤È¤ª¤ê¡¢Èô¹Ôµ¡¤¬¤É¤³¤òÈô¤ó¤Ç¤¤¤ë¤È¤¤¤¦¡Ö°ÌÃ֡פÏ3¤Ä¤Î¾ðÊ󤫤é·èÄê¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é¡¢¤É¤Á¤é¤Ë¸þ¤«¤Ã¤Æ¡¢¤Þ¤Ç¤Ï¤ï¤«¤ê¤Þ¤»¤ó¡£¤Ê¤¼¤Ê¤é¡¢Èô¹Ôµ¡¤Ï¸¶Â§Åª¤ËƬ¤Î¸þ¤¯Êý¸þ¤Ø¿Ê¤à¾è¤êʪ¤Ê¤Î¤Ç¡¢¡Ö¸þ¤­¡×¤Ë´Ø¤¹¤ë¾ðÊ󤬤ʤÈÆ°¤¯Êý¸þ¤òȽÃǤǤ­¤Ê¤¤¤«¤é¤Ç¤¹¡£

¡Ö¸þ¤­¡×¤Ë´Ø¤¹¤ë¾ðÊó¤Þ¤Ç´Þ¤á¤¿ÊªÍý¤Ï¹â¹»¤Ç¤Ï°·¤ï¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£¤·¤«¤·¡¢À¤¤ÎÃæ¤Î¤¢¤Á¤³¤Á¤Ë¤¢¤ë¡Ö¤â¤Î¡×¤Ï¡¢¤¢¤ëÂ礭¤µ¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¹â¹»ÊªÍý¤ä¿ô³Ø¤Ç°·¤¦¡ÖÅÀ¡×¤È¤Ï°ã¤¤¤Þ¤¹¡£¤½¤·¤Æ¡Ö¤â¤Î¡×¤Ë¤Ï·Á¤¬¤¢¤ê¡¢¸þ¤­¤Ë¤è¤Ã¤Æ¿§¡¹ÊªÀ­¤¬ÊѲ½¤¹¤ë¤â¤Î¤Ç¤¹¡£

¤À¤«¤é¤È¤¤¤Ã¤Æ¤ß¤Ê¤µ¤ó¤ËʪÍý¤òÊÙ¶¯¤·¤Æ¤­¤Æ¤¯¤À¤µ¤¤¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¡Ö¸þ¤­¡×¤âÂç»ö¤Ê¶õ´Ö¾ðÊó¤Ç¤¢¤ë¤³¤È¤òǧ¼±¤·¤Æ¤â¤é¤¨¤ì¤Ð·ë¹½¤Ç¤¹¡£ÅƳѡ¢¥×¥ì¥¤¥ä¡¼¤Î¸þ¤­¤¬Éð´ï¤ÎÁÀ¤¤¤½¤Î¤â¤Î¤ËÁêÅö¤¹¤ëFPS¥²¡¼¥à¤Ç¤Ï¾°¹¹¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

¸þ¤­¤òɽ¸½¤¹¤ë

¤³¤³¤«¤éËÜÂê¤ËÆþ¤ê¤Þ¤¹¡£

»°¼¡¸µ¶õ´Ö¾å¤Ç¡¢¤¢¤ë·Á¤ÈÂ礭¤µ¤ò»ý¤Ã¤¿¤â¤Î¤Î¸þ¤­¤ò°ì°Õ¤Ë»ØÄꤷ¤¿¤¤»þ¡¢¤¤¤¯¤Ä¤Î¾ðÊó¤¬É¬Íפˤʤë¤Ç¤·¤ç¤¦¤«¡£¤È¤ê¤¢¤¨¤º¡¢¼«Ê¬¼«¿È¤Ç³Î¤«¤á¤Æ¤ß¤ë¤Î¤¬°ìÈֳμ¤Ǥ·¤ç¤¦¡£

¾å²¼¤Ë¤Ë¼ó¤òÆ°¤«¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤¢¤Ê¤¿¤Î¤¢¤¿¤Þ¤Î°ÌÃ֤ϤۤȤó¤ÉÆ°¤«¤º»ëÌî(¸«¤¨¤ëÈÏ°Ï)¤¬º¸±¦¤ËÂ礭¤¯ÊѤï¤ê¤Þ¤·¤¿¤è¤Í¡£¤³¤ì¤¬¡Ö¸þ¤­¡×¤ÎÂç»ö¤µ¤òÂ轤·¤Æ¤¤¤Þ¤¹¡£¤½¤·¤Æ¼ó¤òº¸±¦¤Ë¿¶¤Ã¤Æ¤âƱ¤¸¤¯¸«¤¨¤ëÈϰϤ¬ÊѤï¤ë¤«¤È»×¤¤¤Þ¤¹¡£

³¤¤¤Æ¤¢¤¿¤Þ¤òº¸±¦¤Ë·¹¤±¤Æ¤¯¤À¤µ¤¤¡£¸«¤¨¤ëÈϰϤÏÊѤï¤ê¤Þ¤»¤ó¤¬¡¢¿åÊ¿°ÌÃ֤λþ¤è¤ê¤â·Ê¿§¤¬·¹¤¤¤Æ¸«¤¨¤Þ¤¹¤è¤Í¡£ÅöÁ³¤Ç¤¹¤è¤Í¡£

¤µ¤¢¡¢¤³¤ì¤ÇʪÂΤÎÊý¸þ¤ò·è¤á¤ë3Í×ÁǤò¤¹¤Ù¤Æ¸«¤Æ¤­¤Þ¤·¤¿¡£

¾å²¼¡¢º¸±¦¡¢¤½¤·¤Æ²óž¡£¤³¤ì¤¬»°¼¡¸µ¶õ´Ö¾å¤ÎʪÂΤÎÊý¸þ¤ò·è¤á¤ëÁ´Í×ÁǤǤ¹¡£¤è¤ê°ìÈÌŪ¤Ë¤Ï¡¢»ÑÀª³Ñ¤È¸Æ¤Ð¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤·¤Æ¾å²¼º¸±¦²óž¤Î³ÑÅ٤ϡ¢¤½¤ì¤¾¤ì¥Ô¥Ã¥Á¡¢¥è¡¼¡¢¥í¡¼¥ë¤È¸Æ¤Ð¤ì¤Þ¤¹¡£¥í¥Ü¥Ã¥È¤äÈô¹Ôµ¡¤¬¹¥¤­¤Ê¿Í¤ÏÃΤäƤ¤¤¿¤«¤â¤·¤ì¤Þ¤»¤ó¤Í¡£

¿ô³ØŪ¤Êɽ¸½¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ºÇ½é¤Ë¡¢¤Þ¤Ã¤¹¤°¤ò¸þ¤¤¤Æ¤¤¤ë¾õÂ֤λëÀþÊý¸þ¤òx¼´¡¢¿âľ±¦Êý¸þ¤òy¼´¡¢¾åÊý¸þ¤òz¼´¤È¤·¤¿Ä¾¸òºÂɸ·Ï¤òÀßÄꤷ¤Þ¤¹¡£¤¹¤ë¤È¡¢¤³¤ÎºÂɸ·Ï¤òz¼´Ãæ¿´¤Ë²óž¤¹¤ëÁàºî¤¬¼ó¤òº¸±¦¤Ë¿¶¤ë¤³¤È¤ËÁêÅö¤·¤Þ¤¹¡£¤³¤Î¤È¤­¤Î³ÑÅÙ¤¬¥è¡¼¤Ç¤¹¡£Æ±ÍͤËy¼´Ãæ¿´¤Ç¤Ï¥Ô¥Ã¥Á¡¢x¼´Ãæ¿´¤Ê¤é¥í¡¼¥ë¤Ç¤¹¡£

¼ÂÎã

»ä¤è¤ê¤â¾Ü¤·¤¯Åª³Î¤Ë²òÀ⤷¤Æ¤¯¤ì¤Æ¤¤¤ë¤È¤³¤í¤¬¤¢¤ë¤Î¤Ç¤½¤Á¤é¤ò¾Ò²ð¤·¤Þ¤¹¡£

http://www.geocities.jp/gthu1df564/FreeR.html¡¡ºÇ½é¤ÎÉôʬ¤Ë»ÑÀª³Ñ(¥ª¥¤¥é¡¼³Ñ)¤Ë´Ø¤¹¤ëÀâÌÀ¤¬¤¢¤ê¤Þ¤¹¡£

¥Þ¥¤¥¯¥í¥½¥Õ¥ÈMSDN¥é¥¤¥Ö¥é¥ê¡¡¤µ¤¹¤¬OSºî¤Ã¤Æ¤¤¤ë¤È¤³¤í¤Ç¤¹¤Í¡£²òÀ⤫¤é¼ÂÎã¤Þ¤Ç¸«»ö¤Ç¤¹¡£¥µ¥ó¥×¥ë¥³¡¼¥É¤â¤¢¤ê¤Þ¤¹¡£

¶õ´Ö¥Ù¥¯¥È¥ë¤ÈÊ£ÁÇ¿ô¤Ë´Ø¤¹¤ë¤É¤Ã¤«¤ÎÂç³Ø¶µ¼ø¤Îʸ¾Ï¡¡¤â¤Ã¤È¾Ü¤·¤¯ÃΤꤿ¤¤¿Í¤Ï¤³¤Á¤é¤Ø¡£¤³¤Á¤é¤Ï»ä¤ÎǾ¤ß¤½¥ì¥Ù¥ë¤òĶ¤¨¤Æ¤¤¤ë¤¿¤á¥µ¥Ý¡¼¥ÈÂоݳ°¤È¤Ê¤ê¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:36 PM | ¥³¥á¥ó¥È (1076)

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡Âè¸Þ²ó

Reading the Source Code of W:ET #5

º£²ó¤ÎÌÜɸ

Éð´ï¸ÄÊ̤ι¶·âȽÄê¤òÁ°²óÁ°¡¹²ó¤È¸«¤Þ¤·¤¿¡£º£²ó¤Ï¤½¤ó¤ÊÉð´ï¤Ë¤è¤Ã¤Æ½ý¤Ä¤¤¤¿ÂΤòÌþ¤·¤Æ¤¯¤ì¤ë¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤Ë¤Ä¤¤¤Æ¤ß¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£¤Á¤Ê¤ß¤Ë¥½¡¼¥¹¥³¡¼¥ÉŪ¤Ë¤Ï¤³¤Î¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤â°·¤¤Ê¬Îà¤È¤·¤Æ¤Ï¡ÖÉð´ï¡×¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢¥Þ¥·¥ó¥¬¥ó¹½¤¨¤Æ¤¤¤ë¤Î¤â¥Ø¥ë¥¹¥Ñ¥Ã¥¯Êú¤¨¤Æ¤¤¤ë¤Î¤âŨÂй԰٤Ȥߤʤµ¤ì¤Þ¤¹¡£¤ß¤Ê¤µ¤ó¡¢Àï¾ì¤Çµß¸îÈɤˤʤäƤâŨ¤Ï¤¢¤Ê¤¿¤òÁÀ¤Ã¤Æ¤­¤Þ¤¹¡£Ãí°Õ¤·¤Þ¤·¤ç¤¦¡£

¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤ò½Ð¤¹

g_weapon.c¤Î184¹Ô°Ê¹ß¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¥á¥Ç¥£¥Ã¥¯¤¬¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤ò½Ð¤¹½èÍý¤Ë¤Ä¤¤¤Æ¤Î¥³¡¼¥É¤¬½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£Áᮥ³¡¼¥É¤ò¸«¤Þ¤·¤ç¤¦¡£

void Weapon_Medic( gentity_t *ent ) {
	gitem_t *item;
	gentity_t *ent2;
	vec3_t	velocity, offset;
	vec3_t	angles,mins,maxs;
	vec3_t	tosspos, viewpos;
	trace_t	tr;

¤³¤³¤Ï¤¤¤Ä¤âÄ̤ê¤ÎÀë¸À¤È½é´ü²½Éôʬ¤Ç¤¹¤Í¡£¸«´·¤ì¤Ê¤¤¹½Â¤ÂΤˡ¢gitem_t¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ÄêµÁ¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¤«¡£

typedef struct gitem_s {
	char		*classname;	// spawning name
	char		*pickup_sound;
	char		*world_model[MAX_ITEM_MODELS];

	(¾Êά)

	int			giClipIndex;	// which clip this weapon uses.  this allows the sniper rifle to use the same clip as the garand, etc.

	char		*precaches;		// string of all models and images this item will use
	char		*sounds;		// string of all sounds this item will use
} gitem_t;

¤É¤¦¤ä¤é¥¢¥¤¥Æ¥à¤Ë´Ø¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò´Þ¤à¹½Â¤ÂΤΤ褦¤Ç¤¹¤Í¡£¶ñÂÎŪ¤Ë¤Ï¥¯¥é¥¹Ì¾¡¢É½¼¨¥â¥Ç¥ë¥Ç¡¼¥¿¡¢½¦¤Ã¤¿»þ¤Î²»¤Ê¤É¤Ç¤·¤ç¤¦¤«¡£

ËÜʸ¤Î³¤­¤ò¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

	if (level.time - ent->client->ps.classWeaponTime > level.medicChargeTime[ent->client->sess.sessionTeam-1]) {
		ent->client->ps.classWeaponTime = level.time - level.medicChargeTime[ent->client->sess.sessionTeam-1];
	}
	
	if( ent->client->sess.skill[SK_FIRST_AID] >= 2 ) {
		ent->client->ps.classWeaponTime += level.medicChargeTime[ent->client->sess.sessionTeam-1]*0.15;
	} else {
		ent->client->ps.classWeaponTime += level.medicChargeTime[ent->client->sess.sessionTeam-1]*0.25;
	}

Æó¤Ä¤Îif¹½Ê¸¤¬¤¢¤ê¤Þ¤¹¡£ºÇ½é¤Î¾ò·ïÀá¤Ï¡¢¥¯¥é¥¹¤´¤È¤Î¥Á¥ã¡¼¥¸¤¬Ëþ¥¿¥ó°Ê¾å¤Ë¤Ê¤Ã¤Æ¤¤¤¿¾ì¹ç¡¢¥Á¥ã¡¼¥¸¤ò¤Á¤ç¤¦¤ÉËþ¥¿¥ó¤ËÀßÄꤷ¤Ê¤ª¤·¤Æ¤¤¤Þ¤¹¡£¼¡¤Î¾ò·ïÀá¤Ç¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤Î¥á¥Ç¥£¥Ã¥¯¥¹¥­¥ë¤¬2°Ê¾å¤Î¾ì¹ç¤Ë¥Á¥ã¡¼¥¸¾ÃÈñÎ̤ò15¡ó¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð25¡ó¤ËÀßÄꤷ¤Æ¤¤¤Þ¤¹¡£

	item = BG_FindItemForClassName("item_health");
	VectorCopy( ent->client->ps.viewangles, angles );

	if ( angles[PITCH] < -30 ) {
		angles[PITCH] = -30;
	} else if ( angles[PITCH] > 30 ) {
		angles[PITCH] = 30;
	}

ºÇ½é¤Î¹Ô¤Ç¡¢item¤Ë¤Ïitem_health¤ò¥¯¥é¥¹¥Í¡¼¥à¤È¤¹¤ë¥¢¥¤¥Æ¥à¤Î¥Ç¡¼¥¿¤¬ÂåÆþ¤µ¤ì¤Þ¤·¤¿¡£¼¡¤Î¹Ô¤Ë¤Æangles¤Ë¥×¥ì¥¤¥ä¡¼¤Î»ÑÀª³Ñ¤¬¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¸å¤Îif¥Ö¥í¥Ã¥¯¤Ç¤Ï¡¢¥×¥ì¥¤¥ä¡¼»ëÌî³Ñ¤Î¥Ô¥Ã¥Á¡¢¤Ä¤Þ¤ê¾å²¼Êý¸þ¤Î³ÑÅÙ¤ò¤ß¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤¬¡Þ30Åٰʾå¤Î¾ì¹ç¡¢30Å٤⤷¤¯¤Ï-30ÅÙ¤ËÀßÄꤷ¤Ê¤ª¤·¤Þ¤¹¡£

	AngleVectors( angles, velocity, NULL, NULL );
	VectorScale( velocity, 64, offset);
	offset[2] += ent->client->ps.viewheight/2;
	VectorScale( velocity, 75, velocity );
	velocity[2] += 50 + crandom() * 25;

¤³¤³¤Ç¤Ï¡¢¼ÂºÝ¤Ë¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤ò¡Öȯ¼Í¡×¤¹¤ë®ÅÙ¤ä¸þ¤­¤òÀßÄꤷ¤Æ¤¤¤Þ¤¹¡£angles¤ÎÊý¸þ¤ËÂ礭¤µ64¤Î¥Ù¥¯¥È¥ë¤¬offset¤ËÂåÆþ¤µ¤ì¡¢¹â¤µÊý¸þ¤Ë¥×¥ì¥¤¥ä¡¼¤Î»ëÅÀ¤Î¹â¤µ¤ÎȾʬ¤¬²Ã»»¤µ¤ì¤Þ¤¹¡£¤½¤·¤Æ¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤Îȯ¼Í®ÅÙ¤Ïangles¤ÎÊý¸þ¤Ë75¤Î®¤µ¤È¾åÊý¸þ¤Ë50¡Á75¤¬¥×¥é¥¹¤µ¤ì¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¸«¤Æ¤¤¤ëÊý¸þ¤Ë¤Þ¤Ã¤¹¤°½Ð¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¾¯¤·É⤭µ¤Ì£¤Ëȯ¼Í¤µ¤ì¤Þ¤¹¡£»ä¤¿¤Á¤¬¼ÂºÝ¥²¡¼¥àÃæ¤Ç¸«¤ë¤Î¤ÈƱ¤¸¾õÂ֤Ǥ¹¤Í¡£

	VectorCopy( muzzleEffect, tosspos );
	VectorMA( tosspos, 48, forward, tosspos );
	VectorCopy( ent->client->ps.origin, viewpos );

	VectorSet( mins, -(ITEM_RADIUS + 8), -(ITEM_RADIUS+8), 0 );
	VectorSet( maxs, (ITEM_RADIUS + 8), (ITEM_RADIUS+8), 2*(ITEM_RADIUS+8) );

¤³¤³¤Ç¤Ï¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤¬ÂǤÁ½Ð¤µ¤ì¤ë¾ì½ê¤È¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤ÎÂ礭¤µ¤òÀßÄꤷ¤Æ¤¤¤Þ¤¹¡£

	trap_EngineerTrace( &tr, viewpos, mins, maxs, tosspos, ent->s.number, MASK_MISSILESHOT );
	if( tr.startsolid ) {
		VectorCopy( forward, viewpos );
		VectorNormalizeFast( viewpos );
		VectorMA( ent->r.currentOrigin, -24.f, viewpos, viewpos ); 

		trap_EngineerTrace(&tr, viewpos, mins, maxs, tosspos, ent->s.number, MASK_MISSILESHOT);

		VectorCopy( tr.endpos, tosspos );
	} else if( tr.fraction < 1 ) {	// oops, bad launch spot
		VectorCopy( tr.endpos, tosspos );
		SnapVectorTowards( tosspos, viewpos );
	}

¤³¤Á¤é¤Ï¼Í½Ð¤¹¤ëºÇ½ª½àÈ÷¤Ç¤¹¡£¤â¤·¡¢¥Ø¥ë¥¹¥Ñ¥Ã¥¯È¯À¸°ÌÃÖ¤¬ÊɤÎÃæ¤Î¾ì¹ç¡¢¥×¥ì¥¤¥ä¡¼¤Î¾¯¤·¸å¤í¤Ë¼Í½Ð°ÌÃÖ¤òÊѹ¹¤·¤Æ¤¤¤Þ¤¹¡£

    ent2 = LaunchItem( item, tosspos, velocity, ent->s.number );
    ent2->think = MagicSink;
    ent2->nextthink = level.time + 30000;
    ent2->parent = ent; // JPW NERVE so we can score properly later
}

ºÇ¸å¤Ë¡¢¼ÂºÝ¤Ë¥¢¥¤¥Æ¥à¤ò¼Í½Ð¤¹¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¡¢ent2¤Ë¥¢¥¤¥Æ¥à¤òÅÐÏ¿¤·¤Æ¤¤¤Þ¤¹¡£¼Í½Ð¤µ¤ì¤Æ¤«¤é30000¥ß¥êÉø塢¤Ä¤Þ¤ê30Éøå¤ËMagicSink´Ø¿ô¤¬¸Æ¤Ð¤ì¤Æ¤³¤Î¥¢¥¤¥Æ¥à¤ÏÄÀ¤ó¤Ç¾Ã¤¨¤ëÀßÄê¤ò¤·¡¢¤³¤Î´Ø¿ô¤ÏÁ´¤Æ¤Î½èÍý¤ò½ª¤¨¤Þ¤¹¡£

¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤ò½¦¤Ã¤¿¤é

¤µ¤Æº£Å٤ϥإ륹¥Ñ¥Ã¥¯¤ò½¦¤Ã¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¤ß¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£g_items.c¤Î645¹Ô°Ê¹ß¤ò¤ß¤Æ¤¯¤À¤µ¤¤¡£

int Pickup_Health (gentity_t *ent, gentity_t *other) {
	int			max;
	int			quantity = 0;

	if( other->client->ps.stats[STAT_PLAYER_CLASS] != PC_MEDIC ) {
		if( ent->parent && ent->parent->client && other->client->sess.sessionTeam
		 == ent->parent->client->sess.sessionTeam ) {
			if (!(ent->parent->client->PCSpecialPickedUpCount % 
			MEDIC_SPECIAL_PICKUP_MOD)) {
				AddScore(ent->parent, WOLF_HEALTH_UP);
				G_LogPrintf("Health_Pack: %d %d\n", ent->parent - g_entities, other - g_entities);
			}
			G_AddSkillPoints( ent->parent, SK_FIRST_AID, 1.f );
			G_DebugAddSkillPoints( ent->parent, SK_FIRST_AID, 1.f, "health pack picked up" ); 
			ent->parent->client->PCSpecialPickedUpCount++;
		}
	}	

ºÇ½é¤ÎÀë¸À¤È½é´ü²½¤Î¤¢¤È¤Ë¿½Åif¤¬¤¢¤ê¤Þ¤¹¡£ºÇ½é¤Î¾ò·ï¤Ï¡¢½¦¤ª¤¦¤È¤·¤Æ¤¤¤ë¿Í¤¬¥á¥Ç¥£¥Ã¥¯°Ê³°¤«¤É¤¦¤«¡¢¼¡¤Ë¥Ñ¥Ã¥¯¤ò½Ð¤·¤¿¤â¤Î¤¬Â¸ºß¤·¡¢¤«¤Ä¥×¥ì¥¤¥ä¡¼¤Ç¡¢¤·¤«¤â¥Ñ¥Ã¥¯¤ò½Ð¤·¤¿¿Í¤È½¦¤ª¤¦¤È¤·¤Æ¤¤¤ë¿Í¤Î¥Á¡¼¥à¤¬Æ±¤¸¤«¤É¤¦¤«¤ò¤ß¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë¼¡¤Îif¤Ç¥Ñ¥Ã¥¯¤ò½¦¤Ã¤¿²ó¿ô¤¬4¤ÎÇÜ¿ô¤«¤É¤¦¤«¤ò¤ß¤Æ¤ª¤ê¡¢¤½¤¦¤Ê¤é¤Ð½Ð¤·¤¿¿Í¤Ë¥¹¥³¥¢¤òÍ¿¤¨¤½¤Î»Ý¥í¥°¤Ë½ÐÎϤ·¤Þ¤¹¡£¤½¤·¤Æ¥Ñ¥Ã¥¯¤ò½Ð¤·¤¿¿Í¤Ë¥á¥Ç¥£¥Ã¥¯¤ÎXP¤ò1Í¿¤¨¤Æ¡¢¥¢¥¤¥Æ¥à¤ò½¦¤Ã¤¿²ó¿ô¤ò1Áý¤ä¤·¤Þ¤¹¡£

	max = other->client->ps.stats[STAT_MAX_HEALTH];
	if( other->client->sess.playerType == PC_MEDIC ) {
		max *= 1.12f;
	}
	other->health += ent->item->quantity;
	if (other->health > max ) {
		other->health = max;
	}
	other->client->ps.stats[STAT_HEALTH] = other->health;

	return -1;
}

¤³¤³¤ÎÉôʬ¤Ç½¦¤Ã¤¿¿Í¤ÎÂÎÎϤò²óÉü¤µ¤»¤Æ¤¤¤Þ¤¹¡£¤Þ¤º¤Ïmax¤Øµ¬Äê¤ÎºÇÂçÂÎÎϤòÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£¥á¥Ç¥£¥Ã¥¯¤Ê¤é¤³¤ì¤ò1.12Çܤ·¤Þ¤¹¡£¤â¤·²óÉü¤·¤¿ÂÎÎϤ¬ºÇÂçÃͤòĶ¤¨¤¿¾ì¹ç¡¢¤³¤ì¤òºÇÂçÃͤغÆÀßÄꤷ¤Þ¤¹¡£

ºÇ¸å¤Ë

º£²ó¤ÏÉð´ï¤Ç¤Ï¤Ê¤¯¡¢¥Ø¥ë¥¹¥Ñ¥Ã¥¯¤È¤¤¤¦¥¢¥¤¥Æ¥à¤ò½Ð¤¹½èÍý¤È½¦¤Ã¤¿»þ¤Î½èÍý¤Ë¤Ä¤¤¤Æ¸«¤Þ¤·¤¿¡£¤³¤³¤Ç¼è¤ê¾å¤²¤¿°Ê³°¤Ë¤â¡¢Íî¤Á¤Æ¤¤¤ë¥Ñ¥Ã¥¯¤ò½¦¤¦½èÍý¡¢¥Ñ¥Ã¥¯¤ò½Ð¤¹¤Î¤Ë¥Á¥ã¡¼¥¸¤¬Â­¤ê¤Æ¤¤¤ë¤«¤òȽÃǤ¹¤ë½èÍý¡¢½¦¤Ã¤¿¥Ñ¥Ã¥¯¤ò¾Ã¤¹½èÍý¤Ê¤É¿§¡¹¤¢¤ê¤Þ¤¹¡£À§È󤽤¦¤¤¤Ã¤¿Éôʬ¤â¥Á¥§¥Ã¥¯¤·¤Æ¤ß¤ë¤³¤È¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:32 PM | ¥³¥á¥ó¥È (18)

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡Âè»Í²ó

Á°²ó¤Î¤ª¤µ¤é¤¤¤Èº£²ó¤Î¤Í¤é¤¤

Âè»°²ó¤Ç¤Ï¶ñÂÎŪ¤Ë¡¢¥²¡¼¥àÃæ¤Ç¤ÎÃÆ´ÝÅö¤¿¤êȽÄê¤Ë¤Ä¤¤¤Æ¤Î½èÍý¤ò¸«¤Þ¤·¤¿¡£¤³¤ì¤Ï¥µ¡¼¥Ð¡¼¥µ¥¤¥É¤Î¥³¡¼¥É¤Ç¤·¤¿¤Í¡£¤½¤Î¤¿¤á¼ÂºÝ¤ËÃƤòȯ¼Í¤·¤¿»þ¤Ë½Æ¸ý¤Ë±ì¤ò½Ð¤·¤¿¤ê¡¢Ãƴݤε°Àס¢ÃåÃÆÅÀ¤Î¥¨¥Õ¥§¥¯¥È¤Ê¤É¡¢¥Ó¥¸¥å¥¢¥ëŪ¤Ê½èÍý¤Ï¤³¤³¤Ç¹Ô¤ï¤ì¤Æ¤¤¤Þ¤»¤ó¡£

º£²ó¤ÏºÆ¤ÓÉð´ï¤Î°ì¤Ä¤È¤·¤Æ¡¢¥Ê¥¤¥Õ¤Î½èÍý¤ò¸«¤Æ¤¤¤³¤¦¤«¤È»×¤¤¤Þ¤¹¡£¥Ê¥¤¥Õ¤ÏÁÇŨ¤ÊÉð´ï¤Ç¤¹¡£Çظ夫¤éǦ¤Ó´ó¤ë¤³¤È¤¬½ÐÍè¤ì¤Ð¡¢ÃÆÌô¤Î¾ÃÈñ̵¤·¤ËÁê¼ê¤òÅݤ»¤Þ¤¹¡£²¿¤è¤ê¡¢Áê¼ê¤âÅݤµ¤ì¤ë¤È¤Ê¤¼¤«³Ú¤·¤¤Éð´ï¤Ç¤¹¡£¥Ù¥¯¥È¥ë±é»»¤¬·ë¹½Â¿¤¤¤Î¤Ç¡¢¿ô³Ø¤Î»²¹Í½ñ¤¬¤¢¤ë¤È¤¤¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¤Í¡£

¥Ê¥¤¥Õ¤Ç»É¤¹

Áᮥ³¡¼¥É¤ò¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£g_weapon.c¤Î85¹Ô°Ê¹ß¤¢¤¿¤ê¤¬¥Ê¥¤¥Õ¤ËÁêÅö¤·¤Þ¤¹¡£

#define KNIFE_DIST 48

¤µ¤Æ¡¢ËÁƬ¤ËÄê¿ôÄêµÁ¤¬¤µ¤ì¤Æ¤¤¤Þ¤¹¡£»úÌ̤«¤é¡¢¥Ê¥¤¥Õ¤Î¼ÍÄøµ÷Î¥¤òɽ¤¹¤â¤Î¤ÈͽÁۤǤ­¤Þ¤¹¡£48¥¤¥ó¥Á¡¢¤Ä¤Þ¤ê1¥á¡¼¥È¥ë¤¯¤é¤¤¤¬Í­¸úÈϰϤȤ¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤Á¤Ê¤ß¤Ë¤³¤ì¤ò10000¤¯¤é¤¤¤ËÊѹ¹¤¹¤ë¤È¡¢¤«¤Ê¤êÎ¥¤ì¤¿Áê¼ê¤Ë¤â¸«¤¨¤Æ¤¤¤ë¸Â¤ê³Î¼Â¡¦Â¨ºÂ¤Ë¥Ò¥Ã¥È¤¹¤ë¶¯Îõ¤ÊÉð´ï¤Ë¤Ê¤ê¤Þ¤¹¡£¤â¤Á¤í¤ó¡¢Çظå¤ËÅö¤¿¤ì¤Ð¨»à¤Ç¤¹¡£

³¤¤¤Æ´Ø¿ô¤ò¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

void Weapon_Knife( gentity_t *ent ) {

	trace_t		tr;
	gentity_t	*traceEnt, *tent;
	int			damage, mod;
	vec3_t		pforward, eforward;
	vec3_t		end;
	mod = MOD_KNIFE;

¾¤Î´Ø¿ô¤ÈƱ¤¸¤Ç¤¹¤Í¡£ÊÑ¿ôÀë¸À¤È½é´üÀßÄê¤ò¤³¤³¤Ç¤·¤Æ¤¤¤Þ¤¹¡£

	AngleVectors (ent->client->ps.viewangles, forward, right, up);
	CalcMuzzlePoint ( ent, ent->s.weapon, forward, right, up, muzzleTrace );
	VectorMA (muzzleTrace, KNIFE_DIST, forward, end);
	trap_Trace (&tr, muzzleTrace, NULL, NULL, end, ent->s.number, MASK_SHOT);

ºÇ½é¤ÎAngleVectors¤«¤é¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£¤³¤Î´Ø¿ô¤ÎÄêµÁÉôʬ¤Ï¡¢q_math.c¤Ë¤¢¤ê¤Þ¤¹¡£q_math.c¤Ï¾¤Ë¤â¿§¡¹¤Ê±é»»´Ø¿ô¤¬¤ÈÄêµÁ¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢°ìÄ̤긫¤Æ¤ª¤¯¤Èº£¸å¤ÎÍý²ò¤¬¥¹¥à¡¼¥º¤«¤È»×¤¤¤Þ¤¹¡£

void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up) {
	float		angle;
	static float		sr, sp, sy, cr, cp, cy;

	angle = angles[YAW] * (M_PI*2 / 360);
	sy = sin(angle);
	cy = cos(angle);

(¾Êά)

	if (forward)
	{
		forward[0] = cp*cy;
		forward[1] = cp*sy;
		forward[2] = -sp;
	}
(¾Êά)
}

¤Þ¤µ¤Ë·×»»¤À¤±¤ò¤¹¤ë´Ø¿ô¤Ç¤¹¡£·ë²ÌŪ¤Ë¥×¥ì¥¤¥ä¡¼¤¬¸«¤Æ¤¤¤ëÊý¸þ¤Ë±þ¤¸¤¿ºÂɸ·Ï¼´¥Ù¥¯¥È¥ë¤òÊÖ¤·¤Þ¤¹¡£°Ê²¼¤Î²òÀâ¤ÏÆɤߤ¿¤¤¿Í¤À¤±¸Æ¤ó¤Ç¤¯¤À¤µ¤¤¡£°ú¿ô¤È¤·¤Æ¡¢³ÑÅ٤ȷë²Ì¤ò³ÊǼ¤¹¤ë¥Ù¥¯¥È¥ë¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡£¤³¤Î´Ø¿ô¤Ï¡¢Í¿¤¨¤é¤ì¤¿³ÑÅÙ·Ï(¥è¡¼¡¦¥Ô¥Ã¥Á¡¦¥í¡¼¥ë¤Î»°À®Ê¬)¤«¤é¡¢Ä¾¸òºÂɸ·Ï(xyz)¤Îľ¹Ô´ðÄì¥Ù¥¯¥È¥ë¤ò·×»»¤·¡¢¤½¤ì¤¾¤ì¤Î´ðÄì¥Ù¥¯¥È¥ë¤òforward¡¢right¡¢up¤È¤·¤ÆÊÖ¤·¤Þ¤¹¡£¥Ô¥Ã¥Á¡¢¥è¡¼¡¢¥í¡¼¥ëÁ´¤Æ¤¬0¤Î¾ì¹ç¡¢foward¤Ï(1,0,0)¡¢right¤Ï(0,1,0)¡¢up¤Ï(0,0,1)¤È¤Ê¤Ã¤Æ¡¢É¸½à¤Îľ¸òºÂɸ·Ï¤Ë¤Ê¤ê¤Þ¤¹¡£¾Ü¤·¤¤³ÑÅ٤ȴðÄì¥Ù¥¯¥È¥ë¤ÎÊÑ´¹¤Ë¤Ä¤¤¤Æ¤Ï»²¹Í½ñ¤Ê¤É¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

ÏäòËܶڤËÌᤷ¤Þ¤¹¡£·ë¶É¤³¤Î¹Ô¡§

	AngleVectors (ent->client->ps.viewangles, forward, right, up);

¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢³ÑÅٷϤȤ·¤Æent->client->ps.viewangles¤òÅϤ·¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥Ê¥¤¥Õ¤Ç¹¶·â¤·¤è¤¦¤È¤·¤¿¥×¥ì¥¤¥ä¡¼¤¬¸«¤Æ¤¤¤ëÊý¸þ³Ñ¤Ë¤è¤Ã¤Æ¡¢¤½¤ì¤¾¤ìforward¡¢right¡¢up¤Ë²óž¤·¤¿Ä¾¸òºÂɸ·Ï¤Î¼´¥Ù¥¯¥È¥ë¤òÂåÆþ¤·¤Þ¤¹¡£

³¤¤¤ÆCalcMuzzlePoint¤Ç¤¹¤¬¡¢¤³¤ì¤Ï¥×¥ì¥¤¥ä¡¼¤Î°ÌÃ֤ȸþ¤­(Àè¤Û¤ÉÆÀ¤¿ºÂɸ·Ï)¤ÈÉð´ï¤Î¼ïÎà¤Ë±þ¤¸¡¢¹¶·âȽÄ꤬ȯÀ¸¤¹¤ë³«»ÏÅÀºÂɸ¤ò·×»»¤·¤Þ¤¹¡£¤³¤Î·ë²Ì¤¬muzzleTrace¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡£

VectorMA´Ø¿ô¤¬¸å¤Ë³¤­¤Þ¤¹¤¬¡¢MA¤ÏMutiply & Add¤Î¾Êά¤Ç¤¹¡£¤Ä¤Þ¤ê¤¢¤ë¥Ù¥¯¥È¥ë¤òÄê¿ôÇܤ·¤¿¤â¤Î¤ò¾¤Î¥Ù¥¯¥È¥ë¤Ë²Ã¤¨¤ë·×»»¤ò¤·¤Þ¤¹¡£¤³¤ì°Ê³°¤Ë¤â¥Ù¥¯¥È¥ë¤Î´ðËܱ黻¤¬q_math.c¤Ë¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤ÇÎóµó¤·¤Æ¤ª¤­¤Þ¤¹¡£

#define DotProduct(x,y)			((x)[0]*(y)[0]+(x)[1]*(y)[1]+(x)[2]*(y)[2])
#define VectorSubtract(a,b,c)	((c)[0]=(a)[0]-(b)[0],(c)[1]=(a)[1]-(b)[1],(c)[2]=(a)[2]-(b)[2])
#define VectorAdd(a,b,c)		((c)[0]=(a)[0]+(b)[0],(c)[1]=(a)[1]+(b)[1],(c)[2]=(a)[2]+(b)[2])
#define VectorCopy(a,b)			((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2])
#define	VectorScale(v, s, o)	((o)[0]=(v)[0]*(s),(o)[1]=(v)[1]*(s),(o)[2]=(v)[2]*(s))
#define	VectorMA(v, s, b, o)	((o)[0]=(v)[0]+(b)[0]*(s),(o)[1]=(v)[1]+(b)[1]*(s),(o)[2]=(v)[2]+(b)[2]*(s))

¤½¤ì¤¾¤ì¤Î°ÕÌ£¤Ï̾Á°¤ÈÄêµÁ¤ò¸«¤ë¤È¤ï¤«¤ë¤È»×¤¤¤Þ¤¹¡£DotProduct¤ÏÆâÀÑ¡¢VectorSubstract¤Ï°ú¤­»»¡¢VectorAdd¤Ï­¤·»»¡¢VectorCopy¤Ïñ¤ËÂåÆþ¡¢VectorScale¤ÏÄê¿ôÇܤǤ¹¡£

¤³¤Î·×»»¤Ë¤è¤Ã¤Æ¡¢end = muzzleTrace + KNIFE_DIST * forward¤¬ÂåÆþ¤µ¤ì¤Þ¤·¤¿¡£¤Ä¤Þ¤ê¡¢end¤Ï¹¶·âȽÄê¤Î½ªÃ¼ºÂɸ¤Ë¤Ê¤ê¤Þ¤¹¡£

¤½¤·¤Æ»Í¹ÔÌܤˤƼºݤËÅö¤¿¤êȽÄê¤ò¤·¤Æ¤¤¤Þ¤¹¡£Åö¤¿¤Ã¤¿¾ì¹ç¡¢tr¤Ë¤½¤ÎºÂɸ¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£

¼¡¤Ë¿Ê¤ß¤Þ¤·¤ç¤¦¡£

	if ( tr.surfaceFlags & SURF_NOIMPACT )
		return;

	// no contact
	if(tr.fraction == 1.0f)
		return;

¤³¤ÎÉôʬ¤ÏÅö¤¿¤êȽÄê¤Î·ë²Ì¤ò¸«¤Æ¡¢²¿¤Ë¤âÅö¤¿¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤³¤³¤Ç½ªÎ»¤¹¤ë½èÍý¤ò¤·¤Þ¤¹¡£

	if(tr.entityNum >= MAX_CLIENTS) {	// world brush or non-player entity (no blood)
		tent = G_TempEntity( tr.endpos, EV_MISSILE_MISS );
	} else {							// other player
		tent = G_TempEntity( tr.endpos, EV_MISSILE_HIT );
	}

¤³¤³¤Ï¥Ê¥¤¥Õ¤ÎÅö¤¿¤Ã¤¿¤â¤Î¤¬¥×¥ì¥¤¥ä¡¼¤Ê¤Î¤«¤½¤ì°Ê³°¤Î¤â¤Î¤«¤òȽÃǤ·¤Æ¤¤¤Þ¤¹¡£

	tent->s.otherEntityNum = tr.entityNum;
	tent->s.eventParm = DirToByte( tr.plane.normal );
	tent->s.weapon = ent->s.weapon;
	tent->s.clientNum = ent->r.ownerNum;

	if(tr.entityNum == ENTITYNUM_WORLD)	// don't worry about doing any damage
		return;

¤³¤ÎÉôʬ¤Ïtent¤ËÂФ·¤Æ¤ÎÂåÆþÁàºî¤¬Ãæ¿´¤Ç¤¹¡£2¹ÔÌܤËDirToByte¤È¤¤¤¦ÊѤʴؿô¤¬¤¢¤ê¤Þ¤¹¤Í¡£¤³¤ì¤Ï¡¢ÄÌ¿®¥Ç¡¼¥¿Î̺︺¤Î¤¿¤á¤Î¤â¤Î¤Ç¡¢162¤Î¤¢¤é¤«¤¸¤á·èÄꤵ¤ì¤Æ¤¤¤ëÂåɽŪ¤Ê¥Ù¥¯¥È¥ë¤Ë¤â¤Ã¤È¤â¶á¤¤¤â¤Î¤òõ¤·¡¢²¿ÈÖÌܤ¬ºÇŬ¤«¤òÌá¤êÃͤȤ·¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢3¤Ä¤Îfloat¤«¤é¤Ê¤ë¥Ù¥¯¥È¥ë¤ò1¤Ä¤Îchar¤Ë¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹(ÀºÌ©¤µ¤Ï·ç¤­¤Þ¤¹¤¬)¡£

ºÇ¸å¤Îif¤Ï¡¢Åö¤¿¤Ã¤¿¤â¤Î¤¬WORLD¡¢¤Ä¤Þ¤ê¥Þ¥Ã¥×¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¤«¤é²¿¤Ë¤â¥À¥á¡¼¥¸Í¿¤¨¤é¤ì¤Ê¤«¤Ã¤¿¤è¡¢¤È¤¤¤¦¤³¤È¤Ç¤³¤³¤Ç½èÍý¤ò½ª¤ï¤ê¤Þ¤¹¡£¼ÂºÝ¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤Ï¥×¥ì¥¤¥ä¡¼¤Ç¤Ê¤¯¤È¤âÊɤʤɤËÅö¤¿¤ì¤Ð¥·¥ã¥­¥·¥ã¥­²»¤¬¤·¤Þ¤¹¤¬¡¢¥µ¡¼¥Ð¡¼Â¦¤Ç¤Ï¤³¤Î¤è¤¦¤Ê½èÍý¤Ï°ìÀÚ¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤¬¤³¤³¤Ç¤ï¤«¤ê¤Þ¤¹¤Í¡£

	traceEnt = &g_entities[ tr.entityNum ];

	if(!(traceEnt->takedamage))
		return;

¤³¤³¤Ç¤ÏÅö¤¿¤Ã¤¿¤â¤Î¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤¦¤ë¤â¤Î¤«¤É¤¦¤«¤òȽÄꤷ¤Æ¤¤¤Þ¤¹¡£¤½¤¦¤Ç¤Ê¤¤¤Ê¤é¤³¤³¤Ç½èÍý¤ò½ª¤ï¤ê¤Þ¤¹¡£

	damage = G_GetWeaponDamage(ent->s.weapon); // JPW		// default knife damage for frontal attacks

	if( ent->client->sess.playerType == PC_COVERTOPS )
		damage *= 2;	// Watch it - you could hurt someone with that thing!

̵»ö¥Ê¥¤¥Õ¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤¦¤ë¤â¤Î¤ËÅö¤¿¤Ã¤¿¤ÈȽÄꤵ¤ì¤ë¤È¡¢¤¤¤è¤¤¤è¥À¥á¡¼¥¸Î̤η׻»¤Ë¤Ê¤ê¤Þ¤¹¡£ºÇ½é¤Î¹Ô¤ËG_GetWeaponDamage¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î´Ø¿ô¤ÏÁ°¡¹²ó¤Ë¤Æ¼è¤ê¾å¤²¤Æ¡¢Éð´ï¤Î¼ïÎà¤Ë±þ¤¸¤Æ¥À¥á¡¼¥¸ÃͤòÊÖ¤¹´Ø¿ô¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤·¤¿¡£¤Ç¤¹¤«¤édamage¤Ë¤Ï¥Ê¥¤¥Õ¤Îɸ½à¥À¥á¡¼¥¸¤Ç¤¢¤ë10¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£

¼¡¤Îif¤Î¾ò·ï¤¬¡¢¹¶·â¼Ô¤¬CVOPS¤Ç¤¢¤ë¤«¤ò³Îǧ¤·¤Æ¤¤¤Þ¤¹¡£¤â¤·¤½¤¦¤Ê¤é¡¢¥À¥á¡¼¥¸¤¬ÆóÇܤˤ¹¤ë½èÍý¤ò¤·¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤êCVOPS¤Î¥Ê¥¤¥Õ¤Ï20¥À¥á¡¼¥¸¤Ç¤¹¡£

	if(traceEnt->client) 
	{
		AngleVectors (ent->client->ps.viewangles,		pforward, NULL, NULL);
		AngleVectors (traceEnt->client->ps.viewangles,	eforward, NULL, NULL);

		if( DotProduct( eforward, pforward ) > 0.6f )		// from behind(-ish)
		{
			damage = 100;	// enough to drop a 'normal' (100 health) human with one jab
			mod = MOD_KNIFE;

			if ( ent->client->sess.skill[SK_MILITARY_INTELLIGENCE_AND_SCOPED_WEAPONS] >= 4 )
				damage = traceEnt->health;

		}
	}

	G_Damage( traceEnt, ent, ent, vec3_origin, tr.endpos, (damage + rand()%5), 0, mod);
}

ºÇ¸å¤ÎÉôʬ¤ò¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£¤³¤³¤¬°ìÈÖÌÌÇò¤¤¤È¤³¤í¤Ç¤¹¡£¤Þ¤º»Ï¤á¤Îif¤Ç¡¢Åö¤¿¤Ã¤¿Áê¼ê¤¬¥×¥ì¥¤¥ä¡¼(¿Í)¤Ç¤¢¤ë¤«¤ò³Îǧ¤·¤Æ¤¤¤Þ¤¹¡£¤â¤·¤½¤¦¤Ê¤é¡¢¼«Ê¬¤ÈÁê¼ê¤Î»ëÀþÊý¸þ³Ñ¤ò¥Ù¥¯¥È¥ë²½¤·¡¢ÆâÀѤò¸«¤Þ¤¹¡£¥Ù¥¯¥È¥ëÆâÀѤÎÃͤϡ¢¥Ù¥¯¥È¥ë¤Î¸þ¤­¤¬¶á¤¤¤Û¤ÉÂ礭¤ÊÀµ¡¢¤Þ¤¿Ä¾³Ñ¤Î»þ¤Ï0¡¢È¿Âиþ¤­¤Ç¤ÏÉé¤Ë¤Ê¤ê¤Þ¤¹¡£º£ÆâÀѤò¼è¤Ã¤¿2¥Ù¥¯¥È¥ë¤ÏÀµµ¬²½¥Ù¥¯¥È¥ë¤Ç¤¹¤«¤é¡¢Â礭¤µ¤Ï1¤Ê¤Î¤Ç¤³¤ÎÆâÀѤÎÃÍ°è¤Ï-1¡Á1¤È¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÆâÀѤ¬1¤Ë¶á¤¤¤Û¤É¸þ¤­¤¬Â·¤Ã¤Æ¤¤¤ë¡¢¤Ä¤Þ¤ê¤Ï¹¶·â¼Ô¤¬Áê¼ê¤ÎÇظ夫¤é¹¶·â¤·¤Æ¤¤¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡£

ÆâÀѤ¬0.6°Ê¾å(³ÑÅ٤ˤ·¤ÆÌó¡Þ30ÅÙ°ÊÆâ)¤Î¾ì¹ç¡¢°Ê²¼¤Î½èÍý¤ò¤·¤Æ¤¤¤Þ¤¹¡£¤Þ¤º¥À¥á¡¼¥¸¤¬Àè¤Û¤É¤Î10¤Ê¤¤¤·20¤«¤é¡¢100¤ËÀßÄꤷľ¤µ¤ì¤Þ¤¹¡£¤Û¤Ü¨»à¤Ç¤¹¡£¤µ¤é¤Ë¥×¥ì¥¤¥ä¡¼¤ÎCVOPS¥¹¥­¥ë¤¬4°Ê¾å¤Î»þ¡¢¥À¥á¡¼¥¸¤¬Áê¼ê¤Î¥Ø¥ë¥¹¤½¤Î¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤¦¤Ç¤¹¡¢¤É¤ó¤ÊÁê¼ê¤Ç¤â¨»à¤Ç¤¹¡£

ºÇ¸å¤Ëentity¤Ø¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¥Ê¥¤¥Õ¹¶·â½èÍý¤Ï½ª¤ï¤ê¤Þ¤¹¡£

¤Þ¤È¤á

º£²ó¤Ï¥Ê¥¤¥Õ¤Î¹¶·â½èÍý¤ò¸«¤Þ¤·¤¿¡£¤½¤·¤Æ¥Ù¥¯¥È¥ë¤Î´ðËÜŪ¤Ê·×»»¤È°·¤¤Êý¡¢¤Þ¤¿ÆâÀѤÎÀ­¼Á¤Ê¤É¤â³Îǧ¤·¤Þ¤·¤¿¡£¤ß¤Ê¤µ¤óÃæ³Ø¡¦¹â¹»¤Ê¤É¤Ç¿ô³Ø¤ò³Ø¤Ó¡¢¡Ö°ìÂΤ³¤ó¤Ê¤Î¤É¤³¤Ç»È¤¦¤ó¤À¡×¤Èµ¿Ìä¤Ë»×¤ï¤ì¤Æ¤¤¤ëÊý¤â¤¤¤é¤Ã¤·¤ã¤Ã¤¿¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤·¤«¤·¡¢¿ô³Ø¤È¤Ï¤³¤ìñÂΤǤϰÕÌ£¤Î¤Ê¤¤¤â¤Î¤Ç¤¹¡£¥É¥é¥¤¥Ð¡¼¤ä¤«¤Ê¤Å¤Á¤È¤¤¤Ã¤¿¤â¤Î¤ÈƱ¤¸¤Ç¡¢¤³¤ì¤òºîÍѤµ¤»¤ÆÊØÍø¤Ê¤â¤Î¤ò¤Ä¤¯¤ëÆ»¶ñ¤Ë²á¤®¤Þ¤»¤ó¡£

¤È¤¤¤¦¤³¤È¤Ç¡¢¤³¤ì¤«¤éMODºî¤ê¤ò¹Í¤¨¤Æ¤¤¤ëÊý¤Ï¡¢À§Èó¿ô³Ø(¹â¹»À¸¤¢¤¿¤ê¤Î»°³Ñ´Ø¿ô¤ä¥Ù¥¯¥È¥ë¤òÃæ¿´¤Ë)¤ÎÉü½¬¤ò¤·¤Æ¤ß¤Æ¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«¡©

Åê¹Æ¼Ô ikanatto : 06:28 PM | ¥³¥á¥ó¥È (27232)

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡Âè»°²ó

Á°²ó¤Î¤ª¤µ¤é¤¤¤Èº£²ó¤Î¤Í¤é¤¤

ÂèÆó²ó¤Ç¤ÏÉð´ïÀ­Ç½¤Ç¤¢¤ë¥À¥á¡¼¥¸¤È»¶ÃÆÀ­¤Î¥Ç¡¼¥¿ÄêµÁ¤ò¸«¤Þ¤·¤¿¡£¥½¡¼¥¹¥³¡¼¥ÉÃæ¤Ë¤Ï¤³¤Î¤è¤¦¤ËÄê¿ô¥Ç¡¼¥¿¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤Ç¤­¤Þ¤·¤¿¡£º£²ó¤ÏÄê¿ôÄêµÁ¤Ç¤Ï¤Ê¤¯¡¢¼ÂºÝ¤Ë¤¢¤ë¹ÔÆ°¤¬¼è¤é¤ì¤¿¤È¤­¤É¤Î¤è¤¦¤Ê½èÍý¤ò¤µ¤ì¤ë¤«¡¢¤È¤¤¤Ã¤¿¥Õ¥í¡¼¤Î°ì¤Ä¤ò¸«¤Æ¤¤¤­¤Þ¤¹¡£¤«¤Ê¤êËܳÊŪ¤Ê¥³¡¼¥É¤Ç¤¹¤Î¤Ç¡¢C¤Ë´·¤ì¤Æ¤¤¤Ê¤¤Êý¤ÏC¸À¸ì¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼ê¸µ¤Ë¤ª¤¤¤Æ¤ª¤¯¤ÈÍý²ò¤¬¥¹¥à¡¼¥º¤À¤È»×¤¤¤Þ¤¹¡£

Ŵˤ¶Ì¤Îµ¤»ý¤Á

Ê̤˥«¥Á¹þ¤ß¥ä¥¯¥¶¤Îµ¤»ý¤Á¤ò¿ä¤·Î̤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£½Æ¸ý¤«¤éȯ¼Í¤µ¤ì¤¿±ôÃƤ¬¡¢¤É¤Î¤è¤¦¤Ë½èÍý¤µ¤ìÊɤʤê¿Í¤Ê¤ê¤ËÌ¿Ã椹¤ë¤Î¤«¡¢¤Ë¤Ä¤¤¤Æ¸«¤Æ¤¤¤­¤Þ¤¹¡£¤³¤ì¤òÍý²ò¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¸úΨŪ¤Ê¥Þ¥·¥ó¥¬¥ó¥é¥¤¥Õ¤ò¥¨¥ó¥¸¥ç¥¤¤¹¤ë¤Î¤¬ÌÜŪ¤Ç¤¹¡£

¤³¤Î½èÍý¤Ë´Ø¤¹¤ëµ­½Ò¤Ï¡¢Æ±¤¸¤¯g_weapon.c¤Ë¤¢¤ê¤Þ¤¹¡£3090¹Ô°Ê¹ß¤Ç¤¹¡£¤³¤ÎÃæ¤Ë¤ÏÉð´ï°ìÈ̤νèÍý¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¾Ò²ð¤·¤¿¤â¤Î°Ê³°¤Ë¤â¿§¡¹¤Èȯ¸«¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£À§Èó¥Ö¥é¥¦¥¸¥ó¥°¤·¤Æ¤¯¤À¤µ¤¤¡£¤Ç¤ÏÁ᮸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

qboolean Bullet_Fire_Extended(gentity_t *source, gentity_t *attacker, vec3_t start, vec3_t end, float spread, int damage, qboolean distance_falloff) {
´Ø¿ôÄêµÁÉôʬ¤Ç¤¹¡£Ìá¤êÃͤÏtrue(1)¤«false(0)¤Ç¤¹¤Í¡£²¿¤¬°ú¿ô¤È¤·¤ÆÍ׵ᤵ¤ì¤Æ¤¤¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£gentity_t¤È¤ÏŽ¥Ž¥Ž¥¾Ü¤·¤¤ÀâÌÀ¤Ï¾Êά¤·¤Þ¤¹¤¬¡¢¡Ö¥²¡¼¥àÃæ¤Î¤¢¤é¤æ¤ë¤â¤Î¡×¤òÄêµÁ¤¹¤ë¹½Â¤ÂΤǤ¹¡£¤³¤ì¤òÄêµÁ¤µ¤ì¤ë¤È¡¢¡Ö¥²¡¼¥àÃæ¤Î¤â¤Î¡×¤È¤·¤ÆÍÍ¡¹¤Ê¥Ç¡¼¥¿¤ò»ý¤Ä¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£source¤È¤Ï¤Ê¤ó¤Ç¤·¤ç¤¦¤«¤Í¡£ÃƤòȯÀ¸¤µ¤»¤¿¤â¤Î¤È¹Í¤¨¤ë¤Î¤¬¼«Á³¤Ç¤·¤ç¤¦¤«¡£attacker¤Ï¹¶·â¼Ô¤½¤Î¤â¤Î¤Ç¤¹¤Í¡£start¤Ï¥Ù¥¯¥È¥ë¤Ç¤¹¡£¶²¤é¤¯ÃƤ¬È¯¼Í¤µ¤ì¤¿°ÌÃ֤Ǥ·¤ç¤¦¡£end¤ÏÃƤ¬»ß¤Þ¤ë°ÌÃÖ¡¢spread¤Ï»¶ÃÆÀ­¡¢damage¤¬¥À¥á¡¼¥¸¡¢distance_falloff¤Ïµ÷Î¥¤Ë¤è¤Ã¤Æ¥À¥á¡¼¥¸¤¬¸º¾¯¤¹¤ë¤«¤É¤¦¤«¤Ë¤Ä¤¤¤Æ¤Î¥Õ¥é¥°¤Ç¤·¤ç¤¦¡£

¤µ¡¼¤Ã¤ÈÆɤó¤Ç¤¤¤¯¤È¡¢¤ï¤±¤Î¤ï¤«¤é¤Ê¤¤´Ø¿ô¤¬¤¤¤í¤¤¤í¤È¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î°ÕÌ£¤ò¤µ¤°¤Ã¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

	G_HistoricalTrace(source, &tr, start, NULL, NULL, end, source->s.number, MASK_SHOT);

	// bullet debugging using Q3A's railtrail
	if(g_debugBullets.integer & 1) {
		tent = G_TempEntity( start, EV_RAILTRAIL );
		VectorCopy(tr.endpos, tent->s.origin2);
		tent->s.otherEntityNum2 = attacker->s.number;
	}

	RubbleFlagCheck (attacker, tr);

¤Þ¤º¡¢G_HistoricalTrace¤Ë¤Ä¤¤¤Æ¡£Historical¤Ï¼­½ñŪ¤Ê°ÕÌ£¤Ï¡ÖÎò»ËŪ¤Ê¡×¡¢¸å¤Ë³¤¯Trace¡ÖÄÉÀספǡÖÎò»ËŪÄÉÀסס©°ìÂΤʤó¤Ê¤Î¤Ç¤·¤ç¤¦¤«¤Í¡£¤³¤¦¤¤¤¦¾ì¹ç¤ÏÄêµÁÉôʬ¤ò¸«¤ë¤Ë¸Â¤ê¤Þ¤¹¡£¤³¤³¤Ç¤Ï¾ÜºÙ¤ò¾Êά¤·¤Þ¤¹¤¬¡¢¥×¥ì¥¤¥ä¡¼¤È¥µ¡¼¥Ð¡¼´Ö¤Ç¤Î¥Ç¡¼¥¿¤ä¤ê¼è¤ê¤ÎºÝ¤ËÀ¸¤¸¤ë»þ´ÖŪ¤º¤ì¡½¤Ä¤Þ¤ê¥¿¥¤¥à¥é¥°¤ò¹Íθ¤·¤¿¾å¤Ç¹Ô¤¦¾×ÆÍȽÃÇ´Ø¿ô¤Ç¤¹¡£¤Ï¤ä¤¤Ï䬳«»ÏºÂɸ¤È½ªÅÀºÂɸ¤ò»ØÄꤷ¤Æ¡¢¤½¤Î´Ö¤Ë¤Ö¤Ä¤«¤Ã¤¿¾ã³²Êª¤Î°ÌÃÖtr¤Ë³ÊǼ¤¹¤ë´Ø¿ô¤Ç¤¹¡£¥¢¥ó¥Á¥é¥°µ¡Ç½¤Ï¤³¤Î¤¢¤¿¤ê¤Ë¸ú¤¤¤Æ¤­¤Þ¤¹¡£µ¤¤Ë¤Ê¤ëÊý¤Ï¡¢g_antilag.c¤Î202¹Ô°Ê¹ß¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£

¼¡¤ËRubbleFlagCheck¤Ç¤¹¤¬¡¢¤³¤ì¤Ï2935¹Ô°Ê¹ß¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Á¤ç¤Ã¤È¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£

void RubbleFlagCheck (gentity_t *ent, trace_t tr)
{
	qboolean	is_valid = qfalse;
	int			type = 0;

	// (SA) moving client-side

	return;

°ìÉôÊѹ¹¤·¤Æ¤¢¤ê¤Þ¤¹¡£¤È¤³¤í¤Ç´Ø¿ôÄêµÁ4¹ÔÌܤˤ·¤Æ¤¤¤­¤Ê¤êreturn¤·¤Æ¤¤¤Þ¤¹¡£¤Ç¤¹¤«¤é¼Â¼ÁŪ¤Ë¤³¤Î´Ø¿ô¤Ï²¿¤â¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¼¡¤Î¥³¥á¥ó¥È¤Ë¡¢¡Öcgame¤Ë°Ü¤·¤¿¤è¡×¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ê¤¼¤Ç¤·¤ç¤¦¤«¡£¤½¤ì¤Ï¸å¤ò¸«¤ë¤È¤ï¤«¤ê¤Þ¤¹¡£

	if (tr.surfaceFlags & SURF_RUBBLE || tr.surfaceFlags & SURF_GRAVEL)
	{
		is_valid = qtrue;
		type = 4;
	}
	else if (tr.surfaceFlags & SURF_METAL)
	{
//		type = 2;
	}
	else if (tr.surfaceFlags & SURF_WOOD)
	{
		is_valid = qtrue;
		type = 1;
	}
	
	if (is_valid && ent->client && ( ent->client->ps.persistant[PERS_HWEAPON_USE] ) )
	{
		if (rand()%100 > 75)
		{
			gentity_t	*sfx;
			vec3_t		start;
			vec3_t		dir;
			sfx = G_Spawn ();
			sfx->s.density = type; 
			VectorCopy (tr.endpos, start);
			VectorCopy (muzzleTrace, dir);
			VectorNegate (dir, dir);
			G_SetOrigin (sfx, start); 
			G_SetAngle (sfx, dir);
			G_AddEvent( sfx, EV_SHARD, DirToByte( dir ));
			sfx->think = G_FreeEntity;
			sfx->nextthink = level.time + 1000;
			sfx->s.frame = 3 + (rand()%3) ;
			trap_LinkEntity (sfx);

		}
	}
}

¤µ¡¼¤Ã¤Èį¤á¤Þ¤¹¤È¡¢¤Ê¤Ë¤ä¤éifʸ¤¬¤¿¤¯¤µ¤ó¤¢¤Ã¤Æ¡¢¤½¤ì¤¾¤ì¤Î¾ò·ï¤¬surfaceFlags¤ÈÄê¿ô¤ÎÈæ³Ó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÃƤÎÅö¤¿¤Ã¤¿Éôʬ¤Îºà¼Á¤òÄ´¤Ù¤Æ¡¢¤½¤ì¤Ë±þ¤¸¤Æº½±ì¤ò¾å¤²¤¿¤ê¡¢¿å¤·¤Ö¤­¤ò½Ð¤·¤¿¤ê¤¹¤ë´Ø¿ô¤Î¤è¤¦¤Ç¤¹¡£¸«¤¿Ìܤò½èÍý¤·¤Ê¤¤¥µ¡¼¥Ð¡¼¥µ¥¤¥É¤Ë¤³¤Î¤è¤¦¤Ê½èÍý¤ÏɬÍפʤ¤¤Ç¤¹¤è¤Í¡£¤À¤«¤éÉéô·Ú¸º²½¤Î°Ù¤Ëcgame¤Ø°Ü¤µ¤ì¤¿¤Î¤Ç¤·¤ç¤¦¡£

Ïäò¸µ¤ËÌᤷ¤Þ¤¹¡£

	traceEnt = &g_entities[ tr.entityNum ];

	EmitterCheck(traceEnt, attacker, &tr);

	// snap the endpos to integers, but nudged towards the line
	SnapVectorTowards( tr.endpos, start );

EmitterCheck¤âƱ¤¸¤¯º½Ô¼È¯À¸¤Ê¤É¤Î½èÍý¤ò¤·¤Æ¤¤¤ë¤â¤Î¤È»×¤¤¤Þ¤¹¡£

¤µ¤ÆÃíÌܤÆÍߤ·¤¤¤Î¤¬¼¡¤Îif¹½Ê¸¤Ç¤¹¡£

	if( distance_falloff ) {
		vec_t dist;
		vec3_t shotvec;

		//VectorSubtract( tr.endpos, start, shotvec );
		VectorSubtract( tr.endpos, muzzleTrace, shotvec );		
		dist = VectorLengthSquared( shotvec );

		if(  dist > Square(1500.f) ) {
			reducedDamage = qtrue;

			if( dist > Square(2500.f) ) {
				damage *= 0.5f;
			} else {
				float scale = 1.f - 0.5f * (Square(1000.f) / (dist - Square(1000.f)));

				damage *= scale;
			}
		}
	}

if¤Î¾ò·ï¤¬distance_falloff¤Ç¤¹¤«¤é¡¢µ÷Î¥¤Ë¤è¤ë¥À¥á¡¼¥¸¸º¾¯¤ò¤³¤³¤Ç½èÍý¤·¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£¶ñÂÎŪ¤Ë¥À¥á¡¼¥¸¤¬¸º¾¯¤¹¤ë¤Î¤Ï¡¢Ä¾Àþµ÷Î¥¤Ë¤·¤Æ1500°Ê¾å¤Ç¤¹¡£¿Í´Ö¤Î¹â¤µ¤¬Ìó80¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤«¤é¡¢¤³¤Î¿ôÃͤÎñ°Ì¤Ï¥¤¥ó¥Á¤È¸«¤ë¤Î¤¬Å¬Åö¤Ç¤·¤ç¤¦¡£¤È¤¹¤ë¤È¡¢1500¤Ï¤ª¤è¤½35¥á¡¼¥È¥ë¤Û¤É¤ËÁêÅö¤·¤Þ¤¹¡£2500°Ê¾åÎ¥¤ì¤ë¤È¡¢¥À¥á¡¼¥¸¤Ï´°Á´¤ËȾʬ¤Ë¤Ê¤ê¤Þ¤¹¡£1500¡Á2500¤Î´Ö¤Ç¤Ï¡¢Ì¯¤Ê·×»»¤¬¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ë±è¤¦¤È¡¢1550¤è¤ê¤â2450¤Î¥À¥á¡¼¥¸¤ÎÊý¤¬Â礭¤¤¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£Ì¯¤Ç¤¹¡£ET¤ÎÆæ¤Ç¤¹¡£

³¤¤¤Æ¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

	// send bullet impact
	if ( traceEnt->takedamage && traceEnt->client /*&& !(traceEnt->flags & FL_DEFENSE_GUARD)*/ ) {
		tent = G_TempEntity( tr.endpos, EV_BULLET_HIT_FLESH );
		tent->s.eventParm = traceEnt->s.number;

		if(AccuracyHit( traceEnt, attacker )) {
			hitClient = qtrue;
		}

	} else {
		trace_t tr2;
		// Ridah, bullet impact should reflect off surface
		vec3_t	reflect;
		float	dot;

		tent = G_TempEntity( tr.endpos, EV_BULLET_HIT_WALL );

		G_HistoricalTrace(source, &tr2, start, NULL, NULL, end, source->s.number, MASK_WATER | MASK_SHOT);

		if((tr.entityNum != tr2.entityNum && tr2.fraction != 1)) {
			vec3_t v;

			VectorSubtract( tr.endpos, start, v );

			tent->s.origin2[0] = (8192 * tr2.fraction) / VectorLength( v );
		} else {
			tent->s.origin2[0] = 0;
		}

		dot = DotProduct( forward, tr.plane.normal );
		VectorMA( forward, -2*dot, tr.plane.normal, reflect );
		VectorNormalize( reflect );

		tent->s.eventParm = DirToByte( reflect );
		tent->s.otherEntityNum2 = ENTITYNUM_NONE;
	}

¥Ç¥Ð¥Ã¥¯Éôʬ¤Ï¾Êά¤·¤Þ¤·¤¿¡£ºÇ½é¤Îifʸ¤Ï²¿¤ò¤ß¤Æ¤¤¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£traceEnt¤È¤ÏÃƤΤ֤Ĥ«¤Ã¤¿¤â¤Î¤ò»Ø¤·¤Æ¤¤¤Æ¡¢¤³¤ì¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¤â¤Î¤«¤Ä¥¯¥é¥¤¥¢¥ó¥È(¤Ä¤Þ¤ê¥×¥ì¥¤¥ä¡¼)¤Ç¤¢¤ë¤«¤ò¸«¤Æ¤¤¤Þ¤¹¡£ÁᤤÏ䬿ͤËÅö¤¿¤Ã¤¿¤«¤É¤¦¤«¤Ç¤¹¡£Åö¤¿¤Ã¤Æ¤¤¤¿¾ì¹ç¡¢AccuracyHit¤Ë¤è¤Ã¤ÆËÜÅö¤Ë¥¯¥é¥¢¥ó¥È¤ËÅö¤¿¤Ã¤¿¤Î¤«¤É¤¦¤«¡¢¹¶·â¼Ô¤Ï¸ºß¤¹¤ë¤Î¤«¤É¤¦¤«¤Ë¤Ä¤¤¤ÆÀµ³Î¤Ë¥Á¥§¥Ã¥¯¤·¡¢¤³¤ì¤¬OK¤Ê¤é¤Ð¥¯¥é¥¤¥¢¥ó¥È¥Ò¥Ã¥È¥Õ¥é¥°¤¬À®Î©¤·¤Þ¤¹(hitClient = qtrue)¡£

¤½¤ì°Ê³°¤Î¾ì¹ç¡¢¤Ä¤Þ¤ê¥¯¥é¥¤¥¢¥ó¥È°Ê³°¤ÎÊɤä¿åÌ̤ʤɤËÅö¤¿¤Ã¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¸«¤ë¤È¡¢ºÆ¤Ó¾×ÆÍ°ÌÃÖ¤òõ¤·¤Æ¤¤¤Þ¤¹¡£¤¿¤À¤·ºÇ½é¤È°ã¤¦¤Î¤Ï¡¢¿åÌ̤ËÅö¤¿¤Ã¤Æ¤â¤½¤³¤ò¾×ÆÍÅÀ¤È¤·¤Ê¤¤¾ò·ï²¼¤Ç¤¹¡£¤½¤·¤ÆÁ°²ó¤Èº£¤Î¾×ÆÍÅÀ¤òÈæ³Ó¤·¤Æ¡¢Æ±¤¸¤è¤¦¤Ê¤é´ÓÄ̤⤷¤¯¤ÏÈ¿¼Í¤È¤¤¤¦°·¤¤¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£È¿¼Í¸å¤ÎÈôµ÷Î¥¤Ê¤É¤ÏË໤ÎϤÈÈô¹Ôµ÷Î¥¤Ê¤É¤Ë°Í¸¤·¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£

¤Ç¤ÏºÇ¸å¤ÎÉôʬ¤ò¸«¤Æ¸«¤Þ¤·¤ç¤¦¡£

if ( traceEnt->takedamage ) {
		G_Damage( traceEnt, attacker, attacker, forward, tr.endpos, damage, ( distance_falloff ? DAMAGE_DISTANCEFALLOFF : 0 ), GetAmmoTableData(attacker->s.weapon)->mod );

		// allow bullets to "pass through" func_explosives if they break by taking another simultanious shot
		if( traceEnt->s.eType == ET_EXPLOSIVE ) {
			if(traceEnt->health <= damage) {
				// start new bullet at position this hit the bmodel and continue to the end position (ignoring shot-through bmodel in next trace)
				// spread = 0 as this is an extension of an already spread shot
				return Bullet_Fire_Extended(traceEnt, attacker, tr.endpos, end, 0, damage, distance_falloff);
			}
		}
	}
	return hitClient;
}

ºÇ½é¤Îif¾ò·ï¤¬traceEnt->takedamage¤Ç¤¹¤«¤é¡¢¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¤â¤Î¤ËÅö¤¿¤Ã¤¿¾ì¹ç¤Î½èÍý¤Ç¤¹¡£Ä¾¸å¤ÎG_Damage´Ø¿ô¤Ç¼ÂºÝ¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤Ø¥À¥á¡¼¥¸¤òÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£

¼¡¤Îif¤¬¤Ê¤«¤Ê¤«ÌÌÇò¤¤¤Ç¤¹¡£Åö¤Æ¤¿¤â¤Î¤¬Ç˲õ¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤«¤Ä¤½¤Î¥Ø¥ë¥¹¤¬¥À¥á¡¼¥¸¤ò²¼²ó¤Ã¤¿¡¢¤Ä¤Þ¤êÇ˲õ¤µ¤ì¤¿¤È¤­¡¢ºÆ¤ÓBullet_Fire_Extended¤¬¥³¡¼¥ë¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Áë¤Ê¤É¤òÇ˲õ¤·¤¿ÃƴݤϴÓÄ̤·¤ÆÇظå¤ÎŨ¤ò½±¤¦¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£Éݤ¤¤Ç¤¹¤Í¡£

ºÇ¸å¤ÎºÇ¸å¤Ç¥¯¥é¥¢¥ó¥È¤Ë¥Ò¥Ã¥È¤·¤¿¤«¤É¤¦¤«¤òÌá¤êÃͤȤ·¤Æ¥ê¥¿¡¼¥ó¤·¡¢¤³¤Î´Ø¿ô¤Ï½ªÎ»¤Ç¤¹¡£

¤Þ¤È¤á

Èè¤ì¤Þ¤·¤¿¡£¤¨¤¨¡¢»ä¤¬¤Ç¤¹¡£¤È¤Æ¤âŤ¤¤Ç¤¹¤è¤Í¡¢¥½¡¼¥¹¥³¡¼¥É¤Ã¤Æ¡£¤·¤«¤â¤³¤Î¤è¤¦¤Ê¤â¤Î¤¬²¿Ëü¹Ô¤â¤¢¤ë¤È»×¤¦¤È¡¢¥×¥í¥°¥é¥Þ¡¼¤È¤¤¤¦¤Î¤ÏÀ¨¤Þ¤¸¤¤¿¦¶È¤Ê¤Î¤À¤Ê¤¡¤È²þ¤á¤Æ´¶¿´¤·¤Þ¤¹¡£

º£²ó¤Ï¥³¡¼¥É¤òÆɤà¤À¤±¤Ç¤·¤¿¤¬¡¢¤ß¤Ê¤µ¤ó¤Ï¤½¤í¤½¤í¡Ö¤¢¤Î¿ôÃͤòÊѤ¨¤¿¤é¤¹¤´¤¤¤³¤È¤Ë¤Ê¤ê¤½¤¦¤À¡×¤È¤«¡Ö¤¢¤½¤³¤Ç¤³¤Î´Ø¿ôÆþ¤ì¤¿¤é¤É¤¦¤Ê¤ë¤ó¤À¡×¤È¤«¡¢¤½¤í¤½¤í»×¤¤»Ï¤á¤Æ¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£¤½¤¦¤Ç¤¹¡¢¤½¤Î¡Ö»×¤¤¤Ä¤­¡×¤³¤½¤¬MODºî¤ê¤Î»Ï¤Þ¤ê¤Ç¤¹¡£Ã¯¤â¤¬Æ±¤¸»Ï¤Þ¤ê¤Ç¤¹¡£»ä¤Î¾ì¹ç¡¢¥½¡¼¥¹¥³¡¼¥É¤¬»Ï¤Þ¤ê¤Ç¤Ï¤Ê¤¯¥â¥Ç¥ê¥ó¥°¤«¤é¤Ç¤·¤¿¤¬¡¢¡Ö¤³¤¦¤À¤Ã¤¿¤é¤â¤Ã¤ÈÌÌÇò¤¤¤Î¤Ë¡×¤È»×¤¦µ¤»ý¤Á¤ÏƱ¤¸¤Ç¤¹¡£¤¢¤È¤Ï¡¢¼ÂºÝ¤Ë¤ä¤ë¤«¤É¤¦¤«¡¢¤³¤Î°ìÅÀ¤Ë¿Ô¤­¤Þ¤¹¡£ÆüËܿͤϳ¤³°¤Î¿Í¤ËÈæ¤Ù¤Æ¤«¤Ê¤ê¾Ã¶ËŪÉôʬ¤¬¶¯¤¤¤Èǧ¤á¤¶¤ë¤òÆÀ¤Þ¤»¤ó¡£¤·¤«¤·¡¢°ìÅÙËܵ¤¤ò½Ð¤¹¤È»ý¤ÁÁ°¤Î¶ÐÊÙ¤µ¤È»Å»ö¤ÎºÙ¤ä¤«¤µ¤Ë¤ª¤¤¤Æ¾¹ṉ̃¤ÎÄÉ¿ï¤òµö¤µ¤Ê¤¤Äø¤ÎǽÎϤò»ý¤Ã¤Æ¤¤¤ë¤È»ä¤Ï³Î¿®¤·¤Æ¤¤¤Þ¤¹¡£¤Ç¤¹¤«¤é¡¢³§¤µ¤ó¤ËÀ§ÈóËܹøÆþ¤ì¤ÆMODºî¤ê¤ò¤·¤Æ¤â¤é¤¤¤¿¤¤¤Î¤Ç¡¢Æ³Æþ¤È¤·¤Æº£¤³¤Î¾Ò²ð¤ò¹Ô¤Ã¤Æ¤¤¤ë¼¡Âè¤Ç¤¹¡£¤É¤¦¤«¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:16 PM | ¥³¥á¥ó¥È (53)

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡ÂèÆó²ó

Reading the Source Code of W:ET #2

Á°²ó¤Î¤ª¤µ¤é¤¤¤Èº£²ó¤Î¤Í¤é¤¤

Á°²ó¤Þ¤Ç¤Ç¥½¡¼¥¹¥³¡¼¥É¤ò¡ÖÆɤà¡×½àÈ÷¤¬½ÐÍè¤Þ¤·¤¿¡£²¿¤ò¼ÂºÝ¤ËÆɤफ¤Ï¡¢µ¤Ê¬¤È¥³¡¼¥É¤Î²ÄÆÉÀ­¼¡Âè¤Ç¤¹¤¬¡¢º£²ó¤ÏÉð´ï¥Ç¡¼¥¿¤òÃæ¿´¤Ë¼ÂºÝ¸«¤Æ¤¤¤³¤¦¤È¤¤¤¦¤ªÏäǤ¹¡£Éð´ï¤Ê¤ó¤«¶½Ì£¤Ê¤¤¤Ã¡¢¤È¤¤¤¦¤ªÊý¤Ïº£²ó¤Î¤ªÏäϤ¹¤ÃÈô¤Ð¤·¤Æ¤¯¤À¤µ¤¤¡£

Éð´ï¥À¥á¡¼¥¸

¤È¤ê¤¢¤¨¤º¡¢³§¤µ¤ó¤¬¶½Ì£¤¢¤ëÉôʬ¤È¤¤¤Ã¤¿¤é¤³¤¦¤¤¤¦¤È¤³¤í¤Ê¤ó¤Ç¤·¤ç¤¦¤«¡£Á᮸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£¤Ç¤â¤É¤³¤ò¸«¤ì¤Ð¤è¤¤¤Î¤«¡½¡£ºÇ½é¤Ï¤Þ¤º¤³¤ÎÌäÂê¤ò²ò·è¤·¤Æ¤¤¤«¤Ê¤±¤ì¤Ð¤¤¤±¤Þ¤»¤ó¡£

¥½¡¼¥¹¥³¡¼¥É¤ò¸«¤ë¾å¤Ç°ìÈֺǽé¤Î¡¢¤«¤ÄÆñ²ò¤ÊÌäÂ꤬¡¢¡Ö¤É¤³¤Ë¤É¤ó¤Êµ¡Ç½¤ò»ý¤Ã¤¿¥³¡¼¥É¤¬½ñ¤«¤ì¤Æ¤¤¤ë¤«¤òõ¤·½Ð¤¹¡×¤³¤È¤Ç¤¹¡£¤¿¤À¤Ü¡¼¤Ã¤È¥³¡¼¥É¤òį¤á¤Æ¤¤¤ë¤À¤±¤Ç¤Ï»Ï¤Þ¤ê¤Þ¤»¤ó¡£¹¬¤¤¡¢¥³¡¼¥É¤ÏÌò³ä¤Ë¤è¤Ã¤Æ¥Õ¥¡¥¤¥ë¤ä¥Õ¥©¥ë¥À¤´¤È¤Ë¶èÀÚ¤é¤ì¤Æ¤¤¤Þ¤¹¡£ºÇ½é¤Ï¤³¤Î¥Õ¥¡¥¤¥ë̾¤ò¼ê³Ý¤«¤ê¤Ë³«¤¤¤Æ¸¡º÷¤¹¤ë¤³¤È¤¬Í­¸ú¤Ç¤¹¡£

¤Ç¤ÏÉð´ï´Ø·¸¤Î¾ðÊó¤Ï¤É¤³¤Ë½ñ¤¤¤Æ¤¢¤ë¤«Ä´¤Ù¤Þ¤·¤ç¤¦¡£´ðËÜŪ¤Ë»ä¤¿¤Á¤¬°·¤¦¤Î¤Ï¡¢game¥Õ¥©¥ë¥À¤Î¤â¤Î¤Ç¤¹¡£¤Ê¤¼¤«¤Ï¸å¡¹ÀâÌÀ¤·¤Þ¤¹¤¬¡¢¥²¡¼¥à¤Î´ðËÜŪ¤Ê½èÍý¤Ï¤³¤³¤Ç¹Ô¤ï¤ì¤ë¤¿¤á¡¢¤È¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¥Õ¥©¥ë¥À¤ò³«¤¤¤Æ¡¢Éð´ï¤Ã¤Ý¤¤¥Õ¥¡¥¤¥ë¤òõ¤·¤Æ¤¯¤À¤µ¤¤Ž¥Ž¥Ž¥¡£¤É¤¦¤Ç¤¹¤«¡©g_weapon.c¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó¤«¡©¤Ê¤ó¤À¤«¤³¤ì¤Ã¤Ý¤¤¤Ë¤ª¤¤¤¬¥×¥ó¥×¥ó¤·¤Þ¤¹¤Í¡£Á᮳«¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¤È¤Æ¤âŤ¤¥Æ¥­¥¹¥È¤¬³«¤«¤ì¤¿¤È»×¤¤¤Þ¤¹¡£¤Ç¤Ï¡¢·Ú¤¯Á´ÂΤòį¤á¤Æ¤¯¤À¤µ¤¤¡£ÆɤàɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤ï¤±¤Î¤ï¤«¤é¤Ê¤¤Ê¸»ú¤¬°ìÇÕʤó¤Ç¤ë¤Ê¡¼ÄøÅ٤Ƿ빽¤Ç¤¹¡£¤µ¤Æ¡¢¤½¤ì¤Ç¤ÏÌäÂê¤ÎÉð´ï¤ÎÀ­Ç½¤Ë¤Ä¤¤¤Æ¸ÀµÚ¤·¤Æ¤¤¤ëÉôʬ¤òõ¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£±Ô¤¤¿Í¤Ï¤â¤¦µ¤¤¬¤Ä¤¤¤Æ¤¤¤ë¤«¤È»×¤¤¤Þ¤¹¤¬¡¢2784¹Ô°Ê¹ß¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£G_GetWeaponDamage¤È¤¤¤¦´Ø¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£´Ø¿ô̾¤ò¸«¤ë¤È¡¢ Get Weapon Damage¡¢¤Ä¤Þ¤êÉð´ï¤Î¥À¥á¡¼¥¸¤Ë´Ø¤¹¤ë´Ø¿ô¤Ç¤¢¤ê¡¢Ãæ¿È¤ò¸«¤ì¤ÐÉð´ï¤´¤È¤Î¥À¥á¡¼¥¸¤òÌá¤êÃͤȤ¹¤ë¤â¤Î¤ÈͽÁÛ¤¬¤Ä¤­¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Éð´ï¤Î¥À¥á¡¼¥¸¤Ï¤³¤³¤Î¿ô»ú¤Ë¤è¤Ã¤Æ·è¤Þ¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¹¡£Á᮸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

Line 2884 in g_weapon.c:

int G_GetWeaponDamage( int weapon ) {
		switch (weapon) {
		default:
			return 1;
		case WP_KNIFE: 
			return 10;
		case WP_STEN: 
			return 14;
		case WP_CARBINE:
		case WP_GARAND:
		case WP_KAR98:
		case WP_K43:
			return 34;
		case WP_FG42: 
			return 15;
		case WP_LUGER:
		case WP_SILENCER:
		case WP_AKIMBO_LUGER:
		case WP_AKIMBO_SILENCEDLUGER:
		case WP_COLT:
		case WP_SILENCED_COLT:
		case WP_AKIMBO_COLT:
		case WP_AKIMBO_SILENCEDCOLT: 
		case WP_THOMPSON: 
		case WP_MP40: 
		case WP_MOBILE_MG42: 
		case WP_MOBILE_MG42_SET:
			return 18;
		case WP_FG42SCOPE: 
			return 30;
		case WP_GARAND_SCOPE: 
		case WP_K43_SCOPE: 
			return 50;
		case WP_SMOKE_MARKER: 
			return 140; // just enough to kill somebody standing on it
		case WP_MAPMORTAR: 
		case WP_GRENADE_LAUNCHER: 
		case WP_GRENADE_PINEAPPLE: 
		case WP_GPG40:
		case WP_M7: 
		case WP_LANDMINE: 
		case WP_SATCHEL:
			return 250;
		case WP_TRIPMINE: 
			return 300;
		case WP_PANZERFAUST: 
		case WP_MORTAR_SET: 
		case WP_DYNAMITE: 
			return 400;
	}
}

¥³¡¼¥É¼«ÂΤÏswitch¹½Ê¸¤Ç¹½À®¤µ¤ì¤¿Ã±½ã¤Ê¤â¤Î¤Ç¤¹¡£°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿Éð´ïID¤Ë±þ¤¸¤Æ¥À¥á¡¼¥¸¤òÊÖ¤¹¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£¤Á¤Ê¤ß¤Ë¤³¤³¤Ç»È¤ï¤ì¤Æ¤¤¤ëÉð´ïID¤ÏÊØÍø¤Ç¤¹¡£¤É¤¦ÊØÍø¤Ê¤Î¤«¤Ï¸å¤Ç¾Ò²ð¤·¤Þ¤¹¡£

¤µ¤Æ¡¢¤³¤Î´Ø¿ô¤ò¸«¤ë¤È¥À¥á¡¼¥¸¤¬°ìÌÜÎÆÁ³¤Ç¤¹¡£¥Ê¥¤¥Õ¤Ï10¤Ç¤¹¤«Ž¥Ž¥Ž¥¡¢¤â¤¦¤Á¤ç¤Ã¤È¤¢¤Ã¤Æ¤â¤¤¤¤¤Î¤Ç¤Ï¡£Â¾¥¹¥Æ¥ó¤¬14¡¢¥é¥¤¥Õ¥ë34¡¢SMG¤È¥Ô¥¹¥È¥ë18¤Ê¤É¤ä¡¢¶õÇú´Ì140¡¢¼êÜØÃÆ250¡¢¥Ñ¥ó¥Ä¥¡¡¼400¤Ê¤É¤Ç¤¹¤Í¡£¤Á¤Ê¤ß¤ËÇúȯʪ¤Ï¡Öľ·â¡×¤·¤¿¾ì¹ç¤Î¥À¥á¡¼¥¸¤Ç¤¹¡£¡Öľ·â¡×¤È¤Ï¡¢¥¤¥ó¥Ñ¥¯¥È¤Î½Ö´Ö¤Ëµ÷Î¥¤¬0¤Î¾õÂÖ¤ò»Ø¤·¤Þ¤¹¡£¤³¤ÎÃæ¤Ë¥È¥ê¥Ã¥×¥Þ¥¤¥ó¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¤¬¡¢°ìÂΤʤó¤Ç¤·¤ç¤¦¤Í¡©µ¤¤Ë¤Ê¤ê¤Þ¤»¤ó¤«¡£

ÃƤ붤é¤Ð¤ê¶ñ¹ç

¤Á¤Ê¤ß¤Ë¤³¤Î´Ø¿ô¤Î¼¡¤Ë¤³¤ó¤Ê´Ø¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

Line 2837 in g_weapon.c:

float G_GetWeaponSpread( int weapon ) {
	switch (weapon) {
		case WP_LUGER:
		case WP_SILENCER:
		case WP_AKIMBO_LUGER:
		case WP_AKIMBO_SILENCEDLUGER:
			return 600;
		case WP_COLT:
		case WP_SILENCED_COLT:
		case WP_AKIMBO_COLT:
		case WP_AKIMBO_SILENCEDCOLT:
			return 600;
		case WP_MP40:
		case WP_THOMPSON:
			return 400;
		case WP_STEN:
			return 200;
		case WP_FG42SCOPE:
			return 200;
		case WP_FG42:
			return 500;
		case WP_GARAND:
		case WP_CARBINE:
		case WP_KAR98:
		case WP_K43:
			return 250;
		case WP_GARAND_SCOPE:
		case WP_K43_SCOPE:
			return 700;
		case WP_MOBILE_MG42:
		case WP_MOBILE_MG42_SET:
			return 2500;
	}

	G_Printf( "shouldn't ever get here (weapon %d)\n", weapon );
	// jpw
	return 0;	// shouldn't get here
}

¹½Ê¸¤ÏÀèÄø¤Î´Ø¿ô¤È¤Û¤È¤ó¤ÉƱ¤¸¤Ç¤¹¤¬¡¢¤³¤Á¤é¤Ï²¿¤òÄêµÁ¤·¤Æ¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£´Ø¿ô̾¤ò¸«¤ë¤È¡¢Get Weapon Spread(¹­¤¬¤ê)¡¢ÃƤ붤é¤Ð¤ê¶ñ¹ç¤òÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤È»×¤ï¤ì¤Þ¤¹¡£¶ñÂÎŪ¤Ë¸«¤ë¤È¡¢¥¹¥Æ¥ó¤¬200¤ÇºÇ¾®¤Ç¤¹¤«¤é¡¢¾®¤µ¤¤Êý¤¬»¶¤é¤Ð¤ê¤Ï¾¯¤Ê¤¤¤â¤Î¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£¤½¤¦¤¹¤ë¤È¡¢¥¹¥Æ¥ó¡ã¥é¥¤¥Õ¥ë¡ãSMG¡ãFG42¡ã¥Ô¥¹¥È¥ë¡ãÁÀ·â½Æ(ÁÀ·â¥â¡¼¥É¤Ç¤Ê¤¤)¡ãΩ¤ÁMG¤Î½ç¤Ç»¶ÃÆÀ­¤¬Îɤ¤¤è¤¦¤Ç¤¹¡£°Õ³°¤Ê¤Î¤Ï¥é¥¤¥Õ¥ë¤ÎÀ­Ç½¡¢¤«¤Ê¤êÎɤ¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤½¤ì¤Ç¤âÅö¤¿¤é¤Ê¤¤¤Èò¤¯¤¢¤Ê¤¿¤È»ä¡¢¾È½à¤ò¹ç¤ï¤»¤ë·±Îý¤ò´èÄ¥¤ê¤Þ¤·¤ç¤¦¡£

¤Þ¤È¤á

º£²ó¤Ï¡¢¹½Ê¸Åª¤Ë¤âÆâÍÆŪ¤Ë¤âÈó¾ï¤Ë¤Ê¤¸¤ß¤ä¤¹¤¤Éôʬ¤ò¾Ò²ð¤·¤Æ¤ß¤Þ¤·¤¿¡£Â¾¤Ë¤â¥À¥á¡¼¥¸¤Î¤è¤¦¤ËÄê¿ô¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ï¤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¡£°Üư®ÅÙ¡¢½ÅÎÏ¡¢²Ð±êÊü¼Í´ï¤Î¼ÍÄøµ÷Î¥¡¢ÃÏÍë¤Î¿ô¤Ê¤É¤Ê¤É¡£¤½¤ì¤é¤ò¸«¤Ä¤±½Ð¤·¤Æ¤Ë¤ä¤ê¤È¤¹¤ë¤Î¤â°ì¤Ä¤Î³Ú¤·¤ß¤«¤È»×¤¤¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:13 PM | ¥³¥á¥ó¥È (1486)

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡Âè°ì²ó

Reading the Source Code of W:ET #1

º£²ó¤Î¤Í¤é¤¤

¥¬¥¤¥À¥ó¥¹¤ÎƳÆþÉô¤Ë¤è¤ê°ì±þ¥½¡¼¥¹¥³¡¼¥É¤ò¡Ö¸«¤ë¡×½àÈ÷¤¬½ÐÍè¤Þ¤·¤¿¡£Áᮥ½¡¼¥¹¥³¡¼¥É¤ò¸«¤Æ¤¤¤­¤¿¤¤¤È¤³¤í¤Ç¤¹¤¬¡¢¾¯¤·¤ªÂÔ¤Á¤ò¡£º£²ó¤Ï¥×¥í¥°¥é¥ß¥ó¥°¤½¤Î¤â¤Î¤Ë·Ð¸³¤¬¤Ê¤¤¿Í¸þ¤±¤Ë¡¢¥×¥í¥°¥é¥à¤òÆɤà¾å¤ÇɬÍפˤʤëÃ챤ò¾Ò²ð¤·¡¢¥¹¥à¡¼¥º¤ÊÍý²ò¤Î½õ¤±¤È¤Ê¤ì¤Ð¤È»×¤¤¤Þ¤¹¡£¤Ç¤¹¤«¤é¥×¥í¥°¥é¥ß¥ó¥°·Ð¸³¤Î¤¢¤ëÊý¤Ïº£²ó¤ÎÏäϤʤ«¤Ã¤¿¤³¤È¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¤´Â¸ÃΤ«¤ÎÄ̤êET¤ÏQuake3¥¨¥ó¥¸¥ó¥Ù¡¼¥¹¤Ç¤¹¡£¤³¤Î¤¿¤áʪÍý±é»»¤ä¥Ç¡¼¥¿¤Î¹½Â¤ÂΤʤɡ¢Quake3¤Ç¤âÍѤ¤¤é¤ì¤ë¥¢¥ë¥´¥ê¥º¥à¤¬»¶¸«¤µ¤ì¤Þ¤¹¡£¤Ç¤¹¤«¤éET¥½¡¼¥¹¥³¡¼¥ÉÍý²ò¤Î°Ù¤Ë¡¢¤Þ¤º¤ÏQuake3¤Ç¤ÎʪÍý±é»»¤Ê¤É¤Î³Æ¼ï½èÍý¡¢¤½¤·¤ÆÍѤ¤¤é¤ì¤ë¥Ç¡¼¥¿¹½Â¤¤Ê¤É¤Î´ðËÜŪÍý²ò¤ò¤¹¤ë¤³¤È¤¬¤È¤Æ¤âÂçÀڤˤʤäƤ­¤Þ¤¹¡£

Ãí°Õ¤·¤ÆÍߤ·¤¤¤³¤È¤Ë¡¢ÀìÌç²È¥¯¥é¥¹¤Ë¤Þ¤ÇÀºÄ̤¹¤ëɬÍפϤʤ¤¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤â¤Á¤í¤óÀºÄ̤¹¤ë¤³¤È¤ÇMODºîÀ®¤ÎÂ礭¤Ê½õ¤±¤Ë¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢º£²ó¤Î¤è¤¦¤Ë¤¿¤À¥³¡¼¥É¤òÆɤà¤À¤±¤Ê¤é´Ø¿ô¤ä¹½Â¤ÂΤ¬²¿¤ò°ÕÌ£¤¹¤ë¤â¤Î¤«¡¢¤ÈÇùÁ³¤È¤·¤¿Íý²ò¤Ç½½Ê¬¤Ç¤¹¡£ ¤Ç¤¹¤«¤éµ¤³Ú¤Ë¹½¤¨¤Æ¤¯¤À¤µ¤¤¤Í¡£

C¸À¸ì

¤³¤³¤Ï¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ë¡Ö¤Þ¤Ã¤¿¤¯¡×¤Ê¤¸¤ß¤Î¤Ê¤¤Êý¸þ¤±¤Î¥»¥¯¥·¥ç¥ó¤Ç¤¹¡£·Ð¸³¤Î¤¢¤ëÊý¤Ï¤¹¤ÃÈô¤Ð¤·¤Æ¤¯¤À¤µ¤¤¡£

Á°²ó¿½¤·¤¿¤È¤ª¤ê¡¢ET¤Î¥½¡¼¥¹¥³¡¼¥É¤ÏC¸À¸ì¤Ç¤¹¡£¥×¥í¥°¥é¥à¸À¸ì¤È¤·¤Æ¤Ï¤´¤¯°ìÈÌŪ¤Ç¤¹¤¬¡¢Æü¾ï²ñÏäÇC¤òÏ乿ͤϤ¤¤Þ¤»¤ó¡£C¸À¸ì¤Ï¥³¥ó¥Ñ¥¤¥é¡¼¤ËÂФ·¤Æ¤Î¤ß°ÕÌ£¤Î¤¢¤ë¸À¸ì¤À¤«¤é¤Ç¤¹¡£¤½¤Î¤¿¤á¡¢½é¤á¤ÆC¤ò¸«¤ë¿Í¤Ë¤ÏC¤Î¥½¡¼¥¹¥³¡¼¥É¤ò¸«¤Æ¤â¡¢º£¤Þ¤Ç¸«¤¿¤³¤È¤âÄ°¤¤¤¿¤³¤È¤â¤Ê¤¤¸ÀÍÕ¤ÇÏä·¤«¤±¤é¤ì¤ë¤Î¤ÈƱ¤¸¤ÇÍý²ò¤Ç¤­¤Þ¤»¤ó¡£

¤½¤³¤ÇÆüËܸì¤È¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î´Ö¤ò·Ò¤¤¤Ç¤¯¤ì¤ë¼­½ñ¤¬¤¢¤ê¤Þ¤¹¡£¥ê¥Õ¥¡¥ì¥ó¥¹¤È¤¤¤ï¤ì¤ë¤â¤Î¤Ç¤¹¡£¹¬¤¤Web¾å¤Ë¥ê¥Õ¥¡¥ì¥ó¥¹¤òºÜ¤»¤Æ¤¤¤ë¥µ¥¤¥È¤¬¤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¡£¤â¤Î¤Ë¤è¤Ã¤Æ¤Ï¡¢ÃúÇ«¤Ê²òÀâ¤äÎ㤬ºÜ¤Ã¤Æ¤¤¤Þ¤¹¡£

º£°ìÅÙ¿½¤·¤Þ¤¹¡£»ä¤¿¤Á¤Ï¡¢¡ÖÀºÄ̡פ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Ê¸¤òÆɤó¤Ç¤Ê¤ó¤È¤Ê¤¯°ÕÌ£¤¬¤ï¤«¤ì¤Ð¤¤¤¤¤Î¤Ç¤¹¡£¤Ç¤¹¤«¤é¡¢¥ê¥Õ¥¡¥ì¥ó¥¹´Ý°Åµ­¤ÎɬÍפϤʤ¯¡¢¤ï¤«¤é¤Ê¤¯¤Ê¤Ã¤¿ÅÔÅ٤˻²¾È¤¹¤ì¤Ð¤¤¤¤¤Î¤Ç¤¹¡£

¤È¤Ï¤¤¤Ã¤¿¤â¤Î¤Î¡¢¤¤¤­¤Ê¤ê¤Þ¤Ã¤¿¤¯¤Î½é¿´¼Ô¤¬¼­½ñ¤À¤±¤Ç±Ñʸ¤òÆɤळ¤È¤Ï¤Ê¤«¤Ê¤«¤Ëº¤Æñ¤Ç¤¹¡£¤È¤¤¤¦¤Î¤â¡¢Ê¸¤Ë¤Ïʸˡ¤¬¤¢¤ë¤«¤é¤Ç¤¹¡£¤³¤ì¤Ï¥×¥í¥°¥é¥à¸À¸ì¤Ç¤â¤Þ¤Ã¤¿¤¯Æ±¤¸¤³¤È¤Ç¤¹¡£Ã±¸ìñ¸ì¤Î°ÕÌ£¤È¡¢¤³¤ì¤é¤ÎʤӤ䵬§¤Ë¤è¤Ã¤Æ°ÕÌ£¤¬·è¤Þ¤ê¤Þ¤¹¡£

¼ÂÎã¤òÁ°½Ò¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»²¾È¤¹¤ë¤Ê¤É¤·¤Æ¸«¤Æ¤ß¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£¤³¤³¤Ê¤É¡¢Îã¤È²òÀ⤬ÃúÇ«¤Ë¤Ê¤µ¤ì¤Æ¤¤¤ë¤È¤³¤í¤Ï¤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¡£¼«Ê¬¤Ë¤¢¤Ã¤¿¤È¤³¤í¤ò¸«¤Ä¤±¤Æ¡¢¥Ö¥Ã¥¯¥Þ¡¼¥¯¤·¤Æ¤ª¤¯¤È¤¤¤¤¤È»×¤¤¤Þ¤¹¡£

¼¡²ó°Ê¹ß¤ÎËÜÊԤ˿ʤà¤Þ¤Ç¤Ë¡¢ÊÑ¿ôÀë¸À¡¢¥Ý¥¤¥ó¥¿¡¼¡¢¹½Â¤ÂΡ¢¿ôÃͱ黻¡¢´Ø¿ô¤ÈÌá¤êÃͤʤɤδðÁäò¤Ê¤ó¤È¤Ê¡¼¤¯Íý²ò¤·¤Æ¤¯¤ì¤ì¤Ð½½Ê¬¤Ç¤¹¡£

¿ô³Ø¡¡¤¢¤ë¤È¡¡¤¤¤¤¤Ê

¿ô³Ø¡½¡£¤ß¤Ê¤µ¤ó¤Ï¤É¤ó¤Ê»×¤¤½Ð¤¬¤¢¤ë¤Ç¤·¤ç¤¦¤«¡£³ØÀ¸¤Î³§¤µ¤ó¤Ë¤È¤Ã¤Æ¤Ï¸½ºß¿Ê¹Ô·Á¤Ç³Ø½¬¤·¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¤«¡£

¤³¤Î¥½¡¼¥¹¥³¡¼¥ÉÃæ¤Ç»È¤ï¤ì¤Æ¤¤¤ë¿ô³ØŪ¤ÊÍ×ÁǤǰìÈÖº¤¤Ã¤¿¤Á¤ã¤ó¤È»×¤ï¤ì¤ë¤Î¤¬¡¢¥Ù¥¯¥È¥ë¤Ç¤¹¡£¤·¤«¤â¤¢¤Ã¤Á¤³¤Ã¤Á¤Ç½Ð¤Æ¤­¤Þ¤¹¡£¤È¤¤¤¦¤Î¤â¡¢ET¤Ï¸À¤ï¤º¤â¤¬¤Ê¡¢3D¤Ç¤¹¡£¥Ý¥ê¥Ý¥ê¥Ý¥ê¥´¥óËþºÜ¤Ç¤¹¡£3D¤Ï¤´Â¸ÃΤÎÄ̤ꡢºÂɸ¤òɽ¤¹¤¿¤á¤Ëxyz¤Î3¤Ä¤¬É¬Íפˤʤê¤Þ¤¹¡£¤³¤Î3¤Ä¤ò°ì¤Ä¤Î¤â¤Î¤È¤·¤Æɽ¸½¤·¤¿¤â¤Î¤¬¥Ù¥¯¥È¥ë¤Ç¤¹¡£

¥Ù¥¯¥È¥ë¤âÉáÄ̤οô»ú¤ÈƱ¤¸¤è¤¦¤Ë¡¢Â­¤·»»°ú¤­»»¡¢³Ý¤±»»(ÆâÀѳ°ÀÑ)¤¬¤¢¤ê¤Þ¤¹¡£¼ÂºÝ¤Ë¤É¤ó¤Ê·×»»¤ò¤¹¤ë¤Î¤«Ëº¤ì¤Á¤ã¤Ã¤¿¿Í¤Ï¡¢ÀΤζµ²Ê½ñ¤ò°ú¤ÃÄ¥¤ê½Ð¤·¤Æ¤¯¤ë¤«Web¤ò¸¡º÷¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¤Í¡£

¥Ù¥¯¥È¥ë¤Ë¤¢¤Ã¤ÆÉáÄ̤οô»ú¤Ë¤Ê¤¤Í×ÁǤˡ¢Êý¸þ¤¬¤¢¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£2¤Ä¤Î¥Ù¥¯¥È¥ë±é»»¤Î·ë²Ì¤Ï¡¢±ý¡¹¤Ë¤·¤Æ2¥Ù¥¯¥È¥ë¤ÎÊý¸þ¤Î·¤¤¶ñ¹ç¤Ë¤è¤Ã¤ÆÂ礭¤¯ÊѤï¤ê¤Þ¤¹¡£ET¤Ç¤â¤³¤ÎÀ­¼Á¤òÍøÍѤ·¤Æ¡¢¥Ê¥¤¥Õ¤Ç¤Î¥Ð¥Ã¥¯¥¹¥¿¥ÖȽÄê¡¢MG¤Î¼Í³¦À©¸Â¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£

¥Ù¥¯¥È¥ë°Ê³°¤Ë¡¢ÏÀÍý±é»»¤Ë¤Ä¤¤¤Æ¤âÃΤäƤ¤¤ë¤È²¿¤«¤ÈÍ­Íø¤Ç¤¹¡£ÏÀÍý±é»»¤È¤Ï¡¢´Êñ¤Ë¸À¤¨¤Ð0¤«1¤«¡¢±³¤«¿¿¤«¤È¤¤¤¦¤³¤È¤òȽÄꤹ¤ë·×»»¤À¤È»×¤Ã¤Æ¤¯¤À¤µ¤¤¡£

¤½¤·¤Æ¥Ó¥Ã¥È·×»»(Æó¿Ê¿ô·×»»)¤â¤Á¤ç¤Ã¤È»È¤ï¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¸«´·¤ì¤Ê¤¤·×»»¤¬½Ð¤Æ¤­¤¿¤é¤³¤ì¤â¸¡º÷¥­¡¼¥ï¡¼¥É¤Ë¤·¤Æ¤ß¤ë¤È¤¤¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£

Éѽй½Â¤ÂÎ

»ä¤ÏC¤Î¥³¡¼¥ÉÍý²ò¤Ï¥Ç¡¼¥¿¹½Â¤¤ÎÍý²ò¤«¤é»Ï¤Þ¤ë¤â¤Î¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£¤½¤³¤Ç¡¢ŽºŽ°ŽÄŽÞÃæ¤Ç»È¤ï¤ì¤Æ¤ª¤ê¡¢¤³¤ì¤À¤±¤ÏÃΤäƤ¤¤ÆÍߤ·¤¤¹½Â¤ÂΤˤĤ¤¤Æ¾Ò²ð¤·¤Þ¤¹¡£

gentity_t¡¡¤³¤ì¤Ç¤â¤«¤È¤¤¤¦¤¯¤é¤¤¡¢¥½¡¼¥¹¥³¡¼¥É³Æ½ê¤Ë½Ð¸½¤·¤Þ¤¹¡£¤³¤ÎÀë¸À¤Ïg_local.h¤Ç¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¼ÂºÝ¤³¤ì¤Ï¤É¤ó¤Ê¥Ç¡¼¥¿¤«¤È¤¤¤¦¤È¡¢¥²¡¼¥àÃæ¤Ç°·¤¦ÍÍ¡¹¤Ê¥ª¥Ö¥¸¥§¥¯¥È(±Ñ¸ì¤Çentity)Á´È̤Ǥ¹¡£¥ª¥Ö¥¸¥§¥¯¥È¤Î¼ïÎऴ¤È¡¢Î㤨¤ÐÉð´ï¡¦¥×¥ì¥¤¥ä¡¼¡¦ÃÆ¡¦¥Þ¥Ã¥×Ãæ¤ÎʪÂΤʤɤʤɤˤ½¤ì¤¾¤ìʬ¤±¤ÆÄêµÁ¤·¤Æ¤¤¤¿¤Î¤Ç¤ÏÌÌÅݤǤ¹¤·¡¢¤Ê¤Ë¤è¤ê³ÈÄ¥À­¤ÈÈÆÍÑÀ­¤ËÌäÂ꤬½Ð¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤½¤³¤Ç¡Ö¤â¤Î¡×¤È¤·¤Æ¹­¤¯ÄêµÁ¤µ¤ì¡¢ÍÍ¡¹¤Ê¥×¥í¥Ñ¥Æ¥£¤òÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¤µ¤ì¤Æ¤¤¤ë¹½Â¤ÂΤ¬gentity_t¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥ÉÃæ¤Ç¤³¤ÎÀë¸À¤ò¸«¤¿¤é¡¢²¿¤«°ÕÌ£¤Î¤¢¤ë¤â¤Î¤Ê¤ó¤À¤Ê¡¢ÄøÅ٤˹ͤ¨¤Æ¤¯¤À¤µ¤¤¡£

vec3_t¡¡¿ô³Ø¤Î¥»¥¯¥·¥ç¥ó¤Ç¿½¤·¤Þ¤·¤¿¤è¤¦¤Ë¡¢ET¤Ï3¼¡¸µ¶õ´Ö¤Ç°ÌÃ֤䱿ư¤ò·×»»¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Î°·¤¤¤Î¤¿¤á¤Ë¤Ï¥Ù¥¯¥È¥ë¤¬ÊØÍø¤Ç¤¹¡£¤³¤Î¥Ù¥¯¥È¥ë¤ò¹½Â¤ÂΤȤ·¤ÆÄêµÁ¤·¤Æ¤¤¤ë¤Î¤¬vec3_t¤Ç¤¹¡£Ãæ¿È¤Ïñ¤Ëfloat¤¬3¤Ä¤Ç¤¹¡£¤½¤ì¤¾¤ì¡¢xyz¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£

qboolean¡¡ÏÀÍý±é»»¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤Ä¤Þ¤ê¿¿¤«µ¶¤«¤ò¤½¤ì¤¾¤ìqtrue¤â¤·¤¯¤Ïqfalse¤È¤·¤Æ³ÊǼ¤·¤Þ¤¹¡£¤Ï¤Ã¤Á¤ã¤±0¤«1¤«¤Ç¤¹¡£

¤³¤ì°Ê³°¤Ë¤â¤è¤¯½Ð¤Æ¤¯¤ë¹½Â¤ÂΤϤ¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¤¬¡¢Á´¤Æ¾Ò²ð¤¹¤ë¤ï¤±¤Ë¤Ï¤¤¤­¤Þ¤»¤ó¡£¤½¤³¤Ç¡¢ÉÔÌÀ¤Ê¹½Â¤ÂΤ˽вñ¤Ã¤¿¤é¡¢À§ÈóÄêµÁ²Õ½ê¤ò¸¡º÷¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¡¼¤Ç¥½¡¼¥¹¥³¡¼¥É¤ò¸«¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¢grep¤Ê¤É¤Î¸¡º÷¥½¥Õ¥È¤ò»È¤¨¤Ð¥³¡¼¥É¥Õ¥¡¥¤¥ë·²¤«¤éõ¤·½Ð¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¤Þ¤È¤á

Íý²ò¤Î½õ¤±¤È¤Ê¤ëÃμ±¤Î¾Ò²ð¤À¤±¤·¤Þ¤·¤¿¡£¶ñÂÎŪ¤Ê¤³¤È¤Ï²¿¤Ò¤È¤Ä¤·¤Þ¤»¤ó¡£¼¡²ó¤«¤é¼ÂºÝ¤Î¥³¡¼¥É¤ò¸«¤Æ¤¤¤­¤Þ¤¹¡£

¤³¤³¤Ç¾Ò²ð¤·¤¿¤³¤È¤¬¡¢¥½¡¼¥¹¥³¡¼¥É¤òÆɤó¤Ç¤¤¤Æ¤ï¤±¤Î¤ï¤é¤Ê¤¤Éôʬ¤Ë½Ð¤¯¤ï¤·¤¿»þ¡¢¤É¤¦¤¹¤ì¤Ð¤è¤¤¤«¤Î»Ø¿Ë¤È¤Ê¤ì¤Ð¹¬¤¤¤Ç¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:10 PM | ¥³¥á¥ó¥È (1567)

W:ET¥½¡¼¥¹¥³¡¼¥ÉϯÆɲñ¡¡¥¬¥¤¥À¥ó¥¹

Reading the Source Code of W:ET :Guidance

¤Ï¤¸¤á¤Ë What would we discuss?

³§Íͤ³¤ó¤Ë¤Á¤Ï¡£¥Í¥¿¤Ëµç¤¹¤ë;¤ê¤³¤ó¤ÊÆóÈÖ¡¢»°ÈÖÀù¤¸°Ê¾å¤Ë»È¤¤¸Å¤µ¤ì¤¿¥Í¥¿¤Ç¶²½Ì¤Ç¤¹¡£¤³¤³¤Ï¥½¡¼¥¹¥³¡¼¥É¤òÆɤळ¤È¤ÇÆ°ºî¸¶Íý¤òÃΤꡢ¥×¥ì¥¤¤Î½õ¤±¤ä²þ¤¤Î°ìÊâ¤È¤Ê¤ë¤è¤¦¤Ê¤â¤Î¤òȯ¸«¤·¤Æ¤¤¤³¤¦¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£¤³¤ó¤Ê¥Í¥¿Google¤Ê¤ó¤«¤Ç¸¡º÷¤¹¤ë¤È¡¢¤½¤ì¤³¤½À±¤Î¿ô¤Û¤É½Ð¤Æ¤­¤Þ¤¹¤¬¡¢²¿¤è¤ê»ä¼«¿È¤Î¶½Ì£Ë̤ܰΤ¿¤á¤Î´ë²è¤Ê¤Î¤Ç¡¢¤É¤¦¤«¤´ÍƼϤò¡£°ì±þ»äÆüËܿͤΤĤâ¤ê¤Ç¤¹¤¬ÆüËܸì¤ò¸í¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢ËÜʸÃæÊѤÊɽ¸½¤Ë½Ð¤¯¤ï¤·¤Æ¤â¶Ã¤«¤º¡¢Íî¤ÁÃ夤¤ÆÈòÆñ·ÐÏ©¤ò³Îǧ¤·¤Æ®¤ä¤«¤Ë»à¤ó¤À¤Õ¤ê¤ò¤·¤Æ¤Í¤®¤ò¤ª¤·¤ê¤«¤éÁÞÆþ¤·¤Æ¤¯¤À¤µ¤¤¡£

¥½¡¼¥¹¥³¡¼¥ÉÆþ¼ê Getting the Source Code

»ä¼«¿È¡¢¿¦¶È¥×¥í¥°¥é¥Þ¡¼¤Ç¤â²¿¤Ç¤â¤Ê¤¤Ã±¤Ê¤ë¥²¡¼¥Þ¡¼¤Ç¤¹¤«¤é¡¢¥½¡¼¥¹¥³¡¼¥É¤ÎÀµ³Î¤Ê°ÕÌ£¤Ï¡©¤Èʹ¤«¤ì¤¿¤éÊÖÅú¤Ëº¤¤ê¤Þ¤¹¡£»ä¤¬¤³¤³¤Ç¼è¤ê¾å¤²¤ë¤â¤Î¤Ï¡¢Splash Damage(°Ê²¼SD)¤È¤«id software¤¬¥ê¥ê¡¼¥¹¤·¤¿Wolfenstein:Enemy Territory(°Ê²¼ET)¤È¤¤¤¦¥²¡¼¥à¤Ç¤¹¡£¤³¤ì¤Î¼Â¹Ô¥Õ¥¡¥¤¥ë¤ò¹½À®¤¹¤ë¥×¥í¥°¥é¥à¡¢¤¤¤ï¤æ¤ë¥½¡¼¥¹¥³¡¼¥É¤òÃæ¿´¤Ë¸«¤Æ¤¤¤­¤Þ¤¹¡£¤³¤Î¥½¡¼¥¹¥³¡¼¥É¤ÏSD¤Î¥µ¥¤¥È¤Ë¤Æ¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¼ÂºÝ¤Î¤â¤Î¤ò¸«¤Æ¤ß¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢À§Èó¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£¤Á¤Ê¤ß¤Ë¤³¤³¤Ç¸ø³«¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¥²¡¼¥àÉôʬ¤Î¤ß¤Ç¤¢¤ê¡¢²èÌ̤ÎÉÁ¼Ì¤äÄÌ¿®¤Ê¤É¤Î¥¨¥ó¥¸¥óÉôʬ¤Ï̤¤À¤Ë¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤Á¤é¤Ïid¤Î¥é¥¤¥»¥ó¥¹ÈÎÇäÉôʬ¤Ê¤Î¤Ç¡¢»þ´ü¤¬Íè¤ì¤Ð¸ø³«¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£³Ú¤·¤ß¤Ç¤¹¡£

¥½¡¼¥¹¥³¡¼¥É¤ò°·¤¦ Browsing and Compling the Source Code

ºÆ»°¿½¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢»ä¤Ï¥×¥í¥°¥é¥Þ¡¼¤Ç¤âSE¤Ç¤â²¿¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£Ã±¤Ê¤ë¥²¡¼¥Þ¡¼¤Ç¤¹¡£¤³¤ì¤«¤é¾Ò²ð¤¹¤ë¤Î¤Ï¥½¡¼¥¹¥³¡¼¥É¤òÆɤó¤À¤ê¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤ê¤¹¤ë´Ä¶­¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢¤³¤ì°Ê³°¤Ç¤â¤´¼«¿È¤¬»È¤¤¤ä¤¹¤¤¤È´¶¤¸¤ë¤â¤Î¤òÀ§Èó»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤·¤Æ»È¤¤¾¡¼ê¤Ê¤É¤Ë¤Ä¤¤¤ÆÀ§È󶵤¨¤Æ¤¯¤À¤µ¤¤¡£

¥×¥í¥°¥é¥à¥³¡¼¥É¤Ï¡¢ËàëÅÉԻ׵ĤÊʸ»ú¤äµ­¹æ¤¬¤Ò¤¿¤¹¤é¤ËÍåÎó¤·¤¿¤â¤Î¤Ç¤¹¤¬¡¢½êÁ§¤Ï¥Æ¥­¥¹¥È¤Ç¤¹¡£¤³¤ì¤òÆɤà¤À¤±¤Ê¤éNotepad¤Ê¤É¤Î¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¡¼¤¬¤¢¤ì¤Ð½½Ê¬¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢»ä¤É¤â¤Ï¥³¡¼¥É¤ò¼öʸ¤Î¤è¤¦¤Ë¾§¤¨¤ë¤À¤±¤ÇÉÔ½½Ê¬¤Ç¡¢¤³¤Î°ÕÌ£¤òÍý²ò¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤½¤·¤Æ¥½¡¼¥¹¥³¡¼¥É¤Ï²¿Ëü¹Ô¤Ë¤âÅϤê¤Þ¤¹¤Î¤Ç¡¢¸úΨŪ¤Ë¤³¤ì¤òÁàºî¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

»ý¤Ã¤Æ¤¤¤ëÊý¤Ï·ë¹½¤Ê¤Î¤Ç¤¹¤¬¡¢¤¤¤­¤Ê¤ê³§ÍͤËVisual Studio¤È¤¤¤Ã¤¿¹â²Á¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÇã¤Ã¤Æ¤¯¤À¤µ¤¤¤È¤¤¤¦¤ï¤±¤Ë¤Ï¤¤¤­¤Þ¤»¤ó¡£¤Ò¤È¤Þ¤ºterapad¤ä½¨´Ý¤È¤¤¤Ã¤¿¥Õ¥ê¡¼¤â¤·¤¯¤Ï¥·¥§¥¢¤Î¿µ¡Ç½¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¡¼¤ò¼ê¤ËÆþ¤ì¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£¤½¤·¤Æ¥×¥í¥°¥é¥à¥³¡¼¥É¤Ï¤³¤Î¥Æ¥­¥¹¥È¤Î¤Þ¤Þ¤Ç¤Ï¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¤«¤é¡¢¤³¤ì¤ò¼Â¹Ô¥Õ¥¡¥¤¥ë¤Ë¤·¤Æ¤¯¤ì¤ë¥³¥ó¥Ñ¥¤¥é¡¼¤¬É¬Íפˤʤê¤Þ¤¹¡£ET¤Î¥½¡¼¥¹¥³¡¼¥É¤ÏC¸À¸ì¤Ç¤¹¡£C++¤Ç¤âVisual C¤Ç¤âC#¤Ç¤â¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤³¤ì¤é¾å°Ì¸À¸ì¤ÏÂçÄñC¤òÆâÊñ¤·¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤é¤¤¤º¤ì¤«¤Î¥³¥ó¥Ñ¥¤¥é¡¼¤ò¼ê¤ËÆþ¤ì¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£¤Á¤Ê¤ß¤ËMicrosoft¤ÏVisual Studio¤Î¹ü³ÊÉôʬ¡¢.NET framework SDK¤ò̵½þÇÛÉÛ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ÎÃæ¤ËC++¤¬¤¢¤ê¤Þ¤¹¤«¤é¡¢¥³¥ó¥Ñ¥¤¥ë¤Î¤ß¤Ê¤é¤Ð¤³¤ì¤Ç²Äǽ¤é¤·¤¤¤Ç¤¹¤¬¡¢»ä¤ÏÊýË¡¤¬¤ï¤«¤ê¤«¤Í¤Þ¤¹¡£¤ª´«¤á¤ÏVisual studio¤òÇã¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤Ç¤¹¡£

¤·¤«¤·ET¤ÏÀÞ³Ñ̵ÎÁ¤Î¤â¤Î¤Ç¤¹¤«¤é¡¢¥³¥ó¥Ñ¥¤¥é¡¼¤â̵ÎÁ¤ÇºÑ¤Þ¤»¤¿¤¤¤¢¤Ê¤¿¤ËBorland C++ Compiler¤ò¤ª´«¤á¤·¤Þ¤¹¡£¤³¤Á¤é̵½þÄ󶡤µ¤ì¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤ºÈó¾ï¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥³¥ó¥Ñ¥¤¥é¡¼¤È¤·¤ÆÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é¡¢ET¤Î¥½¡¼¥¹¥³¡¼¥É¤ò¤½¤Î¤Þ¤Þ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¿¾¯¤Î¥¨¥é¡¼¤¬½Ð¤ë¤½¤¦¤Ç¤¹¡£¤³¤Á¤é¤Ê¤É¤ò»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£SD¤Î¥Õ¥©¡¼¥é¥à¤Ï¾ðÊóËþºÜ¤Ê¤Î¤Ç¡¢¤ï¤«¤é¤Ê¤¤¤³¤È¤äº¤¤Ã¤¿¤³¤È¤¬¤¢¤Ã¤¿¤éÀ§È󸡺÷¤·¤Æ¤¯¤À¤µ¤¤¤Í¡£Åú¤¨¤¬¤Ê¤¯¤È¤â¡¢Æ±¤¸¤è¤¦¤Ëº¤¤Ã¤Æ¤¤¤ë¿ÍƱ»Î¤Ç²ò·èºö¤òˤ®¤À¤¹¤³¤È¤â¤Ç¤­¤Þ¤¹¤·¡£

¥½¡¼¥¹¥³¡¼¥É¤Î¹½À® Structure of the Source Code

¤³¤³¤«¤é¤Ï¥½¡¼¥¹¥³¡¼¥É¤ò°·¤¦´Ä¶­¤¬¤¢¤ë¤³¤È¤òÁ°Äó¤Ë¤·¤Æ¤¤¤­¤Þ¤¹¤¬¡¢¶ËÎϥƥ­¥¹¥È¥¨¥Ç¥£¥¿¡¼¤À¤±¤Ç¤â½½Ê¬¤Ê¤è¤¦¤ËÇÛθ¤·¤Æ¤¤¤­¤Þ¤¹¡£

¥½¡¼¥¹¥³¡¼¥É¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¡¢Å¸³«¤·¤¿¥Õ¥©¥ë¥À¤ÎÃæ¤Ë2¤Ä¤Î¥Õ¥©¥ë¥À¤Èlicense.rtf¤ÈReadme.txt¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£¥é¥¤¥»¥ó¥¹¤ÎÊý¤Ï¼ÂºÝ¤Ë¥³¡¼¥É¤ò²þÊѤ·¤Æ²¿¤«¤·¤è¤¦¤È¹Í¤¨¤ë¿Í¤Ïį¤á¤Æ¤¯¤À¤µ¤¤¡£Æó¼¡ÇÛÉÛ¤äÃøºî¸¢¤Ë´Ø¤¹¤ë½ÅÍ×¹àÌܤ¬¤¢¤ê¤Þ¤¹¡£Readme.txt¤ÏÁ´°÷¸«¤Þ¤·¤ç¤¦¡£¥µ¥Ý¡¼¥È¤äVC¤Ê¤É¤Ë¤Ä¤¤¤Æ¸ÀµÚ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¤µ¤Æ¡¢Áá®src¤ò³«¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤¤¤¯¤Ä¤«¤Î¥Õ¥©¥ë¥À¤È¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤¹¡£¤Þ¤º¤Ï¤³¤ì¤é¤ÎÀâÌÀ¤ò¤·¤Þ¤¹¡£

botai(¥Õ¥©¥ë¥À)¡§BOT AI¡£BOT¤Î¹ÔÆ°¤Ë´Ø¤¹¤ë¥³¡¼¥É·²¤¬¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£BOT¤Ï¥·¥ó¥°¥ë»þ¤Ç¤ÎŨ¤â´Þ¤Þ¤ì¤Þ¤¹¡£ET¤Ï¥Þ¥ë¥Á¥×¥ì¥¤ÀìÍѤʤΤǤ³¤ÎÉôʬ¤Ï¼Â¼Áµ¡Ç½¤·¤Þ¤»¤ó¡£¤è¤Ã¤Æ¥³¡¼¥É¤È¤·¤Æ´°À®¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢Ä¾ÀÜÍøÍѤ¬ÉÔ²Äǽ¤Ç¤¹¡£»ÄÇ°¡£

cgame(¥Õ¥©¥ë¥À)¡§Client Game¡£¥¯¥é¥¢¥ó¥È¦¤¬½èÍý¤¹¤ëÉôʬ¤Î¥³¡¼¥É·²¡£¥¯¥é¥¤¥¢¥ó¥È¦¤Ï¥µ¡¼¥Ð¡¼¤«¤éÁ÷¤é¤ì¤Æ¤­¤¿¾ðÊó¤ò¸µ¤Ë¥²¡¼¥à¾õ¶·¤ò¹½ÃÛ¤·¡¢¥æ¡¼¥¶¡¼¤«¤éÆþÎϤµ¤ì¤¿¾ðÊó¤ò¥µ¡¼¥Ð¡¼¤ËÁ÷¤ê¤Þ¤¹¡£¤½¤Î½èÍý¤Ê¤É¤Ç¤¹¡£

extractfuncs(¥Õ¥©¥ë¥À)¡§Extranct Functions¡£¥½¡¼¥¹¥³¡¼¥É¤ËľÀÜ´Ø·¸¤·¤Þ¤»¤ó¡£¥³¡¼¥É¤ò´Ø¿ô¤´¤È¤ËÀÚ¤ê½Ð¤¹¥×¥í¥°¥é¥à¤È¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£

game(¥Õ¥©¥ë¥À)¡§Game¡£¥²¡¼¥à¤Î¥³¥¢¤È¤Ê¤ëÉôʬ¤Î¥³¡¼¥É·²¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£²þ¤¤¹¤ë»þ¤Ï¼ç¤Ë¤³¤³¤ò¤¤¤¸¤¯¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

ui(¥Õ¥©¥ë¥À)¡§User Interface¡£¥æ¡¼¥¶¡¼¤È¥×¥í¥°¥é¥à¤Î²Í¤±¶¶Éôʬ¡¢Æþ½ÐÎϤ䥤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë´Ø¤ï¤ë¥³¡¼¥É·²¤Ç¤¹¡£

wolf.dsw(¥Õ¥¡¥¤¥ë)¡§Visual C++¤äVisual Studio¤ò»ý¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¤³¤ì¤òÆɤ߹þ¤à¤³¤È¤Ç¨ºÂ¤Ë¤³¤ì¤é¥½¡¼¥¹¥³¡¼¥É¤òÅý³ç¤·¤¿´Ä¶­¤Ë¤Ê¤ê¤Þ¤¹¡£VC++¤ò¿ä¾©¤¹¤ëÍýͳ¤Ï¤³¤Î¤¿¤á¤Ç¤¹¡£

º£²ó¤Î¤Þ¤È¤á Summary

¤Þ¤È¤á¤ë¤Û¤É¡¢²¿¤«¤ä¤Ã¤Æ¤¤¤Þ¤»¤ó¡£º£²ó¤Ï½àÈ÷¤Ç¤¹¡£¼¡²ó¤ÏÃΤäƤ¤¤ë¤È²¿¤«¤ÈÊØÍø¤ÊÃμ±¤Î¾Ò²ð¤ò¤·¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 06:01 PM | ¥³¥á¥ó¥È (725)

¥ê¥ó¥¯

Link


¤¢¤Þ¤ê¥¢¥ó¥Æ¥Ê½ä¤é¤»¤Æ¤Ê¤¤¤Î¤Ç¥ê¥ó¥¯¤â¾¯¤Ê¤¤¤Ç¤¹¡£¥ê¥ó¥¯Å½¤Ã¤Æ¤â¤³¤³¤«¤éÈô¤Ö¿Í¤â¤Û¤È¤ó¤É¤¤¤Ê¤¤¤Ç¤·¤ç¤¦¤«¤é¡¢ÌµÃÇ¥ê¥ó¥¯¤´ÍƼϤ¯¤À¤µ¤¤¡ä¡ã;;

ET´ØÏ¢²ñ¼Ò


ºî¤Ã¤¿¤â¤·¤¯¤ÏÈÎÇ䤷¤Æ¤¤¤ë²ñ¼Ò¤Ç¤¹¡£

id software
º£¹¹ÀâÌÀ¤âÍפê¤Þ¤»¤ó¤è¤Í¡£

Activision
À¤³¦ºÇÂ祲¡¼¥à¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥¿¡¼¤Ç¤¹¡£À¨¤Þ¤¸¤¤µ¬ÌϤǤ¹¡£

Splash Damage
ET¤òÃ濴Ū¤Ëºî¤Ã¤¿²ñ¼Ò¤Ç¤¹¡£

Graymatter Studio
RtCW¤Î¥Þ¥ë¥Á¥×¥ì¥¤Éôʬ¤òºî¤Ã¤¿²ñ¼Ò¡£¤¹¤´¤¤¡£¤Ç¤â¥µ¥¤¥È¤¬¼ã´³¥µ¥¤¥³Æþ¤Ã¤Æ¤¤¤ëµ¤¤¬¤¹¤ëŽ¥Ž¥Ž¥¡£

Even Balance
Punk Busterºî¤Ã¤Æ¤¤¤ë²ñ¼Ò¤Ç¤¹¡£


³¤³°ET´ØÏ¢¥µ¥¤¥È


ET¤ÏÆüËܤϤâ¤Á¤í¤ó¤Î¤³¤È³¤³°¤Ç¤âÍ·¤Ð¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢ÅöÁ³³¤³°¤Ë¤âÍ­ÍѤʥµ¥¤¥È¤¬¤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¡£

Wolfenstein: Enemy Territory International Resource Site
³¤³°¤Ç¤ÏET¤Ï²¤ÊƤè¤ê¤â¤à¤·¤íÅ첤·Ï¤Î¹ñ¡¹¤ÇÈó¾ï¤ËÀ¹¤ó¤ËÍ·¤Ð¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ó¤Ê¹ñ¤Î°ì¤Ä¡¢¥É¥¤¥Ä¤Î¤³¤Á¤é¾ðÊó¥µ¥¤¥È¤ÏÎ̤⥹¥Ô¡¼¥É¤âËܲȤòο¤°¤Û¤É¡£¥¯¥é¥¤¥¢¥ó¥È¤â¥À¥¦¥ó¥í¡¼¥É¤Ç¤­¤Þ¤¹¤·¡¢¥Þ¥Ã¥×¤Ê¤É¤â¤¿¤¯¤µ¤ó¤¢¤ë¤Î¤Çõ¤·Êª¤ò¤¹¤ë»þ¤Ï¤³¤³¤¬ÊØÍø¤Ç¤¹¡£

Planet Wolfenstein
Game spy·ÏÎó¤Î¥µ¥¤¥È¤Ç¤¹¡£¤½¤³¤½¤³À¹¤ê¾å¤¬¤Ã¤Æ¤¤¤Þ¤¹¡£


¹ñÆâET¾ðÊó¥µ¥¤¥È


¹ñÆâ¤ÎET¤ò°·¤¦¥µ¥¤¥È¤Ç¤¹¡£¥ê¥ó¥¯¤Ï°ìÊýŪ¤ËŽ¤Ã¤Æ¤¤¤Þ¤¹¡£

Oops! RtCW
¤³¤³¤µ¤¨¸«¤ì¤ÐET¤¹¤ë¤Î¤Ëº¤¤é¤Ê¤¤¤¯¤é¤¤¾ðÊó¤¬ËþºÜ¤Ç¤¹¡£¤·¤«¤â°ì¤Ä°ì¤Ä¤Î㤬¤·¤Ã¤«¤ê¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢°Â¿´¤·¤ÆÆɤळ¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¼¤Ò¸«¤Þ¤·¤ç¤¦¡£

ÒÄ Enemy Territory ÒÄ
½é¿´¼Ô¤¬É¬¤º¤ª»²¤ê¤¹¤ëÒĤǤ¹¡£½é¤á¤Æ¤Î¿Í¤Ï¤¼¤Ò¸«¤Æ¤¯¤À¤µ¤¤¡£


¹ñÆ⥯¥é¥ó


¹ñÆâ¤ÎET¤Ç³èÆ°¤ò¤·¤Æ¤¤¤ë¥¯¥é¥ó¤Ç¤¹¡£

S.W
²æ¤é¤¬¥¯¥é¥óS.W¡£³èÆ°´ü´Ö¤ÏET¤¬À¤¤Ë½Ð¤Æ¤«¤é¤È¤Û¤ÜƱ¤¸¡£¤·¤«¤·±ÆÇö¤¤¡£MAD¤µ¤ó¤¬¥µ¡¼¥Ð¡¼Î©¤Æ¤Æ¤¯¤ì¤Æ¤¤¤Þ¤¹¡£ÆâÍƤÏÉÔÄê´ü¤ËÊѤï¤ê¤Þ¤¹¤¬¡£

N
S.W¤È±ï¿¼¤¯¤ªÉÕ¤­¹ç¤¤¤Î¤¢¤ë¥¯¥é¥óN¡£plapla¤µ¤ó¤¬Himatsubushi¥µ¡¼¥Ð¡¼¤òΩ¤Æ¤Æ¤¯¤ì¤Æ¤¤¤Þ¤¹¡£¤È¤Æ¤â¿Íµ¤¤Î¤¢¤ë¥µ¡¼¥Ð¡¼¤Ç¤¹¡£

¥µ¡¼¥Ð¡¼


Åŵ¤Âå¤È¥Í¥Ã¥È¥ï¡¼¥¯»ÈÍÑÎÁ¡¢¥Ï¡¼¥É¥¦¥§¥¢Âå¶â¤ÈÀßÄê»þ´Ö¤Ê¤É¤Ê¤É¿§¡¹µ¾À·¤òʧ¤Ã¤Æ¤¯¤ì¤Æ¤Þ¤Ç¥µ¡¼¥Ð¡¼¤òΩ¤Æ¤Æ¤¯¤ì¤Æ¤¤¤ë´ÉÍý¼Ô¤Ë¤Ï¤¿¤À¤¿¤ÀƬ¤¬²¼¤¬¤ë¤Ð¤«¤ê¤Ç¤¹¡£¥¢¥ê¥¬¥È¥¦¥´¥¶¥Þ¥¹¡£

TEIOU SEKKAI
ET½é´ü¤«¤é¸½ºß¤Þ¤Ç¸ºß¤·Â³¤±¡¢½é¿´¼Ô¤«¤é¾åµé¼Ô¤Þ¤Ç¹­¤¯¼õ¤±Æþ¤Æ¤¯¤ì¤ë²û¤Î¹­¤µ¤Ë¤Ï´¶Éþ¤Ç¤¹¡£»ä¤Ï¤º¡¼¤Ã¤È¤³¤Î¥µ¡¼¥Ð¡¼¤Ë¤ªÀ¤Ïäˤʤê¤Ã¤Ñ¤Ê¤·¤Ç¡¢¤³¤Á¤é¤Ë­¤ò¸þ¤±¤Æ̲¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£

Himatsubushi server
̾Á°¤Ë¤¢¤ë¤è¤¦¤Ë¡¢³Ú¤·¤¯²Ë¤ò¤Ä¤Ö¤¹¤³¤È¤òÌÜŪ¤Ë¤·¤¿¥µ¡¼¥Ð¡¼¤Ç¤¹¡£¤¬¡¢¤Ê¤«¤Ê¤«¥¹¥Ñ¥ë¥¿¥ó¤ÊÀßÄê¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢Æä˽ŲдïÀ©¸Â¤ÈÁÀ·â¤¬¤­¤Ä¤¤¤Ç¤¹¡£Ãæµé¼Ö°Ê¾å¤òÂоݤȤ·¤¿¥µ¡¼¥Ð¡¼¤Ç¤·¤ç¤¦¤«¤Í¡£

Raspberry
µã¤¯»Ò¤âÌÛ¤ë¾åµé¼Ô¸æÍÑ㥵¡¼¥Ð¡¼¡£¸í¤Ã¤Æ½é¿´¼Ô¤¬Æþ¤ë¤È¤Þ¤Ã¤¿¤¯°ã¤¦¥²¡¼¥àŸ³«¤Ëº¤ÏǤȾ׷â¤ò³Ð¤¨¤ë¤³¤ÈÀÁ¤±¹ç¤¤¡£¤Ê¤Î¤Ç»ä¤Ï¤Û¤Ã¤È¤ó¤É¹Ô¤­¤Þ¤»¤ó(^^;;;;;

¤ªÌòΩ¤Á¥µ¥¤¥È


¤½¤Î¾¤«¤æ¤¤¤È¤³¤í¤Ë¼ê¤¬ÆϤ¯¥µ¥¤¥È¤Ç¤¹¡£

Quake2¤Î¥á¥Ã¥·¥å¥Õ¥¡¥¤¥ëmd2¤Î¹½Â¤¤Ë¤Ä¤¤¤Æ¡£

RtCW - MDS¹½Â¤¡£

Q3¥¨¥ó¥¸¥ó·Ï¤Ç»ÈÍѲÄǽ¤Ê¥×¥í¥°¥é¥Þ¥Ö¥ë¥·¥§¡¼¥À¡¼¥ê¥Õ¥¡¥ì¥ó¥¹¡£

RtCW·Ï¥Þ¥Ã¥×¤ÎºîÀ®¥Á¥å¡¼¥È¥ê¥¢¥ë¡£

Q3A MODºîÀ®¥Á¥å¡¼¥È¥ê¥¢¥ë¡Ê¼ç¤Ë¥³¡¼¥Ç¥£¥ó¥°¡Ë¡£

MD3¹½Â¤¡£

Milkshape¤Ç¥â¥Ç¥ê¥ó¥°µÚ¤ÓMD3¤òºî¤ë¥Á¥å¡¼¥È¥ê¥¢¥ë¡£

UT·Ï¥×¥ì¥¤¥ä¡¼¥â¥Ç¥ëºîÀ®¥Á¥å¡¼¥È¥ê¥¢¥ë¡£

SplashDamage¤ÎForum ¤¿¤¤¤Æ¤¤¤Îµ¿Ìä¤Ï¤³¤³¤Ç¸¡º÷¤¹¤ë¤È¥Ò¥Ã¥È¤·¤Þ¤¹¡£

ET MOD List by nullSkillz. ¥á¥¸¥ã¡¼¤É¤³¤í¤«¤é¥Þ¥¤¥Ê¡¼¤Ê¤â¤Î¤Þ¤ÇÌÖÍå¡£

(A HREF="http://www.cycloserver.com/index.htm">cyclserver
UNIX¤Ç¤Î¥µ¡¼¥Ð¡¼¤ÎΩ¤ÆÊý¡ÊET¤Ç¤Ï¤Ê¤¤¤Ç¤¹¤¬¡Ë¤È¥²¡¼¥à¤Ë´Ø¤¹¤ëÌÌÇò¤¤Ï䬤¢¤ê¤Þ¤¹¡£

Åê¹Æ¼Ô ikanatto : 05:59 PM | ¥³¥á¥ó¥È (0)

ºî¤Ã¤¿¿Í

ºî¤Ã¤¿¿Í¤Ïikanatto¤Ç¤¹¡£

Ï¢ÍíÀè:mak@s13.xrea.com
±Ñ¸ì¥µ¥¤¥È:http://mak.s13.xrea.com/ET/
(Moved)

ET¤Ï¥Þ¥ë¥Á¥×¥ì¥¤¥ä¡¼Éôʬ¤¬Ìµ½þÄ󶡤µ¤ì¤Æ¤«¤é¤º¡¼¤Ã¤ÈÍ·¤ó¤Ç¤Þ¤¹¡£
22»þ¤¯¤é¤¤¤ËTEIOU SEKKAI¤µ¤ó¤äHimatsubushi¤µ¤ó¤ÇÍ·¤Ð¤»¤Æ¤â¤é¤Ã¤Æ¤¤¤Þ¤¹¡£
ÆäËTEIOU SEKKAI¤µ¤ó¤Ï¤Ò¤¸¤ç¡¼¤Ë¤è¤¯Í·¤Ð¤»¤Æ¤â¤é¤Ã¤Æ¤Þ¤¹¡£¤¤¤Ä¤â¤¹¤¤¤Þ¤»¤ó¡£
RtCW¤Ï¤ä¤Ã¤Æ¤Þ¤»¤ó¡£

¤¤¤Á¤ª¤¦SW¤È¤¤¤¦¥¯¥é¥ó¤Ê¤Î¤«¥Á¡¼¥à¤Ê¤Î¤«´ó¤ê¹ç¤¤¤Ê¤Î¤«¤Ë½ê°¤·¤Æ¤¤¤Þ¤¹¡£
http://et_sw.at.infoseek.co.jp/
¤Ç¤¹¤¬Èó¾ï¤Ë»ÄÇ°¤Ê¤¬¤é¥¯¥é¥ó¤È¤·¤Æ¤Î³èÆ°¤ÏºÇ¶á¤Ê¤«¤Ê¤«¤¢¤ê¤Þ¤»¤ó¡£
¤½¤¦¤¤¤¦¤ï¤±¤Ç¤â¤Ã¤Ñ¤é¥Ñ¥Ö¥ê¥Ã¥¯¥µ¡¼¥Ð¡¼¤Ç°ìÈ̥ץ쥤¥ä¡¼¤È¤·¤ÆÍ·¤ó¤Ç¤¤¤Þ¤¹¡£

¹¥¤­¤Ê¥¯¥é¥¹¤ÏCo¤Ç¤¹¡£
¹¥¤­¤ÊÉð´ï¤Ï¥Ê¥¤¥Õ¤Ç¤¹¡£

FPS¤Ï¾¤Ë³Æ¼ïMOD´Þ¤áQ2¤ÈQ3A¤ò¤è¤¯¤ä¤Ã¤Æ¤¤¤Þ¤·¤¿¡£
½éFPS¤ÏDoom2¤Ç¤¹¡£ÅÅÏòóÀþ¤ÇÂÐÀ路¤Æ¤¤¤¿¤È¤Ïº£¤È¤Ê¤Ã¤Æ¤Ï¹Í¤¨¤Ë¤¯¤¤¤â¤Î¤Ç¤¹¡£
Q3A¤ÎUrban Terror¤Ï¤ªµ¤¤ËÆþ¤ê¤Ç¡¢¤Þ¤ÀÍ·¤ó¤Ç¤¤¤Þ¤¹¡£¤³¤Á¤é¤Ç¤Ïmak¤Ã¤Æ̾Á°¤ÇÍ·¤ó¤Ç¤¤¤Þ¤¹¡£

¾¤Ë¤âÏÃÂê¤Ë¤Ê¤Ã¤¿¥²¡¼¥à¤ÏÂçÄñ¤ä¤Ã¤Æ¤Þ¤¹¡£¥·¥ê¥¢¥¹¥µ¥à¤Ê¤ó¤«¤¤¤¤¤Ç¤¹¤Í¡£¥ê¥¢¥ë·Ï¤Ç¤¹¤ÈRainbow¡¡six¤«OFP¤¬¤Ê¤«¤Ê¤«¤è¤¤¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£
¾¤Ë¤âRTS¡¢RPG¡¢SLG¤È¥¸¥ã¥ó¥ëÌä¤ï¤ºÍ·¤ó¤Ç¤¤¤Þ¤¹¡£Blizzard¼Ò¤Î¥²¡¼¥à¤Ï¤É¤ì¤âÈó¾ï¤Ë¤ä¤ê¤³¤ó¤Ç¤¤¤Þ¤¹¡£¤È¤Æ¤â¼Á¤¬¹â¤¯¥¢¥Õ¥¿¡¼¥±¥¢¤â¤è¤¤¡¢²¤ÊƤˤ·¤Æ¤ÏÈó¾ï¤ËÄÁ¤·¤¤¥Ù¥ó¥À¡¼¤Ç¤¢¤ê¥Ç¥Ù¥í¥Ã¥Ñ¡¼¤Ç¤¹¤è¤Í¡£º£¸½ºß¤ÏWC3¤ò̤¤À¤Ë¤Á¤ç¤Ã¤ÈÍ·¤ó¤Ç¤¤¤¿¤ê¤·¤Þ¤¹¡£
ºÇ¶á¤Î¥²¡¼¥à¤òÇ㤦¤È¡¢·ë¹½¤Ê³ÎΩ¤Ç¥æ¡¼¥¶¡¼Â¦¤Ç¿·¤¿¤Ë¥²¡¼¥à¤ÎÍ×ÁǤò²þÊÑ¡¢¤â¤·¤¯¤ÏÄɲäǤ­¤ë¥Ä¡¼¥ë¤¬Áý¤¨¤Æ¤­¤¿¤è¤¦¤Ë»×¤¤¤Þ¤¹¡£¤³¤ó¤Ê¥Á¥ã¥ó¥¹¤ÏºÇÂç¸Â¤ËÀ¸¤«¤·¤¿¤¤¤Ç¤¹¤è¤Í¡£

Åê¹Æ¼Ô ikanatto : 05:53 PM

¤³¤Î¥µ¥¤¥È¤Ë¤Ä¤¤¤Æ

¡¡¤³¤Î¥µ¥¤¥È¤ÏWolfenstein:Enemy Territory¤òÃæ¿´¤Ë¡¢ÉáÄ̤Υץ쥤¥ä¡¼¤Ë¤È¤É¤Þ¤é¤º°ìÊâƧ¤ß¹þ¤ó¤Ç¥²¡¼¥à¤Î»ÅÁȤߤò¸«¤¿¤êÄ´¤Ù¤¿¤êºî¤Ã¤¿¤ê¤·¤Æ¤ß¤è¤¦¡¼¡¢¤È¹Í¤¨¤Æºî¤ê¤Þ¤·¤¿¡£´ðËÜŪ¤Ë¤Ï»ä¤¬¤ä¤Ã¤Æ¤ß¤¿¤³¤È¡¢Ä´¤Ù¤Æ¤ß¤¿¤³¤È¤Ê¤É¤ò¥³¥ó¥Æ¥ó¥Ä²½¤·¤ÆÃÖ¤¤¤Æ¤ª¤¯¤À¤±¤Ç¤¹¤¬¡¢¤³¤³¤ò¸«¤Æ¤¯¤ì¤¿¿Í¤«¤é²¿¤é¤«¤Î¥ê¥¯¥¨¥¹¥È¤¬¤¢¤ì¤ÐÀѶËŪ¤Ë±þ¤¨¤Æ¤¤¤­¤¿¤¤¤Ç¤¹¡£
¡¡¥á¥¤¥ó¤ÏET¤Î¥¹¥­¥ó¤ä¥µ¥¦¥ó¥É¤Ê¤É¤ÎÃÖ¤­´¹¤¨¡¢¤â¤¦¤Á¤ç¤Ã¤È¼ê¤ò¿­¤Ð¤·¤Æ¥³¡¼¥ÉÊѹ¹¤Ê¤É¤ò¾Ò²ð¤Ç¤­¤ì¤Ð¤È»×¤¤¤Þ¤¹¡£

¡¡»ä¸Ä¿Í¤Ï¼ç¤Ë¥³¡¼¥É¤ò¸«¤¿¤ê½ñ¤¤¤¿¤ê¡¢¥ª¥ê¥¸¥Ê¥ë¥¹¥­¥ó¤òºî¤Ã¤¿¤ê¤·¤Æ¤Þ¤¹¡£³¤³°¤ÎMOD¥Á¡¼¥à¤Ç¥â¥Ç¥é¡¼¤È¥¹¥­¥Ê¡¼¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¥¯¥ì¥¸¥Ã¥È¥í¡¼¥ë¤Ë»ä¤Î̾Á°¤¬½Ð¤ëÆü¤¬Íè¤ë¤«¤â¡ª¡©
¡¡¥²¡¼¥à¼«ÂΤβòÀâ¤ä¥×¥ì¥¤¥Æ¥¯¥Ë¥Ã¥¯¤Ê¤É¤Ë¤Ä¤¤¤Æ¤Ï¡¢oops!RtCW¤µ¤ó¤¬¤È¤Ã¤Æ¤â¾Ü¤·¤¯¥³¥¢¤ËÀâÌÀ¤·¤Æ¤¯¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤ò¤´»²¾È¤¯¤À¤µ¤¤¤Í¡£¤Þ¤¿²òÀâ°Ê³°¤Ë¤âºÇ¿·¥Ë¥å¡¼¥¹¤ä¥¤¥ó¥µ¥¤¥À¡¼¾ðÊó¤âºÜ¤»¤Æ¤¤¤é¤Ã¤·¤ã¤¤¤Þ¤¹¤Î¤Ç¡¢À§ÈóÀ§Èó°ìÅÙ¤´Í÷¤¯¤À¤µ¤¤¡£
¡¡Wolfenstein:Enemy Territory¤Ë¤³¤ì¤«¤éÄ©¤à½é¿´¼Ô¤ÎÊý¤Ï¡¢¤³¤Á¤é¤«¤³¤Á¤é¤Ë¤ÆÁàºîÊýË¡¤ò¤Ä¤«¤ó¤Ç¤¯¤À¤µ¤¤¤Í¡£
¡¡º£¤Þ¤Ç¤ÏÊ¿°×¤Êhtml¤òľÀÜÂǤÁ¹þ¤ó¤Ç¥³¥ó¥Æ¥ó¥Ä¤òºî¤Ã¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¤³¤Î¤¿¤ÓMovable Type¤òƳÆþ¤·¤Þ¤·¤¿¡£¤È¤Æ¤â´Êñ¤Ë¤­¤ì¤¤¤Êʸ½ñ¤¬ºî¤ì¤ë¤Î¤Ç´¶Æ°¤·¤Æ¤¤¤Þ¤¹¡£¤¿¤À¡¢¶áº¢¤Îή¹Ô¤Ê¤Î¤«¾®¤µ¤Ê¥Õ¥©¥ó¥È¤Èø¤á¤ÎÇÛ¿§¤¬µ¤¤ËÆþ¤é¤Ê¤¤¤Î¤Ç¡¢»ëǧÀ­¤ò¹â¤á¤ë¤¿¤á¤ËÇطʤò°Å¤¯¡¢Ê¸»ú¤ÏÌÀ¤ë¤¯Â礭¤¯¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ó¤Ê¤Ë¸«¤Ë¤¯¤¤¥Ç¥¶¥¤¥ó¤ò¹¥¤à¤È¤Ï¡¢³°¿Í¤µ¤ó¤ÏÌܤ¬¤è¤Û¤É¤¤¤¤¤Î¤Ç¤·¤ç¤¦¤«¤Í¡©

Åê¹Æ¼Ô ikanatto : 05:44 PM