Vendeur de montures
Bonjour,

Voici un petit script qui permet de récupérer automatiquement les montures disponibles dans la DB et de les ajouter à un vendeur (ou plusieurs).

Si la limite de 150 est atteinte, un nouveau vendeur avec l'ID entry+1 est utilisé et ainsi de suite jusqu'à ce que tous les objets soient ajoutés.

Le patch est compatible avec la plupart des versions des DBs étant donné que seuls les champs nécessaires sont ajoutés.

La configuration se fait au début, attention, actuellement, le nombre de montures nécessite 2 vendeurs, donc prenez un ID dont le suivant est libre.

Vous pouvez appliqué le patch à chaque mise à jour de votre DB pour avoir les nouvelles montures.

Version MySQL "récente" requise.

Code :
/* Créé par Khira.
*   Vendeur de Montures multi-version, toujours à jour par rapport à votre base de données.
*   A réappliquer à chaque nouvelle version de votre base de données.
*   Version actuelle du script : 2.4
*   Merci de ne pas partager mon travail sans mon autorisation.
*/
DELIMITER |
DROP PROCEDURE IF EXISTS addNpcVendor|
-- Début Configuration
    SET @entry = 61002|           -- Mettez un Id (entry) non utilisé pour votre nouveau PNJ.
                                  -- Attention : Si il y a plus de 150 objets (limite client), un nouveau PNJ
                                  -- sera créé avec l'ID entry + 1 et ainsi de suite.
                                  -- Penser donc à prendre un Id avec les Ids suivants libres.
    SET @displayId = 25674|       -- DisplayId de votre PNJ.
    SET @nameNpc = 'Elizabeth'|   -- Nom du PNJ.
    SET @faction = 0|             -- Faction du PNJ : 1 pour l'alliance, 2 pour la horde, 0 pour les deux.
    SET @subname = 'Montures'|    -- Sous-nom de votre PNJ.
    SET @healthNpc = 55000|       -- Vie de votre PNJ. Mettre 0 pour générer une valeur au hasard.
    SET @levelNpc = 80|           -- Niveau de votre PNJ.
-- Fin Configuration

CREATE PROCEDURE addNpcVendor(IN entryNpc INT, IN displayId INT, IN healthNpc INT, IN levelNpc INT, IN nameNpc VARCHAR(255), IN subname VARCHAR(255), IN factionNpc INT, IN npcflag INT, IN typeSearch INT, IN type1Item INT, IN type2Item INT)
lbl_addNpcVendor: BEGIN
    DECLARE i INT DEFAULT 0;
    IF entryNpc <= 0 OR displayId <= 0 OR nameNpc = '' THEN
        SELECT 'Les paramètres sont incorrects, vérifiez la partie configuration du script.';
        LEAVE lbl_addNpcVendor;
    END IF;

    IF healthNpc IS NULL OR healthNpc <= 0 THEN
        SET healthNpc = ROUND((1 + RAND()) * 20000);
    END IF;
    
    IF levelNpc IS NULL OR levelNpc <= 0 THEN
        SET levelNpc = 80;
    END IF;

    lbl_loop_additemvendor: LOOP
        DELETE FROM `creature_template` WHERE `entry` = entryNpc + i;
        DELETE FROM `npc_vendor` WHERE `entry` = entryNpc + i;
        
        IF (SELECT COUNT(`entry`) FROM `item_template` WHERE IF(typeSearch = 1, (`class` = type1Item) AND (`subclass` = type2Item), `inventoryType` = type1Item) AND `entry` NOT IN (SELECT `item` FROM `npc_vendor` WHERE (`entry` >= entryNpc) AND (`entry` <= entryNpc + i))) = 0 THEN
            LEAVE lbl_loop_additemvendor;
        END IF;
        
        INSERT INTO `creature_template` (`entry`, `modelid_A`, `modelid_H`, `name`, `subname`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `faction_A`, `faction_H`, `npcflag`)
        VALUES (entryNpc + i, displayId, displayId, nameNpc, subname, levelNpc, levelNpc, healthNpc, healthNpc, IF(factionNpc = 1, 1802, IF(factionNpc = 2, 1801, 35)), IF(factionNpc = 1, 1802, IF(factionNpc = 2, 1801, 35)), npcflag);
        INSERT INTO `npc_vendor` (`entry`, `item`) SELECT entryNpc + i, `entry` FROM `item_template` WHERE IF(typeSearch = 1, (`class` = type1Item) AND (`subclass` = type2Item), `inventoryType` = type1Item) AND `entry` NOT IN (SELECT `item` FROM `npc_vendor` WHERE (`entry` >= entryNpc) AND (`entry` <= entryNpc + i)) LIMIT 0,150;
        
        SET i := i + 1;
    END LOOP lbl_loop_additemvendor;
    SELECT 'Vendeurs créés : ', i;
END lbl_addNpcVendor|

CALL addNpcVendor(@entry, @displayId, @healthNpc, @levelNpc, @nameNpc, @subname, @faction, 128, 1, 15, 5)|

DROP PROCEDURE addNpcVendor|
DELIMITER ;
Merci pour ce script Smile

Retourner en haut Accueil