Advertisement
Asthard

Untitled

Jul 3rd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. ACMD(do_buy_marble)
  2. {
  3.     if (ch->IsObserverMode() || ch->GetExchange())
  4.         return;
  5.    
  6.     char arg1[256], arg2[256];
  7.     two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
  8.     if (!*arg1 || !*arg2)
  9.     {
  10.         ch->ChatPacket(CHAT_TYPE_INFO, "Syntax: buy_marble_item <mobVnum> <itemCount>");
  11.         return;
  12.     }
  13.    
  14.     DWORD mobVnum, itemCount;  
  15.     int price;
  16.    
  17.     str_to_number(mobVnum, arg1);
  18.     str_to_number(itemCount, arg2);
  19.     if (!mobVnum || (mobVnum <= 0))
  20.     {
  21.         ch->ChatPacket(CHAT_TYPE_INFO, "mobVnum not exist or is wrong.");
  22.         return;
  23.     }
  24.    
  25.     if (!itemCount)
  26.     {
  27.         ch->ChatPacket(CHAT_TYPE_INFO, "itemCount not exist.");
  28.         return;
  29.     }
  30.  
  31.     if (itemCount <= 0)
  32.     {
  33.         ch->ChatPacket(CHAT_TYPE_INFO, "itemCount bellow 0.");
  34.         return;
  35.     }
  36.    
  37.     if (itemCount > 10)
  38.     {
  39.         ch->ChatPacket(CHAT_TYPE_INFO, "itemCount higher than 10.");
  40.         return;
  41.     }
  42.  
  43.     switch(mobVnum)
  44.     {
  45.         case 2001:
  46.             price = 500000;
  47.             break;
  48.         case 636:
  49.             price = 500000;
  50.             break;
  51.         case 552:
  52.             price = 500000;
  53.             break;
  54.         case 701:
  55.             price = 500000;
  56.             break;
  57.         case 101:
  58.             price = 300000;
  59.             break;
  60.            
  61.         default:
  62.         {
  63.             ch->ChatPacket(CHAT_TYPE_INFO, "Marmur, który chcesz kupić nie istnieje.");
  64.             price = 0;
  65.             break;
  66.         }
  67.     }
  68.    
  69.     if (price == 0)
  70.     {
  71.         ch->ChatPacket(CHAT_TYPE_INFO, "Cena jest nieprawidłowa.");
  72.         return;
  73.     }
  74.    
  75.     if (ch->GetGold() < price*itemCount)
  76.     {
  77.         ch->ChatPacket(CHAT_TYPE_INFO, "Posiadasz zbyt mało Yang, aby kupić marmur.");
  78.         return;
  79.     }
  80.    
  81.     for (int createMarble = 0; createMarble < itemCount; createMarble++)
  82.     {
  83.         LPITEM item = ITEM_MANAGER::instance().CreateItem(70104, 1, 0, true);
  84.         if (item)
  85.         {
  86.             item->SetSocket(0, mobVnum);
  87.             int iEmptyPos = ch->GetEmptyInventory(item->GetSize());
  88.  
  89.             if (iEmptyPos != -1)
  90.             {
  91.                 ch->PointChange(POINT_GOLD, -price);
  92.                 item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
  93.             }
  94.             else
  95.             {
  96.                 M2_DESTROY_ITEM(item);
  97.                 ch->ChatPacket(CHAT_TYPE_INFO, "Posiadasz zbyt mało miejsca w ekwipunku.");
  98.                 break;
  99.             }
  100.         }
  101.         else
  102.         {
  103.             ch->ChatPacket(CHAT_TYPE_INFO, "#%d - przedmiot nie istnieje.", 70104);
  104.             break;
  105.         }
  106.     }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement