Warcraft3¤ÎMODÁí¹ç°ÆÆâ
- Jass Script/¥é¥¤¥Ö¥é¥ê½¸/Damage Modify ¤ÎÊÔ½¸
[
¥Õ¥¡¥¤¥ë¤òźÉÕ¤¹¤ë
] [
¤³¤Î¥Ú¡¼¥¸¤Î̾Á°¤òÊѹ¹¤¹¤ë
] [
¤³¤Î¥Ú¡¼¥¸¤òÊÔ½¸¤¹¤ë
]
¥µ¥¤¥È¥á¥Ë¥å¡¼
¥Ú¡¼¥¸°ìÍ÷
ºÇ¶á¤Î¹¹¿·¥Ú¡¼¥¸
»È¤¤Êý
¥È¥Ã¥×¤ØÌá¤ë
Jass¹ÖºÂ
[[¥È¥Ã¥×>FrontPage]] > [[MAPºîÀ®]] > [[Jass Script]] > [[¥é¥¤¥Ö¥é¥ê½¸>Jass Script/¥é¥¤¥Ö¥é¥ê½¸]] > Damage Modify &br; »ØÄꤷ¤¿¥æ¥Ë¥Ã¥È¤Ë»ØÄꤷ¤¿ÃͤÀ¤±¥À¥á¡¼¥¸Ãͤò¾å¾º¤µ¤»¤ë¡£ #contents *¥é¥¤¥Ö¥é¥ê [#m9c3ed04] //²¼½àÈ÷ //¡¡¢¥ª¥Ö¥¸¥§¥¯¥È¥¨¥Ç¥£¥¿¤ÇItem Damage Bonus('AIfg'Åù)¤òBase¤Ë¤·¤¿¥¹¥¥ë¤òÊ£¿ôÍÑ°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ // //¢¡¢¤¹¤Ù¤Æ¤Î¥¹¥¥ë¤Î¥ì¥Ù¥ë¤ò2¤ËÀßÄꤷ¡¢¥ì¥Ù¥ë1¤Î¥À¥á¡¼¥¸Ãͤò0 //¥ì¥Ù¥ë2¤Î¥À¥á¡¼¥¸Ãͤò¤½¤ì¤¾¤ì1,2,4,8,16,32,64,128,256,512....¤Ë¤·¤Æ¤¯¤À¤µ¤¤ //(°Ê²¼¡¢¤½¤ì¤é¤òdamage+1,damage+2,damage+4....¤È¸Æ¤Ó¤Þ¤¹¡£) // //£¡¢Spell Book('Aspb')¤òBase¤Ë¤·¤¿¥¹¥¥ë¤ò1¤ÄÍÑ°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ //Maximum Spells¤ÈMinimum Spells¤ÎÃͤò¢¤Çºî¤Ã¤¿Damage Bonus¤Î¥¹¥¥ë¤Î¿ô¤ÈƱ¤¸¤Ë¤·¤Æ¡¢ //Spell List¤Ë¢¤Çºî¤Ã¤¿¥¹¥¥ë¤¹¤Ù¤Æ¤òÆþ¤ì¤Þ¤¹¡£¤³¤³¤Ç¤ÏSpell book = 'A006'¤Ç¤¹¡£ //=========================================================================== globals //¥À¥á¡¼¥¸¤ò¾å¤²¤ëskill¤ÎID¤ò³ÊǼ¤¹¤ëglobalÊÑ¿ô¤òÄêµÁ integer array bonusID endglobals //=========================================================================== library ModifyDamageBonus initializer SetBonusID private function SetBonusID takes nothing returns nothing //Initializer¤ò»È¤Ã¤ÆºÇ½é¤ËglobalÊÑ¿ô¤ËID¤òÂåÆþ¤µ¤»¤Þ¤¹¡£ set bonusID[0] = 'A00H' //damage+1 set bonusID[1] = 'A00G' //damage+2 set bonusID[2] = 'A00F' //damage+4 set bonusID[3] = 'A00E' //damage+8 set bonusID[4] = 'A007' //damage+16 set bonusID[5] = 'A008' //damage+32 set bonusID[6] = 'A009' //damage+64 set bonusID[7] = 'A00A' //damage+128 set bonusID[8] = 'A00B' //damage+256 set bonusID[9] = 'A00C' //damage+512 set bonusID[10] = 'A00D' //damage+1024 //°Ê²¼¡¢Æ±¤¸¤è¤¦¤Ë¹¥¤¤Ê¿ô¤À¤±¥¹¥¥ë¤òºî¤Ã¤ÆÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ï11¸Ä¤À¤±ºîÀ®¤·¤Þ¤·¤¿ endfunction function ModifyDamage takes unit u,integer dam returns nothing local integer i = 0 //Spell book¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¥æ¥Ë¥Ã¥È¤ËÄɲà if GetUnitAbilityLevel(u,'A006') == 0 then call SetPlayerAbilityAvailable(GetOwningPlayer(u),'A006',false) //Spell Book¤¬¸«¤¨¤Ê¤¤¤è¤¦¤Ë¤¹¤ë½èÍý call UnitAddAbility(u,'A006') endif loop exitwhen dam < 1 or i >= 11 // i¤ÎºÇÂçÃͤòºî¤Ã¤¿¥À¥á¡¼¥¸¥¹¥¥ë¤Î¿ô¤ÈƱ¤¸¤Ë¤¹¤ë if dam == 2*(dam/2) + 1 then call SetUnitAbilityLevel(u,bonusID[i],2) else call SetUnitAbilityLevel(u,bonusID[i],1) endif set dam = dam / 2 set i = i + 1 endloop endfunction //=========================================================================== //Damage Modify¤ò¼è¤ê½ü¤¯function function RemoveModifyDamage takes unit whichunit returns nothing call UnitRemoveAbility(whichunit,'A006') endfunction endlibrary //=========================================================================== **»È¤¤Êý¤Î¥µ¥ó¥×¥ë [#f4d8225c] ''gg_unit_H000_0000''¤Î¥À¥á¡¼¥¸Ãͤò20ÉôÖ''gg_unit_H000_0000''¤ÎºÇÂçHP¤Î5%¤À¤±¾å¾º¤µ¤»¤ë //=========================================================================== function Damage_Bonus_Sample takes nothing returns nothing call ModifyDamage(gg_unit_H000_0000,GetUnitState(gg_unit_H000_0000,UNIT_STATE_MAX_LIFE)*.05) call TriggerSleepAction(20) call RemoveModifyDamage(gg_unit_H000_0000) endfunction //=========================================================================== Î㤨¤Ð''gg_unit_H000_0000''¤ÎºÇÂçHP¤¬1425¤À¤Ã¤¿¾ì¹ç¡¢¥À¥á¡¼¥¸¤Ï1425*0.05=71(¾®¿ôÅÀ°Ê²¼ÀÚ¼Î)¾å¾º¤·¤Þ¤¹¡£~ **½èÍý¤ÎÀâÌÀ [#n043e068] ´ðËÜŪ¤Ê¸¶Íý¤Ï[[10¿Ê¿ô¤«¤é2¿Ê¿ô¤Ø¤ÎÊÑ´¹:http://www.infonet.co.jp/ueyama/ip/binary/dec2bin.html]]¤ÈƱ¤¸¤Ç¤¹¡£~ ¥µ¥ó¥×¥ë¤òÎã¤Ë¤¹¤ë¤È¥À¥á¡¼¥¸¤ò71¾å¾º¤µ¤»¤ë¤Ë¤Ï 71¤Î2¿Ê¿ôɽµ¢ª1000111 = 1+2+4+64 ¤È¤Ê¤êdamage+1,+2,+4,+64¤Î4¤Ä¤ò»ý¤¿¤»¤ì¤ÐÎɤ¤¤ï¤±¤Ç¤¹¡£ »ØÄꤵ¤ì¤¿¥À¥á¡¼¥¸Ãͤò2¤Ç³ä¤ê¡¢Í¾¤ê¤¬½Ð¤¿¤é¥¹¥¥ë¤Î¥ì¥Ù¥ë¤ò2¤Ë¤·¤Æ¡¢Í¾¤ê¤¬0¤Ê¤é¥ì¥Ù¥ë¤ò0¤Ë¤·¤Æ¤¤¤Þ¤¹¡£~ ¤³¤³¤Ç¤Ï''À°¿ô¤Î³ä¤ê»»¤Ï¾®¿ôÅÀ¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì¤ë¤³¤È''¤òÍøÍѤ·¤Æ¡¢''if dam == 2*(dam/2) + 1 then''¤Ç;¤ê¤¬1¤«0¤«¤òȽÄꤵ¤»¤Æ¤¤¤Þ¤¹¡£(¤³¤Î¼°¤¬À®Î©¤¹¤ì¤Ð;¤ê¤Ï1)~ ¤³¤Î½èÍý¤ò¥À¥á¡¼¥¸Ãͤ¬1¤Ë¤Ê¤ë¤«¡¢½àÈ÷¤·¤¿¥À¥á¡¼¥¸¥¹¥¥ë¤Î¿ô¤òĶ¤¨¤ë¤Þ¤Ç³¤±¤Æ¤¤¤Þ¤¹¡£ **ɬÍפʥ饤¥Ö¥é¥ê [#f4c2ac5d] ¤Ê¤·
¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÊѹ¹¤·¤Ê¤¤
[[¥È¥Ã¥×>FrontPage]] > [[MAPºîÀ®]] > [[Jass Script]] > [[¥é¥¤¥Ö¥é¥ê½¸>Jass Script/¥é¥¤¥Ö¥é¥ê½¸]] > Damage Modify &br; »ØÄꤷ¤¿¥æ¥Ë¥Ã¥È¤Ë»ØÄꤷ¤¿ÃͤÀ¤±¥À¥á¡¼¥¸Ãͤò¾å¾º¤µ¤»¤ë¡£ #contents *¥é¥¤¥Ö¥é¥ê [#m9c3ed04] //²¼½àÈ÷ //¡¡¢¥ª¥Ö¥¸¥§¥¯¥È¥¨¥Ç¥£¥¿¤ÇItem Damage Bonus('AIfg'Åù)¤òBase¤Ë¤·¤¿¥¹¥¥ë¤òÊ£¿ôÍÑ°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ // //¢¡¢¤¹¤Ù¤Æ¤Î¥¹¥¥ë¤Î¥ì¥Ù¥ë¤ò2¤ËÀßÄꤷ¡¢¥ì¥Ù¥ë1¤Î¥À¥á¡¼¥¸Ãͤò0 //¥ì¥Ù¥ë2¤Î¥À¥á¡¼¥¸Ãͤò¤½¤ì¤¾¤ì1,2,4,8,16,32,64,128,256,512....¤Ë¤·¤Æ¤¯¤À¤µ¤¤ //(°Ê²¼¡¢¤½¤ì¤é¤òdamage+1,damage+2,damage+4....¤È¸Æ¤Ó¤Þ¤¹¡£) // //£¡¢Spell Book('Aspb')¤òBase¤Ë¤·¤¿¥¹¥¥ë¤ò1¤ÄÍÑ°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ //Maximum Spells¤ÈMinimum Spells¤ÎÃͤò¢¤Çºî¤Ã¤¿Damage Bonus¤Î¥¹¥¥ë¤Î¿ô¤ÈƱ¤¸¤Ë¤·¤Æ¡¢ //Spell List¤Ë¢¤Çºî¤Ã¤¿¥¹¥¥ë¤¹¤Ù¤Æ¤òÆþ¤ì¤Þ¤¹¡£¤³¤³¤Ç¤ÏSpell book = 'A006'¤Ç¤¹¡£ //=========================================================================== globals //¥À¥á¡¼¥¸¤ò¾å¤²¤ëskill¤ÎID¤ò³ÊǼ¤¹¤ëglobalÊÑ¿ô¤òÄêµÁ integer array bonusID endglobals //=========================================================================== library ModifyDamageBonus initializer SetBonusID private function SetBonusID takes nothing returns nothing //Initializer¤ò»È¤Ã¤ÆºÇ½é¤ËglobalÊÑ¿ô¤ËID¤òÂåÆþ¤µ¤»¤Þ¤¹¡£ set bonusID[0] = 'A00H' //damage+1 set bonusID[1] = 'A00G' //damage+2 set bonusID[2] = 'A00F' //damage+4 set bonusID[3] = 'A00E' //damage+8 set bonusID[4] = 'A007' //damage+16 set bonusID[5] = 'A008' //damage+32 set bonusID[6] = 'A009' //damage+64 set bonusID[7] = 'A00A' //damage+128 set bonusID[8] = 'A00B' //damage+256 set bonusID[9] = 'A00C' //damage+512 set bonusID[10] = 'A00D' //damage+1024 //°Ê²¼¡¢Æ±¤¸¤è¤¦¤Ë¹¥¤¤Ê¿ô¤À¤±¥¹¥¥ë¤òºî¤Ã¤ÆÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ï11¸Ä¤À¤±ºîÀ®¤·¤Þ¤·¤¿ endfunction function ModifyDamage takes unit u,integer dam returns nothing local integer i = 0 //Spell book¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¥æ¥Ë¥Ã¥È¤ËÄɲà if GetUnitAbilityLevel(u,'A006') == 0 then call SetPlayerAbilityAvailable(GetOwningPlayer(u),'A006',false) //Spell Book¤¬¸«¤¨¤Ê¤¤¤è¤¦¤Ë¤¹¤ë½èÍý call UnitAddAbility(u,'A006') endif loop exitwhen dam < 1 or i >= 11 // i¤ÎºÇÂçÃͤòºî¤Ã¤¿¥À¥á¡¼¥¸¥¹¥¥ë¤Î¿ô¤ÈƱ¤¸¤Ë¤¹¤ë if dam == 2*(dam/2) + 1 then call SetUnitAbilityLevel(u,bonusID[i],2) else call SetUnitAbilityLevel(u,bonusID[i],1) endif set dam = dam / 2 set i = i + 1 endloop endfunction //=========================================================================== //Damage Modify¤ò¼è¤ê½ü¤¯function function RemoveModifyDamage takes unit whichunit returns nothing call UnitRemoveAbility(whichunit,'A006') endfunction endlibrary //=========================================================================== **»È¤¤Êý¤Î¥µ¥ó¥×¥ë [#f4d8225c] ''gg_unit_H000_0000''¤Î¥À¥á¡¼¥¸Ãͤò20ÉôÖ''gg_unit_H000_0000''¤ÎºÇÂçHP¤Î5%¤À¤±¾å¾º¤µ¤»¤ë //=========================================================================== function Damage_Bonus_Sample takes nothing returns nothing call ModifyDamage(gg_unit_H000_0000,GetUnitState(gg_unit_H000_0000,UNIT_STATE_MAX_LIFE)*.05) call TriggerSleepAction(20) call RemoveModifyDamage(gg_unit_H000_0000) endfunction //=========================================================================== Î㤨¤Ð''gg_unit_H000_0000''¤ÎºÇÂçHP¤¬1425¤À¤Ã¤¿¾ì¹ç¡¢¥À¥á¡¼¥¸¤Ï1425*0.05=71(¾®¿ôÅÀ°Ê²¼ÀÚ¼Î)¾å¾º¤·¤Þ¤¹¡£~ **½èÍý¤ÎÀâÌÀ [#n043e068] ´ðËÜŪ¤Ê¸¶Íý¤Ï[[10¿Ê¿ô¤«¤é2¿Ê¿ô¤Ø¤ÎÊÑ´¹:http://www.infonet.co.jp/ueyama/ip/binary/dec2bin.html]]¤ÈƱ¤¸¤Ç¤¹¡£~ ¥µ¥ó¥×¥ë¤òÎã¤Ë¤¹¤ë¤È¥À¥á¡¼¥¸¤ò71¾å¾º¤µ¤»¤ë¤Ë¤Ï 71¤Î2¿Ê¿ôɽµ¢ª1000111 = 1+2+4+64 ¤È¤Ê¤êdamage+1,+2,+4,+64¤Î4¤Ä¤ò»ý¤¿¤»¤ì¤ÐÎɤ¤¤ï¤±¤Ç¤¹¡£ »ØÄꤵ¤ì¤¿¥À¥á¡¼¥¸Ãͤò2¤Ç³ä¤ê¡¢Í¾¤ê¤¬½Ð¤¿¤é¥¹¥¥ë¤Î¥ì¥Ù¥ë¤ò2¤Ë¤·¤Æ¡¢Í¾¤ê¤¬0¤Ê¤é¥ì¥Ù¥ë¤ò0¤Ë¤·¤Æ¤¤¤Þ¤¹¡£~ ¤³¤³¤Ç¤Ï''À°¿ô¤Î³ä¤ê»»¤Ï¾®¿ôÅÀ¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì¤ë¤³¤È''¤òÍøÍѤ·¤Æ¡¢''if dam == 2*(dam/2) + 1 then''¤Ç;¤ê¤¬1¤«0¤«¤òȽÄꤵ¤»¤Æ¤¤¤Þ¤¹¡£(¤³¤Î¼°¤¬À®Î©¤¹¤ì¤Ð;¤ê¤Ï1)~ ¤³¤Î½èÍý¤ò¥À¥á¡¼¥¸Ãͤ¬1¤Ë¤Ê¤ë¤«¡¢½àÈ÷¤·¤¿¥À¥á¡¼¥¸¥¹¥¥ë¤Î¿ô¤òĶ¤¨¤ë¤Þ¤Ç³¤±¤Æ¤¤¤Þ¤¹¡£ **ɬÍפʥ饤¥Ö¥é¥ê [#f4c2ac5d] ¤Ê¤·
¥Æ¥¥¹¥ÈÀ°·Á¤Î¥ë¡¼¥ë¤òɽ¼¨¤¹¤ë