
quakeglobal
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
quakeglobal recebeu reputação de Fir3element em (Resolvido)Divulgar no otservlistSão R$400 por dia e se você conseguir uma resposta por email do Xinn em menos de um mês você é um vencedor.
Ta aí o contato: otservlist.org/contact
-
quakeglobal deu reputação a Wakon em Erro Grizzly Adams TFS 1.0Tenso, seria mais fácil se eu conseguisse abrir uma base pra testar asuhasuh, tenta assim:
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local choose = {} local cancel = {} local available = {} function creatureSayCallback(cid, type, msg) local player = Player(cid) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if isInArray({"tasks", "task", "mission"}, msg:lower()) then local can = getTasksByPlayer(cid) if #can > 0 then local text = "" local sep = ", " table.sort(can, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(can) do t = t + 1 if t == #can - 1 then sep = " and " elseif t == #can then sep = "." end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end selfSay("The current task" .. (#can > 1 and "s" or "") .. " that you can choose " .. (#can > 1 and "are" or "is") .. " " .. text, cid) talkState[talkUser] = 0 else selfSay("I don't have any task for you right now.", cid) end elseif msg ~= "" and canStartTask(cid, msg) then if #getPlayerStartedTasks(cid) >= tasksByPlayer then selfSay("Sorry, but you already started " .. tasksByPlayer .. " tasks.", cid) return true end local task = getTaskByName(msg) if task and player:getStorageValue(QUESTSTORAGE_BASE + task) > 0 then return false end selfSay("In this task you must defeat " .. tasks[task].killsRequired .. " " .. tasks[task].raceName .. ". Are you sure that you want to start this task?", cid) choose[cid] = task talkState[talkUser] = 1 elseif msg:lower() == "yes" and talkState[talkUser] == 1 then setPlayerStorageValue(cid, QUESTSTORAGE_BASE + choose[cid], 1) selfSay("Excellent! You can check the status of your task saying report to me.", cid) choose[cid] = nil talkState[talkUser] = 0 elseif msg:lower() == "report" then local started = getPlayerStartedTasks(cid) local finishedAtLeastOne = false local finished = 0 if started and #started > 0 then for _, id in ipairs(started) do if player:getStorageValue(KILLSSTORAGE_BASE + id) >= tasks[id].killsRequired then for _, reward in ipairs(tasks[id].rewards) do print("Rewards loaded") local deny = false if reward.storage then if player:getStorageValue(reward.storage[1]) >= reward.storage[2] then deny = true end end if isInArray({REWARD_MONEY, "money"}, reward.type:lower()) and not deny then doPlayerAddMoney(cid, reward.value[1]) elseif isInArray({REWARD_EXP, "exp", "experience"}, reward.type:lower()) and not deny then doPlayerAddExperience(cid, reward.value[1]) doPlayerSendDefaultCancel(cid, "You gained " .. reward.value[1] .. " experience points.") elseif isInArray({REWARD_ACHIEVEMENT, "achievement", "ach"}, reward.type:lower()) and not deny then if doPlayerAddAchievement then doPlayerAddAchievement(cid, reward.value[1], true) end elseif isInArray({REWARD_STORAGE, "storage", "stor"}, reward.type:lower()) and not deny then setPlayerStorageValue(cid, reward.value[1], reward.value[2]) elseif isInArray({REWARD_POINT, "points", "point"}, reward.type:lower()) and not deny then setPlayerStorageValue(cid, POINTSSTORAGE, player:getStorageValue(POINTSSTORAGE) + reward.value[1]) elseif isInArray({REWARD_ITEM, "item", "items", "object"}, reward.type:lower()) and not deny then doPlayerAddItem(cid, reward.value[1], reward.value[2]) end if reward.storage then setPlayerStorageValue(cid, reward.storage[1], reward.storage[2]) end end if tasks[id].norepeatable then setPlayerStorageValue(cid, QUESTSTORAGE_BASE + id, 2) else setPlayerStorageValue(cid, QUESTSTORAGE_BASE + id, 0) end setPlayerStorageValue(cid, KILLSSTORAGE_BASE + id, 0) if player:getStorageValue(REPEATSTORAGE_BASE + id) < 1 then setPlayerStorageValue(cid, REPEATSTORAGE_BASE + id, 0) end setPlayerStorageValue(cid, REPEATSTORAGE_BASE + id, player:getStorageValue(REPEATSTORAGE_BASE + id) + 1) finishedAtLeastOne = true finished = finished + 1 end end if not finishedAtLeastOne then selfSay("You haven't finished any task yet.", cid) else selfSay("Awesome! you finished " .. (finished > 1 and "various" or "a") .. " task" .. (finished > 1 and "s" or "") .. ". Talk to me again if you want to start a task.", cid) end else selfSay("You haven't started any task yet.", cid) end elseif msg:lower() == "started" then local started = getPlayerStartedTasks(cid) if started and #started > 0 then local text = "" local sep = ", " table.sort(started, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(started) do t = t + 1 if t == #started - 1 then sep = " and " elseif t == #started then sep = "." end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end selfSay("The current task" .. (#started > 1 and "s" or "") .. " that you started " .. (#started > 1 and "are" or "is") .. " " .. text, cid) else selfSay("You haven't started any task yet.", cid) end elseif msg:lower() == "cancel" then local started = getPlayerStartedTasks(cid) if started and #started > 0 then selfSay("Cancelling a task will make the count restart. Wich task you want to cancel?", cid) talkState[talkUser] = 2 else selfSay("You haven't started any task yet.", cid) end elseif getTaskByName(msg) and talkState[talkUser] == 2 and isInArray(getPlayerStartedTasks(cid), getTaskByName(msg)) then local task = getTaskByName(msg) if player:getStorageValue(KILLSSTORAGE_BASE + task) > 0 then selfSay("You currently killed " .. player:getStorageValue(cid, KILLSSTORAGE_BASE + task) .. "/" .. tasks[task].killsRequired .. " " .. tasks[task].raceName .. ". Cancelling this task will restart the count. Are you sure you want to cancel this task?", cid) else selfSay("Are you sure you want to cancel this task?", cid) end talkState[talkUser] = 3 cancel[cid] = task elseif msg:lower() == "yes" and talkState[talkUser] == 3 then setPlayerStorageValue(cid, QUESTSTORAGE_BASE + cancel[cid], -1) setPlayerStorageValue(cid, KILLSSTORAGE_BASE + cancel[cid], -1) selfSay("You have cancelled the task " .. (tasks[cancel[cid]].name or tasks[cancel[cid]].raceName) .. ".", cid) talkState[talkUser] = 0 elseif isInArray({"points", "rank"}, msg:lower()) then selfSay("At this time, you have " .. player:getStorageValue(cid, POINTSSTORAGE) .. " Paw & Fur points. You " .. (getPlayerRank(cid) == 5 and "are an Elite Hunter" or getPlayerRank(cid) == 4 and "are a Trophy Hunter" or getPlayerRank(cid) == 3 and "are a Big Game Hunter" or getPlayerRank(cid) == 2 and "are a Ranger" or getPlayerRank(cid) == 1 and "are a Huntsman" or "haven't been ranked yet") .. ".", cid) talkState[talkUser] = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) -
quakeglobal deu reputação a Wakon em Erro Grizzly Adams TFS 1.0Testa ai:
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local choose = {} local cancel = {} local available = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if isInArray({"tasks", "task", "mission"}, msg:lower()) then local can = getTasksByPlayer(cid) if #can > 0 then local text = "" local sep = ", " table.sort(can, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(can) do t = t + 1 if t == #can - 1 then sep = " and " elseif t == #can then sep = "." end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end selfSay("The current task" .. (#can > 1 and "s" or "") .. " that you can choose " .. (#can > 1 and "are" or "is") .. " " .. text, cid) talkState[talkUser] = 0 else selfSay("I don't have any task for you right now.", cid) end elseif msg ~= "" and canStartTask(cid, msg) then if #getPlayerStartedTasks(cid) >= tasksByPlayer then selfSay("Sorry, but you already started " .. tasksByPlayer .. " tasks.", cid) return true end local task = getTaskByName(msg) if task and getCreatureStorage(cid, QUESTSTORAGE_BASE + task) > 0 then return false end selfSay("In this task you must defeat " .. tasks[task].killsRequired .. " " .. tasks[task].raceName .. ". Are you sure that you want to start this task?", cid) choose[cid] = task talkState[talkUser] = 1 elseif msg:lower() == "yes" and talkState[talkUser] == 1 then doCreatureSetStorage(cid, QUESTSTORAGE_BASE + choose[cid], 1) selfSay("Excellent! You can check the status of your task saying report to me.", cid) choose[cid] = nil talkState[talkUser] = 0 elseif msg:lower() == "report" then local started = getPlayerStartedTasks(cid) local finishedAtLeastOne = false local finished = 0 if started and #started > 0 then for _, id in ipairs(started) do if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) >= tasks[id].killsRequired then for _, reward in ipairs(tasks[id].rewards) do print("Rewards loaded") local deny = false if reward.storage then if getCreatureStorage(cid, reward.storage[1]) >= reward.storage[2] then deny = true end end if isInArray({REWARD_MONEY, "money"}, reward.type:lower()) and not deny then doPlayerAddMoney(cid, reward.value[1]) elseif isInArray({REWARD_EXP, "exp", "experience"}, reward.type:lower()) and not deny then doPlayerAddExperience(cid, reward.value[1]) doPlayerSendDefaultCancel(cid, "You gained " .. reward.value[1] .. " experience points.") elseif isInArray({REWARD_ACHIEVEMENT, "achievement", "ach"}, reward.type:lower()) and not deny then if doPlayerAddAchievement then doPlayerAddAchievement(cid, reward.value[1], true) end elseif isInArray({REWARD_STORAGE, "storage", "stor"}, reward.type:lower()) and not deny then doCreatureSetStorage(cid, reward.value[1], reward.value[2]) elseif isInArray({REWARD_POINT, "points", "point"}, reward.type:lower()) and not deny then doCreatureSetStorage(cid, POINTSSTORAGE, getCreatureStorage(cid, POINTSSTORAGE) + reward.value[1]) elseif isInArray({REWARD_ITEM, "item", "items", "object"}, reward.type:lower()) and not deny then doPlayerAddItem(cid, reward.value[1], reward.value[2]) end if reward.storage then doCreatureSetStorage(cid, reward.storage[1], reward.storage[2]) end end if tasks[id].norepeatable then doCreatureSetStorage(cid, QUESTSTORAGE_BASE + id, 2) else doCreatureSetStorage(cid, QUESTSTORAGE_BASE + id, 0) end doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, 0) if getCreatureStorage(cid, REPEATSTORAGE_BASE + id) < 1 then doCreatureSetStorage(cid, REPEATSTORAGE_BASE + id, 0) end doCreatureSetStorage(cid, REPEATSTORAGE_BASE + id, getCreatureStorage(cid, REPEATSTORAGE_BASE + id) + 1) finishedAtLeastOne = true finished = finished + 1 end end if not finishedAtLeastOne then selfSay("You haven't finished any task yet.", cid) else selfSay("Awesome! you finished " .. (finished > 1 and "various" or "a") .. " task" .. (finished > 1 and "s" or "") .. ". Talk to me again if you want to start a task.", cid) end else selfSay("You haven't started any task yet.", cid) end elseif msg:lower() == "started" then local started = getPlayerStartedTasks(cid) if started and #started > 0 then local text = "" local sep = ", " table.sort(started, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(started) do t = t + 1 if t == #started - 1 then sep = " and " elseif t == #started then sep = "." end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end selfSay("The current task" .. (#started > 1 and "s" or "") .. " that you started " .. (#started > 1 and "are" or "is") .. " " .. text, cid) else selfSay("You haven't started any task yet.", cid) end elseif msg:lower() == "cancel" then local started = getPlayerStartedTasks(cid) if started and #started > 0 then selfSay("Cancelling a task will make the count restart. Wich task you want to cancel?", cid) talkState[talkUser] = 2 else selfSay("You haven't started any task yet.", cid) end elseif getTaskByName(msg) and talkState[talkUser] == 2 and isInArray(getPlayerStartedTasks(cid), getTaskByName(msg)) then local task = getTaskByName(msg) if getCreatureStorage(cid, KILLSSTORAGE_BASE + task) > 0 then selfSay("You currently killed " .. getCreatureStorage(cid, KILLSSTORAGE_BASE + task) .. "/" .. tasks[task].killsRequired .. " " .. tasks[task].raceName .. ". Cancelling this task will restart the count. Are you sure you want to cancel this task?", cid) else selfSay("Are you sure you want to cancel this task?", cid) end talkState[talkUser] = 3 cancel[cid] = task elseif msg:lower() == "yes" and talkState[talkUser] == 3 then doCreatureSetStorage(cid, QUESTSTORAGE_BASE + cancel[cid], -1) doCreatureSetStorage(cid, KILLSSTORAGE_BASE + cancel[cid], -1) selfSay("You have cancelled the task " .. (tasks[cancel[cid]].name or tasks[cancel[cid]].raceName) .. ".", cid) talkState[talkUser] = 0 elseif isInArray({"points", "rank"}, msg:lower()) then selfSay("At this time, you have " .. getCreatureStorage(cid, POINTSSTORAGE) .. " Paw & Fur points. You " .. (getPlayerRank(cid) == 5 and "are an Elite Hunter" or getPlayerRank(cid) == 4 and "are a Trophy Hunter" or getPlayerRank(cid) == 3 and "are a Big Game Hunter" or getPlayerRank(cid) == 2 and "are a Ranger" or getPlayerRank(cid) == 1 and "are a Huntsman" or "haven't been ranked yet") .. ".", cid) talkState[talkUser] = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) -
quakeglobal deu reputação a fernandobernardin em Teleportar para certa área ao usar item em outro itemae, script bem simples, da rep+ se te ajudar.
Crie um aquivo .lua chamado copperprison em actions, scripts. Substitua a pos, o id e o monstro.
function onUse(cid, item, fromPosition, itemEx, toPosition) pos = {x=293, y=106, z=7} <!-- aqui a posicao para que o jogador deve ser teleportado--> if itemEx.itemid == 2768 then <!-- aqui substitua o id 2768 pelo id do Copper Prison Pedestal--> doTeleportThing(cid,pos) doCreateMonster("Demon",pos) <!-- aqui o monstro que você deseja criar--> else doPlayerSendCancel(cid, "Use esta chave no lugar certo.") end return true end agora é só adicionar o script nas actions. Cole esta linha no arquivo actions, dentro da pasta actions.
<action itemid="2520" event="script" value="copperprison.lua"/> <!-- aqui substitua o id 2520 pelo id da Copper Prison Key--> e é só isso, da rep+ se ajudei.
-
quakeglobal deu reputação a Summ em [AJUDA] Raids TFS 1.0local raids = { ["Sunday"] = { ["15:00"] = { name= "Gaz'Haragoth", -- Nome do monstro a ser sumonado pos = {toPos= {x= 649, y= 1021, z= 7}, fromPos= {x= 654, y=1027, z= 7}}, --Vai ser sumonado de toPos e até fromPos quantidade = 1, -- Quantidade a ser sumonada time = 15, -- Se no tempo determinado em time= x, os monstros não forem mortos eles são removidos automaticamente } }, ["Monday"] = { ["20:00"] = { name= "Zavarash", -- Nome do monstro a ser sumonado pos = {toPos= {x= 243, y= 293, z= 7}, fromPos= {x= 250, y=293, z= 7}}, --Vai ser sumonado de toPos e até fromPos quantidade = 1, -- Quantidade a ser sumonada time = 15, -- Se no tempo determinado em time= x, os monstros não forem mortos eles são removidos automaticamente } }, ["Tuesday"] = { ["20:00"] = { name= "Omrafir", -- Nome do monstro a ser sumonado pos = {toPos= {x= 243, y= 293, z= 7}, fromPos= {x= 250, y=293, z= 7}}, --Vai ser sumonado de toPos e até fromPos quantidade = 1, -- Quantidade a ser sumonada time = 2, -- Se no tempo determinado em time= x, os monstros não forem mortos eles são removidos automaticamente } }, ["Wednesday"] = { ["20:00"] = { name= "Horadron", -- Nome do monstro a ser sumonado pos = {toPos= {x= 243, y= 293, z= 7}, fromPos= {x= 250, y=293, z= 7}}, --Vai ser sumonado de toPos e até fromPos quantidade = 1, -- Quantidade a ser sumonada time = 15, -- Se no tempo determinado em time= x, os monstros não forem mortos eles são removidos automaticamente } }, ["Thursday"] = { ["20:00"] = { name= "Prince Drazzak", -- Nome do monstro a ser sumonado pos = {toPos= {x= 243, y= 293, z= 7}, fromPos= {x= 250, y=293, z= 7}}, --Vai ser sumonado de toPos e até fromPos quantidade = 1, -- Quantidade a ser sumonada time = 15, -- Se no tempo determinado em time= x, os monstros não forem mortos eles são removidos automaticamente } }, ["Friday"] = { ["14:36"] = { name= "Terofar", -- Nome do monstro a ser sumonado pos = {toPos= {x= 243, y= 293, z= 7}, fromPos= {x= 250, y=293, z= 7}}, --Vai ser sumonado de toPos e até fromPos quantidade = 1, -- Quantidade a ser sumonada time = 15, -- Se no tempo determinado em time= x, os monstros não forem mortos eles são removidos automaticamente } }, ["Saturday "] = { ["15:00"] = { name= "Mawhawk", -- Nome do monstro a ser sumonado pos = {toPos= {x= 243, y= 293, z= 7}, fromPos= {x= 250, y=293, z= 7}}, --Vai ser sumonado de toPos e até fromPos quantidade = 1, -- Quantidade a ser sumonada time = 15, -- Se no tempo determinado em time= x, os monstros não forem mortos eles são removidos automaticamente } }, } function doRemoveMonster(toPos, fromPos) for x = toPos.x, fromPos.x do for y = toPos.y , fromPos.y do local creature = getTopCreature({x=x, y= y, z= fromPos.z}).uid; if creature ~= 0 and isMonster(creature) then doRemoveCreature(creature) end end end return true end function onThink(interval, lastExecution) local hours = tostring(os.date("%X")):sub(1, 5) local days = raids[os.date("%A")][hours] local raids_storage = 99997 if days then if getGlobalStorageValue(raids_storage) <= os.time() then doBroadcastMessage("The invasion of " .. days.name .. " started.") pos = {x= math.random(days.pos.toPos.x, days.pos.fromPos.x), y= math.random(days.pos.toPos.y, days.pos.fromPos.y), z= days.pos.fromPos.z} monster = 0; repeat doSummonCreature(days.name, pos) monster = monster + 1 until monster == days.quantidade addEvent(function() doRemoveMonster(days.pos.toPos, days.pos.fromPos) end, days.time*1000*60) setGlobalStorageValue(raids_storage, os.time()+60) end end return true end