Ir para conteúdo
  • Cadastre-se

Posts Recomendados

  • Moderador

Estou com um problema em um Script aqui, eu não sei se é por falta de Script ou se é no Script. Vou explicar como que ele funciona. Você vai lá no NPC e pega a missão de matar 30 Jogadores, mais não é qualquer Jogador que irá contabilizar as mortes, é preciso ser level 350+ para contabilizar, por exemplo, eu sou level 50 e mato um cara level 349, ai essa morte não irá contar, pois o cara não era level 350. Caso você mate os 30 Jogadores level 350+ você volta lá no NPC e entrega a missão, dai você uma prêmio e poderá fazer a missão de novo depois de 24h.

 

NPC

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Morte Task" script="data/npc/scripts/morte.lua" floorchange="0" walkinterval="2000" access="5" level="1" emblem="2" maglevel="1">
    <health now="150" max="150"/>
    <look type="300" skull="2"/>
    <parameters>
        <parameter key="module_shop" value="1" />
        <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu tenho uma {missao} de PvP para voce." />
    </parameters>
</npc>

Spoiler

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(msgcontains(msg, 'missao') or msgcontains(msg, 'mission')) then
        setPlayerStorageValue(cid,22867,1)
        selfSay('Mate 35 jogadores level 350 ou mais e eu lhe presentiarei com uma surprise box. Você pode verificar seu progresso com o comando !mortes, ja matou? diga yes', cid)
        talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
    if getPlayerLevel(cid) >= 300 then
        if getPlayerStorageValue(cid,34766) < os.time() then
            if(getPlayerStorageValue(cid, 34765) >= 35) then                
                doPlayerAddItem(cid, 10503)
                setPlayerStorageValue(cid,34766, os.time()+(1*24*60*60))
                setPlayerStorageValue(cid,34765,0)
                setPlayerStorageValue(cid,22867,0)
                selfSay('Obrigado, você pode estar fazendo esta missão novamente amanha.', cid)
            else
                selfSay('Você ainda não cumprio com o objetivo.', cid)
            end
        else
            selfSay('Você ja fez esta task em menos de 24 horas espere 1 dia e volte novamente.', cid)
        end
    else
        selfSay('Você precisa ser level superior a 350 para completar a missao.', cid)
    end
        talkState[talkUser] = 0
    elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
        talkState[talkUser] = 0
        selfSay('Ok bye.', cid)
    end

    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Creaturescripts

Spoiler

local level = 350
function onKill(cid, target, lastHit)
    if (isPlayer(cid) and isPlayer(target)) then
        if getPlayerLevel(target) >= 350 then
            if getPlayerIp(cid) ~= getPlayerIp(target) then
                if getPlayerStorageValue(cid,22867) >= 1 and getPlayerStorageValue(cid,34765) <= 35 then
                    setPlayerStorageValue(cid, 34765, getPlayerStorageValue(cid, 34765) + 1)
                end
            end
        end
    end
    return true
end

Spoiler

<event type="kill" name="morte" event="script" value="morte.lua"/>

 

Talkactions

Spoiler

function onSay(cid, words, param)
    if getPlayerStorageValue(cid,22867) >= 1 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você matou "..getPlayerStorageValue(cid, 34765).." jogadores level 350+.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui uma task de morte ativa.")
    end
end

Spoiler

<talkaction words="!mortes" event="script" value="mortes.lua"/>

 

Esses são os Scripts. O erro que estar surgindo é que quando você mata um Jogador level 350+ ele não estar contabilizando as mortes. E sempre fica -1 morte.

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Moderador

@victor4312 ? Pior que é mesmo ?? nem parei pra ver isso, em fim, vou dar como resolvido, caso seja outra coisa além de não poder matar MCS eu volto aqui e posto o erro.

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo