📄 npc_petshop.c
字号:
NPC_PoolPetShop_DepotPet_Menu( meindex, talkerindex);
}
}
#endif
}
break;
case CHAR_WINDOWTYPE_WINDOWPETSHOP_PETSELECT:
if(select==WINDOW_BUTTONTYPE_CANCEL){
NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 );
}else{
NPC_PetShop_selectWindow( meindex, talkerindex, 2, datanum );
}
break;
case CHAR_WINDOWTYPE_WINDOWPETSHOP_PETSELECT2:
if(select==WINDOW_BUTTONTYPE_CANCEL){
NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 );
}else{
NPC_PetShop_selectWindow( meindex, talkerindex, 6, datanum );
}
break;
case CHAR_WINDOWTYPE_WINDOWPETSHOP_MAIN:
if(select==WINDOW_BUTTONTYPE_YES){
NPC_PetShop_selectWindow( meindex, talkerindex, 3,-1 );
}else{
NPC_PetShop_selectWindow( meindex, talkerindex,1,-1);
}
break;
case CHAR_WINDOWTYPE_WINDOWPETSHOP_MAIN2:
if(select==WINDOW_BUTTONTYPE_YES){
NPC_PetShop_selectWindow( meindex, talkerindex, 7,-1 );
}else {
NPC_PetShop_selectWindow( meindex, talkerindex,5,-1);
}
break;
case CHAR_WINDOWTYPE_WINDOWPETSHOP_ASKDRAW:
if( select == WINDOW_BUTTONTYPE_YES){
if( CHAR_getCharPetElement( talkerindex) != -1 ) {
NPC_PetShop_selectWindow( meindex, talkerindex, 11,-1 );
}else {
NPC_PetShop_selectWindow( meindex, talkerindex, 12, -1 );
}
}else {
CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
NPC_PetShop_selectWindow( meindex, talkerindex, 9, 0);
}
break;
case CHAR_WINDOWTYPE_WINDOWPETSHOP_GOLDOVER:
if( select == WINDOW_BUTTONTYPE_YES){
NPC_PetShop_selectWindow( meindex, talkerindex, 4,-1 );
}else{
NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 );
}
break;
case CHAR_WINDOWTYPE_WINDOWPETSHOP_DRAWSELECT:
if( select == WINDOW_BUTTONTYPE_PREV){
NPC_PetShop_selectWindow( meindex, talkerindex, 9, -1);
}else if( select == WINDOW_BUTTONTYPE_NEXT) {
NPC_PetShop_selectWindow( meindex, talkerindex, 9, 1);
}else if( select != WINDOW_BUTTONTYPE_CANCEL) {
if( CHAR_getCharPetElement( talkerindex) != -1 ) {
NPC_PetShop_selectWindow( meindex, talkerindex, 10, datanum);
}else {
NPC_PetShop_selectWindow( meindex, talkerindex, 12, -1 );
}
}else {
NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 );
}
break;
#ifdef _NPC_DEPOTPET
case CHAR_WINDOWTYPE_DEPOTPETSHOP_HANDLE:
if( !CHAR_CheckDepotPet( talkerindex) ) return ;
switch( datanum ) {
case 1://放入
if( CHAR_findEmptyDepotPet( talkerindex) == -1 ){
CHAR_talkToCli( talkerindex, -1, "宠物仓库已满!", CHAR_COLORYELLOW);
return;
}
//NPC_DepotPet_Pet_printWindow( meindex, talkerindex);
NPC_PetShop_selectWindow( meindex, talkerindex, 13, -1 );
break;
case 2://取出
if( CHAR_getCharPetElement( talkerindex) < 0 ) {
CHAR_talkToCli( talkerindex, -1, "身上宠物栏位已满!", CHAR_COLORYELLOW);
return;
}
NPC_PetShop_selectWindow( meindex, talkerindex, 14, 0);
break;
case 0:
NPC_PetShop_selectWindow( meindex, talkerindex, 0, -1);
break;
}
break;
case CHAR_WINDOWTYPE_DEPOTPETSHOP_ADD:
if(select==WINDOW_BUTTONTYPE_CANCEL){
NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 );
}else{
NPC_PetShop_selectWindow( meindex, talkerindex, 15, datanum );
}
break;
case CHAR_WINDOWTYPE_DEPOTPETSHOP_GET:
if( select == WINDOW_BUTTONTYPE_PREV){
NPC_PetShop_selectWindow( meindex, talkerindex, 14, -1);
}else if( select == WINDOW_BUTTONTYPE_NEXT) {
NPC_PetShop_selectWindow( meindex, talkerindex, 14, 1);
}else if( select != WINDOW_BUTTONTYPE_CANCEL) {
if( CHAR_getCharPetElement( talkerindex) != -1 ) {
NPC_PetShop_selectWindow( meindex, talkerindex, 16, datanum);
}else {
NPC_PetShop_selectWindow( meindex, talkerindex, 12, -1 );
}
}else {
NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 );
}
break;
case CHAR_WINDOWTYPE_DEPOTPETSHOP_ASKADD: // 确认存入仓库
if(select==WINDOW_BUTTONTYPE_YES){
NPC_PetShop_selectWindow( meindex, talkerindex, 17,-1 );
}else {
NPC_PetShop_selectWindow( meindex, talkerindex,13,-1);
}
break;
case CHAR_WINDOWTYPE_DEPOTPETSHOP_ASKGET: // 确认取出仓库
if( select == WINDOW_BUTTONTYPE_YES){
if( CHAR_getCharPetElement( talkerindex) != -1 ) {
NPC_PetShop_selectWindow( meindex, talkerindex, 18,-1 );
}else {
NPC_PetShop_selectWindow( meindex, talkerindex, 12, -1 );
}
}else {
CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
NPC_PetShop_selectWindow( meindex, talkerindex, 14, 0);
}
break;
#endif
case CHAR_WINDOWTYPE_WINDOWPETSHOP_END:
if( select == WINDOW_BUTTONTYPE_OK){
NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 );
}
break;
// CoolFish: Add 2001/7/4
default:
break;
}
}
void NPC_PetDate(int meindex,int talker,int select,char *token)
{
int petindex;
int cost;
char *petname;
char buf[1024];
/*--伐□弁及赓渝祭--*/
CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANT,select);
petindex = CHAR_getCharPet( talker, select-1);
if( !CHAR_CHECKINDEX(petindex) ) return;
NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_REALY, buf);
cost=NPC_GetCost(meindex,talker,petindex);
petname = CHAR_getUseName( petindex);
sprintf(token,"\n是[%s]没错吧?""%s"
"\n\n 买卖价格 %d STONE\n"
,petname,buf,cost);
}
void NPC_PetDate2(int meindex,int talker,int select,char *token)
{
int petindex;
char *petname;
CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANT,select);
petindex = CHAR_getCharPet( talker, select-1);
if( !CHAR_CHECKINDEX(petindex) ) return;
petname = CHAR_getUseName( petindex);
sprintf(token,"\n寄放[%s]"
"\n\n 寄放价格 %d stone\n"
,petname, NPC_GETPOOLCOST( talker)
);
}
void NPC_PetDate3(int meindex,int talker,int select,char *token)
{
int poolindex;
int petindex;
char *petname;
poolindex = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) * 5 + select - 1;
CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANT,poolindex );
petindex = CHAR_getCharPoolPet( talker, poolindex);
if( !CHAR_CHECKINDEX(petindex) ) return;
petname = CHAR_getUseName( petindex);
sprintf(token,"\n领回[%s]", petname);
}
int NPC_GetCost(int meindex,int talker,int petindex)
{
int cost;
int levelcost;
int level;
int getlevel;
int graNo;
int rare;
int charm=50;
int petai;
int i=1;
double rate=1.0;
int intrate;
char buf[1024];
char buff2[128];
char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
print("GetArgStrErr");
return FALSE;
}
getlevel=CHAR_getInt(petindex,CHAR_PETGETLV);
level=CHAR_getInt(petindex,CHAR_LV);
graNo=CHAR_getInt(petindex,CHAR_BASEBASEIMAGENUMBER);
rare=CHAR_getInt(petindex,CHAR_RARE);
if(getlevel==0) getlevel=1 ;
/*--袄蟾毛菲户月--*/
levelcost=(level*level)*10;
getlevel=(getlevel*getlevel)*10;
// Syu ADD 修改卖转生宠金钱会变负的bug
#ifdef _PET_2TRANS
if( CHAR_getInt(petindex , CHAR_TRANSMIGRATION)>0)
#else
if( CHAR_getInt(petindex , CHAR_TRANSMIGRATION)==1)
#endif
getlevel=10;
if(rare==0){ rare=1;
}else if(rare==1){ rare=5;
}else if(rare==2){ rare=8;}
cost = ((levelcost-getlevel)+(level*PETCOST))*rare;
intrate = CHAR_getWorkInt( meindex , CHAR_WORK_NOMALRATE);
rate=(double) intrate / 1000;
NPC_Util_GetStrFromStrWithDelim( npcarg, "special_pet", buf, sizeof( buf));
i=1;
/*--旦矢扑乓伙伊□玄匹煌遥今木月矢永玄毛喃曰请允 矢永玄及隙烂反 飓 寞)--*/
while( getStringFromIndexWithDelim(buf,",",i,buff2,sizeof(buff2)) !=FALSE )
{
if(strstr( buff2, "-")==NULL){
if(graNo == atoi(buff2)){
intrate=CHAR_getWorkInt( meindex , CHAR_WORK_SPECIALRATE);
rate=(double) intrate / 1000;
break;
}
}else{
/*--失奶 丞互 15-25 及溥匹嗉濠日木化中月桦宁--*/
int start;
int end;
int tmp;
int graflg=0;
char token2[128];
/*-"-"匹嗉濠日木凶铵户及醒袄午 及醒袄毛潸 --*/
getStringFromIndexWithDelim( buff2, "-", 1, token2, sizeof(token2));
start = atoi( token2);
getStringFromIndexWithDelim( buff2, "-", 2 ,token2, sizeof(token2));
end = atoi( token2);
/*-- 寞互菅卞卅匀化中凶日} 木赘尹月**/
if(start > end){
tmp=start;
start=end;
end=tmp;
}
end++;
/*--"-"匹嗉濠日木凶坌及失奶 丞树 毛 月--*/
if(start <= graNo && graNo < end){
intrate=CHAR_getWorkInt( meindex , CHAR_WORK_SPECIALRATE);
rate=(double) intrate / 1000;
graflg=1;
break;
}
if(graflg ==1) break;
}
i++;
}
/*--矢永玄及镝擦蘸毛 ---*/
petai=CHAR_getWorkInt(petindex,CHAR_WORKFIXAI);
/*-- 毛必永玄--*/
charm = CHAR_getWorkInt(talker,CHAR_WORKFIXCHARM);
/*-- ≈镝擦蘸 / ㄡ */
charm = charm + petai;
if(charm < 20){
charm = 20;
}
charm = charm / 2;
cost = (int)cost*rate;
rate=(double)charm/100;
/*-- 镝擦喘仃--*/
cost = cost * rate;
/*--云嗯毛筏盛--*/
CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANTSEC,cost);
return cost;
}
#if 1
void NPC_PetDel(int meindex, int talker,int select,char* token)
{
int petindex;
int petsel;
char szPet[128];
int cost;
int defpet;
int fd = getfdFromCharaIndex( talker );
NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_THANKS, token);
petsel=(CHAR_getWorkInt(talker,CHAR_WORKSHOPRELEVANT)-1);
petindex = CHAR_getCharPet( talker, petsel);
if( !CHAR_CHECKINDEX(petindex) ) return;
// CoolFish: Family 2001/6/14
if (CHAR_getInt(petindex, CHAR_PETFAMILY) == 1){
/* char buf[1024];
lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK,
-1, -1,
makeEscapeString("\n\n很抱歉~守护兽无法贩卖喔!\n请自己好好照顾!", buf, sizeof(buf)));
*/
sprintf(token,"\n\n很抱歉~守护兽无法贩卖喔!\n请自己好好照顾!");
return;
}
// Robin 0725
if (CHAR_getInt( talker, CHAR_RIDEPET ) == petsel ){
/* char buf[1024];
lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK,
-1, -1,
makeEscapeString("\n\n骑乘中的宠物无法贩卖喔!", buf, sizeof(buf)));
*/
sprintf(token,"\n\n骑乘中的宠物无法贩卖喔!");
return;
}
if( CHAR_getWorkInt( CONNECT_getCharaindex(fd),
CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ;
defpet=CHAR_getInt(talker,CHAR_DEFAULTPET);
if(defpet==petsel){
CHAR_setInt(talker,CHAR_DEFAULTPET,-1);
lssproto_KS_send( fd, -1, TRUE);
}
CHAR_setCharPet( talker, petsel, -1);
LogPet(
CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿 */
CHAR_getChar( talker, CHAR_CDKEY ),
CHAR_getChar( petindex, CHAR_NAME),
CHAR_getInt( petindex, CHAR_LV),
"sell(卖宠)",
CHAR_getInt( talker,CHAR_FLOOR),
CHAR_getInt( talker,CHAR_X ),
CHAR_getInt( talker,CHAR_Y ),
CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14
);
CHAR_endCharOneArray( petindex );
snprintf( szPet, sizeof( szPet ), "K%d", petsel);
CHAR_sendStatusString( talker, szPet );
cost=NPC_GetCost(meindex,talker,petindex);
CHAR_AddGold( talker, cost);
}
#endif
void NPC_PetDel2( int meindex, int talker, int select, char *token)
{
int petindex;
int selectpet;
int emptyindex;
char szPet[128];
int fd = getfdFromCharaIndex( talker );
if( fd == -1 ) {
fprint( "err\n");
return;
}
// 矢永玄犯□正 凳[矢永玄 仃 木
selectpet = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) -1;
petindex = CHAR_getCharPet( talker, selectpet);
if( !CHAR_CHECKINDEX( petindex) ) return;
// Robin 0725
if (CHAR_getInt( talker, CHAR_RIDEPET ) == selectpet )
{
/* char buf[1024];
lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK,
-1, -1,
makeEscapeString("\n\n骑乘中的宠物无法寄放喔!", buf, sizeof(buf)));
*/
sprintf(token,"\n\n骑乘中的宠物无法寄放喔!");
return;
}
// 坞五毛茧允[蟆卞茧仄化民尼永弁仄化中月及匹]仇仇匹坞中化中卅中及反云井仄中
emptyindex = CHAR_getCharPoolPetElement( talker);
if( emptyindex == -1 ) {
fprint( "err\n");
return;
}
// 爵 赏 迕矢永玄卅日]公木及瓒 毛壅允[
if( CHAR_getInt( talker, CHAR_DEFAULTPET) == selectpet) {
CHAR_setInt( talker, CHAR_DEFAULTPET, -1);
lssproto_KS_send( fd, -1, TRUE);
}
// 仃 木 卞]矢永玄及奶件犯永弁旦毛戊疋□
CHAR_setCharPoolPet( talker, emptyindex, petindex);
// 矢永玄 井日壅允
CHAR_setCharPet( talker, selectpet, -1);
// 丢永本□斥潸
NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_POOLTHANKS, token);
// 云嗯蛹日允
CHAR_DelGold( talker, NPC_GETPOOLCOST( talker) );
// 云嗯犯□正霜月
CHAR_send_P_StatusString(talker,CHAR_P_STRING_GOLD);
snprintf( szPet, sizeof( szPet ), "K%d", selectpet);
// 蕙仄中矢永玄旦 □正旦霜曰勾仃月
CHAR_sendStatusString( talker, szPet );
// 矢永玄毛 仃凶夫弘
LogPet(
CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿 */
CHAR_getChar( talker, CHAR_CDKEY ),
CHAR_getChar( petindex, CHAR_NAME),
CHAR_getInt( petindex, CHAR_LV),
"pool(寄放宠物店)",
CHAR_getInt( talker,CHAR_FLOOR),
CHAR_getInt( talker,CHAR_X ),
CHAR_getInt( talker,CHAR_Y ),
CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14
);
}
void NPC_PetDel3( int meindex, int talker, int select, char *token)
{
int petindex;
int selectpet;
int emptyindex;
char szPet[128];
int workindex[CHAR_MAXPOOLPETHAVE];
int i;
int cnt;
selectpet = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) ;
petindex = CHAR_getCharPoolPet( talker, selectpet);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -