Ir para conteúdo

psychonaut

Membro
  • Registro em

  • Última visita

Solutions

  1. psychonaut's post in (Resolvido)Como reduzir o Script? was marked as the answer   
    Não tem como fazer menos se você precisa fazer algo, a menor distancia entre dois pontos é uma linha reta, então a melhor organização é usar a função mais adequada o possível, pra por exemplo, em vez de fazer duas ou três funções para um resultado, fazer uma só com a função certa(falando em funções do TFS). Nessa parte do código você já poderia ter usado elseif:
    Elseif pois lua não tem switch tipo o do C, algumas pessoas criam ela com caseof ou vararg, se tivessem varios elseif no código, seria melhor um
     
    function onUse(cid, item, frompos, item2, topos) if getPlayerSkillLevel(cid,3) <= 1 then doCreatureAddMana(cid, mana/2) elseif getPlayerSkillLevel(cid,3) == 1 or getPlayerSkillLevel(cid,3) == 2 then doCreatureAddMana(cid, mana/1.75) elseif getPlayerSkillLevel(cid,3) == 2 or getPlayerSkillLevel(cid,3) == 3 then doCreatureAddMana(cid, mana/1.50) elseif getPlayerSkillLevel(cid,3) == 3 or getPlayerSkillLevel(cid,3) == 4 then doCreatureAddMana(cid, mana/1.25) end end  
     
    Caso tenha mais coisas no script. uma coisa que ajuda a limpar o código é criar funções, quando você vai repetir algo muitas vezes, é só usar a função em vez de escrever tudo de novo.
    Lua tem uma performance incrível, por isso que é bastante usada. Como não tem uma estrutura de repetição aí, não vejo notável diferença pra colocar a função getPlayerSkillLevel em uma variável local(local playerskilllevel = getPlayerSkillLevel(cid,3)), o que pode ser feito mas são poucos valores ali, mas se tivesse uma estrutura de repetição, você colocaria a função antes em uma variável.
     
    Os 3 R da reciclagem se aplicam em lua, reduza, reuse e recicle.
     
    Porém no seu caso, acho que a criação de uma formula seria melhor, mas você não poderia escolher um valor especifico para cada level. A sua formula teria que usar o getPlayerSkillLevel junto com outros valores para adicionar a mana.
    doCreatureAddMana(cid, (getPlayerMaxMana(cid) / 10) + (mana * ((getPlayerSkillLevel(cid,3) / alguma coisa)))) Esse é só um exemplo, não sei direito se você está usando um padrão, se quiser reduzir mesmo o script, vale a pena usar um, dá pra criar qualquer padrão, até usar alguns ifs pra isso.
    Essa aí do exemplo adiciona 10% da mana máxima do jogador + a mana que você colocou lá(100) * uma porcentagem do skill level ou alguma outra coisa, esse é só um exemplo.

    A solução pra mim então é, ou usar uma formula(aí não vai controlar os valores) ou reduzir usando uma alternativa pro switch pois a cadeia de comparação não é eficiente.
     
    Essa daí permite passar parâmetros no mudarmana[ ](parâmetro) por causa da função(é exemplo, tem que editar), você poderia remover pois não vai usar, mas pode usar se precisar colocar mais coisas.
    local valor local mudarmana = { [1] = 2, [2] = 1.75, [3] = 1.50, [4] = 1.25 } mudarmana[getPlayerSkillLevel(cid,3)] doCreatureAddMana(cid, mana/valor)  
    Você pode repetir o mesmo valor pra 2 aí, ou então
    local mudarmana = { [0] = 2, [2] = 1.75, [4] = 1.50, [6] = x, } local i if (getPlayerSkillLevel(cid,3) % 2 == 0) then i = getPlayerSkillLevel(cid,3) else i = getPlayerSkillLevel(cid,3) + 1 end doCreatureAddMana(cid, mana/mudarmana[i]) Isso é pra somar um caso seja ímpar, pois não entendi muito bem, sua verificação tá meio bugada, maior ou igual a 0 ou menor ou igual a 1, seria 0 ou 1, o mesmo em seguida, 1 ou 2, então pra não repetir poderia verificar se é ímpar e somar 1, aí você só teria números pares, entãa só coloca números pares na tabela mudarmana com o valor, bom não sei se tá funcionando o script, foi só um exemplo.
     
    Tem varias outras maneiras só dar uma pesquisada, ah e a tabela ali fica fora da função onUse.
  2. psychonaut's post in (Resolvido)Preciso Cliente Tibia 11.32 - 11.40 was marked as the answer   
    Não é a do tibia no momento não? Mt recente, de onde eu pego que sei que é seguro só tem até 11.20 por enquanto, o jeito é esperar ver se alguém tem aí ou algum site disponibilizar
    Esse é o link que uso
    https://drive.google.com/drive/folders/0B2-sMQkWYzhGSFhGVlY2WGk5czQ
  3. psychonaut's post in (Resolvido)[PEDIDO] Tile que fica saindo effect was marked as the answer   
    data/globalevents/globalevents.xml
    <globalevent name="effectsp" interval="3" event="script" value="effectsemparar.lua"/> interval é em segundos tu pode mudar
     
    data/globalevents/scripts/effectsemparar.lua
     
    coloquei array la em cima pra ficar facil de adiciona mais ou remover
    se der erro avisa
  4. psychonaut's post in (Resolvido)script npc de repair was marked as the answer   
    Até dá mas é grande aí da mt trampo, aí nem faço.
    Tenta usar o original mas vem com limite por vocação
     
  5. psychonaut's post in (Resolvido)text kill com problema was marked as the answer   
    function onKill(cid, target) local texts = {'Dominado Full', 'Assado Full', 'Owned', 'xBurguer', 'Estupred', 'Deita cuzaum'} local colors = { TEXTCOLOR_WHITE, TEXTCOLOR_ORANGE, TEXTCOLOR_DARKRED, TEXTCOLOR_GREEN, TEXTCOLOR_BLUE } if isPlayer(target) then doSendAnimatedText(getThingPosition(cid), texts[1], colors[ math.random( 1, #colors ) ] ) doSendAnimatedText(getThingPosition(target), texts[2], colors[ math.random( 1, #colors ) ] ) end return true end tenta aí
    Também pode tentar mudar só essa linha com as aspas certas
    local texts = {'Dominado Full', 'Assado Full', 'Owned', 'xBurguer', 'Estupred", "Deita cuzaum"} >>
    local texts = {'Dominado Full', 'Assado Full', 'Owned', 'xBurguer', 'Estupred', 'Deita cuzaum'}  
    Acho que podia ter deixado o math.random(0, 255) ali, aí não interagia com a tabela, acho que seria mais rápido, mas vê aí
  6. psychonaut's post in (Resolvido)Correção script additem was marked as the answer   
  7. psychonaut's post in (Resolvido)Correção de script, adc mensagem + remove dinheiro was marked as the answer   
  8. psychonaut's post in (Resolvido)adicionar mensagem a script e corrigir bug was marked as the answer   
  9. psychonaut's post in (Resolvido)mensagem no script was marked as the answer   
    Tenta com
     
    --By MatheusVidaLoka function onUse(cid, item, frompos, item2, topos) if doRemoveItem(item.uid,1) then doPlayerSendTextMessage(cid, "$$$", TEXTCOLOR_RED) doPlayerAddItem(cid,2160,100) end end  
    Eu nem vi o script só tinha mudado a função.
  10. psychonaut's post in (Resolvido)CreateAccount was marked as the answer   
    1.0 Usa o mesmo
  11. psychonaut's post in (Resolvido)Remover DIV ao acessar a página de Criar Conta was marked as the answer   
    Resolvido via inbox pra não causar spam. Pra quem tiver o mesmo erro:

    index.tpl

    controllers/account.php
    models/account_model.php
  12. psychonaut's post in (Resolvido)[SCRIPT AUTO RESTARTER] Erro ao executar em Linux was marked as the answer   
    Salva em .sh e muda a primeira linha para:
    #!/bin/sh
    Ou qualquer coisa tira ela.
    Mas talvez tu vai precisar baixar o unix2dos pra converter o arquivo, pois ele foi criado numa maquina com windows.
    #edit
    Fiz um sed nele, tenta usar esse
    script.sh
  13. psychonaut's post in (Resolvido)site .com? was marked as the answer   
    Tem que registrar um domínio, tem vários sites que vendem, tem que pagar adicional pra isso. Vê no host que pretende colocar.
  14. psychonaut's post in (Resolvido)shop dando erro fatal #ajuda aqui was marked as the answer   
    Vê no banco, se na shop_history, o campo ID ta com auto increment, se não tiver, coloca.
    Aí vai no shop, muda a linha 291 de:
    $SQL->query('INSERT INTO shop_history (`id`, `product`, `session`, `player`, `date`, `processed`) VALUES (NULL, \''.$info['id'].'\',\''.$_SESSION['name'].'\', \''.$destination.'\', \''.time().'\',\''.$processed.'\')');;Para:
      $SQL->query('INSERT INTO shop_history (`product`, `session`, `player`, `date`, `processed`) VALUES ( \''.$info['id'].'\',\''.$_SESSION['name'].'\', \''.$destination.'\', \''.time().'\',\''.$processed.'\')');;
     
  15. psychonaut's post in (Resolvido)Bow Não é compativel com a arrow was marked as the answer   
    </item>     <item id="12634" article="a" name="Pally bow">         <attribute key="weight" value="3500" />         <attribute key="slotType" value="two-handed" />         <attribute key="weaponType" value="distance" />         <attribute key="ammoType" value="arrow" />         <attribute key="range" value="20" />         <attribute key="hitChance" value="50" />         <attribute key="attack" value="600" />     </item>         <item id="12635" article="a" name="Pally Arrow" plural="Pally Arrows">         <attribute key="weight" value="80" />         <attribute key="slotType" value="ammo" />         <attribute key="attack" value="5" />         <attribute key="maxHitChance" value="90" />         <attribute key="weaponType" value="ammunition" />         <attribute key="ammoType" value="arrow" />         <attribute key="shootType" value="arrow" />         <attribute key="ammoAction" value="removecount" />     </item>
  16. psychonaut's post in (Resolvido)Argumento Invalido ! was marked as the answer   
    Vai no config.lua e muda bindOnlyGlobalAddress
    pra no ou false
  17. psychonaut's post in (Resolvido)QuestLog was marked as the answer   
    Beleza, a começar pelo quest log.
    A tag quests fecha por último:
    <?xml version="1.0" encoding="UTF-8"?> <quests> <quest name="Example Quest I" startstorageid="1001" startstoragevalue="1"> <mission name="Example Mission 1" storageid="1001" startvalue="1" endvalue="3"> <missionstate id="1" description="Example description 1"/> <missionstate id="2" description="Example description 2"/> <missionstate id="3" description="Example description 3"/> </mission> <mission name="Example Mission 2" storageid="1001" startvalue="4" endvalue="5"> <missionstate id="4" description="Example description 1"/> <missionstate id="5" description="Example description 2"/> </mission> </quest> <quest name="Tasks" startstorageid="76669" startstoragevalue="1"> <mission name="Task Dragoes" storageid="76669" startvalue="1" endvalue="4"> <missionstate id="1" description="Fale com o npc tal para aceitar a missao"/> <missionstate id="2" description="Mate 20 dragoes em tal montanha"/> <missionstate id="3" description="Volte ao npc tal para receber sua recompensa"/> <missionstate id="3" description="Voce ja fez a task dos dragoes"/> </mission> </quest> </quests> Bom, no login.lua o nome ta errado, mas vamos corrigir no creaturescripts.xml:
    <event type="kill" name="MonsterKill" script="monsterkill.lua"/> Bem, e o NPC ta sem dialogo inicial:
    <?xml version="1.0" encoding="UTF-8"?><npc name="Adam" script="task1.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100" /> <look type="132" head="115" body="0" legs="114" feet="0" addons="3" corpse="2212"/> <parameters>   <parameter key="message_greet" value="Oi, você pode me ajudar? Se puder, me avise que eu lhe falo sobre a {missao}. "/> </parameters> </npc> Pra mudar esse {missao}, que é a mensagem em azul, mude essa linha:
    elseif msgcontains(msg, "missao") then No script do npc

    Qualquer erro ou mal funcionamento é só postar.
  18. psychonaut's post in (Resolvido)Retirar PZ was marked as the answer   
    Seleciona o botão que põe PZ, segura CTRL e clica pra remover.
  19. psychonaut's post in (Resolvido)Transação inválida was marked as the answer   
    Entra na conta do pagseguro, Integrações, Pagamentos via api e desabilita "Quero receber somente pagamentos via API", aperta sim na caixa e pronto. Se é que é disso que você ta falando.
  20. psychonaut's post in (Resolvido)Abrir 2 mapas was marked as the answer   
    File > preferences > desabilita o "open all maps in the same instance"

    Depois é só importar, mesma versão.
  21. psychonaut's post in (Resolvido)Ajuda Town_id was marked as the answer   
    poe, muda de varchar pra INT e executa
  22. psychonaut's post in (Resolvido)Liberar Addons e Mounts para todos os Players was marked as the answer   
    Substitui aquele script la que você criou, apaga tudo e coloca esse:
    local looktypes = { 128, 136, 129, 137, 130, 138, 131, 139, 132, 140, 133, 141, 134, 142, 143, 147, 144, 148, 145, 149, 146, 150, 151, 155, 152, 156, 153, 157, 154, 158, 251, 252, 268, 269, 273, 270, 278, 279, 289, 288, 325, 324, 335, 336, 366, 367, 328, 329, 430, 431, 432, 433, 463, 464, 465, 466, 471, 472, 512, 513, 514, 516, 541, 542, 574, 575, 577, 578 } local storage = 4545 function onLogin(cid) local player = Player(cid) if player:getStorageValue(storage) ~= 1 then for i = 1, #looktypes do player:addOutfitAddon(looktypes[i], 3) end for i = 1, 47 do player:addMount(i) end player:setStorageValue(storage, 1) end return true end
  23. psychonaut's post in (Resolvido)cada spell ter sua exaust was marked as the answer   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 6, 6, 5.5, 6) function onCastSpell(cid, var) if getGlobalStorageValue(STORAGE) >= os.time() then doPlayerSendCancel(cid,"Voce tem que esperar ".. getGlobalStorageValue(STORAGE) - os.time() .." pra usar denovo.") else setGlobalStorageValue(STORAGE, os.time() + 5) return doCombat(cid, combat, var) end Muda o STORAGE, pra um storage qualquer sem ta sendo usado, esse 5 é o cooldown
  24. psychonaut's post in (Resolvido)First Itens ao Nascer was marked as the answer   
    Qual a versão do seu TFS
    #Edit, Tem que ter algum item no que tem em comum, ou apaga as linhas

    local firstItems = {2665, 2417, 2427, 2379, 2545, 7387, 7436, 2666} --ID dos itens EM COMUMe

    for i = 1, #firstItems do player:addItem(firstItems[i], 1) endSe tu for colocar uma bolsa por exemplo, faz assim:

  25. psychonaut's post in (Resolvido)[PEDIDO] fazer item transformar (estilo alavanca/lever) was marked as the answer   
    Edita o tempo, mals a demora, tive que sair...
     
    actions.xml

    <action itemid="22513" script="removeraousar.lua"/> data/actions/removeraousar.lua
    function onUse(cid, item, fromPosition, target, toPosition) --item que sera criado no lugar local itemcriado = 22514 local itemnormal = 22513 local tempo = 120 -- tempo em segundos local summon = "Slime" -- nome do monstro summonado local bonesTile = Tile(toPosition) if item.itemid == itemcriado or item.itemid == itemnormal then doTransformItem(item.uid, itemcriado) doSummonCreature(summon, fromPosition)        addEvent(function(bonesPos) bonesTile:getItemById(itemcriado):remove()             Game.createItem(itemnormal, 1, bonesPos)                   bonesPos:sendMagicEffect(CONST_ME_POFF)          end, tempo * 1000, bonesTile:getPosition()) else doPlayerSendCancel(cid, "q droga tu ta tentando fazer em.") end return true end

Informação Importante

Confirmação de Termo