@@ -117,17 +117,18 @@ public static function destAccount(): void {
117117 public static function get3dViewer (int $ itemId = 0 ): void {
118118
119119 global $ post ;
120- $ custom_3d_checkbox = get_post_meta ($ post ->ID , '_custom_3d_checkbox ' , true );
120+ $ is_3d_enabled = get_post_meta ($ post ->ID , '_custom_3d_checkbox ' , true ) === ' yes ' ;
121121 $ race = get_post_meta ($ post ->ID , '_3d_race ' , true );
122122 $ gender = get_post_meta ($ post ->ID , '_3d_gender ' , true );
123123 $ gender = $ gender === '2 ' ? rand (0 , 1 ) : $ gender ;
124124 $ creatureDisplayId = get_post_meta ($ post ->ID , '_3d_displayid ' , true );
125+ $ isSingleItem = get_post_meta ($ post ->ID , '_3d_single_item ' , true ) === 'yes ' ;
125126
126127 if ($ itemId === 0 && $ creatureDisplayId === '' ) {
127128 return ;
128129 }
129130
130- if ($ custom_3d_checkbox !== ' yes ' ) {
131+ if (! $ is_3d_enabled ) {
131132 return ;
132133 }
133134
@@ -140,19 +141,41 @@ public static function get3dViewer(int $itemId = 0): void {
140141 function show3dModel(displayId, entity, inventoryType=0, race=1, gender=0) {
141142 let model;
142143 if (entity === 'item') {
143- const character = {
144- race,
145- gender,
146- skin: 0,
147- face: 0,
148- hairStyle: 0,
149- hairColor: 0,
150- facialStyle: 0,
151- items: [
152- [inventoryType, displayId],
153- ],
144+ <?php if ($ isSingleItem ) { ?>
145+
146+ const HEAD_INVENTORY_TYPE = 1;
147+ const SHOULDER_INVENTORY_TYPE = 3;
148+ const WEAPONS_INVENTORY_TYPE =[13,14,15,17,21,22,23,25,26];
149+ let type;
150+
151+ if (WEAPONS_INVENTORY_TYPE.includes(inventoryType)) {
152+ type = 1; // WEAPON
153+ } else if (inventoryType === HEAD_INVENTORY_TYPE) {
154+ type = 2; // HEAD
155+ } else if (inventoryType === SHOULDER_INVENTORY_TYPE) {
156+ type = 4; // SHOULDER
157+ }
158+
159+ model = {
160+ type,
161+ id: displayId,
154162 };
155- model = character;
163+ <?php } else { ?>
164+ const character = {
165+ race,
166+ gender,
167+ skin: 0,
168+ face: 0,
169+ hairStyle: 0,
170+ hairColor: 0,
171+ facialStyle: 0,
172+ items: [
173+ [inventoryType, displayId],
174+ ],
175+ };
176+ model = character;
177+ <?php } ?>
178+
156179 }
157180 else if (entity === 'npc') {
158181 model = {
@@ -175,7 +198,8 @@ function show3dModel(displayId, entity, inventoryType=0, race=1, gender=0) {
175198 fetch('https://wowgaming.altervista.org/modelviewer/data/get-displayid.php?type=item&id=<?= $ itemId ?> ')
176199 .then(response => response.text())
177200 .then(data => {
178- const [displayId, entity, inventoryType] = data.split(',');
201+ let [displayId, entity, inventoryType] = data.split(',');
202+ inventoryType = Number(inventoryType);
179203 <?php if ($ race !== '' && $ gender !== '' ) { ?>
180204 show3dModel(displayId, entity, inventoryType, <?= $ race ?> , <?= $ gender ?> );
181205 <?php } else { ?>
0 commit comments