亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? npc_simpleshop.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "version.h"
#include <ctype.h>

#include "object.h"
#include "char_base.h"
#include "char.h"
#include "item.h"
#include "util.h"
#include "handletime.h"
#include "anim_tbl.h"
#include "npc_door.h"
#include "lssproto_serv.h"
#include "npcutil.h"
#include "npccreate.h"
#include "log.h"


/*
 *   賞讀卅饕及伙□民件[by nakamura
 *
 * NPCARGUMENT卞俜  仄兇失奶  丞毛  蜃卞赭  仄化中月云饕[
 *     SIMPLESHOP_MAXINFINITITEM潘    蜃卞戲岳允月仇午互匹五月[
 *   蜃戲岳失奶  丞午  元潘  及失奶  丞毛  勻兇日  勻兇支勾互
 * 壑釵井日壅  允月[
 * 引兇}皿伊奶乩□井日手及毛  中午月仇午互匹五月互}丐月襖蟾
 * (NPC_SIMPLESHOPMAXBUYPRICE)方曰嫖中嗯毛障  歹卅仁化反中仃
 * 卅中  潸反匹五卅中[  中午勻兇失奶  丞反公及樺匹卅仁卅月[
 * 引兇}失奶  丞及澀爛匹cost互澀爛今木化中卅中手及手  中午木卅中[
 * 2諦動曉及皿伊奶乩□互饕卞五兇午五反}  及菸毛穸燮允月[公丹允月
 * 仇午卞方曰饕互捩菁卞簿井毛鍬澎仄化中月仇午毛  什[
 *
 * 正奶皿  “SimpleShop
 * 健丹奶矛件玄: init, talked, specialtalked
 *
 *
 */
static void NPC_SimpleShopOpenShopWindow( int meindex, int cliindex,
                                          char *npcarg );
static void NPC_SimpleShopGetEscapedItemString( int shopindex,
                                                int cliindex, char *str );
static BOOL NPC_SimpleShopProcessBuyMsg( char *msg, int shop, int cli );
static BOOL NPC_SimpleShopProcessSellMsg( char *msg, int shop, int cli );

static BOOL NPC_LimitBuyInShopProcessSellMsg(char *msg,int shop,int cli);


static BOOL NPC_SimpleShopFillItem( int meindex, char *npcarg );
static int NPC_SimpleShopGetItemNum( int meindex );
static void NPC_SimpleShopNormalWindow( int meindex,
                                        int playerindex, char *str );
static int NPC_ShopWindowIndexToItemTableIndex( int charindex,
                                                int shopwindowindex );
static BOOL NPC_SimpleShopOpenShopOrNot( char *msg, char *openshopstr );
//static void NPC_SimpleShopSetLeakLevel( int meindex );

#define NPC_SIMPLESHOPMAXBUYPRICE 9999
#define SIMPLESHOPTALKBUFSIZE 256

#define SIMPLESHOP_FATALERRSTR "好痛!對不起,最近狀況不太佳。。。"

#define SIMPLESHOP_MAXINFINITITEM 40

enum{
    OPENSHOPTOKEN=1,
        MSGTOKEN,
        MAINTOKEN,
        BUYTOKEN,
        OKBUYTOKEN,
        SELLTOKEN,
        OKSELLTOKEN,
        POORTOKEN,
        ITEMFULLTOKEN,
        ANOTHERPLAYERTOKEN,
        RAREITEMTOKEN,
        THANKYOUTOKEN,
        ITEMLISTTOKEN,

        BUYINITEMLISTTOKEN,
        };
void NPC_SimpleShopTalked( int meindex, int talker, char *msg, int color )
{
#define SHOPRANGE 3
    char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE], token[NPC_UTIL_GETARGSTR_LINEMAX];
    if( CHAR_getInt( talker,CHAR_WHICHTYPE) != CHAR_TYPEPLAYER ){
        return;
    }
    if( NPC_Util_charIsInFrontOfChar( talker, meindex, SHOPRANGE )
        && ! CHAR_getFlg( talker,CHAR_ISDIE )  ){
        NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg));
        getStringFromIndexWithDelim( npcarg,"|", OPENSHOPTOKEN,token, sizeof(token));
        if( NPC_SimpleShopOpenShopOrNot( msg, token )
           && NPC_Util_isFaceToFace( meindex, talker, SHOPRANGE ) ){
            CHAR_setWorkInt( meindex, CHAR_WORKSHOPCLIENTINDEX, talker );
            NPC_SimpleShopOpenShopWindow( meindex, talker, npcarg );
        }else{
            int tokennum;
            int i;
            char tmp[NPC_UTIL_GETARGSTR_LINEMAX];
            getStringFromIndexWithDelim( npcarg,"|", MSGTOKEN,token, sizeof(token));
            tokennum = 1;
            for( i=0;token[i]!='\0';i++ ){
                if( token[i] == ',' ) tokennum++;
            }
            getStringFromIndexWithDelim( token,",", rand()%tokennum+1,tmp, sizeof(tmp));
            CHAR_talkToCli( talker, meindex, tmp, CHAR_COLORWHITE );
        }
    }
}

void NPC_SimpleShopSpecialTalked( int meindex, int talker, char *msg, int color )
{
    if( CHAR_getInt(talker,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER
        && NPC_Util_isFaceToFace( meindex, talker, SHOPRANGE ) ){
        char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE], token[NPC_UTIL_GETARGSTR_LINEMAX];
        NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg));
        switch( tolower(msg[0]) ){
        case 's':
        {
            int     ret;
            if( CHAR_getWorkInt(meindex,CHAR_WORKSHOPCLIENTINDEX)!= talker ){
                getStringFromIndexWithDelim( npcarg,"|",ANOTHERPLAYERTOKEN,
                                             token, sizeof(token));
                NPC_SimpleShopNormalWindow( meindex, talker, token );
                return;
            }
            ret = getStringFromIndexWithDelim( msg, "|", 3, token, sizeof(token));
            if( ret == FALSE ){
                token[0] = 'e';
                token[1] = '\0';
            }
            switch( tolower(token[0])){
            case 'b':
                if( (ret=NPC_SimpleShopProcessBuyMsg(msg,meindex,talker))
                    <0){
                    switch( ret ){
                    case -2:
                        getStringFromIndexWithDelim( npcarg,"|",POORTOKEN,
                                                     token,sizeof(token));
                        NPC_SimpleShopNormalWindow( meindex,talker,token);
                        break;
                    case -3:
                        getStringFromIndexWithDelim( npcarg,"|",
                                                     ITEMFULLTOKEN,
                                                     token,sizeof(token));
                        NPC_SimpleShopNormalWindow(meindex,talker,token);
                        break;
                    case -1:
                    default:
                        NPC_SimpleShopNormalWindow(meindex, talker,
                                                   SIMPLESHOP_FATALERRSTR
                            );
                        break;
                    }
                }else{
                    NPC_SimpleShopFillItem( meindex, npcarg );
                    getStringFromIndexWithDelim(npcarg,"|",THANKYOUTOKEN,
                                                token, sizeof(token));
                    NPC_SimpleShopNormalWindow(meindex,talker,token);
                }
                break;
            case 's':
                if( CHAR_getWorkInt(meindex,CHAR_WORKSHOPCLIENTINDEX) != talker ){
                    getStringFromIndexWithDelim( npcarg,"|",
                                                 ANOTHERPLAYERTOKEN,
                                                 token, sizeof(token));
                    NPC_SimpleShopNormalWindow( meindex, talker, token );
                    return;
                }
                if((ret=NPC_SimpleShopProcessSellMsg(msg,meindex,talker)) <0 ){
                    switch(ret){
                    case -2:
                        getStringFromIndexWithDelim( npcarg,"|",
                                                     RAREITEMTOKEN,
                                                     token, sizeof(token) );
                        NPC_SimpleShopNormalWindow( meindex,talker,token);
                        break;
                    case -1:
                    default:
                        NPC_SimpleShopNormalWindow(meindex, talker,
                                                   SIMPLESHOP_FATALERRSTR );
                        break;
                    }
                }else{
                    getStringFromIndexWithDelim(npcarg,"|",THANKYOUTOKEN,
                                                token, sizeof(token));
                    NPC_SimpleShopNormalWindow(meindex,talker,token);
                }
                break;
            case 'e':
            default:
                CHAR_setWorkInt( meindex, CHAR_WORKSHOPCLIENTINDEX, -1 );
                break;
            }
            break;
        }
        case 'i':
            if( CHAR_getWorkInt(meindex,CHAR_WORKSHOPCLIENTINDEX)
                == talker ){
                NPC_SimpleShopOpenShopWindow( meindex, talker, npcarg );
            }
            break;
        default:
            break;
        }
    }
}

void NPC_LimitBuyInShopSpecialTalked( int meindex, int talker, char *msg, int color )
{
    if( CHAR_getInt(talker,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER
        && NPC_Util_isFaceToFace( meindex, talker, SHOPRANGE ) ){
        char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE], token[NPC_UTIL_GETARGSTR_LINEMAX];
        NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg));
        switch( tolower(msg[0]) ){
        case 's':
        {
            int     ret;
            if( CHAR_getWorkInt(meindex,CHAR_WORKSHOPCLIENTINDEX) != talker ){
                getStringFromIndexWithDelim( npcarg,"|",
                                             ANOTHERPLAYERTOKEN,
                                             token, sizeof(token));
                NPC_SimpleShopNormalWindow( meindex, talker, token );
                return;
            }
            ret = getStringFromIndexWithDelim( msg, "|", 3, token, sizeof( token));
            if( ret == FALSE ){
                token[0] = 'e';
                token[1] = '\0';
            }
            switch( tolower(token[0])){
            case 'b':
                if( ( ret = NPC_SimpleShopProcessBuyMsg( msg, meindex, talker)) < 0){
                    switch( ret ){
                    case -2:
                        getStringFromIndexWithDelim( npcarg,"|",POORTOKEN,
                                                     token,sizeof(token));
                        NPC_SimpleShopNormalWindow( meindex,talker,token);
                        break;
                    case -3:
                        getStringFromIndexWithDelim( npcarg,"|",
                                                     ITEMFULLTOKEN,
                                                     token,sizeof(token));
                        NPC_SimpleShopNormalWindow(meindex,talker,token);
                        break;
                    case -1:
                    default:
                        NPC_SimpleShopNormalWindow(meindex, talker,
                                                   SIMPLESHOP_FATALERRSTR
                            );
                        break;
                    }
                }else{
                    NPC_SimpleShopFillItem( meindex, npcarg );
                    getStringFromIndexWithDelim(npcarg,"|",THANKYOUTOKEN,
                                                token, sizeof(token));
                    NPC_SimpleShopNormalWindow(meindex,talker,token);

                }
                break;
            case 's':
                if( CHAR_getWorkInt(meindex,CHAR_WORKSHOPCLIENTINDEX) != talker ){
                    getStringFromIndexWithDelim( npcarg,"|",
                                                 ANOTHERPLAYERTOKEN,
                                                 token, sizeof(token));
                    NPC_SimpleShopNormalWindow( meindex, talker, token );
                    return;
                }
                if((ret=NPC_LimitBuyInShopProcessSellMsg(
                    msg,meindex,talker))<0){
                    switch(ret){
                    case -2:
                        getStringFromIndexWithDelim( npcarg,"|",
                                                     RAREITEMTOKEN,
                                                     token,sizeof(token));
                        NPC_SimpleShopNormalWindow( meindex,talker,token);
                        break;
                    case -1:
                    default:
                        NPC_SimpleShopNormalWindow(meindex, talker, SIMPLESHOP_FATALERRSTR
                            );
                        break;
                    }
                }else{
                    getStringFromIndexWithDelim(npcarg,"|",THANKYOUTOKEN, token, sizeof(token));
                    NPC_SimpleShopNormalWindow(meindex,talker,token);

                }
                break;
            case 'e':
            default:
                CHAR_setWorkInt( meindex, CHAR_WORKSHOPCLIENTINDEX, -1 );
                break;
            }
            break;
        }
        case 'i':
            if( CHAR_getWorkInt(meindex,CHAR_WORKSHOPCLIENTINDEX)
                == talker ){
                NPC_SimpleShopOpenShopWindow( meindex, talker, npcarg );
            }
            break;
        default:
            break;
        }
    }
}





/*
 * 饕互用□穴伙它奶件玉它毛請允[它奶件玉它及廿兇氏毛瓷允午}
 *   賡卞饕卞  仄井仃兇午五午  元橇謫卞手升月[
 * int meindex : 饕及index
 * int playerindex : 它奶件玉它毛請允皿伊奶乩□及index
 * char *str :
 */
static void NPC_SimpleShopNormalWindow( int meindex, int playerindex,
                                        char *str )
{
    int fd;
    int objindex;
    char tmp[512], *name;

    objindex = CHAR_getWorkInt(meindex,CHAR_WORKOBJINDEX);
    name = CHAR_getChar( meindex, CHAR_NAME );
    snprintf(tmp,sizeof(tmp),"W|%d|N|%s|123|%s", objindex, name, str );
    fd = getfdFromCharaIndex(playerindex);
    if( fd == -1 ) return;
    lssproto_TK_send(fd,-1,tmp,CHAR_COLORWHITE );
}

/*
 * 饕它奶件玉它及奶件犯弁旦井日}失奶  丞  □皮伙及奶件犯弁旦卞  晶
 * 婁醒
 * int charindex:平乓仿及奶件犯弁旦
 * int shopwindowindex:饕它奶件玉它及奶件犯弁旦[0井日反元引月[
 * 忒曰襖
 * 失奶  丞  □皮伙及奶件犯弁旦[巨仿□反-1[
 */
static int NPC_ShopWindowIndexToItemTableIndex( int charindex,
                                                int shopwindowindex )
{
    int i, counter;

    counter = 0;
    for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){
        if( ITEM_CHECKINDEX( CHAR_getItemIndex(charindex,i) ) ){
            if( shopwindowindex == counter ) return i;
            counter++;
        }
    }
    return -1;
}

static BOOL NPC_SimpleShopProcessBuyMsg(char *msg, int shopindex,
                                        int playerindex )
{
    int shopwindowindex, itemtableindex,itemind;
    int price, tmpgold;
    char buf[64];

    if(!CHAR_CHECKINDEX(shopindex)||!CHAR_CHECKINDEX(playerindex))
        return -1;

    if( !getStringFromIndexWithDelim( msg,"|",4,buf,sizeof(buf) )){
        return -1;
    }
    shopwindowindex = atoi(buf);
    itemtableindex=NPC_ShopWindowIndexToItemTableIndex( shopindex, shopwindowindex );
    itemind = CHAR_getItemIndex(shopindex,itemtableindex );
    if( ! ITEM_CHECKINDEX(itemind) ) return -1;
    price = ITEM_getInt( itemind, ITEM_COST )
        * NPC_Util_buyRate(playerindex);

    tmpgold = CHAR_getInt(playerindex,CHAR_GOLD);
    if( tmpgold < price ){
        return -2;
    }

    if( ! NPC_Util_moveItemToChar(playerindex,itemind,TRUE ) ){
        return -3;
    }
	CHAR_AddGold( playerindex, price );

    CHAR_sendStatusString( playerindex , "P");
    return 1;
}

static BOOL NPC_SimpleShopProcessSellMsg(char *msg, int shopindex,
                                         int playerindex )
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡视频免费播放| 日韩欧美一区在线观看| 337p亚洲精品色噜噜噜| 国产欧美日韩麻豆91| 奇米影视一区二区三区小说| 99视频精品全部免费在线| 精品国产乱码久久久久久免费| 亚洲精品乱码久久久久久黑人| 国产中文字幕一区| 欧美一二三区在线观看| 午夜不卡av免费| 91浏览器入口在线观看| 欧美国产激情二区三区 | 韩国精品在线观看| 欧美疯狂做受xxxx富婆| 亚洲午夜免费电影| 91看片淫黄大片一级在线观看| 久久尤物电影视频在线观看| 毛片一区二区三区| 6080国产精品一区二区| 婷婷夜色潮精品综合在线| 色综合 综合色| 亚洲视频香蕉人妖| 91丝袜美女网| 亚洲婷婷综合色高清在线| 懂色av噜噜一区二区三区av| 日韩欧美一级在线播放| 蜜臀va亚洲va欧美va天堂| 欧美日韩大陆一区二区| 午夜av一区二区| 欧美军同video69gay| 首页亚洲欧美制服丝腿| 欧美日韩不卡一区二区| 婷婷开心激情综合| 日韩视频永久免费| 国产综合色产在线精品| 久久久久久久网| 成人涩涩免费视频| 亚洲乱码国产乱码精品精小说| 99国产精品久久久久久久久久| 亚洲免费色视频| 欧美午夜不卡视频| 麻豆免费精品视频| 国产三级精品三级在线专区| 成人激情黄色小说| 亚洲国产成人高清精品| 日韩亚洲欧美在线| 国产福利精品一区| 亚洲码国产岛国毛片在线| 欧美日韩国产大片| 精品无人码麻豆乱码1区2区 | 欧美日韩欧美一区二区| 秋霞午夜av一区二区三区| 2020国产精品久久精品美国| 成人久久视频在线观看| 亚洲国产cao| 久久天天做天天爱综合色| 99久久伊人精品| 日韩激情在线观看| 国产女同性恋一区二区| 精品视频1区2区| 狠狠色狠狠色合久久伊人| 中文字幕在线不卡视频| 欧美一区二区三区精品| 粉嫩aⅴ一区二区三区四区| 亚洲在线视频一区| 久久在线免费观看| 欧美日韩国产免费一区二区| 国产高清不卡二三区| 亚洲一区二区四区蜜桃| 国产视频在线观看一区二区三区| 91国在线观看| 国产99久久久国产精品 | 一区二区三区四区不卡视频| 日韩午夜在线观看| 色综合天天综合在线视频| 日本不卡的三区四区五区| 亚洲色图都市小说| 久久久久久久国产精品影院| 欧美三级在线看| 成人污视频在线观看| 久久成人久久鬼色| 午夜国产精品一区| 亚洲精品国产a久久久久久| 久久久.com| 日韩久久久久久| 欧美久久一区二区| 在线观看91精品国产入口| 国产成人免费视频一区| 久久99日本精品| 天堂蜜桃一区二区三区| 一区二区三区不卡视频| 国产精品灌醉下药二区| 2022国产精品视频| 日韩精品中文字幕一区二区三区 | 欧美日本一区二区三区四区 | 欧美一区二区三区婷婷月色| 91美女福利视频| 波多野结衣中文字幕一区| 国内欧美视频一区二区| 久久99久国产精品黄毛片色诱| 天天色天天爱天天射综合| 亚洲精品成人在线| 亚洲男人天堂av| 国产精品久久久久永久免费观看| 久久久久久一二三区| 精品av综合导航| 欧美精品一区二区三区蜜桃视频| 欧美一区在线视频| 日韩网站在线看片你懂的| 4438x成人网最大色成网站| 欧美私模裸体表演在线观看| 在线看国产一区| 欧美性大战久久久久久久蜜臀| 欧美中文一区二区三区| 欧美日韩一卡二卡| 在线播放/欧美激情| 日韩三级在线免费观看| 日韩免费视频一区| 久久先锋影音av鲁色资源| 亚洲精品在线免费观看视频| 久久免费偷拍视频| 国产欧美一区二区精品性色| 国产精品麻豆视频| 一区二区三区在线免费观看| 性欧美大战久久久久久久久| 视频一区中文字幕| 韩国成人精品a∨在线观看| 国产一区二区三区av电影| 成人午夜免费电影| 欧美视频中文字幕| 日韩一级精品视频在线观看| 久久亚洲一区二区三区明星换脸| 国产欧美一区二区三区沐欲| 亚洲欧洲三级电影| 午夜电影一区二区三区| 精品无人码麻豆乱码1区2区 | 国产传媒久久文化传媒| 成人不卡免费av| 欧美日韩午夜在线视频| 精品国免费一区二区三区| 亚洲国产高清在线| 亚洲午夜精品一区二区三区他趣| 日韩高清不卡一区二区三区| 国产一区二区免费看| 色噜噜偷拍精品综合在线| 欧美精品日韩一本| 中文字幕精品在线不卡| 亚洲成人一区二区在线观看| 国产在线精品一区二区不卡了| 国产成人av电影在线观看| 欧美天天综合网| 久久精品一区二区三区不卡牛牛| 亚洲精品乱码久久久久久久久 | 国产呦精品一区二区三区网站| 成人黄色一级视频| 欧美一区二区三区四区久久| 亚洲国产精品黑人久久久| 五月婷婷久久丁香| av成人免费在线| 欧美一级片免费看| 一区二区三区四区中文字幕| 韩国成人精品a∨在线观看| 欧洲精品视频在线观看| 精品国免费一区二区三区| 一区二区三区.www| 成人激情图片网| 日韩精品一区二区三区老鸭窝| 亚洲欧美日韩国产综合在线| 国产老肥熟一区二区三区| 欧美日韩一区不卡| 亚洲色图视频网站| 国产成人精品一区二| 欧美成人三级在线| 五月激情综合网| 91福利视频网站| 专区另类欧美日韩| 成人爽a毛片一区二区免费| 精品久久久久久综合日本欧美| 亚洲va欧美va天堂v国产综合| 成人免费高清视频| 日本一区二区不卡视频| 国产美女在线观看一区| 日韩欧美一区二区视频| 日韩福利视频导航| 在线不卡欧美精品一区二区三区| 亚洲欧美色一区| 97se亚洲国产综合自在线观| 国产精品女同互慰在线看| 国产mv日韩mv欧美| 久久久亚洲高清| 久久国产精品免费| 精品国产乱子伦一区| 国内精品久久久久影院薰衣草| 欧美久久久久免费| 免费高清不卡av| 欧美成va人片在线观看| 狠狠色综合日日| 国产免费观看久久| av电影在线观看不卡|