Postado Março 14, 2019 6 anos Olá tibiaking, tudo bem? então, eu queria um script de chuva de ITENS, ao falar /chuvadeitens, 2160 aparecia golds em certos LOCAIS de EARTH. agradeceria... Servidor : 860. TFS 0.4 https://github.com/italoxxx1
Postado Março 15, 2019 6 anos Solução Coloquei para não criar mais de um item em uma mesma posição, exceto se for um item juntável e você queira que a quantidade seja aleatória. Em data/talkactions/scripts crie o arquivo rainitems.lua e cole isto dentro: Spoiler RAIN_CONFIG = { broadcast_message = true, -- 'true' para enviar a mensagem da chuva para o servidor, 'false' para não enviar stackable_items = { -- configuração dos itens juntáveis (caso queira que a quantidade seja diferente de 1, será uma quantidade entre o min e o max) [2160] = {min = 2, max = 100}, -- [id do item] = {min = mínima quantidade, max = máxima quantidade} [2152] = {min = 2, max = 10} }, number_of_items = 5, -- número de itens que aparecem com a chuva -- Caso queira que crie em todas as posições, coloque -1 -- Caso o número de itens seja maior que a quantidade de posições, prevalece a quantidade de posições positions = { -- posições possíveis dos itens aparecerem [1] = {x = 1, y = 1, z = 1}, [2] = {x = 1, y = 1, z = 1}, [3] = {x = 1, y = 1, z = 1}, [4] = {x = 1, y = 1, z = 1}, [5] = {x = 1, y = 1, z = 1}, [6] = {x = 1, y = 1, z = 1}, [7] = {x = 1, y = 1, z = 1}, [8] = {x = 1, y = 1, z = 1} } } function onSay(cid, words, param, channel) if param == "" or not tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Enter item id.") return true end local item_id = tonumber(param) local check = getItemDescriptionsById(item_id) if not check then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item id not found.") return true end local item_name = check.name local check_item, counter = RAIN_CONFIG.stackable_items[item_id], 0 local tab_pos, tab_pos_index, positions_count = {}, {}, #RAIN_CONFIG.positions local items_count = (positions_count < RAIN_CONFIG.number_of_items) and positions_count or RAIN_CONFIG.number_of_items if not isInArray({positions_count, -1}, items_count) then repeat local rand = math.random(1, positions_count) if not isInArray(tab_pos_index, rand) then table.insert(tab_pos_index, rand) table.insert(tab_pos, RAIN_CONFIG.positions[rand]) counter = counter + 1 end until counter == items_count else tab_pos = RAIN_CONFIG.positions end for _, rain_pos in pairs(tab_pos) do doSendDistanceShoot({x = rain_pos.x - math.random(4, 6), y = rain_pos.y - 5, z = rain_pos.z}, rain_pos, CONST_ANI_FIRE) for i, eff in pairs({CONST_ME_GROUNDSHAKER, CONST_ME_TUTORIALARROW, CONST_ME_TUTORIALSQUARE}) do doSendMagicEffect(rain_pos, eff) end addEvent(function() local create_count = check_item and math.random(check_item.min, check_item.max) or 1 doCreateItem(item_id, create_count, rain_pos) end, 100) end if RAIN_CONFIG.broadcast_message then doBroadcastMessage("Rain of " .. item_name .. " right now!\nGet as much as you can!", MESSAGE_EVENT_ADVANCE) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You caused a rain of " .. item_name .. "!") return true end Em talkactions.xml, adicione a tag: <talkaction words="/rain" access="4" event="script" value="rainitems.lua"/> Edite o "access" como quiser. Utilização do comando: /rain [id do item] Ex.: /rain 2160 O resultado será algo assim: Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Março 16, 2019 6 anos Autor 9 horas atrás, Dwarfer disse: Coloquei para não criar mais de um item em uma mesma posição, exceto se for um item juntável e você queira que a quantidade seja aleatória. Em data/talkactions/scripts crie o arquivo rainitems.lua e cole isto dentro: Ocultar conteúdo RAIN_CONFIG = { broadcast_message = true, -- 'true' para enviar a mensagem da chuva para o servidor, 'false' para não enviar stackable_items = { -- configuração dos itens juntáveis (caso queira que a quantidade seja diferente de 1, será uma quantidade entre o min e o max) [2160] = {min = 2, max = 100}, -- [id do item] = {min = mínima quantidade, max = máxima quantidade} [2152] = {min = 2, max = 10} }, number_of_items = 5, -- número de itens que aparecem com a chuva -- Caso queira que crie em todas as posições, coloque -1 -- Caso o número de itens seja maior que a quantidade de posições, prevalece a quantidade de posições positions = { -- posições possíveis dos itens aparecerem [1] = {x = 1, y = 1, z = 1}, [2] = {x = 1, y = 1, z = 1}, [3] = {x = 1, y = 1, z = 1}, [4] = {x = 1, y = 1, z = 1}, [5] = {x = 1, y = 1, z = 1}, [6] = {x = 1, y = 1, z = 1}, [7] = {x = 1, y = 1, z = 1}, [8] = {x = 1, y = 1, z = 1} } } function onSay(cid, words, param, channel) if param == "" or not tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Enter item id.") return true end local item_id = tonumber(param) local check = getItemDescriptionsById(item_id) if not check then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item id not found.") return true end local item_name = check.name local check_item, counter = RAIN_CONFIG.stackable_items[item_id], 0 local tab_pos, tab_pos_index, positions_count = {}, {}, #RAIN_CONFIG.positions local items_count = (positions_count < RAIN_CONFIG.number_of_items) and positions_count or RAIN_CONFIG.number_of_items if not isInArray({positions_count, -1}, items_count) then repeat local rand = math.random(1, positions_count) if not isInArray(tab_pos_index, rand) then table.insert(tab_pos_index, rand) table.insert(tab_pos, RAIN_CONFIG.positions[rand]) counter = counter + 1 end until counter == items_count else tab_pos = RAIN_CONFIG.positions end for _, rain_pos in pairs(tab_pos) do doSendDistanceShoot({x = rain_pos.x - math.random(4, 6), y = rain_pos.y - 5, z = rain_pos.z}, rain_pos, CONST_ANI_FIRE) for i, eff in pairs({CONST_ME_GROUNDSHAKER, CONST_ME_TUTORIALARROW, CONST_ME_TUTORIALSQUARE}) do doSendMagicEffect(rain_pos, eff) end addEvent(function() local create_count = check_item and math.random(check_item.min, check_item.max) or 1 doCreateItem(item_id, create_count, rain_pos) end, 100) end if RAIN_CONFIG.broadcast_message then doBroadcastMessage("Rain of " .. item_name .. " right now!\nGet as much as you can!", MESSAGE_EVENT_ADVANCE) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You caused a rain of " .. item_name .. "!") return true end Em talkactions.xml, adicione a tag: <talkaction words="/rain" access="4" event="script" value="rainitems.lua"/> Edite o "access" como quiser. Utilização do comando: /rain [id do item] Ex.: /rain 2160 O resultado será algo assim: Deu esse erro aqui mano... https://github.com/italoxxx1
Postado Março 16, 2019 6 anos @ITALOx Vê se você não digitou algo a mais aí sem querer. Copiei o conteúdo que postei para checar se era algo ao copiar daqui do fórum e, pelo menos aqui, mudou automaticamente a linha: [2152] = {min = 2, max = 10} para [2152] = {min = 2, max = 1?0} colocando aquela "?" no meio. Deve ser algo relacionado à formatação do fórum, não sei. Dá uma olhada se não apareceu algo assim aí também ou você colocou algo por engano. Contato: Email: [email protected] Discord: Dwarfer#2715
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.