Ir para conteúdo
  • Cadastre-se

Biblioteca%2FFun%C3%A7%C3%A3o doEmpurrePlayer(cid, player, vez, ultimapos)


Posts Recomendados

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 por Skyforever (veja o histórico de edições)

Retirado.

 

Skype: joaoxtibia85.

Link para o post
Compartilhar em outros sites

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

6qpqBbJ.png

Link para o post
Compartilhar em outros sites

Bacana Sky :D 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 -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo