Ir para conteúdo

Adriano SwaTT

Membro
  • Registro em

  • Última visita

Solutions

  1. Adriano SwaTT's post in (Resolvido)[PEDIDO]Promotion por item was marked as the answer   
    Bom dia.
     
    Abaixo segue o script:

    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 ---------- Início das Configurações ---------- local item1 = {2157, 100} -- Id e Quantidade local item2 = {2328, 100} -- Id e Quantidade local get = getItemNameById ---------- Fim das Configurações --------------     if msgcontains(msg, 'promote') or msgcontains(msg, 'promotion') then selfSay('Deseja ser promovido pagando '..item1[2]..' '..get(item1[1])..' e '..item2[2]..' '..get(item2[1])..'?', cid) talkState[talkUser] = 1     elseif talkState[talkUser] == 1 then     if msgcontains(msg, 'sim') or msgcontains(msg, 'yes') then     if getPlayerItemCount(cid, item1[1]) >= item1[2] and getPlayerItemCount(cid, item2[1]) >= item2[2] then         doPlayerRemoveItem(cid, item1[1], item1[2])         doPlayerRemoveItem(cid, item2[1], item2[2])         doSendMagicEffect(getCreaturePosition(cid), 14)         setPlayerPromotionLevel(cid, getPlayerPromotionLevel(cid)+1)         selfSay('Parabens agora voce e um(a) '..getPlayerVocationName(getPlayerVocation(cid))..'!', cid)     else         selfSay('voce nao tem os items exigidos.', cid)         talkState[talkUser] = 0     end     end end     return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Obs: Testado e funcionando perfeitamente em 0.3.6, porém, creio que funcione com você também.
     
    Boa sorte.
  2. Adriano SwaTT's post in (Resolvido)[Ajuda] setPlayerStorageValue Lendo variáveis was marked as the answer   
    Teste assim:
     
    O arquivo npcquest.lua ficará assim:

    local msg_completed = 'Voce completou sua task de Orcs.' local monster = 'Orc' local strg = 9755 local strg_c = 9756 -- Storage ao completar missão local qtdd = 3 -- Quantidade que ele precisa matar.           function onKill(cid, target, lastHit) local get = getPlayerStorageValue(cid, strg)           if isMonster(target) and getCreatureName(target):lower() == monster:lower() then         if get < qtdd then             setPlayerStorageValue(cid, strg, (get + 1))             doCreatureSay(cid, 'Voce matou '..get..' orcs ateh agora.', TALKTYPE_ORANGE_1)         else             setPlayerStorageValue(cid, strg_c, 1)             doCreatureSay(cid, msg_completed, TALKTYPE_ORANGE_1)         end        end return true end         function onCombat(cid, target)     if getPlayerStorageValue(cid, strg) >= 1 then     if isMonster(target) and getCreatureName(target):lower() == monster:lower() then         registerCreatureEvent(target, "NPCQuest")     end     end     return true end  
    Em CreatureScripts.xml as tags abaixo:

    <event type="kill" name="NPCQuest" event="script" value="npcquest.lua"/> <event type="combat" name="NPCQuest" event="script" value="npcquest.lua"/>  
    E em Login.lua, adicione a tag:

    registerCreatureEvent(target, "NPCQuest")  
    Boa sorte.
  3. Adriano SwaTT's post in (Resolvido)Habilitar um OnLogout a um Script was marked as the answer   
    Engraçado que nem mexi em Funções, então o erro do END não deveria aparecer agora.
    Enfim, veja se isso resolve:
     



     
    Boa sorte.
  4. Adriano SwaTT's post in (Resolvido)[PEDIDO] NPC que dá storage was marked as the answer   
    Crie o arquivo do NPC.xml normalmente e a gosto... e no arquivo lua cole o script abaixo:
     



    Não testei, mas creio que funcione.
    Vale lembrar de configurar a storage no começo do script.
    local strg = 12130 -- Valor da Storage Boa sorte.
  5. Adriano SwaTT's post in (Resolvido)[Dúvida] Existe como deixar a stamina subindo mesmo online? was marked as the answer   
    Estou montando pra ti o script, está funfando, só que a stamina só aparece atualizada quando o player reloga.
    Vou fazer uns testes e já posto.
     
     
    @EDIT'
     
    Vejamos, declare o globalevents.xml:
    <globalevent name="stamina" interval="60" event="script" value="stamina.lua"/> E o script chamado stamina.lua na pasta scripts:
    local maxstamina = 2520 -- quantidade máxima de Stamina (Não sei se é este valor mesmo) local qtdd = 1 -- quantidade de Stamina é add por minuto local notFight = true -- Só Subir Stamina Quando Não Estiver Caçando ou Lutando. function onThink(cid, interval) for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) local get = getPlayerStamina(cid) if notFight == true and getCreatureCondition(cid, CONDITION_INFIGHT) then return true end if get < maxstamina and isPlayer(cid) then setPlayerStamina(cid, get + qtdd) end end return true end BUG: A Stamina só atualiza quando o player reloga.
    Mas creio que isso seja da própria Source, pois inGame a Stamina não costuma subir mesmo.
    #Palpite.
    Bom, a base está aí, agora só resta algum scripter de verdade resolver este detalhe.
     
    Boa sorte.
  6. Adriano SwaTT's post in (Resolvido)Piso que só pode passar de fly,ride ou pokemon was marked as the answer   
    Acusa a mensagem de que "Apenas Pokemons podem passar" mas não teleporta o player para trás?
    Não da nenhum erro no Launcher do Server?
    Pelo que parece o servidor não está reconhecendo a função "fromPosition".
    Que dependendo da versão do seu Servidor, pode ser "fromPos", "lastPosition", "lastPos", etc..
     
     
    Sendo assim, teste esta abaixo, que pode ser configurada a gosto:
    local strg1, strg2, strg3 = 17000, 17001, 63215  -- aqui agora coloque o Storage do Surf que não me forneceu         function onStepIn(cid, fromPosition, toPosition) local get1 = getPlayerStorageValue(cid, strg1) local get2 = getPlayerStorageValue(cid, strg2) local get3 = getPlayerStorageValue(cid, strg3) local get_pos = getCreaturePosition(cid)     if isPlayer(cid) == true and get1 > 0 or get2 > 0 or get3 > 0 then         doPlayerSendTextMessage(cid, 21, "Welcome.")     elseif (not isPlayer(cid)) == true then         return true     else         doPlayerSendCancel(cid, "Only Pokemons pass here.")         doTeleportThing(cid, {x=get_pos.x, y=get_pos.y+1, z=get_pos.z})     end   return true end  
    Espero que tenha compreendido.
    Qualquer dúvida, pode ficar a vontade em perguntar.
     
    Boa sorte.
  7. Adriano SwaTT's post in (Resolvido)Ajuda Simples [doPlayerAddMana(cid, -mana)] was marked as the answer   
    Galera, obrigado pelas dicas, mas já encontrei a solução.
    Que foi adicionar um "false" a tag, veja como ficou e o porquê:
     
    A solução foi add "false" a tag:

    doPlayerAddMana(cid, -mana, false) Pois existe um bool que é confirmado sempre como verdadeiro caso não use o parâmetro indiciado a ele ( 3 ), caso verdadeiro, o script irá executar a removação de mana como combat, ou seja, toda a funcionalidade em relação ao combate será executada, caso falso, ele irá retorna apenas a mudança de mana. - Null (Usuário)
     
    Abraços.
  8. Adriano SwaTT's post in (Resolvido)[AJUDA] Ganhar addon com X item no inventário. was marked as the answer   
    Eu fiz aqui, está funcionando, porém, estou tentando resolver um possível bug.
    Que seria no caso do player por o item, remover e continuar com o addon.
     
    Bom, vou postar o script:
     
    Isto em movements.xml:
    <movevent type="Equip" itemid="2195" slot="feet" event="script" value="addon.lua"/>     <movevent type="DeEquip" itemid="2195" slot="feet" event="script" value="addon.lua"/> .
    Este no arquivo "addon.lua":


    Vou tentar arrumar este detalhe que lhe falei, se conseguir edito aqui.
     
    @@- ATUALIZADO NOVAMENTE - EDITADO às 12:21h
    O script está com um bug, talvez alguém consiga resolver..
    Mas está funcionando da seguinte maneira:
    Checa se o player é male ou female para adicionar o respectivo addon.
    Checa a cor do outfit que o player está usando, para assim adicionar o addon e continuar com as cores personalizadas do player.
    Checa se o player está usando a outfit Citizen, se não estiver, não adiciona o addon.
    Quando o player remove o item, ele continua do mesmo jeito que era antes, inclusive as cores.
     
    Bug:
    O único bug, é no player female, quando remove o item ela não está ficando com as cores personalizadas de antes.
    Quando coloca o item, ela ganha o addon normalmente, continuando com as cores, mas quando remove que fica toda de roupa branca.
     
    Fora isso, está funcionando perfeitamente.
     
    Faça bom aproveito.
    Boa sorte.
  9. Adriano SwaTT's post in (Resolvido)[Pedido] Como criar runa de mana,hp e sd was marked as the answer   
    Ok, faça os passos da Mana Rune, usando outra ID de runa, e dentro do Arquivo.lua, cole o código abaixo.


    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, 1) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, 1100, 0, 1100) function onCastSpell(cid, var) doSendAnimatedText(getPlayerPosition(cid), "life", math.random(1, 255)) return doCombat(cid, combat, var) end


    Boa sorte.
    Qualquer coisa, poste aqui para solucionarmos juntos.
  10. Adriano SwaTT's post in (Resolvido)[Pedido] hp e mana inicial was marked as the answer   
    Isso é simples...
    Basta ir na pasta "Utilitários" de seu OTServer e abrir o programa SQLStúdio, logo após, abra o arquivo dos players de seu server...
    geralmente arquivo com esta extensão "nome_do_arquivo.s3db"...
    Caso nunca tenha feito isso, siga os passos abaixo:

    Clique em Add Database e abra o arquivo ".s3db" do seu server....
    Em seguida, abra a lista à esquerda "tables", irá aparecer várias "sublistas", então dê dois cliques em "players",
    na janela grande ao lado direito irá aparecer algumas configurações...
    porém pode notar que logo acima estará selecionado a aba "Structure", então clique na aba ao lado direito dela... nomeada de "Data", então verá a lista dos personagens de seu OTServer.

    Então você altera as configurações do arquivo nomeado de "Account Manager", ou seja, o jeito que ele ficar configurado aí pelo SqlStudio, é o jeito que o novo player criado irá nascer.



    Espero ter ajudado, quaisquer dúvidas, poste aqui para tentarmos solucionar'
    #Poste também o resultado, se funcionou'

Informação Importante

Confirmação de Termo