🧩 ÈÈѪ½ºþÉî¶È¶¨Öƽ̳̣º´Óµ¥»úÓéÀÖµ½Ð¡ÐÍÉçȺ´î½¨
µ±»ù´¡¼ÜÉèÒÑÎÞ·¨Âú×ãÄãµÄ´´Ò⣬±¾Æª½«½âËøÈý´óºËÐĽø½×·½Ïò£º¶¨ÖƸ±±¾¿ª·¢¡¢ÌØÐ§¼¼ÄÜÐ޸ġ¢ÉçȺÉú̬´î½¨¡£Í¨¹ýʵ²Ù°¸Àý£¬ÈÃÄã´î½¨³öÓµÓиöÈËÌØÉ«µÄ½ºþÊÀ½ç£¡
⚠️ ×¢ÒâÊÂÏ
ÒÔϲÙ×÷ÐèʹÓà WinHex/UE±à¼Æ÷ µÈ¶þ½øÖƹ¤¾ß£¨°²È«Èí¼þ¿ÉÄÜÎ󱨣©
ÐÞ¸Äǰ±¸·ÝËùÓÐÔʼÎļþ£¨·þÎñ¶Ë+¿Í»§¶Ë£©
ËùÓдúÂëʾÀý¾ùÒÔ 0801¾µä·þÎñ¶Ë Ϊ»ù×¼
🗺️ µÚÒ»Õ£º´´½¨¶À¼Ò¸±±¾——´³¹ØÌ½ÏÕÐÂÌåÑé
³¡¾°´î½¨Á÷³Ì£¨ÒÔ¡¸±ùÓüÃÔ¹¬¡¹ÎªÀý£©
graph LR
A[µØÍ¼×ÊÔ´ÖÆ×÷] --> B[·þÎñ¶ËµØÍ¼×¢²á]
--> C[¹ÖÎï·¾¶ÅäÖÃ]
--> D[¸±±¾½øÈë»úÖÆ]
1.1 µØÍ¼×ÊÔ´µ¼Èë
»ñÈ¡µØÍ¼Îļþ£º
´ÓÆäËû°æ±¾ÌáÈ¡ .map Îļþ£¨È磺iceprison.map£©
ÅäÌ××ÊÔ´£ºiceprison.obj£¨ÎïÌ壩¡¢iceprison.tga£¨Ìùͼ£©
·ÅÖÃλÖãº
·þÎñ¶Ë£ºServer\Map\iceprison.map
¿Í»§¶Ë£ºData\Map\iceprison.map
1.2 ·þÎñ¶Ë×¢²áµØÍ¼
´ò¿ª MapInfo.txt Ìí¼ÓеØÍ¼ÅäÖãº
[198] ; еØÍ¼ID£¨±ÜÃâÖØ¸´£©
Name = ±ùÓüÃÔ¹¬
Type = 2 ; 2=¸±±¾ÀàÐÍ
EnterX = 100 ; ½øÈë×ø±ê
EnterY = 120
MaxUser = 30 ; ÈËÊýÉÏÏÞ
1.3 ¸±±¾½øÈë´¥·¢Æ÷£¨Ê¾Àý£ºNPC¶Ô»°´¥·¢£©
ÔÚ NpcScript.lua ÖÐÌí¼Ó£º
function NPC_ICE_ENTRY(npcIndex)
local PlayerLv = GetPlayerLevel(npcIndex)
if PlayerLv < 100 then
SendMsg(npcIndex, "Ðè´ïµ½100¼¶·½¿É½øÈ룡")
else
MovePlayer(npcIndex, 198, 100, 120) -- ´«Ë͵½±ùÓüÃÔ¹¬
end
end
✨ µÚ¶þÕ£ºìÅ¿áÌØÐ§Ð޸ė—È«ÆÁ¼¼ÄܸÄÔì
2.1 Î书·¶Î§µ÷Õû£¨ÒÔ¡¸µ¶Æø×ݺ᡹ΪÀý£©
¶¨Î»Îļþ£º¿Í»§¶Ë Data\Skill.slk£¨¶þ½øÖÆÐèתHex±à¼£©
²½Ö裺
²éÕÒÎ书´úÂ룺C5 2D£¨µ¶Æø×ݺá±êʶ£©
Ð޸Ĺ¥»÷·¶Î§²ÎÊý£¨Æ«ÒÆÁ¿+38λÖã©£º
Ôʼֵ£º00 00 A0 40£¨5x5·¶Î§£©
¸ÄΪ£º00 00 20 41£¨10x10È«ÆÁЧ¹û£©
ͬ²½Ð޸ķþÎñ¶Ë Skill.xml É˺¦Åж¨·¶Î§
2.2 ÌØÐ§Á£×ÓÌæ»»£¨Á÷ÐÇÓê´úÌæ½£Æø£©
×¼±¸ÌØÐ§£º¸´ÖÆ meteor.efx µ½¿Í»§¶Ë Data\Effect\
ÐÞ¸ÄÎ书¹ØÁª£º
ÔÚ SkillEffect.ini ÖÐ
[SkillID_125]
Effect1 = meteor.efx
PlayMode = 3 ; 3=È«ÆÁ²¥·Åģʽ
🌐 µÚÈýÕ£ºÉçȺÉú̬´î½¨——Íæ¼ÒÕ³ÐÔÌáÉý·½°¸
3.1 ¼¯³ÉÍøÕ¾ÏµÍ³£¨Ò»¼ü°²×°°ü£©
¹¦ÄÜ ÍÆ¼ö·½°¸ ÌØµã
×¢²á/µÇ¼ PHPWind 9.0 Ö§³ÖÓÎÏ·Õ˺ÅÖ±½ÓµÇ¼
³äֵϵͳ Ö§¸¶±¦µ±Ã渶SDK ¼´Ê±µ½ÕË×Ô¶¯·¢»õÔª±¦
Êý¾Ý²éѯ DBServer²å¼þ ʵʱչʾ½Çɫװ±¸/µÈ¼¶
²¿ÊðÁ÷³Ì£º
°²×°±¦ËþÃæ°å
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
ÅäÖû·¾³£¨PHP5.6 + MySQL5.5£©
ÉÏ´«ÍøÕ¾Ô´ÂëÖÁ /www/wwwroot/gameweb
3.2 ÓÎÏ·ÄÚ¹«¸æÍÆËÍ£¨ÊµÊ±»î¶¯Í¨Öª£©
ÔÚ·þÎñ¶Ë SystemMsg.dat Ìí¼Ó¶¨Ê±ÐÒ飺
<SystemMsg>
<Msg id="1010" interval="3600"> <!-- ÿСʱ´¥·¢ -->
<Content>¡¾ÏµÍ³¡¿ÎäÁÖÖÁ×ðÕù°ÔÈü½«ÓÚ½ñÍí20:00¿ªÆô£¡</Content>
</Msg>
<Msg id="1011" trigger="login"> <!-- µÇ¼´¥·¢ -->
<Content>{PlayerName}´óÏÀ£¬ÄúµÄÀۼƳäÖµÒÑ´ï{TotalPay}Ôª±¦£¡</Content>
</Msg>
</SystemMsg>
⚡ µÚËÄÕ£º¸ßƵ½ø½×ÎÊÌâËÙÕï
Q1£ºÐ޸ĺó¿Í»§¶ËÉÁÍË£¿
ÔÒò£ºÎļþ´óС»òУÑéÂë±ä»¯
½â¾ö£ºÊ¹Óà MakeClientHash.exe ÖØÐÂÉú³É Data.ini УÑéÎļþ
Q2£ºÐÂÔö×°±¸ÏÔʾΪ£¿·½¿é£¿
ÅŲéµã£º
ÎïÆ· Shape ÖµÊÇ·ñÔÚ Data\Shape\Weapon ÖдæÔÚ¶ÔÓ¦ .spr Îļþ
¿Í»§¶Ë Item.bin ºÍ·þÎñ¶Ë Item.xml µÄ×Ö¶Î¶ÔÆë¶È
Q3£ºÍøÕ¾³äÖµ²»µ½ÕË£¿
¹Ø¼ü¼ì²é£º
-- ¼ì²é´æ´¢¹ý³ÌÊÇ·ñ³É¹¦´¥·¢
USE RxjhAccount
SELECT * FROM TBL_RechargeLog WHERE OrderID='¶©µ¥ºÅ'
🧠 ÖÕ¼«°²È«½¨Ò飨¶Ô¿¹ÄæÏòÆÆ½â£©
·À»¤·½Ïò ʵʩÊÖ¶Î
ͨѶ¼ÓÃÜ Ð޸ķþÎñ¶Ë protocol.dll µÄXORÃÜÔ¿
ÄÚ´æ·À¹Ò ×¢Èë GameGuard Çý¶¯Ä£¿é
½Å±¾»ìÏý ʹÓà LuaJIT ±àÒëºËÐĽű¾Îª¶þ½øÖÆ
Êý¾Ý¿â·À»ðǽ ÏÞÖÆÍâÍøIP·ÃÎÊ1433¶Ë¿Ú
µ±»ù´¡¼ÜÉèÒÑÎÞ·¨Âú×ãÄãµÄ´´Ò⣬±¾Æª½«½âËøÈý´óºËÐĽø½×·½Ïò£º¶¨ÖƸ±±¾¿ª·¢¡¢ÌØÐ§¼¼ÄÜÐ޸ġ¢ÉçȺÉú̬´î½¨¡£Í¨¹ýʵ²Ù°¸Àý£¬ÈÃÄã´î½¨³öÓµÓиöÈËÌØÉ«µÄ½ºþÊÀ½ç£¡
⚠️ ×¢ÒâÊÂÏ
ÒÔϲÙ×÷ÐèʹÓà WinHex/UE±à¼Æ÷ µÈ¶þ½øÖƹ¤¾ß£¨°²È«Èí¼þ¿ÉÄÜÎ󱨣©
ÐÞ¸Äǰ±¸·ÝËùÓÐÔʼÎļþ£¨·þÎñ¶Ë+¿Í»§¶Ë£©
ËùÓдúÂëʾÀý¾ùÒÔ 0801¾µä·þÎñ¶Ë Ϊ»ù×¼
🗺️ µÚÒ»Õ£º´´½¨¶À¼Ò¸±±¾——´³¹ØÌ½ÏÕÐÂÌåÑé
³¡¾°´î½¨Á÷³Ì£¨ÒÔ¡¸±ùÓüÃÔ¹¬¡¹ÎªÀý£©
graph LR
A[µØÍ¼×ÊÔ´ÖÆ×÷] --> B[·þÎñ¶ËµØÍ¼×¢²á]
--> C[¹ÖÎï·¾¶ÅäÖÃ]
--> D[¸±±¾½øÈë»úÖÆ]
1.1 µØÍ¼×ÊÔ´µ¼Èë
»ñÈ¡µØÍ¼Îļþ£º
´ÓÆäËû°æ±¾ÌáÈ¡ .map Îļþ£¨È磺iceprison.map£©
ÅäÌ××ÊÔ´£ºiceprison.obj£¨ÎïÌ壩¡¢iceprison.tga£¨Ìùͼ£©
·ÅÖÃλÖãº
·þÎñ¶Ë£ºServer\Map\iceprison.map
¿Í»§¶Ë£ºData\Map\iceprison.map
1.2 ·þÎñ¶Ë×¢²áµØÍ¼
´ò¿ª MapInfo.txt Ìí¼ÓеØÍ¼ÅäÖãº
[198] ; еØÍ¼ID£¨±ÜÃâÖØ¸´£©
Name = ±ùÓüÃÔ¹¬
Type = 2 ; 2=¸±±¾ÀàÐÍ
EnterX = 100 ; ½øÈë×ø±ê
EnterY = 120
MaxUser = 30 ; ÈËÊýÉÏÏÞ
1.3 ¸±±¾½øÈë´¥·¢Æ÷£¨Ê¾Àý£ºNPC¶Ô»°´¥·¢£©
ÔÚ NpcScript.lua ÖÐÌí¼Ó£º
function NPC_ICE_ENTRY(npcIndex)
local PlayerLv = GetPlayerLevel(npcIndex)
if PlayerLv < 100 then
SendMsg(npcIndex, "Ðè´ïµ½100¼¶·½¿É½øÈ룡")
else
MovePlayer(npcIndex, 198, 100, 120) -- ´«Ë͵½±ùÓüÃÔ¹¬
end
end
✨ µÚ¶þÕ£ºìÅ¿áÌØÐ§Ð޸ė—È«ÆÁ¼¼ÄܸÄÔì
2.1 Î书·¶Î§µ÷Õû£¨ÒÔ¡¸µ¶Æø×ݺ᡹ΪÀý£©
¶¨Î»Îļþ£º¿Í»§¶Ë Data\Skill.slk£¨¶þ½øÖÆÐèתHex±à¼£©
²½Ö裺
²éÕÒÎ书´úÂ룺C5 2D£¨µ¶Æø×ݺá±êʶ£©
Ð޸Ĺ¥»÷·¶Î§²ÎÊý£¨Æ«ÒÆÁ¿+38λÖã©£º
Ôʼֵ£º00 00 A0 40£¨5x5·¶Î§£©
¸ÄΪ£º00 00 20 41£¨10x10È«ÆÁЧ¹û£©
ͬ²½Ð޸ķþÎñ¶Ë Skill.xml É˺¦Åж¨·¶Î§
2.2 ÌØÐ§Á£×ÓÌæ»»£¨Á÷ÐÇÓê´úÌæ½£Æø£©
×¼±¸ÌØÐ§£º¸´ÖÆ meteor.efx µ½¿Í»§¶Ë Data\Effect\
ÐÞ¸ÄÎ书¹ØÁª£º
ÔÚ SkillEffect.ini ÖÐ
[SkillID_125]
Effect1 = meteor.efx
PlayMode = 3 ; 3=È«ÆÁ²¥·Åģʽ
🌐 µÚÈýÕ£ºÉçȺÉú̬´î½¨——Íæ¼ÒÕ³ÐÔÌáÉý·½°¸
3.1 ¼¯³ÉÍøÕ¾ÏµÍ³£¨Ò»¼ü°²×°°ü£©
¹¦ÄÜ ÍÆ¼ö·½°¸ ÌØµã
×¢²á/µÇ¼ PHPWind 9.0 Ö§³ÖÓÎÏ·Õ˺ÅÖ±½ÓµÇ¼
³äֵϵͳ Ö§¸¶±¦µ±Ã渶SDK ¼´Ê±µ½ÕË×Ô¶¯·¢»õÔª±¦
Êý¾Ý²éѯ DBServer²å¼þ ʵʱչʾ½Çɫװ±¸/µÈ¼¶
²¿ÊðÁ÷³Ì£º
°²×°±¦ËþÃæ°å
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
ÅäÖû·¾³£¨PHP5.6 + MySQL5.5£©
ÉÏ´«ÍøÕ¾Ô´ÂëÖÁ /www/wwwroot/gameweb
3.2 ÓÎÏ·ÄÚ¹«¸æÍÆËÍ£¨ÊµÊ±»î¶¯Í¨Öª£©
ÔÚ·þÎñ¶Ë SystemMsg.dat Ìí¼Ó¶¨Ê±ÐÒ飺
<SystemMsg>
<Msg id="1010" interval="3600"> <!-- ÿСʱ´¥·¢ -->
<Content>¡¾ÏµÍ³¡¿ÎäÁÖÖÁ×ðÕù°ÔÈü½«ÓÚ½ñÍí20:00¿ªÆô£¡</Content>
</Msg>
<Msg id="1011" trigger="login"> <!-- µÇ¼´¥·¢ -->
<Content>{PlayerName}´óÏÀ£¬ÄúµÄÀۼƳäÖµÒÑ´ï{TotalPay}Ôª±¦£¡</Content>
</Msg>
</SystemMsg>
⚡ µÚËÄÕ£º¸ßƵ½ø½×ÎÊÌâËÙÕï
Q1£ºÐ޸ĺó¿Í»§¶ËÉÁÍË£¿
ÔÒò£ºÎļþ´óС»òУÑéÂë±ä»¯
½â¾ö£ºÊ¹Óà MakeClientHash.exe ÖØÐÂÉú³É Data.ini УÑéÎļþ
Q2£ºÐÂÔö×°±¸ÏÔʾΪ£¿·½¿é£¿
ÅŲéµã£º
ÎïÆ· Shape ÖµÊÇ·ñÔÚ Data\Shape\Weapon ÖдæÔÚ¶ÔÓ¦ .spr Îļþ
¿Í»§¶Ë Item.bin ºÍ·þÎñ¶Ë Item.xml µÄ×Ö¶Î¶ÔÆë¶È
Q3£ºÍøÕ¾³äÖµ²»µ½ÕË£¿
¹Ø¼ü¼ì²é£º
-- ¼ì²é´æ´¢¹ý³ÌÊÇ·ñ³É¹¦´¥·¢
USE RxjhAccount
SELECT * FROM TBL_RechargeLog WHERE OrderID='¶©µ¥ºÅ'
🧠 ÖÕ¼«°²È«½¨Ò飨¶Ô¿¹ÄæÏòÆÆ½â£©
·À»¤·½Ïò ʵʩÊÖ¶Î
ͨѶ¼ÓÃÜ Ð޸ķþÎñ¶Ë protocol.dll µÄXORÃÜÔ¿
ÄÚ´æ·À¹Ò ×¢Èë GameGuard Çý¶¯Ä£¿é
½Å±¾»ìÏý ʹÓà LuaJIT ±àÒëºËÐĽű¾Îª¶þ½øÖÆ
Êý¾Ý¿â·À»ðǽ ÏÞÖÆÍâÍøIP·ÃÎÊ1433¶Ë¿Ú

