경매 소스

2007.04.12 13:03

그리움 조회 수:180 추천:53

번 호 : 33
게시자 : 머드개발 (머드개발)
등록일 : 1999-10-11 10:30
제 목 : [충격공개] 경매소스

제목: [충격공개] 경매소스
이름: 머드개발 석봉운 99/9/29 10:52 조회:61 쪽:1/12 번호:33/35
───────────────────────────────────────
이소스는 아직까진 공개된곳이 전혀 없는걸로 알고 있습니다.


#include "mstruct.h"
#include "mextern.h"
#include

long sellgold, nextgold;
int issell = 0;
creature *sell_ply;
creature *buy_ply;
object *sell_obj;
long sellcount;

int sell_object(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
  int fd;
  char objs[40];
  long objn;
  object *obj_ptr;

  fd = ply_ptr->fd;
  if (cmnd->num < 2) {
     if (issell) {
        print(fd, "당신은 경매중인 물건의 정보를 봅니다.\n");
                                  
        return(0);
     } else {
        print(fd, "무엇을 경매하실려구요?\n");
        return(0);
     }
  }

  if (issell) {
     print(fd, "현재 경매가 진행중입니다.\n");
     return(0);
  }
  
  if (cmnd->num == 2) {
     sellgold = 10;
     strcpy(objs, cmnd->str[1]);
     objn = cmnd->val[1];
  } else {
     if (strcmp(&cmnd->str[1][strlen(cmnd->str[1])-2], "냥")
        || strlen(cmnd->str[1])<3) {
        print(fd, "그것은 돈이 아닙니다.\n");
        return(0);
     }
     sscanf(cmnd->str[1],"%ld", &sellgold);
     if (sellgold < 10) sellgold = 10;
     strcpy(objs, cmnd->str[2]);
     objn = cmnd->val[2];
  }

  obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, objs, objn);

  if (!obj_ptr) {
     print(fd, "당신은 그것을 가지고 있지 않습니다.\n");
     return(0);
  }

  if (sellgold > ply_ptr->gold || sellgold < 0) {
     print(fd, "당신은 그만한 돈이 없습니다\n");
     return(0);
  }

  del_obj_crt(obj_ptr, ply_ptr);
  issell = 1;
  nextgold = sellgold;
  sellcount = 550;
  sell_obj = obj_ptr;
  sell_ply = ply_ptr;

  print(fd, "당신은 경매물품 '%s'를 내 놓습니다.\n", obj_ptr->name);
  return(0);
}

int buy_object(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
  int fd;
  long gold, sellg;

  fd = ply_ptr->fd;
  if (!issell) {
     print(fd, "현재는 경매중이 아닙니다.\n");
     return(0);
  }
  if (cmnd->num < 2) {
     print(fd, "얼마에 매입을 하실려구요?\n");
     return(0);
  } else {
     if (!strcmp(ply_ptr->name, sell_ply->name)) {
        print(fd, "당신은 경매자이므로 매입을 할수가 없습니다.\n");
        return(0);
     }
        
  if (strcmp(&cmnd->str[1][strlen(cmnd->str[1])-2], "냥")
                                   || strlen(cmnd->str[1]) < 3) {
        print(fd, "그것은 돈이 아닙니다.\n");
        return(0);
     }

     sscanf(cmnd->str[1],"%ld", &gold);

     if (gold > ply_ptr->gold) {
        print(fd, "당신은 그만한 돈이 없습니다.\n");
        return(0);
     }

     if (gold < nextgold) {
  print(fd, "경매에 응하시려면 %ld냥 이상을 지불하여야 합니다.\n",nextgold);
        return(0);
     }
     nextgold = gold + gold/10;
     if (nextgold < 0) nextgold = 0x7fffffff;

     if (buy_ply && buy_ply->fd != -1 && issell == 2) {
       print(buy_ply->fd, "당신은 경매에 지불하였던 돈을 되돌려받습니다\n");
        buy_ply->gold += sellgold;
     }

     issell = 2;
     sellcount = 550;
     sellgold = gold;
     buy_ply = ply_ptr;
     ply_ptr->gold -= gold;

     print(fd, "당신은 %ld냥을 경매대금으로 지불하고 경매에응찰합니다\n", sellgold);
     return(0);
  }
}

void sell_rtn()
{
  if (issell == 1) {
     if (sellcount == 550) {
         broadcast("\n경매 경매자: %s 물품: %s 금액: %ld냥\n",
         sell_ply->name, sell_obj->name, sellgold);
        broadcast("도움 경매: [###냥] 물건 경매 매입: ###냥 매입\n");
     }
     else if(sellcount == 275) {
         broadcast("\n경매 경매자: %s 물품: %s 금액: %ld냥\n",
           sell_ply->name, sell_obj->name, sellgold);
        broadcast(" 경매완료 15초전입니다.\n");
     }
     else if(sellcount == 0) {
        broadcast("\n경매 경매에 응하는 사람이 없어 중단합니다.\n");
        if (sell_ply && sell_ply->fd != -1) {
           print(sell_ply->fd, "당신은 경매물품을 돌려받습니다.\n");
           add_obj_crt(sell_obj, sell_ply);
        }
        issell = 0;
     }
  } else {
     if (sellcount == 550) {
        broadcast("\n매입 물품: %s 응찰자: %s 매입금액: %ld냥\n",
           sell_obj->name, buy_ply->name, sellgold);
     }
     else if (sellcount == 275) {
        broadcast("\n매입 물품: %s 응찰자: %s 매입금액: %ld냥\n",
           sell_obj->name, buy_ply->name, sellgold);
        broadcast(" ^[[=13F매입완료 15초전입니다.\n");
     } else if (sellcount == 0) {
   broadcast("\n매입 물품: %s 매입자: %s 매입금액: %ld냥[경매완료]\n",
           sell_obj->name, buy_ply->name, sellgold);
        if (sell_ply && buy_ply->fd != -1) {
       print(sell_ply->fd, "당신은 물품이 경매되어 경매대금을받습니다.\n");
           sell_ply->gold += sellgold;
        }
        if (buy_ply && buy_ply->fd != -1) {
           print(buy_ply->fd, "당신은 경매 입찰되어 물품을 받습니다.\n");
           add_obj_crt(sell_obj, buy_ply);
        }
        issell = 0;
     }
  }
  sellcount -= 25;
}


출처 : INS Mordor 게시판

홈지기 "그륨"


XE Login