-- In this file we define functions that serves outgame character creation ------------------------------------------------------------------------------------------------------------ -- create the game namespace without reseting if already created in an other file. if (outgame == nil) then outgame = {} end ------------------------------------------------------------------------------------------------------------ -- Name generator. --nb noms: -- matis: male 621 - female 621 - FirstName 621 -- fyros: given name 14269, FirstName 841 -- zorai: given name one 318, given name two 644, FirstName 1287 -- tryker: given name 4500, FirstName 4335 -- Fyros function outgame:getFyrosFirstName() local nbFyrosFirstNames = #fyrosFirstNames return fyrosFirstNames[math.random(nbFyrosFirstNames)] end function outgame:getFyrosLastName() local nbFyrosLastNames = #fyrosLastNames return fyrosLastNames[math.random(nbFyrosLastNames)] end -- Matis function outgame:getMatisFirstName(sex) -- 1 = male, 2 = female local dbNameSex = getDbProp("UI:TEMP:NAME_SEX") if sex ~= nil then dbNameSex = sex end local FirstName = "" if tonumber(dbNameSex) == 1 then local nbMatisMaleFirstNames = #matisMaleFirstNames FirstName = matisMaleFirstNames[math.random(nbMatisMaleFirstNames)] else local nbMatisFemaleFirstNames = #matisFemaleFirstNames FirstName = matisFemaleFirstNames[math.random(nbMatisFemaleFirstNames)] end return FirstName end function outgame:getMatisLastName() local nbMatisLastNames = #matisLastNames return matisLastNames[math.random(nbMatisLastNames)] end -- Tryker function outgame:getTrykerFirstName() local nbTrykerFirstNames = #trykerFirstNames return trykerFirstNames[math.random(nbTrykerFirstNames)] end function outgame:getTrykerLastName() local nbTrykerLastNames = #trykerLastNames return trykerLastNames[math.random(nbTrykerLastNames)] end -- Zoraļ function outgame:getZoraiFirstName() local nbFirstNamesOne = #zoraiFirstNamesOne local FirstNameOne = zoraiFirstNamesOne[math.random(nbFirstNamesOne)] local nbFirstNamesTwo = #zoraiFirstNamesTwo local FirstNameTwo = zoraiFirstNamesTwo[math.random(nbFirstNamesTwo)] return FirstNameOne .. "-" .. FirstNameTwo end function outgame:getZoraiLastName() local nbLastNames = #zoraiLastNames return zoraiLastNames[math.random(nbLastNames)] end function outgame:procGenerateName() local uiNameFull = getUI("ui:outgame:appear_name:name_full") local uiGenText = getUI("ui:outgame:appear_name:eb") local dbNameRace = getDbProp("UI:TEMP:NAME_RACE") local dbNameSubRaceFirstName = getDbProp("UI:TEMP:NAME_SUB_RACE_FIRST_NAME") local dbNameSubRaceLastName = getDbProp("UI:TEMP:NAME_SUB_RACE_LAST_NAME") local nameResult = "" local fullnameResult = "" -- Look at outgame:procUpdateNameRaceLabel() for the "race" list. -- fy ma try zo --> local firstName = "test2" local lastName = "test" -- Fyros and Matis are using "first name, last name" order -- Trykers and Zoraļs are using "last name, first name" order if tonumber(dbNameRace) == 1 then -- Fyros firstName = self:getFyrosFirstName() lastName = self:getFyrosLastName() fullnameResult = firstName .. " " .. lastName elseif tonumber(dbNameRace) == 2 then -- Matis firstName = self:getMatisFirstName() lastName = self:getMatisLastName() fullnameResult = firstName .. " " .. lastName elseif tonumber(dbNameRace) == 3 then -- Tryker firstName = self:getTrykerFirstName() lastName = self:getTrykerLastName() fullnameResult = lastName .. " " .. firstName elseif tonumber(dbNameRace) == 4 then -- Zorai firstName = self:getZoraiFirstName() lastName = self:getZoraiLastName() fullnameResult = lastName .. " " .. firstName elseif tonumber(dbNameRace) == 5 then -- Maraudeurs -- firstName if tonumber(dbNameSubRaceFirstName) == 1 then -- Fyros firstName = self:getFyrosFirstName() elseif tonumber(dbNameSubRaceFirstName) == 2 then -- Matis M firstName = self:getMatisFirstName(1) elseif tonumber(dbNameSubRaceFirstName) == 3 then -- Matis F firstName = self:getMatisFirstName(2) elseif tonumber(dbNameSubRaceFirstName) == 4 then -- Tryker firstName = self:getTrykerFirstName() elseif tonumber(dbNameSubRaceFirstName) == 5 then -- Zorai firstName = self:getZoraiFirstName() end -- lastName if tonumber(dbNameSubRaceLastName) == 1 then -- Fyros lastName = self:getFyrosLastName() elseif tonumber(dbNameSubRaceLastName) == 2 then -- Matis lastName = self:getMatisLastName() elseif tonumber(dbNameSubRaceLastName) == 3 then -- Tryker lastName = self:getTrykerLastName() elseif tonumber(dbNameSubRaceLastName) == 4 then -- Zorai lastName = self:getZoraiLastName() end fullnameResult = firstName .. " " .. lastName end -- always use first name for character name nameResult = firstName uiNameFull.hardtext = fullnameResult nameResult = string.gsub(nameResult, "'", "") nameResult = string.gsub(nameResult, " ", "") nameResult = string.gsub(nameResult, "-", "") nameResult = string.lower(nameResult) nameResult = nameResult:gsub("^%l", string.upper) uiGenText.input_string = nameResult end -- Name sex slider update. function outgame:procUpdateNameSexLabel() local nameSexType = { "uiCP_Sex_Male", "uiCP_Sex_Female" } local uiNameSexText = getUI("ui:outgame:appear_name:name_sex_slider:name_sex") local uiNameSex = getDbProp("UI:TEMP:NAME_SEX") tempstr = tostring(i18n.get(nameSexType[tonumber(uiNameSex)])) tempstr = string.lower(tempstr) tempstr = (tempstr:gsub("^%l", string.upper)) uiNameSexText.hardtext = tempstr end -- Name race slider update. function outgame:procUpdateNameRaceLabel() local nameRaceType = { "Fyros", "Matis", "Tryker", "Zoraļ", "uiCP_Maraudeur" } local uiNameRaceText = getUI("ui:outgame:appear_name:name_race_slider:name_race") local dbNameRace = getDbProp("UI:TEMP:NAME_RACE") local uiNameSexSlider = getUI("ui:outgame:appear_name:name_sex_slider") local uiNameSubRaceFirstNameSlider = getUI("ui:outgame:appear_name:name_sub_race_first_name_slider") local uiNameSubRaceLastNameSlider = getUI("ui:outgame:appear_name:name_sub_race_last_name_slider") local uiNameGenerate = getUI("ui:outgame:appear_name:generate") -- Show/Hide sex slider uiNameGenerate.y = "-50" if tonumber(dbNameRace) == 2 then uiNameSexSlider.active = true uiNameGenerate.y = "-65" else uiNameSexSlider.active = false end -- Show/Hide sub race slider if tonumber(dbNameRace) == 5 then uiNameSubRaceFirstNameSlider.active = true uiNameSubRaceLastNameSlider.active = true uiNameGenerate.y = "-105" else uiNameSubRaceFirstNameSlider.active = false uiNameSubRaceLastNameSlider.active = false end uiNameRaceText.hardtext = tostring(nameRaceType[tonumber(dbNameRace)]) end local matisF = "Matis " .. (string.lower(tostring(i18n.get("uiCP_Sex_Female")) )):gsub("^%l", string.upper) local matisM = "Matis " .. (string.lower(tostring(i18n.get("uiCP_Sex_Male")) )):gsub("^%l", string.upper) function outgame:procUpdateNameSubRaceFirstNameLabel() local nameSubRaceFirstNameType = { "Fyros", matisM, matisF, "Tryker", "Zoraļ" } local uiNameSubRaceFirstNameText = getUI("ui:outgame:appear_name:name_sub_race_first_name_slider:name_race") local dbNameSubRaceFirstName = getDbProp("UI:TEMP:NAME_SUB_RACE_FIRST_NAME") uiNameSubRaceFirstNameText.hardtext= tostring(nameSubRaceFirstNameType[tonumber(dbNameSubRaceFirstName)]) end function outgame:procUpdateNameSubRaceLastNameLabel() local nameSubRaceLastNameType = { "Fyros", "Matis", "Tryker", "Zoraļ" } local uiNameSubRaceLastNameText = getUI("ui:outgame:appear_name:name_sub_race_last_name_slider:name_race") local dbNameSubRaceLastName = getDbProp("UI:TEMP:NAME_SUB_RACE_LAST_NAME") uiNameSubRaceLastNameText.hardtext= tostring(nameSubRaceLastNameType[tonumber(dbNameSubRaceLastName)]) end ------------------------------------------------------------------------------------------------------------ -- called to construct icons function outgame:activePackElement(id, icon) local uiDesc = getUI("ui:outgame:appear:job_options:options:desc") uiDesc['ico' .. tostring(id)].active = true uiDesc['ico' .. tostring(id)].texture = icon uiDesc['ico' .. tostring(id) .. 'txt'].active = true end ------------------------------------------------------------------------------------------------------------ -- called to construct pack text function outgame:setPackJobText(id, spec) -- Set Pack content local uiPackText = getUI("ui:outgame:appear:job_options:options:desc:pack_" .. id) uiPackText.hardtext= "uiCP_Job_" .. id .. tostring(spec) -- Set specialization text local uiResText = getUI("ui:outgame:appear:job_options:options:result:res") if(spec==2) then uiResText.hardtext= "uiCP_Res_" .. id end end ------------------------------------------------------------------------------------------------------------ -- called to construct pack function outgame:buildActionPack() local uiDesc = getUI("ui:outgame:appear:job_options:options:desc") if (uiDesc==nil) then return end -- Reset All for i = 1,20 do uiDesc['ico' .. tostring(i)].active = false uiDesc['ico' .. tostring(i) .. 'txt'].active = false end -- Build Default Combat self:activePackElement(1, 'f1.tga') -- Dagger self:activePackElement(2, 'f2.tga') -- Accurate Attack -- Build Default Magic self:activePackElement(6, 'm2.tga') -- Gloves self:activePackElement(7, 'm1.tga') -- Acid -- Build Default Forage self:activePackElement(11, 'g1.tga') -- Forage Tool self:activePackElement(12, 'g2.tga') -- Basic Extract -- Build Default Craft self:activePackElement(16, 'c2.tga') -- Craft Tool self:activePackElement(17, 'c1.tga') -- 50 raw mat self:activePackElement(18, 'c3.tga') -- Craft Root self:activePackElement(19, 'c4.tga') -- Boots Plan -- Build Option if (getDbProp('UI:TEMP:JOB_FIGHT') == 2) then self:activePackElement(3, 'f3.tga') -- Increase damage elseif (getDbProp('UI:TEMP:JOB_MAGIC') == 2) then self:activePackElement(8, 'm5.tga') -- Fear elseif (getDbProp('UI:TEMP:JOB_FORAGE') == 2) then self:activePackElement(13, 'g3.tga') -- Basic Prospection elseif (getDbProp('UI:TEMP:JOB_CRAFT') == 2) then self:activePackElement(20, 'c6.tga') -- Gloves Plan self:activePackElement(17, 'c5.tga') -- Replace 17, with 100x RawMat end -- Reset Text self:setPackJobText('F', 1) self:setPackJobText('M', 1) self:setPackJobText('G', 1) self:setPackJobText('C', 1) -- Set correct text for specalized version if (getDbProp('UI:TEMP:JOB_FIGHT') == 2) then self:setPackJobText('F', 2) elseif (getDbProp('UI:TEMP:JOB_MAGIC') == 2) then self:setPackJobText('M', 2) elseif (getDbProp('UI:TEMP:JOB_FORAGE') == 2) then self:setPackJobText('G', 2) elseif (getDbProp('UI:TEMP:JOB_CRAFT') == 2) then self:setPackJobText('C', 2) end end ------------------------------------------------------------------------------------------------------------ ------------------- -- BG DOWNLOADER -- ------------------- --function outgame:getProgressGroup() -- --debugInfo("*** 1 ***") -- local grp = getUI("ui:outgame:charsel:bgd_progress") -- --debugInfo(tostring(grp)) -- return grp --end -- --function outgame:setProgressText(ucstr, color, progress, ellipsis) -- --debugInfo("*** 2 ***") -- local text = self:getProgressGroup():find("text") -- local ellipsisTxt = self:getProgressGroup():find("ellipsis") -- text.color = color -- text.uc_hardtext = ucstr -- if ellipsis then -- ellipsisTxt.hardtext = ellipsis -- else -- ellipsisTxt.hardtext = "" -- end -- ellipsisTxt.color = color -- local progressCtrl = self:getProgressGroup():find("progress") -- progressCtrl.range = 100 -- progressCtrl.value = progress * 100 -- progressCtrl.active = true --end -- -- --local progress progressSymbol = { ".", "..", "..." } -- ---- set patching progression (from 0 to 1) --function outgame:setPatchProgress(progress) -- --debugInfo("*** 3 ***") -- local progressPercentText = string.format("%d%%", 100 * progress) -- local progressPostfix = math.fmod(os.time(), 3) -- --debugInfo("Patch in progress : " .. tostring(progress)) -- local progressDate = nltime.getLocalTime() / 500 -- local colValue = math.floor(230 + 24 * math.sin(progressDate)) -- local color = string.format("%d %d %d %d", colValue, colValue, colValue, 255) -- self:setProgressText(concatUCString(i18n.get("uiBGD_Progress"), ucstring(progressPercentText)), color, progress, progressSymbol[progressPostfix + 1]) --end -- --function outgame:setPatchSuccess() -- --debugInfo("*** 4 ***") -- --debugInfo("Patch up to date") -- self:setProgressText(i18n.get("uiBGD_PatchUpToDate"), "0 255 0 255", 1) --end -- -- --function outgame:setPatchError() -- --debugInfo("*** 5 ***") -- --debugInfo("Patch error") -- self:setProgressText(i18n.get("uiBGD_PatchError"), "255 0 0 255", 0) --end -- --function outgame:setNoPatch() -- --self:getProgressGroup().active = false --end ------------------------------------------------------------------------------------------------------------ ---------------- --LAUNCH GAME -- ---------------- function outgame:launchGame() if not isPlayerSlotNewbieLand(getPlayerSelectedSlot()) then if not isFullyPatched() then messageBoxWithHelp(i18n.get("uiBGD_MainlandCharFullPatchNeeded"), "ui:outgame") return end end runAH(getUICaller(), "proc", "proc_charsel_play") end