Welcome to the DFO World Wiki. With many major updates since the release of DFO, many items are missing. Visit Item Database Project to learn more.
Please remember to click "show preview" before saving the page.
Thanks for the updated logo snafuPop!
Thread history
Time | User | Activity | Comment |
---|---|---|---|
No results |
Hey Dfoplayer. I just had an idea.
Out of curiosity, do we have a loop extension installed and would it be possible to construct a skill table from a #while
loop extension?
Here's an example I had in mind using the skill: Quick Punto
{{#vardefine:maxlv | 50 }} {|{{SkillTableHeader}} !Level !Lv Req !MP !Melee Atk. !Lance Tip Atk. |- {{#vardefine:i| 1 }}{{#while: | {{#ifexpr: {{#var:i}} <= {{#var:maxlv}} | true }} | <nowiki /> |- | <!--Level--> {{#var:i}} | <!--Lv Req--> {{#expr: 1+2*({{#var:i}}-1)}} | <!--MP--> {{#expr: 6+0.568*({{#var:i}}-1) round 0}} | <!--Melee Atk.--> {{#expr: 781+79.273*({{#var:i}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 1.95+0.198*({{#var:i}}-1) }} | 1 }} | <!--Lance Tip Atk.--> {{#expr: 1027+104.273*({{#var:i}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 2.57+0.261*({{#var:i}}-1) }} | 1 }} {{#vardefine:i| {{#expr: {{#var:i}} + 1 }} }} <!--Incrementation--> }} |}
Ideally, this would create a table and output 50 rows for the skill. I'm not that good at MediaWiki coding, but would this type of implementation be possible?
I looked into this weeks ago when you asked me the first time, atleast trying to find some way for mediawiki to calculate mathematical formulas. We do not have loops installed. I asked the site owner sometime ago because of your timeline and she replied we need to see if Extension:arrays can be substituted. Shown below, the while loop does not work
{{#while:
| true |
- 0
}}
However, I did not know we had variables installed, so combining arrays and variables should definitely looked into. It could solve some more problems!
I'll try to do some work on the weekend...
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}}<!--Create an array named "maxrow" and fill it with 30 values--> {|{{SkillTableHeader}} !Level !Lv Req !MP !Melee Atk. !Lance Tip Atk. {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@--> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use --> {{!}}- {{#ifexpr: {{#var:i}} = 30 | {{MaxSkillRow}} }} {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 1+2*({{#var:i}}-1)}} {{!}} <!--MP--> {{#expr: 6+0.568*({{#var:i}}-1) round 0}} {{!}} <!--Melee Atk.--> {{#expr: 781+79.273*({{#var:i}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 1.95+0.198*({{#var:i}}-1) }} | 1 }} {{!}} <!--Lance Tip Atk.--> {{#expr: 1027+104.273*({{#var:i}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 2.57+0.261*({{#var:i}}-1) }} | 1 }} {{!}}- }}
The main point to "simulate a loop" is to create an array with integers. Then when you call #arrayprint, it will loop through the whole array and move each item to a specified symbol, which I called "@@@@". To make your code work, I assigned "@@@@" to var 'i' and the formula you had displays.
Be sure to change the if check on MaxSkillRow.
We will lose some stuff, like rowspan="10"
for common columns. But we can put that outside in the attributes section, or hard code the column in the loop.
Now that you brought Extension:Variables to my attention, i think I can fix the semantic errors in NPC and dungeon info boxes. Thanks!
Quick Punto Skill table
Level | Lv Req | MP | Melee Atk. | Lance Tip Atk. |
---|---|---|---|---|
1 | 1 | 6 | 781% + 1.95 max-width:200px 100
|
1027% + 2.57 max-width:200px 100
|
2 | 3 | 7 | 860% + 2.15 max-width:200px 100
|
1131% + 2.83 max-width:200px 100
|
3 | 5 | 7 | 940% + 2.35 max-width:200px 100
|
1236% + 3.09 max-width:200px 100
|
4 | 7 | 8 | 1019% + 2.54 max-width:200px 100
|
1340% + 3.35 max-width:200px 100
|
5 | 9 | 8 | 1098% + 2.74 max-width:200px 100
|
1444% + 3.61 max-width:200px 100
|
6 | 11 | 9 | 1177% + 2.94 max-width:200px 100
|
1548% + 3.88 max-width:200px 100
|
7 | 13 | 9 | 1257% + 3.14 max-width:200px 100
|
1653% + 4.14 max-width:200px 100
|
8 | 15 | 10 | 1336% + 3.34 max-width:200px 100
|
1757% + 4.4 max-width:200px 100
|
9 | 17 | 11 | 1415% + 3.53 max-width:200px 100
|
1861% + 4.66 max-width:200px 100
|
10 | 19 | 11 | 1494% + 3.73 max-width:200px 100
|
1965% + 4.92 max-width:200px 100
|
11 | 21 | 12 | 1574% + 3.93 max-width:200px 100
|
2070% + 5.18 max-width:200px 100
|
12 | 23 | 12 | 1653% + 4.13 max-width:200px 100
|
2174% + 5.44 max-width:200px 100
|
13 | 25 | 13 | 1732% + 4.33 max-width:200px 100
|
2278% + 5.7 max-width:200px 100
|
14 | 27 | 13 | 1812% + 4.52 max-width:200px 100
|
2383% + 5.96 max-width:200px 100
|
15 | 29 | 14 | 1891% + 4.72 max-width:200px 100
|
2487% + 6.22 max-width:200px 100
|
16 | 31 | 15 | 1970% + 4.92 max-width:200px 100
|
2591% + 6.49 max-width:200px 100
|
17 | 33 | 15 | 2049% + 5.12 max-width:200px 100
|
2695% + 6.75 max-width:200px 100
|
18 | 35 | 16 | 2129% + 5.32 max-width:200px 100
|
2800% + 7.01 max-width:200px 100
|
19 | 37 | 16 | 2208% + 5.51 max-width:200px 100
|
2904% + 7.27 max-width:200px 100
|
20 | 39 | 17 | 2287% + 5.71 max-width:200px 100
|
3008% + 7.53 max-width:200px 100
|
21 | 41 | 17 | 2366% + 5.91 max-width:200px 100
|
3112% + 7.79 max-width:200px 100
|
22 | 43 | 18 | 2446% + 6.11 max-width:200px 100
|
3217% + 8.05 max-width:200px 100
|
23 | 45 | 18 | 2525% + 6.31 max-width:200px 100
|
3321% + 8.31 max-width:200px 100
|
24 | 47 | 19 | 2604% + 6.5 max-width:200px 100
|
3425% + 8.57 max-width:200px 100
|
25 | 49 | 20 | 2684% + 6.7 max-width:200px 100
|
3530% + 8.83 max-width:200px 100
|
26 | 51 | 20 | 2763% + 6.9 max-width:200px 100
|
3634% + 9.1 max-width:200px 100
|
27 | 53 | 21 | 2842% + 7.1 max-width:200px 100
|
3738% + 9.36 max-width:200px 100
|
28 | 55 | 21 | 2921% + 7.3 max-width:200px 100
|
3842% + 9.62 max-width:200px 100
|
29 | 57 | 22 | 3001% + 7.49 max-width:200px 100
|
3947% + 9.88 max-width:200px 100
|
30 | 59 | 22 | 3080% + 7.69 max-width:200px 100
|
4051% + 10.14 max-width:200px 100
|
I didn't know about the #arrayprint
option. I suppose it's a lot safer than having to worry about the consequences of an infinite loop.
I'll do some experimentation on skills like Core Shield and Blade Dance to test if I can hard code some of the columns into the table.
I disregarded the if check on your user page for coding rowspans, cause new editors might have a hard time reading the wikicode. But if it's working for you, the table does look much better IMO.
The tables themselves never bothered me in the first place. To be honest, I actually preferred the tables. The issue was that it was taking too long to manually update each value for every page.
Anyway, for consistency reasons, should we extend the table only to its Level cap value, the Master Level value, or the Max Level value?