```local config = { effect = 12, validTiles = { 100,101,103,104,106,108,109,919,1071,231,280,351,352,354,355,368,405,406, 407,412,413,414,415,416,417,419,420,421,422,424,425,426,431,446,447,448, 449,450,451,452,453,454,455,456,457,458,459,460,471,471,473,474,709,710,711, 493,598,670,671,708,724,777,790,791,804,806,4832,4833,836,918,920,926, 927,929,936,937,946,947,948,956,957,958,965,966,1284,1509,194,6210,6213, 4595,4608,4609,4610,4611,4612,4613,4614,4515,4616,4691,4692,4693,4694, 4695,3263,3264,3265,6389,5770,5769,5768,3152,3153,3154,3155,3156,3157, 3169,3170,3171,3172,3177,3196,3200,3201,3202,3215,3216,3217,7062,7063, 7064,7065,7066,3139,7272,7348,7350,7351,7352,7353,7354,7355,7356,7357, 7358,6838,6967,4526,4530,4532,4535,4566,4570,4571,4572,9021,9022,9023, 9024,9025,9043,9044,9045,9046,9047,9048,9049,9050,9059,9067,9068,9069, 9070,9071,9072,8326,8327,8328,8329,8423,8425,8426,8427,8428,8429,8430, 8431,8424,8578,8591,8594,8597,8598,9192,9193,9194,9195,9199,9224,9225, 9226,9227,9228,9229,9230,9231,9232,9146,9272,9673,9883,9144 } } function onSay(cid, words, param, channel) if(param == '') then doPlayerSendCancel(cid, "Parameter required (tile id)") return true end if not tonumber(param) then doPlayerSendCancel(cid, "Invalid parameter:" .. tostring(param)) return true elseif(not isInArray(config.validTiles, tonumber(param))) then doPlayerSendCancel(cid, "Tile with ID: " .. tostring(param) .. " has not been configured.") return true end local pos = getCreaturePosition(cid) local startPos = {x=pos.x-1, y=pos.y-1, z=pos.z} -- top left (dont change) local endPos = {x=pos.x+1, y=pos.y+1, z=pos.z} -- bottom right (dont change) for i = startPos.y, endPos.y, 1 do for j = startPos.x, endPos.x, 1 do doTransformItem(getTileInfo({x=j, y=i, z=pos.z}).uid, tonumber(param)) doSendMagicEffect(pos, config.effect) end end return true end```