石器时代LA官方

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 9525|回复: 1

[源代码] 装备强化系统主要代码

[复制链接]

1万

主题

491

回帖

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35504
石币
24669
发表于 2013-7-16 22:25:31 | 显示全部楼层 |阅读模式
功能描述:
可对物品进行升级,升级成功后物品将显示+1,可装物品升级到+10,等级越高,升级机率越低,如果升级失败,将下降等级
每次成功,物品属性将会相对应提升,如果功+10的武器,升级成功,该武器的功将提示1的攻击力
攻击力,防卸力,速度则每级提升都加1点
void ITEM_useEnhancedItem_WindowResult( int charaindex, int seqno, int select, char * data)
{
  int page = 0;
  int fd;
  char buf[2048];
  char message[1024];
  if( select == WINDOW_BUTTONTYPE_CANCEL) return;

  fd = getfdFromCharaIndex( charaindex);
  if( fd == - 1 )
  {
    return;
  }

  if( seqno != CHAR_WINDOWTYPE_SELECTENHANCEDITEM_ENHANCED )
  {
    if( select == WINDOW_BUTTONTYPE_NEXT )
    {
      page = 1;
    }
    else if( select == WINDOW_BUTTONTYPE_PREV )
    {
      page = -1;
    }
    if( select == WINDOW_BUTTONTYPE_NEXT || select == WINDOW_BUTTONTYPE_PREV )
    {
      int winno = seqno - CHAR_WINDOWTYPE_SELECTENHANCEDITEM_PAGE1;
      winno += page;
      if( winno < 0 ) winno = 0;
      if( winno > 3 ) winno = 3;
      ITEM_useEnhancedItem_PrintWindow( charaindex, winno );
    }
    else
    {
      char  message[1024];
      char  buf[2048];
      char  haveitemindex = CHAR_getWorkInt( charaindex, CHAR_WORKRENAMEITEMNUM);
      int    itemindex;
      if( haveitemindex == -1 )
      {
        haveitemindex = (seqno - CHAR_WINDOWTYPE_SELECTENHANCEDITEM_PAGE1 ) * 5 + ( atoi(data)-1);
        CHAR_setWorkInt( charaindex, CHAR_WORKRENAMEITEMNUM, haveitemindex);
      }
      itemindex = CHAR_getItemIndex( charaindex, haveitemindex);

      snprintf( message, sizeof( message),
              "真的要对( %s )进行强化嘛?\n如果失败原有强化等级将会下降!\n",ITEM_getChar( itemindex, ITEM_NAME));
      
      
      lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OKCANCEL, CHAR_WINDOWTYPE_SELECTENHANCEDITEM_ENHANCED, -1, makeEscapeString( message, buf, sizeof(buf)));
    }
  }
  else
  {
    char haveitemindex = CHAR_getWorkInt( charaindex, CHAR_WORKRENAMEITEMNUM );
    int itemindex = CHAR_getItemIndex( charaindex, haveitemindex );//获得需强化道具索引

    if( !ITEM_CHECKINDEX( itemindex ) )//索引不存在返回
    {
      print( "%s %d err\n", __FILE__, __LINE__);
      return;
    }
   
    int itemlevel = CHAR_getInt( itemindex, ITEM_ENHANCED );

    if( itemlevel >= 10 )
    {
      snprintf( message, sizeof( message), "( %s )已到强化极限,无法再进行强化!\n", ITEM_getChar( itemindex, ITEM_NAME ));
      lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_SELECTENHANCEDITEM_ENHANCED_ATTENTION, -1, makeEscapeString( message, buf, sizeof(buf)));
      return;
    }
    else
    {
      srand( (int)time(0) );
      char buf1[256];
      if( rand() % 10000 < 25 )//成功+1
      {
        ITEM_setInt( itemindex, ITEM_MODIFYATTACK, ITEM_getInt( itemindex, ITEM_MODIFYATTACK ) + 1 );//攻+1
        ITEM_setInt( itemindex, ITEM_MODIFYDEFENCE, ITEM_getInt( itemindex, ITEM_MODIFYDEFENCE ) + 1 );//防+1
        ITEM_setInt( itemindex, ITEM_MODIFYQUICK, ITEM_getInt( itemindex, ITEM_MODIFYQUICK ) + 1 );//敏+1
        ITEM_setInt( itemindex, ITEM_ENHANCED, ITEM_getInt( itemindex, ITEM_ENHANCED ) + 1 );//强化等级+1
        //装备改名
        char *itemname = ITEM_getChar( itemindex, ITEM_NAME );//获得装备原名
        sprintf( buf1, "+%d", ITEM_getInt( itemindex, ITEM_ENHANCED ) );
        strcat( buf1, itemname );
        ITEM_setChar( itemindex, ITEM_SECRETNAME, buf1 );

        snprintf( message, sizeof( message), "成功!( %s )的能力提升!\n", ITEM_getChar( itemindex, ITEM_NAME ));
        lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_SELECTENHANCEDITEM_ENHANCED_ATTENTION, -1, makeEscapeString( message, buf, sizeof(buf)));
        return;
      }
      else//失败-1
      {
        if( ITEM_getInt( itemindex, ITEM_ENHANCED ) > 0 )//如果强化等级非0
        {
          ITEM_setInt( itemindex, ITEM_MODIFYATTACK, ITEM_getInt( itemindex, ITEM_MODIFYATTACK ) - 1 );//攻-1
          ITEM_setInt( itemindex, ITEM_MODIFYDEFENCE, ITEM_getInt( itemindex, ITEM_MODIFYDEFENCE ) - 1 );//防-1
          ITEM_setInt( itemindex, ITEM_MODIFYQUICK, ITEM_getInt( itemindex, ITEM_MODIFYQUICK ) - 1 );//敏-1
          ITEM_setInt( itemindex, ITEM_ENHANCED, ITEM_getInt( itemindex, ITEM_ENHANCED ) - 1 );//强化等级-1
          //装备改名
          char *itemname = ITEM_getChar( itemindex, ITEM_NAME );//获得装备原名
          sprintf( buf1, "+%d", ITEM_getInt( itemindex, ITEM_ENHANCED ) );
          strcat( buf1, itemname );
          ITEM_setChar( itemindex, ITEM_SECRETNAME, buf1 );
        }
        snprintf( message, sizeof( message), "失败!( %s )的能力降低!\n", ITEM_getChar( itemindex, ITEM_NAME ));
        lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_SELECTENHANCEDITEM_ENHANCED_ATTENTION, -1, makeEscapeString( message, buf, sizeof(buf)));
      }
      
    }
  }
}
回复

使用道具 举报

4

主题

17

回帖

21

积分

新手上路

Rank: 1

积分
21
石币
0
发表于 2023-6-5 13:13:56 | 显示全部楼层
终于找到个厉害的,mark一下
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|石器时代LA官方

GMT+8, 2024-4-25 08:21 , Processed in 0.107656 second(s), 25 queries .

Copyright © 2001-2023, Tencent Cloud.

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