Postado Maio 15, 2015 10 anos Boa noite, estou tentando encontrar uma maneira de contornar um problema em meu servidor, gostaria de saber se é possível e se alguém sabe como faz. Eu queria fazer um NPC Reload, e o colocaria em um lugar com porta com storage, para apenas tutores ou players com determinado storage pudessem entrar e pedir pro npc fazer um reload no server em caso de algum bug com npc, como por exemplo: /reload npc 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if isPremium then if(msgcontains(msg, 'reload')) then npcHandler:say('You need reload server?', cid) talkState[cid] = 1 elseif(msgcontains(msg, 'yes') and (talkState[cid] == 1)) then npcHandler:say('/reload npc', cid) doSendMagicEffect(getPlayerPosition(cid), 66) talkState[cid] = 0 else npcHandler:say('You don\'t have permission to reload.', cid) talkState[cid] = 0 end end return true end npcHandler:setMessage(MESSAGE_GREET, "Hello!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Postado Julho 13, 2015 9 anos Boa noite, estou tentando encontrar uma maneira de contornar um problema em meu servidor, gostaria de saber se é possível e se alguém sabe como faz. Eu queria fazer um NPC Reload, e o colocaria em um lugar com porta com storage, para apenas tutores ou players com determinado storage pudessem entrar e pedir pro npc fazer um reload no server em caso de algum bug com npc, como por exemplo: /reload npc 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if isPremium then if(msgcontains(msg, 'reload')) then npcHandler:say('You need reload server?', cid) talkState[cid] = 1 elseif(msgcontains(msg, 'yes') and (talkState[cid] == 1)) then npcHandler:say('/reload npc', cid) doSendMagicEffect(getPlayerPosition(cid), 66) talkState[cid] = 0 else npcHandler:say('You don\'t have permission to reload.', cid) talkState[cid] = 0 end end return true end npcHandler:setMessage(MESSAGE_GREET, "Hello!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Por que você não faz por globalevents... no meu caso tive um problema com mods e fiz o reload dele no globalevents não sou scripter nem nada então... o meu ta assim... em globalevents/scripts reload.lua local reloadInfo = { {RELOAD_MODS}, } function onThink(interval, lastExecution) for i=1, #reloadInfo do doReloadInfo(RELOAD_MODS) end return true end e em globalevents.xml <globalevent name="mods" interval="1800" event="script" value="reload.lua"/> ai no seu caso você só trocaria o RELOAD_MODS pelo RELOAD_NPCS Editado Julho 13, 2015 9 anos por lrickes (veja o histórico de edições)
Postado Julho 13, 2015 9 anos Por que você não faz por globalevents... no meu caso tive um problema com mods e fiz o reload dele no globalevents não sou scripter nem nada então... o meu ta assim... em globalevents/scripts reload.lua local reloadInfo = { {RELOAD_MODS}, } function onThink(interval, lastExecution) for i=1, #reloadInfo do doReloadInfo(RELOAD_MODS) end return true end e em globalevents.xml <globalevent name="mods" interval="1800" event="script" value="reload.lua"/> ai no seu caso você só trocaria o RELOAD_MODS pelo RELOAD_NPCS Cara, algo de errado não está certo no seu script... Da uma revisada nesse(editei o seu): local reloadInfo = { RELOAD_MODS, } function onThink(interval, lastExecution) for i = 1, #reloadInfo do doReloadInfo(reloadInfo[i]) end return true end Olha, acho que isso resolve seu npc, eu não mexo com npc a muito tempo... 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 reloads = { ["mods"] = RELOAD_MODS, ["npcs"] = RELOAD_NPCS, } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = msg:lower() if getPlayerStorageValue(cid, storage) <= 0 or getPlayerGroupId(cid) <= 1 then npcHandler:say('You don\'t have permission to reload.', cid) talkState[talkUser] = 0 elseif talkState[talkUser] <= 0 and msgcontains(msg, 'reload') then local str = "" for k,v in pairs(reloads) do str = str..k..", " end str = str:sub(1, #str-2) npcHandler:say('Do you want to reload what('..str..')?', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 and reloads[msg] then doReloadInfo(reloads[msg]) doSendMagicEffect(getPlayerPosition(cid), 66) talkState[talkUser] = 0 else npcHandler:say('What???', cid) end return true end npcHandler:setMessage(MESSAGE_GREET, "Hello!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Julho 13, 2015 9 anos por Snowsz (veja o histórico de edições) _ .-'` `} _./) / } .'o \ | } '.___.'`.\ {` /`\_/ , `. } ME DA UMA NOZ! \=' .-' _`\ { `'`;/ `, } _\ @ ; } /__`;-...'--' Cluck!
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.