Misterious drop item id 24001 - 24012
Manishe - 10-28-2009 01:01
Misterious drop item id 24001 - 24012
Zauważyłem, że w kilku mobkach (conajmniej trzech) występuje item drop:
24001, 24002, 24007, 24009, 24011, 24011, 24012
a więc itemy za repke w thrallmar (24001) albo takie, które wogóle nie istnieją (24012). Itemy występują w mobach np. 19760, 20778, 20779 i pewnie wielu innych. Wszystkie itemy w creature_loot_template mają wpisane w polu mincountOrRef swój numer itemu, tak jakby to od jakiegoś questu zależało czy coś.
Przykład:
Kod: mysql> select * from creature_loot_template where entry=20778;
+-------+-------+---------------------+---------+---------------+----------+---------------+------------------+------------------+
| entry | item | ChanceOrQuestChance | groupid | mincountOrRef | maxcount | lootcondition | condition_value1 | condition_value2 |
+-------+-------+---------------------+---------+---------------+----------+---------------+------------------+------------------+
| 20778 | 24002 | 5 | 1 | -24002 | 1 | 0 | 0 | 0 |
| 20778 | 24007 | 1 | 1 | -24007 | 1 | 0 | 0 | 0 |
| 20778 | 24009 | 1 | 1 | -24009 | 1 | 0 | 0 | 0 |
| 20778 | 24011 | 1 | 1 | -24011 | 1 | 0 | 0 | 0 |
| 20778 | 24012 | 0.5 | 1 | -24012 | 1 | 0 | 0 | 0 |
| 20778 | 25445 | 80.7261 | 0 | 1 | 1 | 0 | 0 | 0 |
| 20778 | 25447 | 18.4818 | 0 | 1 | 1 | 0 | 0 | 0 |
| 20778 | 29572 | 0.066 | 0 | 1 | 1 | 0 | 0 | 0 |
+-------+-------+---------------------+---------+---------------+----------+---------------+------------------+------------------+
8 rows in set (0,00 sec) Jak masowo usunąć taki błędny loot z tych mobów? Najlepiej od razu ze wszystkich mobów, gdzie dany item występuje.
Siofra - 10-28-2009 09:33
co do pola MinCountOrRef:
jeśli jest tam wartość dodatnia to pokazuje on ilość itemów które mogą wypaść
jeśli jest wartość ujemna to znaczy że jest to odwołanie do innej tabeli (RefferenceLootTemplate) (jeśli dobrze rozumiem)
inaczej mówiąc musiałbyś powiazać jeszcze loot z creature_loot_template z refference_loot_template żeby mieć pewność że są to na pewno błędne wpisy w bazie.
co do samego sposóbu masowego usuwania itemów których niema w bazie lub są do kupienia za repke to jak wróce z uczelni spróbuje napisać przykładowe zapytanie spełniające te warunki (nie daje głowy że sie uda :P )
EDIT:
rozbiłem to na więcej niż 1 zapytanie:
Kod: SELECT *
FROM creature_loot_template
WHERE (item NOT IN (SELECT entry FROM item_template) ) AND
mincountOrRef >= 0; powyższe zapytanie wyświetli loot którego niema w bazie itemów
Kod: SELECT *
FROM creature_loot_template
WHERE (item IN (SELECT item
FROM item_template AS it JOIN npc_vendor AS nv ON it.entry = nv.item
WHERE RequiredReputationFaction > 0)) AND
mincountOrRef >= 0; powyższe zapytanie powinno wyświetlić loot który leci z mobów a jest do kupienia u vendorów oraz wymaga reputacji w jakiejś frakcji.
drugiego zapytania nie sprawdziłem bo za długo sie mieliło u mnie i za bardzo kompa zżerało mi :P
Manishe - 10-29-2009 22:18
W mojej bazie, drugie zapytanie znajduje tylko:
http://hgwiki.gamefreedom.pl/?item=25526#dropped-by (do usuniecia)
Pierwsze zapytanie niestety pokazuje empty set. Tymczasem itemów z npców które opisałem w pierwszym poście dalej nie wiem jak wyszukać?
Siofra - 10-30-2009 00:19
Cytat:
Pierwsze zapytanie niestety pokazuje empty set. to znaczy że ani jeden mob nie rzuca itemów których niema w bazie
Kod: SELECT rlt.entry AS 'reference entry', rlt.item AS 'id itemu'
FROM creature_loot_template AS clt JOIN reference_loot_template AS rlt ON clt.item = rlt.entry
WHERE clt.mincountOrRef < 0 AND rlt.entry IN (24001, 24002, 24007, 24009, 24011, 24011, 24012) to wyświetli cały loot wpisany do reference loot
jeśli chcesz wiedzieć z jakich mobów leci to lub ograniczyć do wybranych mobów:
Kod: SELECT ct.entry AS 'id moba', rlt.entry AS 'reference entry', rlt.item AS 'id itemu'
FROM (creature_template AS ct JOIN creature_loot_template AS clt ON ct.lootid = clt.entry)
JOIN reference_loot_template AS rlt ON clt.item = rlt.entry
WHERE clt.mincountOrRef < 0 AND rlt.entry IN (24001, 24002, 24007, 24009, 24011, 24011, 24012)
AND ct.entry IN (19760, 20778, 20779)
rlt.entry IN (24001, 24002, 24007, 24009, 24011, 24011, 24012) <--- w nawiasie są id itemów które chcesz sprawdzić
ct.entry IN (19760, 20778, 20779) <--- w nawiasie są id mobów które chcesz sprawdzić