Place un ingredient dans l'interface de craft/atelier. NECESSITE UN ABONNEMENT PREMIUM (verifie desktopAccess et craftOther ou isFullAccess). Appelle exchange.putItem() en interne pour placer l'objet depuis l'inventaire vers l'interface de craft. L'atelier doit etre ouvert au prealable.
Paramètres:
Nom
Type
Description
GID
number
GID de l'ingredient (identifiant general de l'objet)
quantity
number
Quantite a placer dans l'interface
Exemple:
example.lua
-- Placer les ingredients pour une recette-- Exemple: Crafter du pain (necessite de la farine)craft:PutItem(289, 10) -- 10x Farine-- Exemple complet avec plusieurs ingredients-- Recette fictive necessitant Fer + Bois + Ficellecraft:PutItem(312, 2) -- 2x Fercraft:PutItem(460, 1) -- 1x Boiscraft:PutItem(425, 1) -- 1x Ficelle-- Lancer le craft apres avoir place les ingredientscraft:Ready()-- Avec verification d'inventaire avant de placerlocalfer=inventory:itemCount(312)localbois=inventory:itemCount(460)iffer>=2andbois>=1thencraft:PutItem(312, 2)craft:PutItem(460, 1)craft:Ready()global:printSuccess("Craft lance!")elseglobal:printError("Ingredients manquants!")global:printMessage("Fer: " ..fer.."/2, Bois: " ..bois.."/1")end
NECESSITE un abonnement premium. Affiche "Vous n'avez pas d'abonnement pour l'artisanat." si non autorise. L'ingredient doit etre present dans l'inventaire.
ChangeQuantityToCraft
🎮Méthode
Definit le nombre d'objets a fabriquer pour le prochain craft. NECESSITE UN ABONNEMENT PREMIUM. Envoie le packet 6597 (ExchangeObjectTransfertQuantityMessage) pour modifier la quantite. Attend 1 seconde puis suspend le script jusqu'a reception du packet 176 (confirmation).
Paramètres:
Nom
Type
Description
Quantity
number
Quantite a fabriquer (generalement 1 a 999)
Exemple:
La quantite doit etre compatible avec les ingredients places. Si vous placez 10 farines et demandez 20 pains, le craft echouera.
Ready
🎮Méthode
Lance la fabrication avec les ingredients places dans l'interface. NECESSITE UN ABONNEMENT PREMIUM. Attend 1 seconde, puis envoie un ExchangeReadyMessage avec ready=true et le characterId du personnage. Suspend le script jusqu'a reception du packet 176 (confirmation de fin de craft).
Retourne:void
Exemple:
NECESSITE un abonnement premium. Assurez-vous que tous les ingredients sont places via PutItem() avant d'appeler Ready(). Le craft peut echouer si la recette est incorrecte ou les ingredients insuffisants.
-- Definir la quantite avant le craft
craft:ChangeQuantityToCraft(10)
-- Workflow complet: crafter 50 pains
-- 1. Placer les ingredients (1 farine = 1 pain)
craft:PutItem(289, 50) -- 50x Farine
-- 2. Definir la quantite
craft:ChangeQuantityToCraft(50)
-- 3. Lancer la fabrication
craft:Ready()
-- Craft en masse avec boucle
local quantiteParCraft = 100
local totalACrafter = 500
local craftsNecessaires = totalACrafter / quantiteParCraft
for i = 1, craftsNecessaires do
craft:PutItem(gidIngredient, quantiteParCraft)
craft:ChangeQuantityToCraft(quantiteParCraft)
craft:Ready()
global:printMessage("Craft " .. i .. "/" .. craftsNecessaires)
global:delay(2000) -- Attendre entre chaque craft
end
craft:Ready()
example.lua
-- Sequence complete de craft automatise
function crafterRecette(ingredients, quantite)
-- Verifier et placer tous les ingredients
for _, ingredient in ipairs(ingredients) do
local enStock = inventory:itemCount(ingredient.gid)
local besoin = ingredient.qty * quantite
if enStock < besoin then
global:printError("Manque " .. d2data:getItemName(ingredient.gid) ..
": " .. enStock .. "/" .. besoin)
return false
end
craft:PutItem(ingredient.gid, besoin)
end
-- Definir la quantite
craft:ChangeQuantityToCraft(quantite)
-- Lancer la fabrication
craft:Ready()
global:printSuccess("Craft de " .. quantite .. " objets lance!")
return true
end
-- Utilisation: crafter 10 pains (1 farine = 1 pain)
local recettePain = {
{gid = 289, qty = 1} -- 1 Farine par pain
}
crafterRecette(recettePain, 10)
-- Script de boulangerie automatique
function boulangerieAuto()
local farine = inventory:itemCount(289)
while farine >= 100 do
craft:PutItem(289, 100)
craft:ChangeQuantityToCraft(100)
craft:Ready()
global:delay(3000) -- Attendre la fin du craft
farine = inventory:itemCount(289)
global:printMessage("Farine restante: " .. farine)
end
global:printSuccess("Boulangerie terminee!")
end