Advertisement
robn

BodyShop.lua

Jun 19th, 2011
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.56 KB | None | 0 0
  1. local shop_flavours = {
  2.     "{surname} Ship Restorations",
  3.     "{surname} Panel Services",
  4.     "{name} Paint Works",
  5. }
  6.  
  7. local ads = {}
  8.  
  9. local onChat = function (form, ref, option)
  10.     local ad = ads[ref]
  11.  
  12.     if option == 0 then
  13.         form:Clear();
  14.  
  15.         form:SetTitle(ad.title)
  16.         form:SetFace({ female = ad.isfemale, seed = ad.faceseed })
  17.         form:SetMessage("Select a service.")
  18.  
  19.         form:AddOption("One-colour body respray ($200)", 1)
  20.         form:AddOption("Two-colour body respray ($400)", 2)
  21.         form:AddOption("Registration change ($500)", 3)
  22.         form:AddOption("Hang up.", -1);
  23.  
  24.         return
  25.     end
  26.  
  27.     if option == -1 then
  28.         form:Close()
  29.         return
  30.     end
  31.  
  32.     if option == 1 then
  33.         if Game.player:GetMoney() < 200 then
  34.             UI.Message("You do not have enough money.")
  35.         else
  36.             Game.player:SetPrimaryColour(Engine.rand:Number(), Engine.rand:Number(), Engine.rand:Number())
  37.             Game.player:AddMoney(-200)
  38.             UI.Message("Looking good!")
  39.             form:Refresh()
  40.         end
  41.     end
  42.  
  43.     if option == 2 then
  44.         if Game.player:GetMoney() < 400 then
  45.             UI.Message("You do not have enough money.")
  46.         else
  47.             Game.player:SetPrimaryColour(Engine.rand:Number(), Engine.rand:Number(), Engine.rand:Number())
  48.             Game.player:SetSecondaryColour(Engine.rand:Number(), Engine.rand:Number(), Engine.rand:Number())
  49.             Game.player:AddMoney(-400)
  50.             UI.Message("Nice!")
  51.             form:Refresh()
  52.         end
  53.     end
  54.  
  55.     if option == 3 then
  56.         if Game.player:GetMoney() < 500 then
  57.             UI.Message("You do not have enough money.")
  58.         else
  59.             Game.player:SetLabel(
  60.                 string.format("%c%c-%04d", Engine.rand:Integer(65,65+26), Engine.rand:Integer(65,65+26), Engine.rand:Integer(0,9999))
  61.             )
  62.             Game.player:AddMoney(-500)
  63.             UI.Message("Fantastic!")
  64.             form:Refresh()
  65.         end
  66.     end
  67. end
  68.  
  69. local onDelete = function (ref)
  70.     ads[ref] = nil
  71. end
  72.  
  73. local onCreateBB = function (station)
  74.     local rand = Rand:New(station.seed)
  75.  
  76.     local n = Engine.rand:Integer(1, #shop_flavours)
  77.  
  78.     local isfemale = rand:Integer(0,1);
  79.  
  80.     local ad = {
  81.         title    = string.interp(shop_flavours[n], { surname = NameGen.Surname(rand), name = NameGen.FullName(isfemale, rand) }),
  82.         station  = station,
  83.         isfemale = isfemale,
  84.         faceseed = rand:Integer(),
  85.     }
  86.  
  87.     local ref = station:AddAdvert(ad.title, onChat, onDelete)
  88.     ads[ref] = ad;
  89. end
  90.  
  91. local serialize = function ()
  92.     return { ads = ads }
  93. end
  94.  
  95. local unserialize = function (data)
  96.     for k,ad in pairs(data.ads) do
  97.         local ref = ad.station:AddAdvert(ad.title, onChat, onDelete)
  98.         ads[ref] = ad
  99.     end
  100. end
  101.  
  102. EventQueue.onCreateBB:Connect(onCreateBB)
  103.  
  104. Serializer:Register("BodyShop", serialize, unserialize)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement