Advertisement
Guest User

Code de base

a guest
Dec 30th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 22.31 KB | None | 0 0
  1. local gui = {}
  2. local curskin = 1
  3. local dummyPed = nil
  4. local languageselected = 1
  5. local selectedMonth1 = "January"
  6. local scrDay = 1
  7.  
  8. function newCharacter_init()
  9.     guiSetInputEnabled(true)
  10.     setCameraInterior(14)
  11.     setCameraMatrix(254.7190,  -41.1370,  1002, 256.7190,  -41.1370,  1002 )
  12.     dummyPed = createPed(217, 258,  -42,  1002)
  13.     setElementInterior(dummyPed, 14)
  14.     setElementInterior(getLocalPlayer(), 14)
  15.     setPedRotation(dummyPed, 87)
  16.     setElementDimension(dummyPed, getElementDimension(getLocalPlayer()))
  17.     fadeCamera ( true , 1, 0,0,0 )
  18.     local screenX, screenY = guiGetScreenSize()
  19.  
  20.     gui["_root"] = guiCreateStaticImage(10, screenY/2-225, 255, 475, ":resources/window_body.png", false)
  21.     --guiWindowSetSizable(gui["_root"], false)
  22.  
  23.     gui["lblCharName"] = guiCreateLabel(10, 25, 91, 16, "Name:", false, gui["_root"])
  24.     guiLabelSetHorizontalAlign(gui["lblCharName"], "left", false)
  25.     guiLabelSetVerticalAlign(gui["lblCharName"], "center")
  26.  
  27.     gui["txtCharName"] = guiCreateEdit(60, 24, 180, 22, "", false, gui["_root"])
  28.     guiEditSetMaxLength(gui["txtCharName"], 32767)
  29.  
  30.     gui["lblCharNameExplanation"] = guiCreateLabel(10, 40, 240, 80,"This needs to be in the following format: \n     Firstname Lastname\nFor example: Taylor Jackson.\nYou are not allowed to use famous names.", false, gui["_root"])
  31.     guiLabelSetHorizontalAlign(gui["lblCharNameExplanation"], "left", false)
  32.     guiLabelSetVerticalAlign(gui["lblCharNameExplanation"], "center")
  33.  
  34. --[[    gui["lblCharDesc"] = guiCreateLabel(10, 125, 230, 100, "When you first spawn type /editlook and describe your character in more detail.", false, gui["_root"])
  35.     guiLabelSetHorizontalAlign(gui["lblCharDesc"], "left", false)
  36.     guiLabelSetVerticalAlign(gui["lblCharDesc"], "center")]]--
  37.     --[[
  38.     gui["memCharDesc"] = guiCreateMemo(10, 145, 231,100, "", false, gui["_root"])
  39.  
  40.     gui["lblCharDescExplanation"] = guiCreateLabel(10, 245, 231, 61, "Fill in an description of your character, for \nexample how your character looks and\nother special remarks. There is a minimum\nof 50 characters.", false, gui["_root"])
  41.     guiLabelSetHorizontalAlign(gui["lblCharDescExplanation"], "left", false)
  42.     guiLabelSetVerticalAlign(gui["lblCharDescExplanation"], "center")]]
  43.  
  44.     gui["lblGender"] = guiCreateLabel(10, 160, 46, 13, "Gender:", false, gui["_root"])
  45.     guiLabelSetHorizontalAlign(gui["lblGender"], "left", false)
  46.     guiLabelSetVerticalAlign(gui["lblGender"], "center")
  47.     gui["rbMale"] = guiCreateRadioButton(90, 160, 51, 13, "Male", false, gui["_root"])
  48.     gui["rbFemale"] = guiCreateRadioButton(150, 160, 82, 13, "Female", false, gui["_root"])
  49.     guiRadioButtonSetSelected ( gui["rbMale"], true)
  50.     addEventHandler("onClientGUIClick", gui["rbMale"], newCharacter_updateGender, false)
  51.     addEventHandler("onClientGUIClick", gui["rbFemale"], newCharacter_updateGender, false)
  52.  
  53.     gui["lblSkin"] = guiCreateLabel(10, 180, 80, 16, "Skin:", false, gui["_root"])
  54.     guiLabelSetHorizontalAlign(gui["lblSkin"], "left", false)
  55.     guiLabelSetVerticalAlign(gui["lblSkin"], "center")
  56.  
  57.     gui["btnPrevSkin"] = guiCreateButton(50, 180, 80, 16, "Previous", false, gui["_root"])
  58.     addEventHandler("onClientGUIClick", gui["btnPrevSkin"], newCharacter_updateGender, false)
  59.     gui["btnNextSkin"] = guiCreateButton(150, 180, 80, 16, "Next", false, gui["_root"])
  60.     addEventHandler("onClientGUIClick", gui["btnNextSkin"], newCharacter_updateGender, false)
  61.  
  62.     gui["lblRace"] = guiCreateLabel(10, 140, 111, 16, "Race:", false, gui["_root"])
  63.     guiLabelSetHorizontalAlign(gui["lblRace"], "left", false)
  64.     guiLabelSetVerticalAlign(gui["lblRace"], "center")
  65.  
  66.     gui["chkBlack"] =  guiCreateCheckBox ( 60, 140, 55, 16, "Black", true, false, gui["_root"] )
  67.     addEventHandler("onClientGUIClick", gui["chkBlack"] , newCharacter_raceFix, false)
  68.     gui["chkWhite"] =  guiCreateCheckBox ( 120, 140, 55, 16, "White", false, false, gui["_root"] )
  69.     addEventHandler("onClientGUIClick", gui["chkWhite"] , newCharacter_raceFix, false)
  70.     gui["chkAsian"] =  guiCreateCheckBox ( 180, 140, 55, 16, "Asian", false, false, gui["_root"] )
  71.     addEventHandler("onClientGUIClick", gui["chkAsian"] , newCharacter_raceFix, false)
  72.  
  73.     gui["lblHeight"] = guiCreateLabel(10, 200, 111, 16, "Height", false, gui["_root"])
  74.     guiLabelSetHorizontalAlign(gui["lblHeight"], "left", false)
  75.     guiLabelSetVerticalAlign(gui["lblHeight"], "center")
  76.  
  77.     gui["scrHeight"] =  guiCreateScrollBar ( 110, 200, 130, 16, true, false, gui["_root"])
  78.     addEventHandler("onClientGUIScroll", gui["scrHeight"], newCharacter_updateScrollBars, false)
  79.     guiSetProperty(gui["scrHeight"], "StepSize", "0.02")
  80.  
  81.     gui["lblWeight"] = guiCreateLabel(10, 220, 111, 16, "Weight", false, gui["_root"])
  82.     guiLabelSetHorizontalAlign(gui["lblWeight"], "left", false)
  83.     guiLabelSetVerticalAlign(gui["lblWeight"], "center")
  84.  
  85.     gui["scrWeight"] =  guiCreateScrollBar ( 110, 220, 130, 16, true, false, gui["_root"])
  86.     addEventHandler("onClientGUIScroll", gui["scrWeight"], newCharacter_updateScrollBars, false)
  87.     guiSetProperty(gui["scrWeight"], "StepSize", "0.01")
  88.  
  89.     gui["lblAge"] = guiCreateLabel(10, 240, 111, 16, "Age", false, gui["_root"])
  90.     guiLabelSetHorizontalAlign(gui["lblAge"], "left", false)
  91.     guiLabelSetVerticalAlign(gui["lblAge"], "center")
  92.  
  93.     gui["scrAge"] =  guiCreateScrollBar ( 110, 240, 130, 16, true, false, gui["_root"])
  94.     addEventHandler("onClientGUIScroll", gui["scrAge"], newCharacter_updateScrollBars, false)
  95.     guiSetProperty(gui["scrAge"], "StepSize", "0.0120")
  96.  
  97.     gui["lblDay"] = guiCreateLabel(10, 282, 111, 16, "Day of birth:", false, gui["_root"])
  98.     guiLabelSetHorizontalAlign(gui["lblDay"], "left", false)
  99.     guiLabelSetVerticalAlign(gui["lblDay"], "center")
  100.  
  101.     gui["scrDay"] =  guiCreateScrollBar ( 110, 285, 130, 16, true, false, gui["_root"])
  102.     addEventHandler("onClientGUIScroll", gui["scrDay"], newCharacter_updateScrollBars, false)
  103.     guiSetProperty(gui["scrDay"], "StepSize", "0.0125")
  104.  
  105.     gui["lblMonth"] = guiCreateLabel(10, 260, 111, 16, "Month of birth", false, gui["_root"])
  106.     guiLabelSetHorizontalAlign(gui["lblDay"], "left", false)
  107.     guiLabelSetVerticalAlign(gui["lblDay"], "center")
  108.  
  109.  
  110.     gui["drpMonth"] =  guiCreateComboBox ( 110, 260, 130, 16, "January", false, gui["_root"])
  111.     guiComboBoxAdjustHeight(gui["drpMonth"], 15)
  112.     guiComboBoxAddItem(gui["drpMonth"], "January")
  113.     guiComboBoxAddItem(gui["drpMonth"], "February")
  114.     guiComboBoxAddItem(gui["drpMonth"], "March")
  115.     guiComboBoxAddItem(gui["drpMonth"], "April")
  116.     guiComboBoxAddItem(gui["drpMonth"], "May")
  117.     guiComboBoxAddItem(gui["drpMonth"], "June")
  118.     guiComboBoxAddItem(gui["drpMonth"], "July")
  119.     guiComboBoxAddItem(gui["drpMonth"], "August")
  120.     guiComboBoxAddItem(gui["drpMonth"], "September")
  121.     guiComboBoxAddItem(gui["drpMonth"], "October")
  122.     guiComboBoxAddItem(gui["drpMonth"], "November")
  123.     guiComboBoxAddItem(gui["drpMonth"], "December")
  124.  
  125.     addEventHandler ( "onClientGUIComboBoxAccepted", root,
  126.         function ( comboBox )
  127.             if ( comboBox == gui["drpMonth"] ) then
  128.                 local item = guiComboBoxGetSelected ( gui["drpMonth"] )
  129.                 selectedMonth1 = tostring ( guiComboBoxGetItemText ( gui["drpMonth"] , item ) )
  130.             end
  131.         end, true)
  132.  
  133.  
  134.  
  135.     gui["lblLanguage"] = guiCreateLabel(10, 330, 111, 16, "Language:", false, gui["_root"])
  136.     guiLabelSetHorizontalAlign(gui["lblLanguage"], "left", false)
  137.     guiLabelSetVerticalAlign(gui["lblLanguage"], "center")
  138.  
  139.     gui["btnLanguagePrev"] = guiCreateButton(110, 330, 16, 16, "<", false, gui["_root"])
  140.     gui["lblLanguageDisplay"] = guiCreateLabel(126, 330, 98, 16, "English", false, gui["_root"])
  141.     guiLabelSetHorizontalAlign(gui["lblLanguageDisplay"], "center", true)
  142.     guiLabelSetVerticalAlign(gui["lblLanguageDisplay"], "center", true)
  143.  
  144.     gui["btnLanguageNext"] = guiCreateButton(224, 330, 16, 16, ">", false, gui["_root"])
  145.     addEventHandler("onClientGUIClick", gui["btnLanguagePrev"] , newCharacter_updateLanguage, false)
  146.     addEventHandler("onClientGUIClick", gui["btnLanguageNext"] , newCharacter_updateLanguage, false)
  147.  
  148.     gui["btnCancel"] = guiCreateButton(10, 370+5, 231, 41, "Cancel", false, gui["_root"])
  149.     addEventHandler("onClientGUIClick", gui["btnCancel"], newCharacter_cancel, false)
  150.  
  151.     gui["btnCreateChar"] = guiCreateButton(10,410+10, 231, 41, "Create", false, gui["_root"])
  152.     addEventHandler("onClientGUIClick", gui["btnCreateChar"], newCharacter_attemptCreateCharacter, false)
  153.     newCharacter_changeSkin()
  154.     newCharacter_updateScrollBars()
  155. end
  156.  
  157. function newCharacter_raceFix()
  158.     guiCheckBoxSetSelected ( gui["chkAsian"], false )
  159.     guiCheckBoxSetSelected ( gui["chkWhite"], false )
  160.     guiCheckBoxSetSelected ( gui["chkBlack"], false )
  161.     if (source == gui["chkBlack"]) then
  162.         guiCheckBoxSetSelected ( gui["chkBlack"], true )
  163.     elseif (source == gui["chkWhite"]) then
  164.         guiCheckBoxSetSelected ( gui["chkWhite"], true )
  165.     elseif (source == gui["chkAsian"]) then
  166.         guiCheckBoxSetSelected ( gui["chkAsian"], true )
  167.     end
  168.  
  169.     curskin = 1
  170.     newCharacter_changeSkin(0)
  171. end
  172.  
  173. function newCharacter_updateGender()
  174.     local diff = 0
  175.     if (source == gui["btnPrevSkin"]) then
  176.         diff = -1
  177.     elseif (source == gui["btnNextSkin"]) then
  178.         diff = 1
  179.     else
  180.         curskin = 1
  181.     end
  182.     newCharacter_changeSkin(diff)
  183. end
  184.  
  185. function newCharacter_updateLanguage()
  186.  
  187.     if source == gui["btnLanguagePrev"] then
  188.         if languageselected == 1 then
  189.             languageselected = call( getResourceFromName( "language-system" ), "getLanguageCount" )
  190.         else
  191.             languageselected = languageselected - 1
  192.         end
  193.     elseif source == gui["btnLanguageNext"] then
  194.         if languageselected == call( getResourceFromName( "language-system" ), "getLanguageCount" ) then
  195.             languageselected = 1
  196.         else
  197.             languageselected = languageselected + 1
  198.         end
  199.     end
  200.  
  201.     guiSetText(gui["lblLanguageDisplay"], tostring(call( getResourceFromName( "language-system" ), "getLanguageName", languageselected )))
  202. end
  203.  
  204. function newCharacter_updateScrollBars()
  205.     local scrollHeight = guiScrollBarGetScrollPosition(gui["scrHeight"])
  206.     scrollHeight = math.floor((scrollHeight / 2) + 150)
  207.  
  208.     local scrWeight = guiScrollBarGetScrollPosition(gui["scrWeight"])
  209.     scrWeight = math.floor(scrWeight + 50)
  210.  
  211.     local scrAge = guiScrollBarGetScrollPosition(gui["scrAge"])
  212.     scrAge = math.floor( (scrAge * 0.8 ) + 16 )
  213.  
  214.     --local scrollHeight = tonumber(guiGetProperty(gui["scrHeight"], "ScrollPosition")) * 100
  215.     --scrollHeight = math.floor((scrollHeight / 2) + 150)
  216.     guiSetText(gui["lblHeight"], "Height: "..scrollHeight.." CM")
  217.  
  218.     --local scrWeight = tonumber(guiGetProperty(gui["scrWeight"], "ScrollPosition")) * 310
  219.     --scrWeight = math.floor(scrWeight + 40)
  220.     guiSetText(gui["lblWeight"], "Weight: "..scrWeight.." LB")
  221.  
  222.     --local scrAge = tonumber(guiGetProperty(gui["scrAge"], "ScrollPosition")) * 100
  223.     --scrAge = math.floor( (scrAge * 0.8 ) + 16 )
  224.     guiSetText(gui["lblAge"], "Age: "..scrAge.." years old")
  225.  
  226.     local year = getBirthday(tonumber(scrAge))
  227.     selectedMonth = monthToNumber(selectedMonth1)
  228.     --outputDebugString(selectedMonth)
  229.     local dayCap = daysInMonth(selectedMonth, year) or 31
  230.  
  231.     scrDay = (tonumber(guiScrollBarGetScrollPosition(gui["scrDay"]))+1)/100
  232.     scrDay = math.floor( scrDay*dayCap )
  233.     if scrDay == 0 then
  234.         scrDay = 1
  235.     end
  236.  
  237.     guiSetText(gui["lblDay"], "Day of birth: "..(scrDay or "1"))
  238. end
  239.  
  240. function newCharacter_changeSkin(diff)
  241.     local array = newCharacters_getSkinArray()
  242.     local skin = 0
  243.     if (diff ~= nil) then
  244.         curskin = curskin + diff
  245.     end
  246.  
  247.     if (curskin > #array or curskin < 1) then
  248.         curskin = 1
  249.         skin = array[1]
  250.     else
  251.         curskin = curskin
  252.         skin = array[curskin]
  253.     end
  254.  
  255.     if skin ~= nil then
  256.         setElementModel(dummyPed, tonumber(skin))
  257.     end
  258. end
  259.  
  260. function newCharacters_getSkinArray()
  261.     local array = { }
  262.     if (guiCheckBoxGetSelected( gui["chkBlack"] )) then -- BLACK
  263.         if (guiRadioButtonGetSelected( gui["rbMale"] )) then -- BLACK MALE
  264.             array = blackMales
  265.         elseif (guiRadioButtonGetSelected( gui["rbFemale"] )) then -- BLACK FEMALE
  266.             array = blackFemales
  267.         else
  268.             outputChatBox("Select a gender first!", 0, 255, 0)
  269.         end
  270.     elseif ( guiCheckBoxGetSelected( gui["chkWhite"] ) ) then -- WHITE
  271.         if ( guiRadioButtonGetSelected( gui["rbMale"] ) ) then -- WHITE MALE
  272.             array = whiteMales
  273.         elseif ( guiRadioButtonGetSelected( gui["rbFemale"] ) ) then -- WHITE FEMALE
  274.             array = whiteFemales
  275.         else
  276.             outputChatBox("Select a gender first!", 0, 255, 0)
  277.         end
  278.     elseif ( guiCheckBoxGetSelected( gui["chkAsian"] ) ) then -- ASIAN
  279.         if ( guiRadioButtonGetSelected( gui["rbMale"] ) ) then -- ASIAN MALE
  280.             array = asianMales
  281.         elseif ( guiRadioButtonGetSelected( gui["rbFemale"] ) ) then -- ASIAN FEMALE
  282.             array = asianFemales
  283.         else
  284.             outputChatBox("Select a gender first!", 0, 255, 0)
  285.         end
  286.     end
  287.     return array
  288. end
  289.  
  290. function newCharacter_cancel(hideSelection)
  291.     guiSetInputEnabled(false)
  292.     destroyElement(dummyPed)
  293.     destroyElement(gui["_root"])
  294.     gui = {}
  295.     curskin = 1
  296.     dummyPed = nil
  297.     languageselected = 1
  298.     if hideSelection ~= true then
  299.         Characters_showSelection()
  300.     end
  301.     clearChat()
  302. end
  303.  
  304. function newCharacter_attemptCreateCharacter()
  305.     local characterName = guiGetText(gui["txtCharName"])
  306.     local nameCheckPassed, nameCheckError = checkValidCharacterName(characterName)
  307.     if not nameCheckPassed then
  308.         LoginScreen_showWarningMessage( "Error processing your character name:\n".. nameCheckError )
  309.         return
  310.     end
  311.     --[[
  312.     local characterDescription = guiGetText(gui["memCharDesc"])
  313.     if #characterDescription < 50 then
  314.         LoginScreen_showWarningMessage( "Error processing your character\ndescription: Not long enough." )
  315.         return
  316.     elseif #characterDescription > 128 then
  317.         LoginScreen_showWarningMessage( "Error processing your character\ndescription: Too long." )
  318.         return
  319.     end]]
  320.  
  321.     local race = 0
  322.     if (guiCheckBoxGetSelected(gui["chkBlack"])) then
  323.         race = 0
  324.     elseif (guiCheckBoxGetSelected(gui["chkWhite"])) then
  325.         race = 1
  326.     elseif (guiCheckBoxGetSelected(gui["chkAsian"])) then
  327.         race = 2
  328.     else
  329.         LoginScreen_showWarningMessage( "Error processing your character race:\nNone selected." )
  330.         return
  331.     end
  332.  
  333.     local gender = 0
  334.     if (guiRadioButtonGetSelected( gui["rbMale"] )) then
  335.         gender = 0
  336.     elseif (guiRadioButtonGetSelected( gui["rbFemale"] )) then
  337.         gender = 1
  338.     else
  339.         LoginScreen_showWarningMessage( "Error processing your character gender:\nNone selected." )
  340.         return
  341.     end
  342.  
  343.     local skin = getElementModel( dummyPed )
  344.     if not skin then
  345.         LoginScreen_showWarningMessage( "Error processing your character skin:\nNone selected." )
  346.         return
  347.     end
  348.  
  349.  
  350.     local scrollHeight = guiScrollBarGetScrollPosition(gui["scrHeight"])
  351.     scrollHeight = math.floor((scrollHeight / 2) + 150)
  352.  
  353.     local scrWeight = guiScrollBarGetScrollPosition(gui["scrWeight"])
  354.     scrWeight = math.floor(scrWeight + 50)
  355.  
  356.     local scrAge = guiScrollBarGetScrollPosition(gui["scrAge"])
  357.     scrAge = math.floor( (scrAge * 0.8 ) + 16 )
  358.  
  359.     if languageselected == nil then
  360.         LoginScreen_showWarningMessage( "Error processing your character language:\nNone selected." )
  361.         return
  362.     end
  363.     guiSetEnabled(gui["btnCancel"], false)
  364.     guiSetEnabled(gui["btnCreateChar"], false)
  365.     guiSetEnabled(gui["_root"], false)
  366.     fadeCamera(false, 1)
  367.     setTimer(function ()
  368.         selectStartPointGUI(characterName, characterDescription, race, gender, skin, scrollHeight, scrWeight, scrAge, languageselected, selectedMonth, scrDay) --This is the correct place. /MAXIME
  369.     end, 1000, 1)
  370. end
  371.  
  372. function newCharacter_response(statusID, statusSubID)
  373.     if (statusID == 1) then
  374.         LoginScreen_showWarningMessage( "Oops, something went wrong. Try again\nor contact an administrator.\nError ACC"..tostring(statusSubID) )
  375.     elseif (statusID == 2) then
  376.         if (statusSubID == 1) then
  377.             LoginScreen_showWarningMessage( "This charactername is already in\nuse, sorry :(!" )
  378.         else
  379.             LoginScreen_showWarningMessage( "Oops, something went wrong. Try again\nor contact an administrator.\nError ACD"..tostring(statusSubID) )
  380.         end
  381.     elseif (statusID == 3) then
  382.         newCharacter_cancel(true)
  383.         triggerServerEvent("accounts:characters:spawn", getLocalPlayer(), statusSubID)
  384.         triggerServerEvent("updateCharacters", getLocalPlayer())
  385.         --selectStartPointGUI(statusSubID) --Turned out this not where we should have started LOL /Max
  386.         return
  387.     end
  388.  
  389.     guiSetEnabled(gui["btnCancel"], true)
  390.     guiSetEnabled(gui["btnCreateChar"], true)
  391.     guiSetEnabled(gui["_root"], true)
  392.  
  393. end
  394. addEventHandler("accounts:characters:new", getRootElement(), newCharacter_response)
  395.  
  396. local wSelectStartPoint = nil
  397. function selectStartPointGUI(characterName, characterDescription, race, gender, skin, scrollHeight, scrWeight, scrAge, languageselected, selectedMonth, scrDay )
  398.     closeSelectStartPoint() -- Make sure the GUI won't get duplicated and stuck on client's screen at any case.
  399.     showCursor(true)
  400.     guiSetInputEnabled(true)
  401.  
  402.     --config
  403.     local locations = {
  404.                     -- x,           y,                   z,             rot         int,    dim     Location Name
  405.         ["default"] = { 1922.9072265625, -1760.6982421875, 13.546875, 0,            0,      0,      "A bus stop next to IGS"},
  406.         ["bus"] = {1749.509765625, -1860.5087890625, 13.578649520874, 359.0744,     0,      0,      "Unity Bus Station"},
  407.         ["metro"] = {808.88671875, -1354.6513671875, -0.5078125, 139.5092,          0,      0,      "Metro Station"},
  408.         ["air"] = {1691.6455078125, -2334.001953125, 13.546875, 0.10711,            0,      0,      "Los Santos International Airport"},
  409.         ["boat"] = {2809.66015625, -2436.7236328125, 13.628322601318, 90.8995,      0,      0,      "Santa Maria Dock"},
  410.     }
  411.  
  412.     wSelectStartPoint = guiCreateWindow(0,0, 300, 250, "How do you arrive in Los Santos?", false)
  413.     exports.global:centerWindow(wSelectStartPoint)
  414.  
  415.     local busButton = guiCreateButton(40, 40, 100, 60, "Bus", false, wSelectStartPoint)
  416.     addEventHandler("onClientGUIClick", busButton, function ()
  417.         newCharacter_cancel(true)
  418.         triggerServerEvent("accounts:characters:new", getLocalPlayer(), characterName, characterDescription, race, gender, skin, scrollHeight, scrWeight, scrAge, languageselected, selectedMonth, scrDay, locations.bus)
  419.         closeSelectStartPoint()
  420.     end)
  421.  
  422.     local metroButton = guiCreateButton(40, 120, 100, 60, "Metro", false, wSelectStartPoint)
  423.     addEventHandler("onClientGUIClick", metroButton, function()
  424.         newCharacter_cancel(true)
  425.         triggerServerEvent("accounts:characters:new", getLocalPlayer(), characterName, characterDescription, race, gender, skin, scrollHeight, scrWeight, scrAge, languageselected, selectedMonth, scrDay, locations.metro)
  426.         closeSelectStartPoint()
  427.     end)
  428.  
  429.     local airButton = guiCreateButton(160, 40, 100, 60, "Airplane", false, wSelectStartPoint)
  430.     addEventHandler("onClientGUIClick", airButton, function()
  431.         newCharacter_cancel(true)
  432.         triggerServerEvent("accounts:characters:new", getLocalPlayer(), characterName, characterDescription, race, gender, skin, scrollHeight, scrWeight, scrAge, languageselected, selectedMonth, scrDay, locations.air)
  433.         closeSelectStartPoint()
  434.     end)
  435.  
  436.     local boatButton = guiCreateButton(160, 120, 100, 60, "Boat", false, wSelectStartPoint)
  437.     addEventHandler("onClientGUIClick", boatButton, function()
  438.         newCharacter_cancel(true)
  439.         triggerServerEvent("accounts:characters:new", getLocalPlayer(), characterName, characterDescription, race, gender, skin, scrollHeight, scrWeight, scrAge, languageselected, selectedMonth, scrDay, locations.boat)
  440.         closeSelectStartPoint()
  441.     end)
  442.  
  443.     --Temporarily disabled new character spawnpoint selector until we set up all the spawnpoint's shops and locations properly. /Maxime
  444.     triggerServerEvent("accounts:characters:new", getLocalPlayer(), characterName, characterDescription, race, gender, skin, scrollHeight, scrWeight, scrAge, languageselected, selectedMonth, scrDay, locations.default)
  445.     closeSelectStartPoint()
  446.     -- end of the disability
  447. end
  448.  
  449. function closeSelectStartPoint()
  450.     if wSelectStartPoint and isElement(wSelectStartPoint) then
  451.         destroyElement(wSelectStartPoint)
  452.         showCursor(false)
  453.         guiSetInputEnabled(false)
  454.     end
  455. end
  456.  
  457. function isThisYearLeap(year)
  458.      if (tonumber(year)%4) == 0 then
  459.           return true
  460.      else
  461.           return false
  462.      end
  463. end
  464.  
  465. function monthToNumber(monthName)
  466.     if not monthName then
  467.         return 1
  468.     else
  469.         if monthName == "January" then
  470.             return 1
  471.         elseif monthName == "February" then
  472.             return 2
  473.         elseif monthName == "March" then
  474.             return 3
  475.         elseif monthName == "April" then
  476.             return 4
  477.         elseif monthName == "May" then
  478.             return 5
  479.         elseif monthName == "June" then
  480.             return 6
  481.         elseif monthName == "July" then
  482.             return 7
  483.         elseif monthName == "August" then
  484.             return 8
  485.         elseif monthName == "September" then
  486.             return 9
  487.         elseif monthName == "October" then
  488.             return 10
  489.         elseif monthName == "November" then
  490.             return 11
  491.         elseif monthName == "December" then
  492.             return 12
  493.         else
  494.             return 1
  495.         end
  496.     end
  497. end
  498.  
  499. function monthNumberToName(monthNumber)
  500.     if not monthNumber or not tonumber(monthNumber) then
  501.         return "January"
  502.     else
  503.         monthNumber = tonumber(monthNumber)
  504.         if monthNumber == 1 then
  505.             return "January"
  506.         elseif monthNumber == 2 then
  507.             return "February"
  508.         elseif monthNumber == 3 then
  509.             return "March"
  510.         elseif monthNumber == 4 then
  511.             return "April"
  512.         elseif monthNumber == 5 then
  513.             return "May"
  514.         elseif monthNumber == 6 then
  515.             return "June"
  516.         elseif monthNumber == 7 then
  517.             return "July"
  518.         elseif monthNumber == 8 then
  519.             return "August"
  520.         elseif monthNumber == 9 then
  521.             return "September"
  522.         elseif monthNumber == 10 then
  523.             return "October"
  524.         elseif monthNumber == 11 then
  525.             return "November"
  526.         elseif monthNumber == 12 then
  527.             return "December"
  528.         else
  529.             return "January"
  530.         end
  531.     end
  532. end
  533.  
  534. function daysInMonth(month, year)
  535.     if not month or not year or not tonumber(month) or not tonumber(year) then
  536.         return 31
  537.     else
  538.         month = tonumber(month)
  539.         year = tonumber(year)
  540.     end
  541.  
  542.     if month == 1 then
  543.         return 31
  544.     elseif month == 2 then
  545.         if isThisYearLeap(year) then
  546.             return 29
  547.         else
  548.             return 28
  549.         end
  550.     elseif month == 3 then
  551.         return 31
  552.     elseif month == 4 then
  553.          return 30
  554.     elseif month == 5 then
  555.         return 31
  556.     elseif month == 6 then
  557.         return 30
  558.     elseif month == 7 then
  559.         return 31
  560.     elseif month == 8 then
  561.         return 31
  562.     elseif month == 9 then
  563.         return 30
  564.     elseif month == 10 then
  565.         return 31
  566.     elseif month == 11 then
  567.         return 30
  568.     elseif month == 12 then
  569.         return 31
  570.     else
  571.         return 31
  572.     end
  573. end
  574.  
  575. function getBirthday(age)
  576.     if not age or not tonumber(age) then
  577.         return 2015
  578.     else
  579.         age = tonumber(age)
  580.     end
  581.  
  582.     local time = getRealTime()
  583.     time.year = time.year + 1900
  584.     return (time.year - age)
  585. end
  586.  
  587. function getBetterDay(day)
  588.     if not day or not tonumber(day) then
  589.         return "1st"
  590.     else
  591.         day = tonumber(day)
  592.         if day == 1 or day == 21 or day == 31 then
  593.             return day.."st"
  594.         elseif day == 2 or day == 22 then
  595.             return day.."nd"
  596.         elseif day == 3 or day == 23 then
  597.             return day.."rd"
  598.         else
  599.             return day.."th"
  600.         end
  601.     end
  602. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement