Ir para conteúdo
Entre para seguir isso  
Durick

Arena PvP - Inteligente

Recommended Posts

Durick    0
Durick

Bem, eu já joguei em um servidor, onde se o player matasse o outro, ao invés de aparecer o corpo do player, aparecia um Morgaroth's Hearth, com a seguinte inscrição: Coração de Ciclano, morto por Fulano.

 

Eu estava pensando se tivesse uma arena como o script acima, mas um pouco diferente, por exemplo:

Fulano e Ciclano, vão fazer x1.

Ao puxar a alavanca, enviará uma mensagem no console de todos do servidor: Fulano e Ciclano, estão disputando na Arena.

Tudo bem, os dois ficam lá no PvP, até que o Ciclano morre, e então mandará a seguinte mensagem no console de todos: Luta Terminada. Vencedor: Fulano.

Ao Ciclano morrer, ele não vai perder, lvl, itens, skill, e ao invés de aparecer um corpo, aparecerrá um Goblet, com a seguinte inscrição: Concedido a Fulano, pela vitória sobre Ciclano na Arena.

 

Acho que ficarei um script legal, principalmente para aqueles que conseguem matar o top no x1, só porque o outro tava com lag xD

Ai ele vai poder se achar um poquinho ;D

 

Espero que gostem e consigam fazer :fist:

(OBS: Não precisa ser necessariamente um Goblet, pode ser outro item)

Compartilhar este post


Link para o post
Compartilhar em outros sites
superdigo123    0
superdigo123

Esse server por acaso seria o PBOT?

Compartilhar este post


Link para o post
Compartilhar em outros sites
MaykE    0
MaykE

Primeiramente, abra a pasta data/creaturescripts/scripts e abra o arquivo playerdeath.lua, substitua o que tiver lá por isto:

 

dofile("./config.lua")

function onDeath(cid, corpse, killer)

locan config ={
vitima = getCreatureName(cid)
assassino = getCreatureName(killer)
arenapos = {x=arenax, y=arenay, z=9, stackpos=253}
arenacreature = getThingfromPos(arenapos)
}
   if getPlayerPos(Vitima) = arenapos
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You are dead.")
   if deathListEnabled == "yes" then
       if sqlType == "mysql" then
           env = assert(luasql.mysql())
           con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))
       else -- sqlite
           env = assert(luasql.sqlite3())
           con = assert(env:connect(sqliteDatabase))
       end
   end
       local byPlayer = FALSE
       if killer == FALSE then
           killerName = "field item"
       else
           if isPlayer(killer) == TRUE then
               byPlayer = TRUE
           end
           killerName = getCreatureName(killer)
       end
       assert(con:execute("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `is_player`) VALUES (" .. getPlayerGUID(cid) .. ", " .. os.time() .. ", " .. getPlayerLevel(cid) .. ", '" .. escapeString(killerName) .. "', " .. byPlayer .. ");"))
       local cursor = assert(con:execute("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";"))
       local deathRecords = numRows(cursor)
       if sqlType == "mysql" then
           while deathRecords > maxDeathRecords do
               delete = assert(con:execute("DELETE FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT 1;"))
               deathRecords = deathRecords - 1
           end
       else
           while deathRecords > maxDeathRecords do
               delete = assert(con:execute("DELETE FROM `player_deaths` WHERE `rowid` = (SELECT `rowid` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT 1);"))
               deathRecords = deathRecords - 1
           end
       end
  end     
       con:close()
       env:close()
       broadcastMessage("" .. assassino .. " Matou " .. vitima .."!", MESSAGE_STATUS_CONSOLE_ORANGE)
   end
end

 

 

E crie um arquivo chamado ArenaInteligente.lua na pasta de script... com esse codigo

 

 

-- Arena Inteligente --
-- By: MaykE --

local config = {
vitima = getCreatureName(cid)
assassino = getCreatureName(killer)[color="Red"]
player1pos = {x=119, y=35, z=9, stackpos=253}
player1 = getThingfromPos(player1pos)
player2pos = {x=130, y=35, z=9, stackpos=253}
player2 = getThingfromPos(player2pos)
[/color]}

function onUse(cid, item, frompos, item2, topos)
if item.uid == 1945 and item.itemid == 1945 then
	if player1.itemid > 0 and player2.itemid > 0 then
		arenalevel = 30			player1level = getPlayerLevel(player1.uid)
		player2level = getPlayerLevel(player2.uid)

		if player1level >= arenalevel and player2level >= arenalevel then
			for arenax = 121,128 do
				for arenay = 33,37 do
					arenapos = {x=arenax, y=arenay, z=9, stackpos=253}
					arenacreature = getThingfromPos(arenapos)

					if arenacreature.itemid > 0 then
						doPlayerSendCancel(cid,"Wait for current duel to end.")
						return 1
					end
				end
			end

			nplayer1pos = {x=121, y=35, z=9}
			nplayer2pos = {x=128, y=35, z=9}

			doSendMagicEffect(player1pos,2)
			doSendMagicEffect(player2pos,2)

			doTeleportThing(player1.uid,nplayer1pos)
			doTeleportThing(player2.uid,nplayer2pos)

			doSendMagicEffect(nplayer1pos,10)
			doSendMagicEffect(nplayer2pos,10)

			doPlayerSendTextMessage(player1.uid,18,"FIGHT!")
			doPlayerSendTextMessage(player2.uid,18,"FIGHT!")
		else
			doPlayerSendCancel(cid,"Both fighters must have level 30.")
		end
	else
		doPlayerSendCancel(cid,"You need 2 players for a duel.")
	end
else
	return 0
  	end
               else
                      doPlayerAddItem(cid,[color="Red"]2745[/color],"Parabens "assassino", você derrotou a "vitima"")
               end
   return 1
end

 

 

As cores em vermelho, sao os locais para você editar, conforme o seu Ot...

Posições e Ids

Editado por MaykE

Compartilhar este post


Link para o post
Compartilhar em outros sites
oOoO~    0
oOoO~

Se realmente tiver dado certo, muito bom....

EU to sem ot aki, se nao testava ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Durick    0
Durick

Brigadao MayKe xD

Vo ve se testo ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites
Foreign    0
Foreign

Idéia Meio Basica neh ! Mais Tudo Bem , Procure Inovar Nas Ideias : D

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×