Postado Maio 3, 2015 10 anos Sistema de Rest / Descansar Yo galera, esse e meu segundo sistema criado por mim, e embora tenha alguns parecidos, o meu ficou um pouco diferente. Porem ainda possui muitos bugs, no qual eu fiquei no meu trabalho, e depois 1 dia inteiro tentando resolver, antes de vir pedir ajuda, pesquisei, e tentei resolver de varias maneiras, ajudem-me a concertar esses bugs, e será mais 1 sistema pra comunidade, e dessa vez util. O que o sistema faz: Ao dar use em 1 item( no caso da pra fazer algum botão) , o char começa dormir e regenerar sua vida em uma porcentagem(de facil edição). Apos o uso, o item se transforma para o item que vai fazer voce se levantar e parar de se regenerar. Ps: Não é possivel usar em batalha, para não atacar enquanto heala Não é possivel deslogar se estiver usando o Rest. Infelizmente de tanto eu tentar modificar para funcionar(modificando o que eu fiz, o sistema eu começei do 0), pode ter algum erro a mais.. porem, vai la o que pode ser adicionado e arrumado. BUGS Se estiver no rest, e por acaso alguem te atacar, voce até sai do rest, e da Up, porem ele continua a heala, e mostrar o efeito de Sleep. Caso morra, no rest, o item(icone), não é trocado, e assim quando relogar, não será possivel dar rest, ja que vai estar o item do Up. Possiveis Melhorias Ao healar tudo a vida, fazer o rest parar, e dar Up, setando as storages e modificando o item(icone) up > down(rest) . Ajudem na imaginação Criar alguma caixa - linkando o otclient com o item de Up/Down(rest/up) Agora os codigos . Sever 0.3.6pl1. rev 8.54 Actions Botao Down(Rest) local config = { tempo = 3, --- Cdr para poder descansar storagetempo = 20011, percentage = 0.05, regenpersec = 3000 } function onUse(cid, item, frompos, topos) if getCreatureCondition(cid, CONDITION_INFIGHT) == true then return doPlayerSendCancel(cid, "Voce nao pode descansar em batalha.") and false end if os.time() - getPlayerStorageValue(cid, 20011) >= config.tempo then if getPlayerStorageValue(cid, 20010) == -1 then doCreatureSetNoMove(cid, true) doCreatureSay(cid,"Descansar!!!", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, 20010, 1) setPlayerStorageValue(cid, 20012, os.time() + 0) doTransformItem(item.uid, 11389) regen(cid) if(getPlayerSex(cid) == 1)then doSetItemOutfit(cid, 2317, -1) else doSetItemOutfit(cid, 3065, -1) end end else doPlayerSendCancel(cid, "Voce tem que esperar "..(config.tempo - (os.time() - getPlayerStorageValue(cid, 20011))).." seconds para descansar novamente.") end return true end function regen(cid) if not(isCreature(cid)) then return false end addEvent(doCreatureAddHealth, 2000, cid, getCreatureMaxHealth(cid)*config.percentage) addEvent(doSendMagicEffect, 500,getCreaturePosition(cid), 32) regenvar = addEvent(regen, config.regenpersec, cid) ---Hp Healado a cada 3 segundos. end Botao Up(Acordar) local config = { tempo = 3 } function onUse(cid, item, frompos, topos) if os.time() - getPlayerStorageValue(cid, 20012) >= config.tempo then if getPlayerStorageValue(cid, 20010) == 1 then doCreatureSetNoMove(cid, false) doCreatureSay(cid,"Go Up!!!", TALKTYPE_ORANGE_1) stopEvent(regenvar) setPlayerStorageValue(cid, 20010, 2) setPlayerStorageValue(cid, 20011, os.time() + 0) doTransformItem(item.uid, 11388) addEvent(setPlayerStorageValue, 3000, cid, 20010, -1) doRemoveCondition(cid, CONDITION_OUTFIT) end else doPlayerSendCancel(cid, "Voce tem que esperar "..(config.tempo - (os.time() - getPlayerStorageValue(cid, 20012))).." seconds para levantar .") end return true end Creature Scripts Sistema para nao atacar enquanto no rest function onCombat(cid, target) if isPlayer(target) or isMonster(target) then if getPlayerStorageValue(cid, 20010) == 1 then doPlayerSendCancel(cid, "You can't attack while in sleep mode.") return false end end return true end Sistema para não deslogar no rest function onLogout(cid) if getPlayerStorageValue(cid, 20010) == 1 then return doPlayerSendCancel(cid, "You can't logout while in rest mode.") and false end return true end Sistema para levantar quando entrar em batalha( Aqui onde encontra alguns erros, que não consegui resolver) function onStatsChange(cid, attacker, type, combat, value) if isMonster(attacker) or isPlayer(attacker) then if getPlayerStorageValue(cid, 20010) == 1 then stopEvent(regenvar) doRemoveCondition(cid, CONDITION_OUTFIT) doCreatureSetNoMove(cid, false) doCreatureSay(cid,"!!!", TALKTYPE_ORANGE_2) setPlayerStorageValue(cid, 20010, -1) setPlayerStorageValue(cid, 20011, os.time() + 0) end end return true end Tags creaturescript.xml <event type="statschange" name="BattleUp" event="script" value="battleup.lua"/> <event type="combat" name="noAttack" event="script" value="noattack.lua"/> <event type="logout" name="Logoutrest" event="script" value="logoutrest.lua"/> login.lua registerCreatureEvent(cid, "BattleUp") registerCreatureEvent(cid, "Logoutrest") registerCreatureEvent(cid, "noAttack") actions.xml <action itemid="11388" event="script" value="restdown.lua"/> <action itemid="11389" event="script" value="restup.lua"/> Isso ae galera, quem puder ajudar, agradeço desde já, não sei se errei demais, ou se não vão gostar, porem aprendi muito tentando , e pretendo aprender mais arrumando e resolvendo. Editado Maio 4, 2015 10 anos por Ryukiimaru (veja o histórico de edições)
Postado Maio 7, 2015 10 anos O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "OTServ → Suporte OTServ → Suporte de Scripts" Para: "OTServ → Aprovação de Tópicos de Conteúdos"
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.