Added: new rp jobs
This commit is contained in:
parent
fb1cd2d4a9
commit
2109dd2405
5 changed files with 365 additions and 19 deletions
|
@ -1313,6 +1313,8 @@ end
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------
|
||||||
function game:setCurrentMission(index)
|
function game:setCurrentMission(index)
|
||||||
|
mw = getMissionWindow()
|
||||||
|
mw.active = game.InGameDbInitialized
|
||||||
if index < self:getGroupMissionFirstIndex() then
|
if index < self:getGroupMissionFirstIndex() then
|
||||||
runAH(nil, "proc", "mission_proc_title|" .. tostring(index))
|
runAH(nil, "proc", "mission_proc_title|" .. tostring(index))
|
||||||
else
|
else
|
||||||
|
@ -1435,24 +1437,27 @@ end
|
||||||
--------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------
|
||||||
-- This is called when a new step is added to the current mission. If so, make sure that the step
|
-- This is called when a new step is added to the current mission. If so, make sure that the step
|
||||||
-- is visible in the listbox
|
-- is visible in the listbox
|
||||||
function game:onNewMissionStepAdded(stepIndex)
|
function game:onNewMissionStepAdded(stepIndex)
|
||||||
local missionWnd = getMissionWindow()
|
local missionWnd = getMissionWindow()
|
||||||
local missionIndex = getDbProp("UI:SAVE:MISSION_SELECTED")
|
local missionIndex = getDbProp("UI:SAVE:MISSION_SELECTED")
|
||||||
local dbPath
|
local dbPath
|
||||||
|
-- debugInfo("New Step")
|
||||||
if missionIndex < 15 then
|
if missionIndex < 15 then
|
||||||
dbPath = "SERVER:MISSIONS:" .. tostring(missionIndex) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT"
|
dbPath = "SERVER:MISSIONS:" .. tostring(missionIndex) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT"
|
||||||
else
|
else
|
||||||
dbPath = "SERVER:GROUP:MISSIONS:" .. tostring(missionIndex - 15) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT"
|
dbPath = "SERVER:GROUP:MISSIONS:" .. tostring(missionIndex - 15) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT"
|
||||||
end
|
end
|
||||||
local stringID = getDbProp(dbPath)
|
local stringID = getDbProp(dbPath)
|
||||||
if stringID ~= 0 then
|
if stringID ~= 0 then
|
||||||
|
-- debugInfo(tostring(stringID))
|
||||||
table.insert(remainingMissionTextIDs, stringID)
|
table.insert(remainingMissionTextIDs, stringID)
|
||||||
setOnDraw(missionWnd, "game:ensureLastMissionStepVisibility0()")
|
setOnDraw(missionWnd, "game:ensureLastMissionStepVisibility0()")
|
||||||
else
|
else
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function game:ensureLastMissionStepVisibility0()
|
function game:ensureLastMissionStepVisibility0()
|
||||||
|
|
||||||
local missing = false
|
local missing = false
|
||||||
for k, v in pairs(remainingMissionTextIDs) do
|
for k, v in pairs(remainingMissionTextIDs) do
|
||||||
if not isDynStringAvailable(v) then
|
if not isDynStringAvailable(v) then
|
||||||
|
@ -1492,7 +1497,7 @@ function game:ensureLastMissionStepVisibility1()
|
||||||
topStep = currStep
|
topStep = currStep
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
--debugInfo("Found step : " .. topStep.hardtext)
|
-- debugInfo("Found step : " .. topStep.hardtext)
|
||||||
if topStep == nil then
|
if topStep == nil then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -1517,6 +1522,95 @@ function game:onNewMissionAdded(missionIndex)
|
||||||
debugInfo("Mission " .. missionIndex .. " has been added")
|
debugInfo("Mission " .. missionIndex .. " has been added")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------------------
|
||||||
|
-- RPJOBS
|
||||||
|
|
||||||
|
function game:addRpJob(jobtype, id, value, rpjobs)
|
||||||
|
local base_path = "ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id..":rpjob_"..jobtype.."_infos_"..id
|
||||||
|
|
||||||
|
local group = getUI("ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id)
|
||||||
|
|
||||||
|
if (value == nil) then
|
||||||
|
group.active = false
|
||||||
|
else
|
||||||
|
local name = "rpjob_" .. string.format("%03d", value)
|
||||||
|
local sitem = name..".sitem"
|
||||||
|
if (rpjobs[sitem] == nil) then
|
||||||
|
group.active = false
|
||||||
|
else
|
||||||
|
group.active = true
|
||||||
|
|
||||||
|
local echelon_value = rpjobs[sitem][1]
|
||||||
|
local quantity = rpjobs[sitem][2]
|
||||||
|
|
||||||
|
local maxlevel = (echelon_value*6)-30
|
||||||
|
|
||||||
|
if (quantity > maxlevel) then
|
||||||
|
quantity = maxlevel
|
||||||
|
end
|
||||||
|
|
||||||
|
local base = getUI(base_path..":t")
|
||||||
|
base.hardtext = i18n.get(name):toUtf8()
|
||||||
|
local ui = getUI(base_path..":icon")
|
||||||
|
ui.texture = name..".tga"
|
||||||
|
local bar = getUI(base_path..":bar3d:level")
|
||||||
|
bar.color = tostring(math.floor((105*quantity)/maxlevel)).." "..tostring(100+math.floor((155*quantity)/maxlevel)).." "..tostring(math.floor((105*quantity)/maxlevel)).." 255"
|
||||||
|
bar.w = tostring((368*quantity)/maxlevel)
|
||||||
|
local t = getUI(base_path..":bar3d:t")
|
||||||
|
t.hardtext = tostring(quantity).." / "..tostring(maxlevel)
|
||||||
|
t.color = tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." 255"
|
||||||
|
local echelon = getUI(base_path..":echelon_value")
|
||||||
|
echelon.hardtext = tostring(echelon_value/10)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function game:getRPJobs()
|
||||||
|
rpjobs_advanced = {}
|
||||||
|
rpjobs_elementary = {}
|
||||||
|
rpjobs_roleplay = {}
|
||||||
|
rpjobs = {}
|
||||||
|
|
||||||
|
for i = 0, 499, 1 do
|
||||||
|
local sheet = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":SHEET")
|
||||||
|
if (sheet ~= 0) then
|
||||||
|
local name = getSheetName(sheet)
|
||||||
|
if (string.sub(name, 0, 6) == "rpjob_") then
|
||||||
|
local quality = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUALITY")
|
||||||
|
local quantity = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUANTITY")
|
||||||
|
|
||||||
|
if (name == "rpjob_advanced.sitem") then
|
||||||
|
table.insert(rpjobs_advanced, quality)
|
||||||
|
else
|
||||||
|
if (name == "rpjob_elementary.sitem") then
|
||||||
|
table.insert(rpjobs_elementary, quality)
|
||||||
|
else
|
||||||
|
if (name == "rpjob_roleplay.sitem") then
|
||||||
|
table.insert(rpjobs_roleplay, quality)
|
||||||
|
else
|
||||||
|
if rpjobs[name] == nil then
|
||||||
|
rpjobs[name] = {quality, quantity}
|
||||||
|
else
|
||||||
|
if rpjobs[name][1] < quality then
|
||||||
|
rpjobs[name] = {quality, quantity}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for id=1,2,1 do
|
||||||
|
game:addRpJob("advanced", id, rpjobs_advanced[id], rpjobs)
|
||||||
|
end
|
||||||
|
|
||||||
|
for id=1,3,1 do
|
||||||
|
game:addRpJob("elementary", id, rpjobs_elementary[id], rpjobs)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
|
@ -635,6 +635,16 @@
|
||||||
params_r=""
|
params_r=""
|
||||||
onclick_l=""
|
onclick_l=""
|
||||||
params_l="" />
|
params_l="" />
|
||||||
|
<ctrl style="tab_button_new"
|
||||||
|
id="tab2"
|
||||||
|
posparent="tab1"
|
||||||
|
group="content:rpjobs"
|
||||||
|
hardtext="uiRpJobs"
|
||||||
|
onclick_r=""
|
||||||
|
params_r=""
|
||||||
|
onclick_l=""
|
||||||
|
params_l="" />
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
<view type="bitmap"
|
<view type="bitmap"
|
||||||
id="sep"
|
id="sep"
|
||||||
|
@ -722,8 +732,9 @@
|
||||||
posparent="guild_title"
|
posparent="guild_title"
|
||||||
posref="TR TL"
|
posref="TR TL"
|
||||||
shadow="true"
|
shadow="true"
|
||||||
color="255 255 255 255"
|
color="255 200 55 255"
|
||||||
global_color="true"
|
global_color="false"
|
||||||
|
x="2"
|
||||||
fontsize="12"
|
fontsize="12"
|
||||||
textid="SERVER:GUILD:NAME"
|
textid="SERVER:GUILD:NAME"
|
||||||
dynamic_string="false" />
|
dynamic_string="false" />
|
||||||
|
@ -1448,7 +1459,41 @@
|
||||||
<view type="text" id="ring_rating_title" posparent="ring_rating" posref="TL BL" x="0" y="0" hardtext="uiR2EDRingRatingTitle" shadow="true" color="255 255 255 255" global_color="false" fontsize="12"/>
|
<view type="text" id="ring_rating_title" posparent="ring_rating" posref="TL BL" x="0" y="0" hardtext="uiR2EDRingRatingTitle" shadow="true" color="255 255 255 255" global_color="false" fontsize="12"/>
|
||||||
-->
|
-->
|
||||||
</group>
|
</group>
|
||||||
|
<group h="0" id="rpjobs" posref="TL TL" sizeref="wh" w="0" y="0">
|
||||||
|
<group h="48" child_resize_hmargin="16" id="rpjobs_advanced" posref="TL TL" sizeref="w" w="-4" x="2" y="-5">
|
||||||
|
<instance color="255 155 255 255" template="rpjob_title" rpjob_icon="rpjob_advanced.tga" margin_x="0" id="rpjob_advanced_title" text="uiRpJobsAdvanced" posparent="rpjobs_advanced" posref="TL TL" />
|
||||||
|
<instance inherit_gc_alpha="true" posparent="rpjob_advanced_title" template="inner_thin_border"/>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_advanced_1" posparent="rpjobs_advanced" posref="BL TL" sizeref="w" y="-5">
|
||||||
|
<instance template="rpjob_infos" rpjob_icon="rpjob_advanced.tga" margin_x="20" id="rpjob_advanced_infos_1" w="-20" posparent="rpjobs_advanced_1" posref="TL TL" />
|
||||||
|
<instance inherit_gc_alpha="true" posparent="rpjob_advanced_infos_1" template="frame_widget" h="48" w="48" />
|
||||||
|
</group>
|
||||||
|
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_advanced_2" posparent="rpjob_advanced_1" posref="BL TL" sizeref="w" y="-5">
|
||||||
|
<instance template="rpjob_infos" rpjob_icon="rpjob_advanced.tga" margin_x="20" id="rpjob_advanced_infos_2" w="-20" posparent="rpjobs_advanced_2" posref="TL TL" />
|
||||||
|
<instance inherit_gc_alpha="true" posparent="rpjob_advanced_infos_2" template="frame_widget" h="48" w="48" />
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group h="48" child_resize_hmargin="16" id="rpjobs_elementary" posparent="rpjob_advanced_2" posref="BL TL" sizeref="w" y="-5">
|
||||||
|
<instance color="155 255 155 255" template="rpjob_title" rpjob_icon="rpjob_elementary.tga" margin_x="0" id="rpjob_elementary_title" text="uiRpJobsElementary" posparent="rpjobs_elementary" posref="TL TL" />
|
||||||
|
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_title" template="inner_thin_border"/>
|
||||||
|
</group>
|
||||||
|
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_elementary_1" posparent="rpjobs_elementary" posref="BL TL" sizeref="w" y="-5">
|
||||||
|
<instance template="rpjob_infos" rpjob_icon="rpjob_elementary.tga" margin_x="20" id="rpjob_elementary_infos_1" w="-20" posparent="rpjobs_elementary_1" posref="TL TL" />
|
||||||
|
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_infos_1" template="frame_widget" h="48" w="48" />
|
||||||
|
</group>
|
||||||
|
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_elementary_2" posparent="rpjob_elementary_1" posref="BL TL" sizeref="w" y="-5">
|
||||||
|
<instance template="rpjob_infos" rpjob_icon="rpjob_elementary.tga" margin_x="20" id="rpjob_elementary_infos_2" w="-20" posparent="rpjobs_elementary_2" posref="TL TL" />
|
||||||
|
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_infos_2" template="frame_widget" h="48" w="48" />
|
||||||
|
</group>
|
||||||
|
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_elementary_3" posparent="rpjob_elementary_2" posref="BL TL" sizeref="w" y="-5">
|
||||||
|
<instance template="rpjob_infos" rpjob_icon="rpjob_elementary.tga" margin_x="20" id="rpjob_elementary_infos_3" w="-20" posparent="rpjobs_elementary_3" posref="TL TL" />
|
||||||
|
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_infos_3" template="frame_widget" h="48" w="48" />
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<view color="166 166 166 255" h="1" id="sep" posparent="info_player_skills_tabs" posref="BR BL" scale="true" sizeparent="parent" sizeref="w" texture="blank.tga" type="bitmap" w="0"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
<tree node="info_player_skills" />
|
<tree node="info_player_skills" />
|
||||||
<!--***********-->
|
<!--***********-->
|
||||||
|
@ -3232,6 +3277,7 @@
|
||||||
action="lua:game:onMissionJournalOpened()" />
|
action="lua:game:onMissionJournalOpened()" />
|
||||||
<link expr="depends(@SERVER:USER:IS_TRIAL)"
|
<link expr="depends(@SERVER:USER:IS_TRIAL)"
|
||||||
action="lua:game:onMissionJournalOpened()" />
|
action="lua:game:onMissionJournalOpened()" />
|
||||||
|
<link expr="depends(@LOCAL:INVENTORY:BAG)" action="lua:game:getRPJobs()" />
|
||||||
<!--***********************-->
|
<!--***********************-->
|
||||||
<!--* POPUP MESSAGES *-->
|
<!--* POPUP MESSAGES *-->
|
||||||
<!--***********************-->
|
<!--***********************-->
|
||||||
|
@ -3350,7 +3396,38 @@
|
||||||
shadow="true"
|
shadow="true"
|
||||||
color="255 0 0 255" />
|
color="255 0 0 255" />
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
|
||||||
|
<!--***********************-->
|
||||||
|
<!--* RPJOB TEMPLATES *-->
|
||||||
|
<!--***********************-->
|
||||||
</template>
|
</template>
|
||||||
|
<template h="48" id="" name="rpjob_title" posparent="parent" posref="TL TL" sizeref="w" suffix="" text="" tooltip="" val="" w="0" x="0" y="0">
|
||||||
|
<group h="#h" id="#id" posparent="#posparent" posref="#posref" sizeref="#sizeref" w="#w" x="#margin_x" y="#y">
|
||||||
|
<view global_color="false" id="icon" posref="TL TL" texture="#rpjob_icon" type="bitmap" x="4" y="-4"/>
|
||||||
|
<view color="#color" fontsize="16" hardtext="#text" id="t" posref="MR ML" posparent="icon" shadow="true" type="text" x="5"/>
|
||||||
|
</group>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template h="48" id="" name="rpjob_infos" posparent="parent" posref="TL TL" sizeref="w" suffix="" text="" tooltip="" val="" w="0" x="0" y="0">
|
||||||
|
<group h="#h" id="#id" posparent="#posparent" posref="#posref" sizeref="#sizeref" w="#w" x="#margin_x" y="#y">
|
||||||
|
<view color="0 0 0 255" h="48" w="48" scale="true" global_color="false" id="bg" posref="TL TL" parent="#id" texture="blank.tga" type="bitmap"/>
|
||||||
|
<view global_color="false" id="icon" posref="TL TL" texture="#rpjob_icon" type="bitmap" x="4" y="-4"/>
|
||||||
|
<view global_color="false" color="255 255 255 255" fontsize="13" id="t" posref="TR TL" posparent="icon" shadow="true" w="#w" type="text" x="10"/>
|
||||||
|
<group h="20" id="bar3d" posref="BR BL" posparent="icon" sizeref="w" w="340" x="8" y="0">
|
||||||
|
<instance inherit_gc_alpha="true" posref="BL BL" y="1" w="370" x="5" template="frame_widget" h="18"/>
|
||||||
|
<view color="0 0 0 255" h="16" id="bar" posparent="bar3d" posref="BL BL" scale="true" texture="blank.tga" type="bitmap" w="368" x="5" y="2"/>
|
||||||
|
<view h="16" id="level" posparent="bar3d" posref="BL BL" scale="true" texture="blank.tga" type="bitmap" w="368" x="5" y="2"/>
|
||||||
|
<view global_color="false" fontsize="12" hardtext="" id="t" posref="MM MM" posparent="bar" shadow="false" w="#w" type="text" y="-2"/>
|
||||||
|
</group>
|
||||||
|
<view global_color="false" color="255 255 155 255" fontsize="11" hardtext="" id="echelon_value" posref="TR TR" posparent="bar3d" shadow="true" w="#w" type="text" x="-5" y="20"/>
|
||||||
|
<view fontsize="11" hardtext="Echelon : " id="echelon" posref="TL TR" posparent="echelon_value" shadow="true" w="#w" type="text" x="2"/>
|
||||||
|
</group>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--***********************-->
|
<!--***********************-->
|
||||||
<!--* NPC WEB PAGE *-->
|
<!--* NPC WEB PAGE *-->
|
||||||
<!--***********************-->
|
<!--***********************-->
|
||||||
|
|
|
@ -1953,6 +1953,10 @@ void initStructForItemSort(vector<SSortStruct>&vTemp, sint32 sheetId, sint32 qua
|
||||||
|
|
||||||
vTemp[indexInList].Pos += toString("%03d", quality);
|
vTemp[indexInList].Pos += toString("%03d", quality);
|
||||||
|
|
||||||
|
// add sort by name
|
||||||
|
vTemp[indexInList].Pos += CSheetId(sheetId).toString();
|
||||||
|
|
||||||
|
|
||||||
// add at last the index in DB. to avoid resort for items that are exaclty the same
|
// add at last the index in DB. to avoid resort for items that are exaclty the same
|
||||||
vTemp[indexInList].Pos += toString("%03d", indexInDB);
|
vTemp[indexInList].Pos += toString("%03d", indexInDB);
|
||||||
}
|
}
|
||||||
|
@ -2079,6 +2083,10 @@ bool SBagOptions::canDisplay(CDBCtrlSheet *pCS) const
|
||||||
if ((pIS->Family == ITEMFAMILY::MISSION_ITEM) ||
|
if ((pIS->Family == ITEMFAMILY::MISSION_ITEM) ||
|
||||||
((pIS->Family == ITEMFAMILY::RAW_MATERIAL) && !pIS->canBuildSomeItemPart()))
|
((pIS->Family == ITEMFAMILY::RAW_MATERIAL) && !pIS->canBuildSomeItemPart()))
|
||||||
if (!bFilterMissMP) bDisplay = false;
|
if (!bFilterMissMP) bDisplay = false;
|
||||||
|
|
||||||
|
// Jobs Items
|
||||||
|
if (pIS->Id.toString().substr(0, 6) == "rpjob_")
|
||||||
|
bDisplay = false;
|
||||||
}
|
}
|
||||||
return bDisplay;
|
return bDisplay;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,20 +60,26 @@ void CItemConsumableEffectHelper::getItemConsumableEffectText(const CItemSheet *
|
||||||
|
|
||||||
if( name == "SP_CHG_CHARAC" )
|
if( name == "SP_CHG_CHARAC" )
|
||||||
{
|
{
|
||||||
ucstring result = CI18N::get("uiItemConsumableEffectChgCharac");
|
|
||||||
|
|
||||||
CHARACTERISTICS::TCharacteristics charac = CHARACTERISTICS::toCharacteristic(params[0]);
|
CHARACTERISTICS::TCharacteristics charac = CHARACTERISTICS::toCharacteristic(params[0]);
|
||||||
string characUIId = "uiCaracId" + toString((uint8)charac);
|
string characUIId = "uiCaracId" + toString((uint8)charac);
|
||||||
strFindReplace(result, "%charac", CI18N::get(characUIId));
|
|
||||||
|
|
||||||
double param1, param2;
|
double param1, param2;
|
||||||
fromString(params[1].c_str(), param1);
|
fromString(params[1].c_str(), param1);
|
||||||
fromString(params[2].c_str(), param2);
|
fromString(params[2].c_str(), param2);
|
||||||
uint32 bonus = (uint32)(param1 * itemQuality + param2);
|
sint32 bonus = (uint32)(param1 * itemQuality + param2);
|
||||||
strFindReplace(result, "%bonus", toString(bonus));
|
|
||||||
|
|
||||||
uint32 timeInSec;
|
uint32 timeInSec;
|
||||||
fromString(params[3].c_str(), timeInSec);
|
fromString(params[3].c_str(), timeInSec);
|
||||||
|
|
||||||
|
ucstring result;
|
||||||
|
|
||||||
|
if (bonus >= 0)
|
||||||
|
result = CI18N::get("uiItemConsumableEffectUpCharac");
|
||||||
|
else
|
||||||
|
result = CI18N::get("uiItemConsumableEffectDownCharac");
|
||||||
|
|
||||||
|
strFindReplace(result, "%charac", CI18N::get(characUIId));
|
||||||
|
strFindReplace(result, "%bonus", toString(bonus));
|
||||||
strFindReplace(result, "%minutes", toString(timeInSec/60));
|
strFindReplace(result, "%minutes", toString(timeInSec/60));
|
||||||
strFindReplace(result, "%secondes", toString(timeInSec%60));
|
strFindReplace(result, "%secondes", toString(timeInSec%60));
|
||||||
|
|
||||||
|
@ -81,7 +87,83 @@ void CItemConsumableEffectHelper::getItemConsumableEffectText(const CItemSheet *
|
||||||
effects += "\n";
|
effects += "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( name == "SP_LIFE_AURA" )
|
||||||
|
{
|
||||||
|
|
||||||
|
uint16 regenMod;
|
||||||
|
fromString(params[0].c_str(), regenMod);
|
||||||
|
uint32 duration;
|
||||||
|
fromString(params[1].c_str(), duration);
|
||||||
|
uint32 radius;
|
||||||
|
fromString(params[2].c_str(), radius);
|
||||||
|
uint32 targetDisableTime;
|
||||||
|
fromString(params[3].c_str(), targetDisableTime);
|
||||||
|
uint32 userDisableTime;
|
||||||
|
fromString(params[4].c_str(), userDisableTime);
|
||||||
|
|
||||||
|
ucstring result = CI18N::get("uiItemConsumableEffectLifeAura");
|
||||||
|
strFindReplace(result, "%modifier", toString(regenMod));
|
||||||
|
strFindReplace(result, "%minutes", toString(duration/60));
|
||||||
|
strFindReplace(result, "%secondes", toString(duration%60));
|
||||||
|
strFindReplace(result, "%radius", toString(radius));
|
||||||
|
strFindReplace(result, "%targetDisableTime", toString(targetDisableTime));
|
||||||
|
strFindReplace(result, "%userDisableTime", toString(userDisableTime));
|
||||||
|
|
||||||
|
effects += result;
|
||||||
|
effects += "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( name == "SP_STAMINA_AURA" )
|
||||||
|
{
|
||||||
|
|
||||||
|
uint16 regenMod;
|
||||||
|
fromString(params[0].c_str(), regenMod);
|
||||||
|
uint32 duration;
|
||||||
|
fromString(params[1].c_str(), duration);
|
||||||
|
uint32 radius;
|
||||||
|
fromString(params[2].c_str(), radius);
|
||||||
|
uint32 targetDisableTime;
|
||||||
|
fromString(params[3].c_str(), targetDisableTime);
|
||||||
|
uint32 userDisableTime;
|
||||||
|
fromString(params[4].c_str(), userDisableTime);
|
||||||
|
|
||||||
|
ucstring result = CI18N::get("uiItemConsumableEffectStaminaAura");
|
||||||
|
strFindReplace(result, "%modifier", toString(regenMod));
|
||||||
|
strFindReplace(result, "%minutes", toString(duration/60));
|
||||||
|
strFindReplace(result, "%secondes", toString(duration%60));
|
||||||
|
strFindReplace(result, "%radius", toString(radius));
|
||||||
|
strFindReplace(result, "%targetDisableTime", toString(targetDisableTime));
|
||||||
|
strFindReplace(result, "%userDisableTime", toString(userDisableTime));
|
||||||
|
|
||||||
|
effects += result;
|
||||||
|
effects += "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( name == "SP_SAP_AURA" )
|
||||||
|
{
|
||||||
|
|
||||||
|
uint16 regenMod;
|
||||||
|
fromString(params[0].c_str(), regenMod);
|
||||||
|
uint32 duration;
|
||||||
|
fromString(params[1].c_str(), duration);
|
||||||
|
uint32 radius;
|
||||||
|
fromString(params[2].c_str(), radius);
|
||||||
|
uint32 targetDisableTime;
|
||||||
|
fromString(params[3].c_str(), targetDisableTime);
|
||||||
|
uint32 userDisableTime;
|
||||||
|
fromString(params[4].c_str(), userDisableTime);
|
||||||
|
|
||||||
|
ucstring result = CI18N::get("uiItemConsumableEffectSapAura");
|
||||||
|
strFindReplace(result, "%modifier", toString(regenMod));
|
||||||
|
strFindReplace(result, "%minutes", toString(duration/60));
|
||||||
|
strFindReplace(result, "%secondes", toString(duration%60));
|
||||||
|
strFindReplace(result, "%radius", toString(radius));
|
||||||
|
strFindReplace(result, "%targetDisableTime", toString(targetDisableTime));
|
||||||
|
strFindReplace(result, "%userDisableTime", toString(userDisableTime));
|
||||||
|
|
||||||
|
effects += result;
|
||||||
|
effects += "\n";
|
||||||
|
}
|
||||||
|
|
||||||
// skill modifier consumables
|
// skill modifier consumables
|
||||||
//---------------------------
|
//---------------------------
|
||||||
|
|
|
@ -76,6 +76,7 @@
|
||||||
#include "interface_v3/group_map.h"
|
#include "interface_v3/group_map.h"
|
||||||
#include "sound_manager.h"
|
#include "sound_manager.h"
|
||||||
#include "interface_v3/group_compas.h"
|
#include "interface_v3/group_compas.h"
|
||||||
|
#include "interface_v3/group_html_webig.h"
|
||||||
#include "interface_v3/bar_manager.h"
|
#include "interface_v3/bar_manager.h"
|
||||||
#include "permanent_ban.h"
|
#include "permanent_ban.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
@ -702,9 +703,6 @@ void CInterfaceChatDisplayer::displayChat(TDataSetIndex compressedSenderIndex, c
|
||||||
colorizeSender(finalString, senderName, col);
|
colorizeSender(finalString, senderName, col);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log
|
|
||||||
pIM->log (finalString);
|
|
||||||
|
|
||||||
// play associated fx if any
|
// play associated fx if any
|
||||||
if( !stringCategory.empty() )
|
if( !stringCategory.empty() )
|
||||||
{
|
{
|
||||||
|
@ -764,7 +762,42 @@ void CInterfaceChatDisplayer::displayChat(TDataSetIndex compressedSenderIndex, c
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PeopleInterraction.ChatInput.AroundMe.displayMessage(finalString, col, 2, &windowVisible);
|
ucstring::size_type index = finalString.find(ucstring("<BPFX>"));
|
||||||
|
if (index != ucstring::npos) {
|
||||||
|
bubbleWanted = false;
|
||||||
|
finalString = finalString.substr(index+6,finalString.size());
|
||||||
|
ucstring::size_type index2 = finalString.find(ucstring(" "));
|
||||||
|
ucstring playerName;
|
||||||
|
if (index2 < (finalString.size()-3)) {
|
||||||
|
playerName = finalString.substr(0,index2);
|
||||||
|
finalString = finalString.substr(index2+1,finalString.size());
|
||||||
|
}
|
||||||
|
if (!senderName.empty())
|
||||||
|
{
|
||||||
|
CEntityCL *senderEntity = EntitiesMngr.getEntityByName (CEntityCL::removeTitleAndShardFromName(senderName), true, true);
|
||||||
|
if (senderEntity) {
|
||||||
|
if (senderEntity->Type != CEntityCL::Player) {
|
||||||
|
if (playerName.empty()) {
|
||||||
|
senderEntity->removeStateFx();
|
||||||
|
senderEntity->setStateFx(finalString.toString());
|
||||||
|
nlinfo("empty");
|
||||||
|
} else {
|
||||||
|
CEntityCL *destEntity = EntitiesMngr.getEntityByName (CEntityCL::removeTitleAndShardFromName(playerName), false, true);
|
||||||
|
if (destEntity) {
|
||||||
|
destEntity->removeStateFx();
|
||||||
|
destEntity->setStateFx(finalString.toString());
|
||||||
|
nlinfo("no empty");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finalString = "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PeopleInterraction.ChatInput.AroundMe.displayMessage(finalString, col, 2, &windowVisible);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// if tell, bkup sendername
|
// if tell, bkup sendername
|
||||||
if (mode == CChatGroup::tell && windowVisible && !senderName.empty())
|
if (mode == CChatGroup::tell && windowVisible && !senderName.empty())
|
||||||
|
@ -786,6 +819,10 @@ void CInterfaceChatDisplayer::displayChat(TDataSetIndex compressedSenderIndex, c
|
||||||
{
|
{
|
||||||
InSceneBubbleManager.chatOpen(compressedSenderIndex, finalRawMessage, bubbleTimer);
|
InSceneBubbleManager.chatOpen(compressedSenderIndex, finalRawMessage, bubbleTimer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Log
|
||||||
|
pIM->log (finalString);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3101,6 +3138,8 @@ void impulseOutpostDeclareWarAck(NLMISC::CBitMemStream &impulse)
|
||||||
node->setValue32(timeStartAttack);
|
node->setValue32(timeStartAttack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern void addWebIGParams (string &url);
|
||||||
|
|
||||||
//-----------------------------------------------
|
//-----------------------------------------------
|
||||||
//-----------------------------------------------
|
//-----------------------------------------------
|
||||||
class CServerMessageBoxOnReceiveTextId : public STRING_MANAGER::IStringWaitCallback
|
class CServerMessageBoxOnReceiveTextId : public STRING_MANAGER::IStringWaitCallback
|
||||||
|
@ -3122,8 +3161,37 @@ private:
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// if the string start with a @{Wxxxx} code, remove it and get the wanted window size
|
// if the string start with a @{Wxxxx} code, remove it and get the wanted window size
|
||||||
sint w= 256; // default size to 256 !!
|
sint w = 256; // default size to 256 !!
|
||||||
if(contentStr.size()>=5 && contentStr[0]=='@' && contentStr[1]=='{' && contentStr[2]=='W')
|
bool is_webig = false;
|
||||||
|
|
||||||
|
if(contentStr.size()>=6 && contentStr[0]=='W' && contentStr[1]=='E' && contentStr[2]=='B'
|
||||||
|
&& contentStr[3]==' ' && contentStr[4]==':' && contentStr[5]==' ' )
|
||||||
|
{
|
||||||
|
ucstring web_app;
|
||||||
|
uint i;
|
||||||
|
const uint digitStart= 6;
|
||||||
|
const uint digitMaxEnd= contentStr.size();
|
||||||
|
|
||||||
|
is_webig = true;
|
||||||
|
|
||||||
|
for(i = digitStart; i < digitMaxEnd; i++)
|
||||||
|
{
|
||||||
|
if(contentStr[i] == ' ')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
nlinfo("%d", i);
|
||||||
|
if(i != digitMaxEnd)
|
||||||
|
web_app = contentStr.substr(digitStart, i-digitStart);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
web_app = ucstring("index");
|
||||||
|
i = digitStart;
|
||||||
|
nlinfo("no app");
|
||||||
|
}
|
||||||
|
contentStr = ucstring("http://atys.ryzom.com/start/")+web_app+ucstring(".php?")+contentStr.substr(i+1);
|
||||||
|
nlinfo("contentStr = %s", contentStr.toString().c_str());
|
||||||
|
}
|
||||||
|
else if(contentStr.size()>=5 && contentStr[0]=='@' && contentStr[1]=='{' && contentStr[2]=='W')
|
||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
const uint digitStart= 3;
|
const uint digitStart= 3;
|
||||||
|
@ -3143,9 +3211,26 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// open the message box window
|
// open the message box window or web ig
|
||||||
|
CInterfaceManager *pIM= CInterfaceManager::getInstance();
|
||||||
|
|
||||||
|
if (is_webig)
|
||||||
|
{
|
||||||
|
CGroupHTML *groupHtml = dynamic_cast<CGroupHTML*>(pIM->getElementFromId("ui:interface:webig:content:html"));
|
||||||
|
if (groupHtml)
|
||||||
|
{
|
||||||
|
|
||||||
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(pIM->getElementFromId("ui:interface:webig"));
|
||||||
|
pGC->setActive(true);
|
||||||
|
|
||||||
|
string url = contentStr.toString();
|
||||||
|
addWebIGParams(url);
|
||||||
|
groupHtml->browse(url.c_str());
|
||||||
|
pIM->setTopWindow(pGC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
CInterfaceManager *pIM= CInterfaceManager::getInstance();
|
|
||||||
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(pIM->getElementFromId("ui:interface:server_message_box"));
|
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(pIM->getElementFromId("ui:interface:server_message_box"));
|
||||||
if (pGC)
|
if (pGC)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue