Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

Boa tarde galera !

 

Sistema Monsters x Monsters

 

Preciso de ajuda em um sistema de monstro vs monstros .. mais como assim

seria o seguinte estou desenvolvendo um servidor estilo league of legends onde as torres criei como monstros e tals... e os minions tanbem são monstros e queria o seguinte , que esses minions atacassem essas torres que tanbem sao monstros.

 

 

 

Alem disso tenho esse sistema de npc que reseta players mais alem do level queria que o npc resetasse as skills

local config = {
minlevel = 250, --- level inical para resetar
price = 0, --- preço inicial para resetar
newlevel = 100, --- level após reset
priceByReset = 0, --- preço acrescentado por reset
percent = 1, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset
}
--- end config
 
 
 
function addReset(uid)
resets = getResets(uid)
setPlayerStorageValue(uid, 378378, resets+1) 
doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
local hp = getCreatureMaxHealth(uid)
local resethp = hp*(config.percent/100)
setCreatureMaxHealth(uid, resethp)
local differencehp = (hp - resethp)
doCreatureAddHealth(uid, -differencehp)
local mana = getCreatureMaxMana(uid)
local resetmana = mana*(config.percent/100)
setCreatureMaxMana(uid, resetmana)
local differencemana = (mana - resetmana)
doCreatureAddMana(uid, -differencemana)
        doRemoveCreature(uid)
local description = resets+1
        db.executeQuery("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."")
db.executeQuery("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
        return true
end
 
function getResets(uid)
resets = getPlayerStorageValue(uid, 378378)
  if resets < 0 then
            resets = 0
          end
return resets
end
 
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
 
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
 
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
 
 
local newPrice = config.price + (getResets(cid) * config.priceByReset)
local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)
 
if msgcontains(msg, 'reset') then
if getResets(cid)  == resets then
selfSay('Voce deseja mesmo sair ?{yes}!', cid)
talkState[talkUser] = 1
else
selfSay('I couldnt acess your bank of acess!', cid)
end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if getPlayerMoney(cid) < newPrice then
selfSay('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid)
elseif getPlayerLevel(cid) < newminlevel then
selfSay('O level minimo para resetar e '..newminlevel..'!', cid)
else
doPlayerRemoveMoney(cid,newPrice)
playerid = getPlayerGUID(cid)
addEvent(addReset, (5*1000), cid)
local number = getResets(cid)+1
local msg ="---[Partidas jogadas: "..number.."]-- Voce foi resetado!  Voce sera desconectado em 5 segundos."
doPlayerPopupFYI(cid, msg) 
talkState[talkUser] = 0
end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
talkState[talkUser] = 0
selfSay('Ok.', cid)
elseif msgcontains(msg, 'quantity') then
selfSay('You have a total of '..getResets(cid)..' reset(s).', cid)
talkState[talkUser] = 0
end
 
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Estou procurando tambem um sistema de mata um player e ganha x item somente pois todos scripts que eu encontrei no forum sempre da um problema uma função para um item que eu criei para quando o player usa esse tal item desloga o player

Uma vez eu vi um sistema onde o player pegava level x e quando ele falava /mount ele abria uma janelinha (old cliente tibia) onde o players podia escolher entre 3 montarias algum sabe algum script desse ?

 

E por ultimo um sistema para nao tira o item de lugar (slot) de forma alguma 

 

 

"Somos educados pra sermos médios. Se vc tira 1 em português e 10 em matemática, te colocam pra estudar português.

 Mas se te colocassem pra estudar matemática, você seria um gênio! Lembre-se diariamente: a sociedade te conduz ao medíocre.."

 

FACEBOOK

 

"Deixar de fazer o que gosta é a mesma coisa de jogar 1 milhão de reais em um caminhão de lixo"

  • Respostas 13
  • Visualizações 744
  • Created
  • Última resposta

Top Posters In This Topic

Postado

é mais facil você colocar as torres como npc '-', pois ai ela pode atacar tanto o player quanto o monstro :)

em relação ao script de remover o skill tenta fazeer o seguinte...

 

doPlayerRemoveSkill(cid, skillId)

Postado
  • Autor

é mais facil você colocar as torres como npc '-', pois ai ela pode atacar tanto o player quanto o monstro :)

em relação ao script de remover o skill tenta fazeer o seguinte...

 

doPlayerRemoveSkill(cid, skillId)

de qualquer forma eu não saberei criar npc que ataca monstros .... e essa função acho que não daria certo pois acho alem disso deveria especificar qual skill resetar e tals... se puder me ajudar um pouco mais agradeço...

"Somos educados pra sermos médios. Se vc tira 1 em português e 10 em matemática, te colocam pra estudar português.

 Mas se te colocassem pra estudar matemática, você seria um gênio! Lembre-se diariamente: a sociedade te conduz ao medíocre.."

 

FACEBOOK

 

"Deixar de fazer o que gosta é a mesma coisa de jogar 1 milhão de reais em um caminhão de lixo"

Postado

Bom amigo.. você pode criar um NPC.

 

Nas funções no NPC, ele permite você fazer algo, sempre que aparecer uma criatura na tela.

Você poderia fazer para quando aparecer, ele checar se é inimigo ou aliado, caso seja inimigo, rodar um loop para ataca-lo.

Quando esta criatura sumir, faça o loop parar, para não dar lag.

 

Bom.. não vou fazer, porque estou com preguiça, mas dei uma ideia, espero que ajude.

Tony Araújo  ;D 

 

Postado
  • Autor

 

Bom amigo.. você pode criar um NPC.

 

Nas funções no NPC, ele permite você fazer algo, sempre que aparecer uma criatura na tela.

Você poderia fazer para quando aparecer, ele checar se é inimigo ou aliado, caso seja inimigo, rodar um loop para ataca-lo.

Quando esta criatura sumir, faça o loop parar, para não dar lag.

 

Bom.. não vou fazer, porque estou com preguiça, mas dei uma ideia, espero que ajude.

 

Tendi foda que eu não tenho a minima ideia de como posso começar a desenvolve essa script.... será que essa script de npc atacar pk pode pega de base... mais mesmo assim não saberei o que fazer para por para atacar o player mesmo sem pk e monstros e tals...

local target = 0
local prevTarget = 0
local maxChaseDistance = 20
local origPos = 0
local lastAttack = 0
local followTimeout = 10

local function isSkulled(cid)
	if(getPlayerSkullType(cid) >= 3 and isPlayerPzLocked(cid) == TRUE) then
		return true
	end

	return false
end

local function goToOrigPos()
	target = 0
	lastAttack  = 0
	selfFollow(0)
	doTeleportThing(getNpcCid(), origPos)
end

local function updateTarget()
	if(isPlayer(target) == FALSE) then
		goToOrigPos()
	elseif(not isSkulled(target)) then
		selfSay("Now, behave in the future.")
		goToOrigPos()
	end

	if(target == 0) then
		local list = getSpectators(getNpcPos(), 9, 9, false)
		for i = 1, table.getn(list) do
			local _target = list[i]
			if(_target ~= 0) then
				if(isPlayer(_target) == TRUE and isSkulled(_target)) then
					if(getTilePzInfo(getCreaturePosition(_target)) == FALSE) then
						if(selfFollow(_target)) then
							target = _target
							if(target ~= prevTarget) then
								selfSay("We do not tolerate people like you here!")
							end

							prevTarget = target
							break
						end
					end
				end
			end
		end
	end
end

function onCreatureAppear(cid)
	if(cid == getNpcCid()) then
		origPos = getNpcPos()
	end
end

function onCreatureDisappear(cid)
	if(cid == target) then
		goToOrigPos()
	end
end

function onCreatureMove(creature, oldPos, newPos)
	--
end

function onThink()
	updateTarget()

	if(target == 0) then
		return
	end

	local playerPos = getCreaturePosition(target)
	local myPos = getNpcPos()

	if(myPos.z ~= playerPos.z) then
		goToOrigPos()
		return
	end

	if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then
		selfSay("I'll catch you next time.")
		goToOrigPos()
		return
	end

	if(lastAttack == 0) then
		lastAttack = os.clock()
	end

	if(os.clock() - lastAttack > followTimeout) then
		selfSay("You got me this time, but just wait.")
		goToOrigPos()
		return
	end

	if((math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then
		doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -500, -800, CONST_ME_EXPLOSIONAREA)
		lastAttack = os.clock()
	end
end

"Somos educados pra sermos médios. Se vc tira 1 em português e 10 em matemática, te colocam pra estudar português.

 Mas se te colocassem pra estudar matemática, você seria um gênio! Lembre-se diariamente: a sociedade te conduz ao medíocre.."

 

FACEBOOK

 

"Deixar de fazer o que gosta é a mesma coisa de jogar 1 milhão de reais em um caminhão de lixo"

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo