Postado Novembro 4, 2012 12 anos TIPO: Função Versão: 1.0. Testado: Sim, tfs 0.3.6(OITO.SESSENTA[8.6]). @Oque Faz?. >função que empurra jogadores(ou monstros) ela empurra em um determinado interval. @Instalando Primeiramente vá em pasta do seu servidor depois entre na pasta data e em seguida lib agora entre no arquivo 050 - function e adicione o seguinte conteúdo lá: function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end cr = getThingFromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE}) if isPlayer(cr.uid) or isMonster(cr.uid) then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function doEmpurrePlayer(cid, player, vez, ultimapos) if not isCreature(player) then return true end if vez == 10 then return true end tab = {100, 150, 200, 350, 400, 550, 600, 750, 900, 1000} if isWalkable(getPositionByDirection(getThingPos(player), getCreatureLookDir(cid), 1)) then doTeleportThing(player, getPosByDir(ultimapos, getCreatureLookDirection(cid), 1)) doSendMagicEffect(getThingPos(player), 34) ultimapos = getThingPos(player) addEvent(executeEmpurro, tab[vez], cid, player, vez + 1, ultimapos) end end @Explicando!. Sintaxe CID -- aqui é a pessoa que vai empurrar no caso o caster da talk/spell/action/movement etc.. PLAYER -- aqui é quem vai ser empurrado no caso quem estiver na frente do player. VEZ -- aqui checa quantas vezes foi executado(NÃO MEXA) ULTIMAPOS -- aqui pega a pos do PLAYER. Para mudar quantas vezes irá empurrar você modifica essa linha if vez == 10 then return true end ali em 10 e quantas vezes vai empurrar então você coloca mais ou menos. O efeito é nessa linha doSendMagicEffect(getThingPos(player), 34) é só mudar o 34 para outro efeito desejado. Lembrando que se você alterar quantas vezes irá empurrar você deve alterar aqui também: tab = {100, 150, 200, 350, 400, 550, 600, 750, 900, 1000} ali e o interval entre os empurrões do 1 pro segundo é 100 e assim por diante se você diminuir deve tirar ali, se quiser aumentar só adicionar. @Exêmplo!. Um exêmplo de como usar: local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1) pos.stackpos = 253 if (isPlayer(getThingFromPos(pos).uid)) then player = getThingFromPos(pos).uid addEvent(doEmpurrePlayer, 1, cid, player, 1, getCreaturePosition(cid)) end é isso esperem que gostem. CRÉDITOS Eu Xotservx. Editado Novembro 4, 2012 12 anos por Skyforever (veja o histórico de edições) Retirado. Skype: joaoxtibia85.
Postado Novembro 4, 2012 12 anos opa sky, vejo que cada dia mais você aprimora suas técnicas na área dos scripts (e eu continuo na merda) é muito bom ver isso! 16/11/2014 23/11/2014 RIP AnneMotta 21/01/2012 - 15/01/2014 Liga das lendas: DIAMOND É A META
Postado Novembro 5, 2012 12 anos cara tentei adicionar isso em uma spell e não funciona, adicionei na lib, e tal não aparece nenhum erro no log, tem como me ajudar ?
Postado Novembro 6, 2012 12 anos Bacana Sky Legal ver você evoluindo \õ/, só precisa dar uma melhorada na Identação e tal. local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1) pos.stackpos = 253 if (isPlayer(getThingFromPos(pos).uid)) then player = getThingFromPos(pos).uid addEvent(doEmpurrePlayer, 1, cid, player, 1, getCreaturePosition(cid)) end Nesse caso aí, tem uma função que não precisa da stack pra pegar o player da posição saca: getTopCreature(pos) aí ficaria tipo: local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1) if (isPlayer(getTopCreature(pos).uid)) then addEvent(doEmpurrePlayer, 1, cid, getTopCreature(pos).uid, 1, getCreaturePosition(cid)) end Te indico esse tutorial aí sobre estética do código: Boas Práticas para Programar. (: -"Supra Omnes Lux Lucis" - Acima de todos brilha a Luz -
Postado Novembro 6, 2012 12 anos cara coloquei assim e nada local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.4, -30, -0.5, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_STUN) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.4, -30, -0.5, 0) local condition = createConditionObject(CONDITION_DRUNK) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setCombatCondition(combat2, condition) local t = {combat1, combat2, combat1, combat1} local arr = { {1, 3, 1} } local area = createCombatArea(arr) setCombatArea(combat1, area) setCombatArea(combat2, area) function onCastSpell(cid, var) local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1) if (isPlayer(getTopCreature(pos).uid)) then addEvent(doEmpurrePlayer, 1, cid, getTopCreature(pos).uid, 1, getCreaturePosition(cid)) end doCombat(cid, t[math.random(1,4)], var) doSendAnimatedText(getThingPos(cid), "Crush", 66) return FALSE end
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.