
Solutions
-
psychonaut's post in (Resolvido)Como reduzir o Script? was marked as the answerNã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.
-
psychonaut's post in (Resolvido)Preciso Cliente Tibia 11.32 - 11.40 was marked as the answerNã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
-
psychonaut's post in (Resolvido)[PEDIDO] Tile que fica saindo effect was marked as the answerdata/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
-
psychonaut's post in (Resolvido)script npc de repair was marked as the answerAté dá mas é grande aí da mt trampo, aí nem faço.
Tenta usar o original mas vem com limite por vocação
-
psychonaut's post in (Resolvido)text kill com problema was marked as the answerfunction 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í
-
psychonaut's post in (Resolvido)Correção script additem was marked as the answer
-
psychonaut's post in (Resolvido)Correção de script, adc mensagem + remove dinheiro was marked as the answer
-
psychonaut's post in (Resolvido)adicionar mensagem a script e corrigir bug was marked as the answer
-
psychonaut's post in (Resolvido)mensagem no script was marked as the answerTenta 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.
-
psychonaut's post in (Resolvido)CreateAccount was marked as the answer1.0 Usa o mesmo
-
psychonaut's post in (Resolvido)Remover DIV ao acessar a página de Criar Conta was marked as the answerResolvido via inbox pra não causar spam. Pra quem tiver o mesmo erro:
index.tpl
controllers/account.php
models/account_model.php -
psychonaut's post in (Resolvido)[SCRIPT AUTO RESTARTER] Erro ao executar em Linux was marked as the answerSalva 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
-
psychonaut's post in (Resolvido)site .com? was marked as the answerTem que registrar um domínio, tem vários sites que vendem, tem que pagar adicional pra isso. Vê no host que pretende colocar.
-
psychonaut's post in (Resolvido)shop dando erro fatal #ajuda aqui was marked as the answerVê 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.'\')');;
-
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>
-
psychonaut's post in (Resolvido)Argumento Invalido ! was marked as the answerVai no config.lua e muda bindOnlyGlobalAddress
pra no ou false
-
psychonaut's post in (Resolvido)QuestLog was marked as the answerBeleza, 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.
-
psychonaut's post in (Resolvido)Retirar PZ was marked as the answerSeleciona o botão que põe PZ, segura CTRL e clica pra remover.
-
psychonaut's post in (Resolvido)Transação inválida was marked as the answerEntra 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.
-
psychonaut's post in (Resolvido)Abrir 2 mapas was marked as the answerFile > preferences > desabilita o "open all maps in the same instance"
Depois é só importar, mesma versão.
-
psychonaut's post in (Resolvido)Ajuda Town_id was marked as the answerpoe, muda de varchar pra INT e executa
-
psychonaut's post in (Resolvido)Liberar Addons e Mounts para todos os Players was marked as the answerSubstitui 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 -
psychonaut's post in (Resolvido)cada spell ter sua exaust was marked as the answerlocal 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
-
psychonaut's post in (Resolvido)First Itens ao Nascer was marked as the answerQual 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:
-
psychonaut's post in (Resolvido)[PEDIDO] fazer item transformar (estilo alavanca/lever) was marked as the answerEdita 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