items.php

main 300 lines · 9.4 KB Raw
Alex Alex Commit Initial commit 01/10/2026 09:20
1<?php
2/**
3 * Equipable items browser.
4 *
5 * Prepared by items.php: $itemsEnabled and $items. Nothing is loaded here.
6 */
7?>
8<?php if (!$itemsEnabled): ?>
9
10 <?= t('items.disabled') ?>
11
12<?php else: ?>
13
14<?php
15if ($items) {
16 // Preparing data
17 $types = array_keys($items);
18 $itemImg = static function($id){ return function_exists('znote_item_image_url') ? htmlspecialchars(znote_item_image_url((int)$id, 'gif'), ENT_QUOTES) : ''; };
19
20 //slotType values and names
21 if(isset($_GET['slot'])) {
22 switch($_GET['slot']) {
23 case 'helmet':
24 $slottype = 'head';
25 $slottype_name = t('items.helmets');
26 break;
27 case 'sword':
28 $slottype = 'sword';
29 $slottype_name = t('items.swords');
30 break;
31 case 'distance':
32 $slottype = 'distance';
33 $slottype_name = t('items.distance');
34 break;
35 case 'wand':
36 $slottype = 'wand';
37 $slottype_name = t('items.wands');
38 break;
39 case 'armor':
40 $slottype = 'body';
41 $slottype_name = t('items.armors');
42 break;
43 case 'club':
44 $slottype = 'club';
45 $slottype_name = t('items.clubs');
46 break;
47 case 'ammunition':
48 $slottype = 'ammunition';
49 $slottype_name = t('items.ammunition');
50 break;
51 case 'book':
52 $slottype = 'shield';
53 $slottype_name = t('items.spellbooks');
54 break;
55 case 'legs':
56 $slottype = 'legs';
57 $slottype_name = t('items.legs');
58 break;
59 case 'axe':
60 $slottype = 'axe';
61 $slottype_name = t('items.axes');
62 break;
63 case 'necklace':
64 $slottype = 'necklace';
65 $slottype_name = t('items.necklaces');
66 break;
67 case 'feet':
68 $slottype = 'feet';
69 $slottype_name = t('items.boots');
70 break;
71 case 'shield':
72 $slottype = 'shield';
73 $slottype_name = t('items.shields');
74 break;
75 case 'backpack':
76 $slottype = 'backpack';
77 $slottype_name = t('items.backpacks');
78 break;
79 case 'ring':
80 $slottype = 'ring';
81 $slottype_name = t('items.rings');
82 break;
83 default:
84 $slottype_name = 'null';
85 break;
86 }
87 }
88
89 // Render HTML
90 if(isset($_GET['slot']) && ($slottype_name == 'null')) header("Location:items.php");
91 ?>
92
93 <h1 id="items"><?= t('items.title') ?><?php if (isset($_GET['slot'])) echo ' ('.$slottype_name.')';?></h1>
94 <?php if(empty($_GET['slot'])) { ?>
95 <table>
96 <tbody>
97 <tr>
98 <td style="text-align:center;"><a href="?slot=helmet"><?= t('items.helmets') ?><br><img src="<?php echo $itemImg(2471); ?>" /></a></td>
99 <td style="text-align:center;"><a href="?slot=sword"><?= t('items.swords') ?><br><img src="<?php echo $itemImg(8931); ?>" /></a></td>
100 <td style="text-align:center;"><a href="?slot=shield"><?= t('items.shields') ?><br><img src="<?php echo $itemImg(2523); ?>" /></a></td>
101 <td style="text-align:center;"><a href="?slot=necklace"><?= t('items.amulets') ?><br><img src="<?php echo $itemImg(2173); ?>" /></a></td>
102 </tr>
103 <tr>
104 <td style="text-align:center;"><a href="?slot=armor"><?= t('items.armors') ?><br><img src="<?php echo $itemImg(2466); ?>" /></a></td>
105 <td style="text-align:center;"><a href="?slot=club"><?= t('items.clubs') ?><br><img src="<?php echo $itemImg(2444); ?>" /></a></td>
106 <td style="text-align:center;"><a href="?slot=wand"><?= t('items.wands') ?><br><img src="<?php echo $itemImg(2190); ?>" /></a></td>
107 <td style="text-align:center;"><a href="?slot=ammunition"><?= t('items.ammunition') ?><br><img src="<?php echo $itemImg(6529); ?>" /></a></td>
108 </tr>
109 <tr>
110 <td style="text-align:center;"><a href="?slot=legs"><?= t('items.legs') ?><br><img src="<?php echo $itemImg(2470); ?>" /></a></td>
111 <td style="text-align:center;"><a href="?slot=axe"><?= t('items.axes') ?><br><img src="<?php echo $itemImg(8925); ?>" /></a></td>
112 <td style="text-align:center;"><a href="?slot=ring"><?= t('items.rings') ?><br><img src="<?php echo $itemImg(6093); ?>" /></a></td>
113 </tr>
114 <tr>
115 <td style="text-align:center;"><a href="?slot=feet"><?= t('items.boots') ?><br><img src="<?php echo $itemImg(2646); ?>" /></a></td>
116 <td style="text-align:center;"><a href="?slot=distance"><?= t('items.distance') ?><br><img src="<?php echo $itemImg(5803); ?>" /></a></td>
117 <td style="text-align:center;"><a href="?slot=backpack"><?= t('items.backpacks') ?><br><img src="<?php echo $itemImg(9774); ?>" /></a></td>
118 </tr>
119 </tbody>
120 </table>
121 <?php } else { ?>
122 <table>
123 <tbody>
124 <tr>
125 <td></td>
126 <td><?= t('common.name') ?></td>
127 <td><?= t('items.attributes') ?></td>
128 </tr>
129
130<?php foreach ($items['item'] as $select) {
131 $attributes = array();
132 $extradef = NULL;
133 $element = NULL;
134 if (!empty($select['id'])) $itemid = $select['id'];
135 else $itemid = $select['fromid'];
136
137 if (!empty($select['attributes'])) {
138 foreach ($select['attributes'] as $att => $value) {
139 if($att == 'slotType' || $att == 'weaponType') $slotType = $value;
140 if(!empty($slotType) && $slotType == $slottype) $show = true;
141 else $show = false;
142 }
143 }
144
145 if($show == true) { ?>
146 <tr>
147 <td><img src="<?php echo $itemImg($itemid); ?>" /></td>
148 <td><?php echo ucwords($select['name']); ?></td>
149 <td><?php
150 foreach ($select['attributes'] as $array => $value) {
151
152 $extra = NULL;
153 if($value > 0) $extra = '+';
154 switch ($array) {
155 case 'weight':
156 echo ucwords($array).': '.intval($value/100).'.'.substr($value, -2).' oz<br>';
157 break;
158 case 'containerSize':
159 echo t('items.attr_slots') .': '.$value.'<br>';
160 break;
161 case 'armor':
162 echo ucwords($array).': '.$value.'<br>';
163 break;
164 case 'attack':
165 echo ucwords($array).': '.$value;
166 if($element != NULL) echo ' ('.$element.')';
167 echo '<br>';
168 break;
169 case 'defense':
170 echo ucwords($array).': '.$value;
171 if($extradef != NULL) echo ' ('.$extradef.')';
172 echo '<br>';
173 break;
174 case 'skillFist':
175 echo t('items.fight_fist') .': '.$extra.$value.'<br>';
176 break;
177 case 'skillAxe':
178 echo t('items.fight_axe') .': '.$extra.$value.'<br>';
179 break;
180 case 'skillSword':
181 echo t('items.fight_sword') .': '.$extra.$value.'<br>';
182 break;
183 case 'skillClub':
184 echo t('items.fight_club') .': '.$extra.$value.'<br>';
185 break;
186 case 'skillAxe':
187 echo t('items.fight_axe') .': '.$extra.$value.'<br>';
188 break;
189 case 'skillDist':
190 echo t('items.fight_dist') .': '.$extra.$value.'<br>';
191 break;
192 case 'skillShield':
193 echo t('items.fight_shield') .': '.$extra.$value.'<br>';
194 break;
195 case 'range':
196 echo ucwords($array).': '.$value.'<br>';
197 break;
198 case 'shootType':
199 echo t('items.attr_shoot') .': '.ucwords($value).'<br>';
200 break;
201 case 'hitChance':
202 echo t('items.attr_hit') .': '.$extra.$value.'%<br>';
203 break;
204 case 'magiclevelpoints':
205 echo t('items.attr_magic') .': '.$extra.$value.'<br>';
206 break;
207 case 'absorbPercentEnergy':
208 echo t('items.prot_energy') .': '.$extra.$value.'%<br>';
209 break;
210 case 'absorbPercentFire':
211 echo t('items.prot_fire') .': '.$extra.$value.'%<br>';
212 break;
213 case 'absorbPercentEarth':
214 echo t('items.prot_earth') .': '.$extra.$value.'%<br>';
215 break;
216 case 'absorbPercentPoison':
217 echo t('items.prot_poison') .': '.$extra.$value.'%<br>';
218 break;
219 case 'absorbPercentIce':
220 echo t('items.prot_ice') .': '.$extra.$value.'%<br>';
221 break;
222 case 'absorbPercentHoly':
223 echo t('items.prot_holy') .': '.$extra.$value.'%<br>';
224 break;
225 case 'absorbPercentDeath':
226 echo t('items.prot_death') .': '.$extra.$value.'%<br>';
227 break;
228 case 'absorbPercentLifeDrain':
229 echo t('items.prot_lifedrain') .': '.$extra.$value.'%<br>';
230 break;
231 case 'absorbPercentManaDrain':
232 echo t('items.prot_manadrain') .': '.$extra.$value.'%<br>';
233 break;
234 case 'absorbPercentDrown':
235 echo t('items.prot_drown') .': '.$extra.$value.'%<br>';
236 break;
237 case 'absorbPercentPhysical':
238 echo t('items.prot_physical') .': '.$extra.$value.'%<br>';
239 break;
240 case 'absorbPercentIce':
241 echo t('items.prot_ice') .': '.$extra.$value.'%<br>';
242 break;
243 /**case 'suppressDrunk':
244 echo t('items.sup_drunk') .': '. t('common.yes') .'<br>';
245 break;
246 case 'suppressEnergy':
247 echo t('items.sup_energy') .': '. t('common.yes') .'<br>';
248 break;
249 case 'suppressFire':
250 echo t('items.sup_fire') .': '. t('common.yes') .'<br>';
251 break;
252 case 'suppressPoison':
253 echo t('items.sup_poison') .': '. t('common.yes') .'<br>';
254 break;
255 case 'suppressDrown':
256 echo t('items.sup_drown') .': '. t('common.yes') .'<br>';
257 break;
258 case 'suppressPhysical':
259 echo t('items.sup_bleeding') .': '. t('common.yes') .'<br>';
260 break;
261 case 'suppressFreeze':
262 echo t('items.sup_freeze') .': '. t('common.yes') .'<br>';
263 break;
264 case 'suppressDazzle':
265 echo t('items.sup_dazzle') .': '. t('common.yes') .'<br>';
266 break;
267 case 'suppressCurse':
268 echo t('items.sup_curse') .': '. t('common.yes') .'<br>';
269 break;
270 Those are not necessary in my opinion, but if you want to show
271 **/
272 case 'speed':
273 echo t('items.attr_speed') .': '.$extra.($value/2).'<br>';
274 break;
275 case 'charges':
276 echo t('items.attr_charges') .': '.$value.'<br>';
277 break;
278 }
279 }
280 ?>
281 </td>
282 </tr>
283
284
285<?php
286 }
287 } ?>
288
289 </tbody>
290 </table>
291
292 <?php
293 }
294} else { ?>
295 <h1><?= t('items.title') ?></h1>
296 <p><?= t('items.not_loaded') ?></p>
297<?php }
298?>
299<?php endif; ?>
300
Top