Postado Junho 6, 2017 7 anos Seu TFS não é o 0.4? Pesquisei e vi que os 0.4 tem o comando "getPlayerPVPBlessing(cid)" O Tópico da qual me mandou também se encontra essa função.
Postado Junho 6, 2017 7 anos Autor 45 minutos atrás, Frenesy disse: Seu TFS não é o 0.4? Pesquisei e vi que os 0.4 tem o comando "getPlayerPVPBlessing(cid)" O Tópico da qual me mandou também se encontra essa função. Sim é TFS 0.4, porem da este erro o.O...eu não teria que colocar este comando "getPlayerPVPBlessing" em algum outro local?
Postado Junho 6, 2017 7 anos Ele faz a verificação da Bless pra você não ter que comprar de novo. Sem essa verificação, ficaria 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 function doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) 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(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then selfSay('Vejamos, posso vender pra você {Bless} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Comando Bless') or msgcontains(msg, 'comando bless')) then selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {120.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 120000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then selfSay('Sem problemas.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then selfSay('Eu posso lhe conceder todas as benções por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid) talkState[talkUser] = 3 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then selfSay('Você já tem todas as benções.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 50000) == TRUE then selfSay('Você agora está protegido!', cid) doSendMagicEffect(getPlayerPosition(cid), 49) doPlayerAddBlessing(cid, 1) doPlayerAddBlessing(cid, 2) doPlayerAddBlessing(cid, 3) doPlayerAddBlessing(cid, 4) doPlayerAddBlessing(cid, 5) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then selfSay('Tudo bem, mas tenho novas coisas para vender.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Bless PvP') or msgcontains(msg, 'bless pvp')) then selfSay('Eu posso lhe conceder a Bless PvP por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid) talkState[talkUser] = 4 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 4) then if doPlayerRemoveMoney(cid, 50000) == TRUE then selfSay('Você agora está protegido!', cid) doSendMagicEffect(getPlayerPosition(cid), 49) doPlayerSetPVPBlessing(cid) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 4) then selfSay('Volte quando tiver interesse.', cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Postado Junho 6, 2017 7 anos Autor 50 minutos atrás, Frenesy disse: Ele faz a verificação da Bless pra você não ter que comprar de novo. Sem essa verificação, ficaria 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 function doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) 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(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then selfSay('Vejamos, posso vender pra você {Bless} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Comando Bless') or msgcontains(msg, 'comando bless')) then selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {120.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 120000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then selfSay('Sem problemas.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then selfSay('Eu posso lhe conceder todas as benções por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid) talkState[talkUser] = 3 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then selfSay('Você já tem todas as benções.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 50000) == TRUE then selfSay('Você agora está protegido!', cid) doSendMagicEffect(getPlayerPosition(cid), 49) doPlayerAddBlessing(cid, 1) doPlayerAddBlessing(cid, 2) doPlayerAddBlessing(cid, 3) doPlayerAddBlessing(cid, 4) doPlayerAddBlessing(cid, 5) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then selfSay('Tudo bem, mas tenho novas coisas para vender.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Bless PvP') or msgcontains(msg, 'bless pvp')) then selfSay('Eu posso lhe conceder a Bless PvP por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid) talkState[talkUser] = 4 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 4) then if doPlayerRemoveMoney(cid, 50000) == TRUE then selfSay('Você agora está protegido!', cid) doSendMagicEffect(getPlayerPosition(cid), 49) doPlayerSetPVPBlessing(cid) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 4) then selfSay('Volte quando tiver interesse.', cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora mostrou o efeito que comprei o Bless PvP, porem ainda assim deste jeito seria muito disperdicio de dinheiro a pessoa acabar gastando dinheiro com um tipo de bless que já tem, teria que dizer que o Player já tem, caso tenha ehhe...e ainda aparece esse erro na distro: Spoiler Sera que eu não teria que adicionar alguma função na pasta npc/lib/npcsystem/npchandler? Entendi que é algo na linha 390 certo? de qualquer forma vou colocar um pedaço da lib npchandler, porque é muito grande... Bom aqui está o meu npchandler apartir da linha 385: Spoiler 385- if(self.keywordHandler ~= nil) then386- if((self:isFocused(cid) and (class == TALKTYPE_PRIVATE_PN or NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT)) or not self:isFocused(cid)) then387- local ret = self.keywordHandler:processMessage(cid, msg)388- if(not ret) then389- local callback = self:getCallback(CALLBACK_MESSAGE_DEFAULT)390- if(callback ~= nil and callback(cid, class, msg)) then391- if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then392- self.talkStart[cid] = os.time()393- else394- self.talkStart = os.time()395- end396- end397- else398- if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then399- self.talkStart[cid] = os.time()400- else401- self.talkStart = os.time()402- end403- end404- end405- end @Edite Creio que não tenha nada ve a pasta Lib, verifiquei de outro TFS 0.4 e é a mesma coisa...que estranho este erro Editado Junho 6, 2017 7 anos por Digoshow (veja o histórico de edições)
Postado Junho 6, 2017 7 anos Solução 4 minutos atrás, Digoshow disse: Agora mostrou o efeito que comprei o Bless PvP, porem ainda assim deste jeito seria muito disperdicio de dinheiro a pessoa acabar gastando dinheiro com um tipo de bless que já tem, teria que dizer que o Player já tem, caso tenha ehhe kkkk Pois é, cara. A função "get" verificaria se ele já tem ou não a bless. Cara, eu vou fazer o seguinte. Eu vou DEDUZIR que essa benção que você quer seja a 6. Eu não tenho certeza, mas olhando o script da Ceremonial Ankh, aparece essa Bless 6. Deve ser elam já que as 5 primeiras são as bless normais. Sendo assim, teste esse: 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 doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) 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(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then selfSay('Vejamos, posso vender pra você {Bless} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Comando Bless') or msgcontains(msg, 'comando bless')) then selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {120.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 120000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then selfSay('Sem problemas.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then selfSay('Eu posso lhe conceder todas as benções por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid) talkState[talkUser] = 3 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then selfSay('Você já tem todas as benções.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 50000) == TRUE then selfSay('Você agora está protegido!', cid) doSendMagicEffect(getPlayerPosition(cid), 49) doPlayerAddBlessing(cid, 1) doPlayerAddBlessing(cid, 2) doPlayerAddBlessing(cid, 3) doPlayerAddBlessing(cid, 4) doPlayerAddBlessing(cid, 5) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then selfSay('Tudo bem, mas tenho novas coisas para vender.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Bless PvP') or msgcontains(msg, 'bless pvp')) then selfSay('Eu posso lhe conceder a Bless PvP por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid) talkState[talkUser] = 4 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 4) then if getPlayerBlessing(cid, 6) then selfSay('Você já tem todas as benções.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 50000) == TRUE then selfSay('Você agora está protegido!', cid) doSendMagicEffect(getPlayerPosition(cid), 49) -- doPlayerSetPVPBlessing(cid) doPlayerAddBlessing(cid, 6) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 4) then selfSay('Volte quando tiver interesse.', cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
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.