Advertisement
blackwolfsden

Grumboz_BlackJack_Dealer

Sep 9th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.23 KB | None | 0 0
  1. -- From the Mad Scientist slp13at420 of EmuDevs.com
  2. print("+-+-+-+-+-+-+")
  3. LOCAL npcid = 390001 -- creature_template id for vendor
  4. LOCAL currency = 44209 -- item_template id for currency
  5. LOCAL bet = 1 -- how much each hit costs.
  6.  
  7. -- DO NOT EDIT BELOW this line unless you know what your doing. --
  8.  
  9. LOCAL Suit = {};
  10. LOCAL Card = {};
  11. LOCAL Hand = {};
  12.  
  13. LOCAL FUNCTION GetItemNameById(id)
  14. LOCAL err = "ERROR GetItemById() name value is nil(Item "..id.." May not exist in database)"
  15. LOCAL SEARCH = WorldDBQuery("SELECT `name` FROM `item_template` WHERE `entry` = '"..id.."';");
  16.  
  17.     IF(SEARCH)THEN
  18.         LOCAL itemname = SEARCH:GetString(0)
  19.         RETURN(itemname)
  20.     ELSE
  21.         error(err)
  22.     END
  23. END
  24.  
  25. LOCAL currency_name = GetItemNameById(currency)
  26.  
  27. LOCAL FUNCTION ShuffleHand(player, unit, guid)
  28.     Hand[guid] = {player = 0, dealer = 0, FIRST = 0, turns = 0, creature = unit};
  29. END
  30.  
  31. LOCAL FUNCTION ShuffleCards(player, guid)
  32.  
  33. math.randomseed(tonumber(os.TIME()*os.TIME()))
  34.  
  35. Card[guid] = {
  36.     [1] = {{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{10},{10},{10}},
  37.     [2] = {{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{10},{10},{10}},
  38.     [3] = {{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{10},{10},{10}},
  39.     [4] = {{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{10},{10},{10}}
  40.         }
  41. END
  42.  
  43. LOCAL FUNCTION BlackJackInstructions(event, player, unit, guid)
  44.     player:GossipClearMenu()
  45.     player:GossipMenuAddItem(0,"First to reach 21", 0, 8)
  46.     player:GossipMenuAddItem(0,"without going over wins.", 0, 8)
  47.     player:GossipMenuAddItem(10,"back", 0, 7)
  48.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  49.     player:GossipSendMenu(1, Hand[guid].creature)
  50. END
  51.  
  52. LOCAL FUNCTION BlackJackOnHello(event, player, unit)
  53. LOCAL guid = player:GetGUIDLow()
  54. ShuffleCards(player, guid)
  55. ShuffleHand(player, unit, guid)
  56.     player:GossipClearMenu()
  57.     player:GossipMenuAddItem(10,"costs "..bet.." "..currency_name.." per card.", 0, 7)
  58.     player:GossipMenuAddItem(10,"Play 21.", 0, 11)
  59.     player:GossipMenuAddItem(10,"Instructions.", 0, 8)
  60.     player:GossipMenuAddItem(5, "never mind.", 0, 10)
  61.     player:GossipSendMenu(1, Hand[guid].creature)
  62. END
  63.  
  64. LOCAL FUNCTION BlackJackOnPlayerWin(event, player, unit, guid)
  65.     player:GossipClearMenu()
  66.     player:GossipMenuAddItem(10,"You:"..Hand[guid].player.." :: Dealer:"..Hand[guid].dealer.."", 0, 14)
  67.     player:GossipMenuAddItem(10,"You win. Dealer went over 21.", 0, 14)
  68.     player:GossipMenuAddItem(10,"again.", 0, 11)
  69.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  70.     player:GossipSendMenu(1, Hand[guid].creature)
  71. END
  72.  
  73. LOCAL FUNCTION BlackJackOnPlayerTO(event, player, unit, guid)
  74.     player:GossipClearMenu()
  75.     player:GossipMenuAddItem(10,"You:"..Hand[guid].player.." :: Dealer:"..Hand[guid].dealer.."", 0, 14)
  76.     player:GossipMenuAddItem(10,"21. You win.", 0, 13)
  77.     player:GossipMenuAddItem(10,"again.", 0, 11)
  78.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  79.     player:GossipSendMenu(1, Hand[guid].creature)
  80. END
  81.  
  82. LOCAL FUNCTION BlackJackOnDealerTO(event, player, unit, guid)
  83.     player:GossipClearMenu()
  84.     player:GossipMenuAddItem(10,"You:"..Hand[guid].player.." :: Dealer:"..Hand[guid].dealer.."", 0, 14)
  85.     player:GossipMenuAddItem(10,"Dealer hit 21. You loose.", 0, 16)
  86.     player:GossipMenuAddItem(10,"again.", 0, 11)
  87.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  88.     player:GossipSendMenu(1, Hand[guid].creature)
  89. END
  90.  
  91. LOCAL FUNCTION BlackJackOnDealerWin(event, player, unit, guid)
  92.     player:GossipClearMenu()
  93.     player:GossipMenuAddItem(10,"You:"..Hand[guid].player.." :: Dealer:"..Hand[guid].dealer.."", 0, 15)
  94.     player:GossipMenuAddItem(10,"Dealer wins. You went over 21.", 0, 15)
  95.     player:GossipMenuAddItem(10,"again.", 0, 11)
  96.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  97.     player:GossipSendMenu(1, Hand[guid].creature)
  98. END
  99.  
  100. LOCAL FUNCTION BlackJackOnDraw(event, player, unit, guid)
  101.     player:GossipClearMenu()
  102.     player:GossipMenuAddItem(10,"You:"..Hand[guid].player.." :: Dealer:"..Hand[guid].dealer.."", 0, 17)
  103.     player:GossipMenuAddItem(10,"You Both hit 21.", 0, 17)
  104.     player:GossipMenuAddItem(10,"again.", 0, 11)
  105.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  106.     player:GossipSendMenu(1, Hand[guid].creature)
  107. END
  108.  
  109. LOCAL FUNCTION BlackJackOnNoWinner(event, player, unit, guid)
  110.     player:GossipClearMenu()
  111.     player:GossipMenuAddItem(10,"You:"..Hand[guid].player.." :: Dealer:"..Hand[guid].dealer.."", 0, 9)
  112.     player:GossipMenuAddItem(10,"You Both went over 21.", 0, 19)
  113.     player:GossipMenuAddItem(10,"again.", 0, 11)
  114.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  115.     player:GossipSendMenu(1, Hand[guid].creature)
  116. END
  117.  
  118. LOCAL FUNCTION BlackJackOnPlay(event, player, unit, guid)
  119.     player:GossipClearMenu()
  120.     player:GossipMenuAddItem(10,"You:"..Hand[guid].player.." :: Dealer:"..Hand[guid].dealer.."", 0, 9)
  121.     player:GossipMenuAddItem(10,"hit me.", 0, 12)
  122.     player:GossipMenuAddItem(10,"good bye.", 0, 10)
  123.     player:GossipSendMenu(1, Hand[guid].creature)
  124. END
  125.  
  126. LOCAL FUNCTION DealCard(event, player, guid)
  127.  
  128. LOCAL suit = math.random(1,4)
  129. LOCAL VALUE = math.random(1,14)
  130.  
  131.     IF(Card[guid][suit][VALUE][1] > 0)THEN
  132.         LOCAL card = (Card[guid][suit][VALUE][1])
  133.         RETURN(card)
  134.     ELSE
  135.         DealCard(event, timer, cycle, player)
  136.     END
  137. Card[guid][suit][VALUE][1] = 0
  138. END
  139.  
  140. -- ******************************* --
  141.  
  142. LOCAL FUNCTION BlackJackOnSelect(event, player, unit, sender, intid, code)
  143.  
  144. LOCAL guid = player:GetGUIDLow()
  145.  
  146.     IF(player:GetItemCount(currency)>=bet)THEN
  147.         IF(intid<=7)THEN
  148.             BlackJackOnHello(1, player, unit)
  149.         END
  150.         IF(intid==8)THEN -- goto/return instructions
  151.             BlackJackInstructions(event, player, unit, guid)
  152.         END
  153.         IF(intid==9)THEN -- return game screen
  154.             BlackJackOnPlay(event, player, unit, guid)
  155.         END
  156.         IF(intid==10)THEN
  157.             player:GossipComplete()
  158.         END
  159.     --  ++++++++++++++++++++++++++++++++++++ --
  160.         IF(intid==11)THEN -- start game first deal
  161.             ShuffleCards(player, guid)
  162.             ShuffleHand(player, unit, guid)
  163.             BlackJackOnSelect(event, player, unit, sender, 12, code)   
  164.         END
  165.  
  166.         IF(intid==12)THEN -- hit me
  167.             player:RemoveItem(currency, bet)
  168.             LOCAL pcard = DealCard(event, player, guid)
  169.             LOCAL dcard = DealCard(event, player, guid)
  170.             LOCAL win = (bet * Hand[guid].turns)*2
  171.        
  172.             Hand[guid].player = (Hand[guid].player + pcard)
  173.             Hand[guid].dealer = (Hand[guid].dealer + dcard)
  174.             Hand[guid].turns =(Hand[guid].turns + 1)
  175.  
  176.                 IF((Hand[guid].player < 21)AND(Hand[guid].dealer < 21))THEN
  177.                     BlackJackOnPlay(1, player, Hand[guid].creature, guid)
  178.                 END
  179.                
  180.                 IF((Hand[guid].player==21)AND(Hand[guid].dealer==21))THEN
  181.                     BlackJackOnDraw(event, player, Hand[guid].creature, guid)
  182.                 END
  183.                
  184.                 IF((Hand[guid].player==21)AND((Hand[guid].dealer < 21)OR(Hand[guid].dealer > 21)))THEN
  185.                     player:AddItem(currency, win)
  186.                     BlackJackOnPlayerTO(event, player, Hand[guid].creature, guid)
  187.                 END
  188.                
  189.                 IF(((Hand[guid].player < 21)OR(Hand[guid].player > 21))AND(Hand[guid].dealer==21))THEN
  190.                     BlackJackOnDealerTO(event, player, Hand[guid].creature, guid)
  191.                 END
  192.                
  193.                 IF((Hand[guid].player < 21)AND(Hand[guid].dealer > 21))THEN
  194.                     player:AddItem(currency, win)
  195.                     BlackJackOnPlayerWin(event, player, Hand[guid].creature, guid)
  196.                 END
  197.    
  198.                 IF((Hand[guid].player > 21)AND(Hand[guid].dealer < 21))THEN
  199.                     BlackJackOnDealerWin(event, player, Hand[guid].creature, guid)
  200.                 END
  201.                
  202.                 IF((Hand[guid].player > 21)AND(Hand[guid].dealer > 21))THEN
  203.                     BlackJackOnNoWinner(event, player, Hand[guid].creature, guid)
  204.                 END
  205.                            
  206.         END
  207.    
  208.         IF(intid==13)THEN
  209.             BlackJackOnPlayerTO(1, player, unit, guid)
  210.         END
  211.                            
  212.         IF(intid==14)THEN
  213.             BlackJackOnPlayerWin(1, player, unit, guid)
  214.         END
  215.        
  216.         IF(intid==15)THEN
  217.             BlackJackOnDealerWin(1, player, unit, guid)
  218.         END
  219.        
  220.         IF(intid==16)THEN
  221.             BlackJackOnDealerTO(1, player, unit, guid)
  222.         END
  223.                            
  224.         IF(intid==17)THEN
  225.             BlackJackOnDraw(event, player, unit, guid)
  226.         END
  227.        
  228.         IF(intid==18)THEN
  229.             BlackJackOnNewPlay(event, player, guid)
  230.         END
  231.    
  232.         IF(intid==19)THEN
  233.             BlackJackOnNoWinner(1, player, unit, guid)
  234.         END
  235.  
  236.     ELSE
  237.         player:SendBroadcastMessage("|cffFF0000move along now. you creeping me out .|r we only deal to players with "..currency_name.."'s.")
  238.                                 player:GossipComplete()
  239.     END
  240. END
  241.  
  242. RegisterCreatureGossipEvent(npcid, 1, BlackJackOnHello)
  243. RegisterCreatureGossipEvent(npcid, 2, BlackJackOnSelect)
  244. print("+Grumbo'z 21+")
  245. print("+-+-+-+-+-+-+")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement