中国星际RPG联盟

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4406|回复: 0
打印 上一主题 下一主题

6号按钮插件和50号51号赋值插件源代码,备份

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-22 23:50:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


  1. #define PINT int *
  2. #define FASTCALL __fastcall
  3. #pragma pack(1)

  4. typedef struct
  5. {
  6.     DWORD Unused0;
  7.     DWORD stringID;
  8.     DWORD code;
  9.     DWORD Unused2;
  10.     DWORD Address;
  11.     DWORD Value;
  12.     USHORT Operator;
  13. } *ActionParams;



  14. const FARPROC (WINAPI**sc_GetProcAddress) ( HMODULE hModule, LPCSTR lpProcName ) = (const FARPROC(WINAPI**)(HMODULE,LPCSTR))0x4ED160;
  15. //PBYTE (FASTCALL*GetResString)(USHORT index) = (PBYTE(FASTCALL*)(USHORT))0x448880;
  16. const LPCSTR CurrentPlayerName = (LPCSTR)0x65A808;
  17. const char(*PlayerName)[36] = (const char(*)[36])0x65A853;
  18. const LPCSTR (FASTCALL*GetResString)(USHORT index) = (const LPCSTR(FASTCALL*)(USHORT))0x448880;


  19. BOOL FASTCALL Comment(ActionParams params)//6号按钮插件
  20. {
  21.     PBYTE str_add = GetResString(params->stringID);

  22.     if(*str_add=='1')
  23.     {
  24.         *str_add='0';
  25.         str_add++;
  26.         PBYTE str_back = str_add;
  27.         while(str_add[0]&&str_add[1]&&str_add[2]&&str_add[3])
  28.         {
  29.             str_back[0] = ( ( ( str_add[0] - 0x30) << 2 ) & 0xFC ) + ( ( ( str_add[1] - 0x30 ) >> 4 ) & 0x03 );
  30.             str_back[1] = ( ( ( str_add[1] - 0x30) << 4 ) & 0xF0 ) + ( ( ( str_add[2] - 0x30 ) >> 2 ) & 0x0F );
  31.             str_back[2] = ( ( ( str_add[2] - 0x30) << 6 ) & 0xC0 ) + ( (str_add[3] - 0x30 ) & 0x3F);
  32.             str_add += 4;
  33.             str_back += 3;
  34.         }
  35.         *(int *)(str_back-1)=0;
  36.     }
  37.     *(int *)params->Address = params->Operator;
  38.     *(int *)(params->Address + 4) = (int)GetResString(params->stringID) + 1;
  39.     return true;
  40. }


  41. BOOL FASTCALL Comment(ActionParams params)//51号设置数值插件
  42. {
  43.      
  44.     int n=params->Operator;
  45.     if(n>0&&n<9)
  46.     {
  47.         char *add=(char *)params->code;
  48.         char *val=(char *)&(params->Address);
  49.         while(n--)
  50.             *(add++)=*(val++);
  51.     }

  52.     else if(n>=9)
  53.     {
  54.         PBYTE str_add = GetResString(params->stringID);
  55.         PBYTE add = str_add + 1;
  56.         if(*str_add=='1')
  57.         {
  58.             *str_add='0';
  59.             str_add++;
  60.             PBYTE str_back = str_add;
  61.             while(str_add[0]&&str_add[1]&&str_add[2]&&str_add[3])
  62.             {
  63.                 str_back[0] = ( ( ( str_add[0] - 0x30) << 2 ) & 0xFC ) + ( ( ( str_add[1] - 0x30 ) >> 4 ) & 0x03 );
  64.                 str_back[1] = ( ( ( str_add[1] - 0x30) << 4 ) & 0xF0 ) + ( ( ( str_add[2] - 0x30 ) >> 2 ) & 0x0F );
  65.                 str_back[2] = ( ( ( str_add[2] - 0x30) << 6 ) & 0xC0 ) + ( (str_add[3] - 0x30 ) & 0x3F);
  66.                 str_add += 4;
  67.                 str_back += 3;
  68.             }
  69.         }
  70.         str_add = add;
  71.         add = (PBYTE)params->code;
  72.         while(n--)
  73.             *(add++)=*(str_add++);
  74.     }
  75.     return true;
  76. }



  77. BOOL FASTCALL Comment(ActionParams params)//50号设置数值插件
  78. {
  79.     char *add=(char *)params->code;
  80.     char *val=(char *)&(params->Address);
  81.     while(n--)
  82.         *(add++)=*(val++);
  83. }

复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|网站统计|手机版|小黑屋|中国星际RPG联盟    

GMT+8, 2024-5-19 19:36 , Processed in 1.171875 second(s), 21 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表