µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡ÈÈѪ´«Ææ¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

´«Ææ GOM ÒýÇæÖУ¬ÈçºÎ±àд´Ìɱ¼¼ÄܵĴ¥·¢½Å±¾´úÂë

Èȶȣº
ÔÚ´«ÆæÓÎÏ·À´Ìɱ¼¼ÄÜ×÷ΪսʿְҵµÄ±êÖ¾ÐÔ¼¼ÄÜ£¬Æä´¥·¢Ð§¹ûÖ±½ÓÓ°ÏìÕ½¶·ÌåÑé¡£¶ÔÓÚʹÓà GOM ÒýÇæµÄ·þÎñ¶ËÀ´Ëµ£¬Í¨¹ý½Å±¾´úÂë¿ÉÒÔÁé»î¿ØÖÆ´Ìɱ¼¼ÄܵĴ¥·¢Ìõ¼þ¡¢É˺¦Ð§¹ûºÍ¸½¼ÓÌØÐ§¡£ÏÂÃæ¾ÍÏêϸ½éÉÜÈçºÎ±àдºÍÉèÖôÌɱ¼¼ÄܵĴ¥·¢½Å±¾´úÂë¡£
ÈçºÎÀí½â´Ìɱ¼¼ÄܵĴ¥·¢Âß¼­
ÔÚ¿ªÊ¼±àд½Å±¾Ç°£¬ÐèÒªÏÈÃ÷È· GOM ÒýÇæÖдÌɱ¼¼ÄܵĻù±¾´¥·¢Âß¼­¡£´Ìɱ¼¼ÄܵĺËÐÄÊÇ “¸ôλ¹¥»÷”£¬¼´µ±Ä¿±êÓëÍæ¼ÒÖ®¼ä¸ô×ÅÒ»¸ö¸ñ×Óʱ£¬ÄÜÔì³É¶îÍâÉ˺¦»òÌØÊâЧ¹û£¨ÈçºöÂÔ²¿·Ö·ÀÓù£©¡£
´Ó½Å±¾½Ç¶È¿´£¬´¥·¢Âß¼­°üº¬Èý¸ö¹Ø¼ü»·½Ú£ºÒ»ÊÇÅжÏÍæ¼ÒÊÇ·ñʹÓÃÁË´Ìɱ¼¼ÄÜ£»¶þÊǼì²âÍæ¼ÒÓëÄ¿±êµÄλÖùØÏµÊÇ·ñ·ûºÏ¸ôλÌõ¼þ£»ÈýÊǸù¾ÝǰÁ½¸öÌõ¼þÖ´ÐжÔÓ¦µÄÉ˺¦¼ÆËãºÍÌØÐ§Õ¹Ê¾¡£
GOM ÒýÇæÍ¨¹ý “¼¼ÄÜ ID” À´Ê¶±ð²»Í¬¼¼ÄÜ£¬´Ìɱ¼¼ÄܵÄĬÈÏ ID ͨ³£ÊÇ 12£¨²»Í¬°æ±¾¿ÉÄÜÓвîÒ죬ÐèÔÚÒýÇæ¼¼ÄÜÁбíÖÐÈ·ÈÏ£©¡£½Å±¾ÐèҪͨ¹ýÕâ¸ö ID ÅжÏÍæ¼ÒÊͷŵÄÊÇ·ñΪ´Ìɱ¼¼ÄÜ¡£
ÈçºÎÈ·¶¨½Å±¾µÄ´æ·ÅλÖú͵÷Ó÷½Ê½
GOM ÒýÇæµÄ¼¼ÄÜ´¥·¢½Å±¾Óй̶¨µÄ´æ·Å¹æÔò£¬ÕýÈ·µÄλÖòÅÄÜÈ·±£½Å±¾±»ÒýÇæÊ¶±ð£º
¼¼ÄÜÏà¹Ø½Å±¾Í¨³£·ÅÔÚ·þÎñ¶Ë “Envir\Skill” Ŀ¼Ï£¬ÎļþÃûÐèÓë¼¼ÄÜ ID ¶ÔÓ¦¡£ÀýÈç´Ìɱ¼¼ÄÜ ID ÊÇ 12£¬½Å±¾Îļþ¾ÍÃüÃûΪ “12.txt”¡£Èç¹ûÐèÒª¶à¸ö¼¼Äܹ²ÓÃÒ»Ì×´¥·¢Âß¼­£¬Ò²¿ÉÒÔÔÚ “QFunction-0.txt”£¨È«¾Ö¹¦Äܽű¾£©ÖÐͨ¹ý¼¼ÄÜ ID ÅжϺóµ÷ÓÃͨÓôúÂë¡£
µ÷Ó÷½Ê½·ÖΪÁ½ÖÖ£ºÒ»ÊÇ “¼¼ÄÜÊÍ·Åʱ×Ô¶¯µ÷ÓÔ£¬Ö»Ð轫½Å±¾·ÅÔÚÉÏÊöĿ¼£¬ÒýÇæ»áÔÚÍæ¼ÒÊͷż¼ÄÜʱ×Ô¶¯Ö´ÐжÔÓ¦µÄ½Å±¾£»¶þÊÇ “ÊÖ¶¯µ÷ÓÔ£¬ÔÚÆäËû½Å±¾£¨ÈçÈÎÎñ½Å±¾£©ÖÐͨ¹ý “CALLSKILL” ÃüÁîÇ¿ÖÆ´¥·¢£¬µ«ÕâÖÖ·½Ê½¶àÓÃÓÚÌØÊⳡ¾°¡£
½¨ÒéÐÂÊÖÏÈʹÓõÚÒ»ÖÖ·½Ê½£¬Ö±½ÓÔÚ “Skill” Ŀ¼Ï´´½¨¶ÔÓ¦ ID µÄ½Å±¾Îļþ£¬¼õÉÙÅäÖò½Öè¡£
ÈçºÎ±àд»ù´¡µÄ´¥·¢Ìõ¼þÅжϴúÂë
´¥·¢Ìõ¼þÅжÏÊǽű¾µÄºËÐÄ£¬ÐèҪȷÈϼ¼ÄÜÀàÐÍ¡¢Ä¿±ê״̬ºÍλÖùØÏµ¡£ÒÔÏÂÊÇ»ù´¡´úÂë¿ò¼Ü£º
// ¶¨Òå¼¼ÄÜÊÍ·ÅÕߺÍÄ¿±ê±äÁ¿
Human = %1 // ¼¼ÄÜÊÍ·ÅÕߣ¨Íæ¼Ò¶ÔÏó£©
Target = %2 // ¼¼ÄÜÄ¿±ê£¨¹ÖÎï»òÍæ¼Ò¶ÔÏó£©

// ÅжÏÊͷŵÄÊÇ·ñΪ´Ìɱ¼¼ÄÜ
If %3 != 12 Then // %3´ú±íµ±Ç°¼¼ÄÜID
Return // ²»ÊÇ´Ìɱ¼¼ÄÜÔòÍ˳ö½Å±¾
End If

// ÅжÏÄ¿±êÊÇ·ñ´æÔÚ£¨±ÜÃâ¹¥»÷¿ÕÄ¿±ê±¨´í£©
If Target.IsExist() = 0 Then
Return
End If

// ÅжÏÍæ¼ÒÓëÄ¿±êÊÇ·ñΪ¸ôλ¹ØÏµ
// »ñÈ¡Íæ¼ÒºÍÄ¿±êµÄ×ø±ê
HX = Human.GetX()
HY = Human.GetY()
TX = Target.GetX()
TY = Target.GetY()

// ¼ÆËã×ø±ê²î£¨¸ôλ¹¥»÷ÒªÇóX»òY×ø±êÏà²î2£¬ÇÒÁíÒ»Öá×ø±êÏàͬ£©
DX = Abs(HX - TX)
DY = Abs(HY - TY)

// ·ûºÏ¸ôλÌõ¼þ£¨ºáÏò»ò×ÝÏò¸ôÒ»¸ñ£©
If (DX = 2 And DY = 0) Or (DX = 0 And DY = 2) Then
// ¸ôλ´¥·¢ÌØÊâЧ¹û£¨ºóÐø´úÂë·ÅÕâÀ
Else
// ·Ç¸ôλÔòÖ´ÐÐÆÕͨ¹¥»÷Âß¼­£¨¿ÉÑ¡£©
End If

Õâ¶Î´úÂëµÄ×÷ÓÃÊÇ “¹ýÂËÎÞЧ´¥·¢”£¬Ö»Óе±Íæ¼ÒʹÓôÌɱ¼¼ÄÜ¡¢Ä¿±ê´æÔÚÇÒ´¦ÓÚ¸ôλλÖÃʱ£¬²Å»á¼ÌÐøÖ´ÐкóÐøµÄÉ˺¦¼ÆËã¡£
ÈçºÎÉèÖôÌɱ¼¼ÄܵÄÉ˺¦¼ÆËã¹æÔò
´Ìɱ¼¼ÄܵÄÉ˺¦¼ÆËãÐèÒªÔÚ»ù´¡¹¥»÷µÄ»ù´¡ÉÏÔö¼Ó¶îÍâЧ¹û£¬GOM ½Å±¾ÌṩÁ˶àÖÖ¿ØÖÆ·½Ê½£º
»ù´¡É˺¦µ÷Õû
ͨ¹ý “Human.GetAttack ()” »ñÈ¡Íæ¼Ò»ù´¡¹¥»÷Á¦£¬³ËÒÔ¸ôλÉ˺¦ÏµÊý£¨Í¨³£ÊÇ 1.5 ±¶£©£º
// ¼ÆËã»ù´¡É˺¦
BaseDmg = Human.GetAttack() // »ñÈ¡Íæ¼Ò¹¥»÷Á¦
If (DX = 2 And DY = 0) Or (DX = 0 And DY = 2) Then
FinalDmg = BaseDmg * 1.5 // ¸ôλÉ˺¦·­±¶
Else
FinalDmg = BaseDmg // ·Ç¸ôλÕý³£É˺¦
End If

ºöÂÔÄ¿±ê·ÀÓù
´Ìɱ¼¼Äܵľ­µäЧ¹ûÊǺöÂÔÄ¿±ê²¿·Ö·ÀÓù£¬¿Éͨ¹ý “Target.GetDefense ()” »ñȡĿ±ê·ÀÓùÖµºó¿Û³ý£º
// ºöÂÔ50%·ÀÓù
Defense = Target.GetDefense()
IgnoreDef = Defense * 0.5
FinalDmg = FinalDmg + IgnoreDef // É˺¦Ôö¼ÓºöÂԵķÀÓùÖµ

¸½¼Ó¹Ì¶¨É˺¦
²¿·Ö°æ±¾»á¸ø´Ìɱ¼¼Äܸ½¼Ó¹Ì¶¨É˺¦£¨ÈçÕë¶Ô¹ÖÎïµÄ¶îÍâÉ˺¦£©£º
// ¶Ô¹ÖÎï¶îÍâÔì³É50µãÉ˺¦
If Target.IsMonster() = 1 Then
FinalDmg = FinalDmg + 50
End If

×îºóͨ¹ý “Target.Hurt (FinalDmg, Human)” ÃüÁ¼ÆËãºÃµÄÉ˺¦Ê©¼Ó¸øÄ¿±ê¡£
ÈçºÎÌí¼Ó¼¼ÄÜ´¥·¢Ê±µÄÌØÐ§ºÍÌáʾ
ΪÁËÈü¼ÄÜЧ¹û¸üÖ±¹Û£¬½Å±¾¿ÉÒÔÌí¼ÓÊÓ¾õÌØÐ§ºÍÎÄ×ÖÌáʾ£º
ÌØÐ§Õ¹Ê¾
GOM ÒýÇæÖ§³Ö²¥·ÅÄÚÖÃÌØÐ§£¨Èçµ¶¹â¡¢_hit Ч¹û£©£¬Í¨¹ý “PlayEffect” ÃüÁîʵÏÖ£º
// ÔÚÄ¿±êλÖò¥·Å´ÌÉ±ÌØÐ§£¨ÌØÐ§ID¿ÉÔÚÒýÇæÌØÐ§ÁбíÖвéѯ£©
Target.PlayEffect(105) // 105¶ÔÓ¦¸ôλ´ÌɱµÄµ¶¹âÌØÐ§

// ²¥·ÅÒôЧ£¨Èç“àÍ”µÄ¹¥»÷Éù£©
Human.PlaySound(201)

ÎÄ×ÖÌáʾ
µ±´¥·¢¸ôλЧ¹ûʱ£¬¸øÍæ¼ÒºÍÄ¿±êÏÔʾÌáʾÎÄ×Ö£º
// ¸øÊÍ·ÅÕßÌáʾ
Human.Msg("ÄãµÄ´Ìɱ¾«×¼ÃüÖÐÄ¿±ê£¡")

// ¸øÄ¿±êÌáʾ£¨Èç¹ûÊÇÍæ¼Ò£©
If Target.IsPlayer() = 1 Then
Target.Msg("Äã±»¶Ô·½µÄ´Ìɱ¼¼ÄÜÖØ´´£¡")
End If

ÕâÐ©ÌØÐ§ºÍÌáʾÐèÒª¸ù¾ÝÓÎÏ·°æ±¾·ç¸ñµ÷Õû£¬±ÜÃâÓëÆäËû¼¼ÄÜЧ¹û³åÍ»¡£
ÈçºÎ´¦ÀíÌØÊⳡ¾°µÄ´¥·¢ÏÞÖÆ
ÔÚijЩ³¡¾°ÖÐÐèÒªÏÞÖÆ´Ìɱ¼¼ÄܵĴ¥·¢£¨Èç°²È«Çø¡¢Ìض¨¸±±¾£©£¬½Å±¾ÖпÉÌí¼Ó³¡¾°Åжϣº
°²È«ÇøÏÞÖÆ
// ÅжÏÊÍ·ÅÕßÊÇ·ñÔÚ°²È«Çø
If Human.InSafeZone() = 1 Then
Human.Msg("°²È«ÇøÄÚÎÞ·¨Ê¹ÓôÌɱ¼¼ÄÜ£¡")
Return // ÖÕÖ¹¼¼ÄÜ´¥·¢
End If

¸±±¾ÌØÊâ¹æÔò
// »ñÈ¡µ±Ç°µØÍ¼±àºÅ£¨¼ÙÉ踱±¾µØÍ¼±àºÅΪ100£©
MapID = Human.GetMapID()
If MapID = 100 Then
// ¸±±¾ÖдÌɱÉ˺¦¼õ°ë
FinalDmg = FinalDmg * 0.5
Human.Msg("¸±±¾ÖдÌɱÍþÁ¦Ï½µ£¡")
End If

Ä¿±êÏÞÖÆ
½ûÖ¹¶ÔÌØ¶¨ NPC »òÍæ¼ÒʹÓôÌɱ¼¼ÄÜ£º
// Ä¿±êÊÇÌØÊâNPC£¨ÈçÐÂÊÖÖ¸µ¼£©Ôò²»´¥·¢
If Target.IsNPC() = 1 And Target.GetName() = "ÐÂÊÖÖ¸µ¼" Then
Human.Msg("¸ÃÄ¿±êÎÞ·¨±»´Ìɱ£¡")
Return
End If

ÕâЩÏÞÖÆÄÜÈü¼Äܸü·ûºÏÓÎÏ·µÄƽºâÉè¼Æ£¬±ÜÃâ³öÏÖ²»ºÏÀíµÄÕ½¶·³¡¾°¡£
ÈçºÎµ÷ÊԺͲâÊԽű¾´úÂë
±àдÍê³Éºó£¬ÐèҪͨ¹ýµ÷ÊÔÈ·±£½Å±¾Õý³£ÔËÐУ¬²½ÖèÈçÏ£º
¼ì²éÓï·¨´íÎó£ºGOM ÒýÇæµÄ½Å±¾¶ÔÓï·¨¸ñʽҪÇóÑϸñ£¬È±ÉÙ “End If” »òÀ¨ºÅ²»Æ¥Åä¶¼»áµ¼Ö½ű¾Ê§Ð§¡£¿ÉÒÔÏÈÔÚ “M2 ÒýÇæ→½Å±¾µ÷ÊÔ” Öй´Ñ¡ “ÏÔʾ½Å±¾´íÎ󔣬Æô¶¯·þÎñ¶Ëʱ»áÌáʾ¾ßÌå´íÎóλÖá£
µ¥»ú²âÊÔ£ºÓà GM ºÅ´´½¨Õ½Ê¿½ÇÉ«£¬Ñ§Ï°´Ìɱ¼¼ÄÜ£¬ÕÒÒ»¸ö¹ÖÎï²âÊÔ¸ôλºÍ·Ç¸ôλ¹¥»÷µÄЧ¹û£¬¹Û²ìÉ˺¦ÊýÖµ¡¢ÌØÐ§ºÍÌáʾÊÇ·ñ·ûºÏÔ¤ÆÚ¡£
¶à³¡¾°²âÊÔ£ºÔÚ°²È«Çø¡¢¸±±¾¡¢Ò°ÍâµÈ²»Í¬³¡¾°²âÊÔ£¬È·ÈÏÏÞÖÆÌõ¼þÊÇ·ñÉúЧ£»¸ü»»²»Í¬·ÀÓùµÄÄ¿±ê£¬¼ì²éÉ˺¦¼ÆËãÊÇ·ñ׼ȷ¡£
ÈÕÖ¾¼Ç¼£ºÔڽű¾ÖÐÌí¼ÓÈÕÖ¾Êä³ö£¬¼Ç¼ÿ´Î´¥·¢µÄ¹Ø¼üÊý¾Ý£¬·½±ãÅŲéÎÊÌ⣺
// ½«´¥·¢ÐÅϢдÈëÈÕÖ¾£¨ÈÕÖ¾ÎļþÔÚEnvir\Log\SkillLog.txt£©
WriteLog "Envir\Log\SkillLog.txt", "Íæ¼Ò" + Human.GetName() + "ʹÓôÌɱ¼¼ÄÜ£¬Ä¿±ê" + Target.GetName() + "£¬É˺¦" + FinalDmg

ͨ¹ýÈÕÖ¾¿ÉÒÔÇåÎú¿´µ½¼¼ÄÜ´¥·¢Ê±µÄ²ÎÊýÊÇ·ñÕýÈ·£¬¿ìËÙ¶¨Î»´íÎóÔ­Òò¡£
ÈçºÎÓÅ»¯½Å±¾ÌáÉýÔËÐÐЧÂÊ
¶ÔÓڸ߲¢·¢µÄ·þÎñ¶Ë£¬½Å±¾Ð§ÂʺÜÖØÒª£¬¿Éͨ¹ýÒÔÏ·½Ê½ÓÅ»¯£º
¼õÉÙÖØ¸´¼ÆË㣺½«¶à´ÎʹÓõıäÁ¿£¨ÈçÍæ¼Ò×ø±ê¡¢Ä¿±êÀàÐÍ£©Ö»¼ÆËãÒ»´Î£¬±ÜÃâÖØ¸´µ÷Óú¯Êý£º
// ÓÅ»¯Ç°£º¶à´Îµ÷ÓÃGetX()
If Human.GetX() - Target.GetX() = 2 Then ...
If Human.GetX() - Target.GetX() = -2 Then ...

// ÓÅ»¯ºó£º¼ÆËãÒ»´Î×ø±ê²î
DX = Human.GetX() - Target.GetX()
If DX = 2 Or DX = -2 Then ...

¼ò»¯Ìõ¼þÅжϣº½«¶à¸öÌõ¼þºÏ²¢£¬¼õÉÙǶÌײ㼶£º
// ºÏ²¢¸ôλÅжÏÌõ¼þ
If (Abs(HX - TX) = 2 And HY = TY) Or (Abs(HY - TY) = 2 And HX = TX) Then
// Ö´ÐиôλÂß¼­
End If

±ÜÃâÎÞЧ²Ù×÷£ºÔÚÄ¿±ê²»´æÔÚ»ò¼¼Äܲ»Æ¥Åäʱ£¬¾¡ÔçÓà “Return” Í˳ö½Å±¾£¬¼õÉÙºóÐø´úÂëÖ´ÐС£
ÓÅ»¯ºóµÄ½Å±¾ÄܼõÉÙ·þÎñÆ÷×ÊÔ´Õ¼Óã¬ÓÈÆäÔÚÍæ¼ÒÃܼ¯µÄÕ½¶·³¡¾°ÖÐЧ¹ûÃ÷ÏÔ¡£
±àд´«Ææ GOM ÒýÇæµÄ´Ìɱ´¥·¢½Å±¾£¬¹Ø¼üÔÚÓÚÀíÇå “Ìõ¼þÅжÏ→É˺¦¼ÆËã→Ч¹ûչʾ” µÄÂß¼­Á´Ìõ¡£ÐÂÊÖ¿ÉÒÔ´Ó»ù´¡¿ò¼Ü¿ªÊ¼£¬Öð²½Ìí¼ÓÌØÐ§¡¢ÏÞÖÆºÍÓÅ»¯´úÂë¡£Èç¹ûÓöµ½¸´ÔÓÎÊÌ⣬¿É²Î¿¼ GOM ÒýÇæ×Ô´øµÄ “¼¼Äܽű¾Ê¾Àý”£¨Í¨³£ÔÚ “Envir\Skill” Ŀ¼ÏÂÓÐĬÈϽű¾£©£¬»òÔÚÒýÇæ¹Ù·½ÂÛ̳²éÕÒͬÀàÎÊÌâµÄ½â¾ö°¸Àý¡£Ëæ×ŶԽű¾Âß¼­µÄÊìϤ£¬»¹ÄÜÀ©Õ¹³ö¸ü·á¸»µÄЧ¹û£¬Èç “±©»÷¸ÅÂÊÌáÉý”“ÎüѪЧ¹û” µÈ£¬ÈôÌɱ¼¼Äܸü¾ßÌØÉ«¡£