Jump to content

(Resolvido)Diferença entre scripts


Go to solution Solved by xWhiteWolf,

Recommended Posts

Estou voltando ao mundo do Open Tibia (na área de desenvolvimento) e estou testando meu potencial em scriptings quando me fiz ausente tinha um conhecimento bom já não tão grande mas quebrava um galho agora voltei e percebi que regredi bastante. Enfim, eu estava pegando uns scripts pra dar uma estudada e me deparei com uma coisa louca e gostaria muito que vocês experientes me ajudassem com isso.
 
Peguei esse script da annihilator lever e está muito louco bem diferente do antigo postarei os dois e gostaria de saber qual a diferença entre os dois e se pudessem me explicar as vantagens e as condições usada no novo pq me embananei todo olhando esse script.

 
Script Novo (que não entendi nada, o que aconteceu com a famosa function onUse(cid, item, frompos, item2, topos)) :
 
local players_area =  {
	{x = 33225, y = 31671, z = 13},
	{x = 33222, y = 31671, z = 13}
}
local new_player_pos = {
	{x = 33222, y = 31659, z = 13},
	{x = 33221, y = 31659, z = 13},
	{x = 33220, y = 31659, z = 13},
	{x = 33219, y = 31659, z = 13}
}
local demonPos = {
	{x = 33219, y = 31657, z = 13},
	{x = 33221, y = 31657, z = 13},
	{x = 33223, y = 31659, z = 13},
	{x = 33224, y = 31659, z = 13},
	{x = 33220, y = 31661, z = 13},
	{x = 33222, y = 31661, z = 13}
}

function getPlayerCountInArea(toPos, fromPos)

	local count = 0
	local cid = {}

	for x = fromPos.x, toPos.x do
		for y = fromPos.y, toPos.y do
			for z = toPos.z, toPos.z do
				local creature = getTopCreature({x = x, y = y, z = z, stackpos = 255}).uid
				if(creature > 0) then
					if(isPlayer(creature)) then
						table.insert(cid, creature)
						count = count + 1
						if(getPlayerLevel(creature) < 100) then
							return "All players must be above level 100."
						end
					elseif(isMonster(creature)) then
						return "Players are allowed only."
					end
				end
			end
		end
	end

	if(count < 4) then
		return "You need 4 players."
	else
		for i = 1,4 do
			Player(cid[5-i]):teleportTo(new_player_pos[i])
			Player(cid[5-i]):getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		end
	end
	return true
end

function SummonDemon(Pos)
local count = 0
local cid = {}
	for x = Pos[1].x, Pos[4].x do
		for y = Pos[1].y, Pos[6].y do
			for z = Pos[1].z, Pos[6].z do
				local creature = getTopCreature({x = x, y = y, z = z, stackpos = 255}).uid
				if(creature > 0) then
					if(isPlayer(creature)) then
						return "A team is already inside the quest room."
					elseif(isMonster(creature)) then
						table.insert(cid, creature)
						count = count + 1
					end
				end
			end
		end
	end
	
	for i = 1, #cid do
		doRemoveCreature(cid[i])
	end

	for i = 1, #Pos do
		doSummonCreature("Demon", Pos[i])
	end
	
	return getPlayerCountInArea(players_area[1], players_area[2])
end

function onUse(cid, item)
	if(item.itemid == 1946) then
		local condition = SummonDemon(demonPos)
		if(condition ~= true) then
			doPlayerSendCancel(cid, condition)
		end
	else
		Item(item.uid):transform(1946)
	end
	return true
end
 
Script Antigo (do qual tenho total conhecimento sobre o que acontece ou não e por que)
-- Alavanca Annihilator Quest
-- by Nottinghster
 
function onUse(cid, item, frompos, item2, topos)
        if item.uid == 7000 and item.itemid == 1945 then
                player1pos = {x=1109, y=1204, z=11, stackpos=253}
                player1 = getThingfromPos(player1pos)
 
                player2pos = {x=1110, y=1204, z=11, stackpos=253}
                player2 = getThingfromPos(player2pos)
 
                player3pos = {x=1111, y=1204, z=11, stackpos=253}
                player3 = getThingfromPos(player3pos)
 
                player4pos = {x=1112, y=1204, z=11, stackpos=253}
                player4 = getThingfromPos(player4pos)
 
 
                if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
                        queststatus1 = getPlayerStorageValue(player1.uid,7000)
                        queststatus2 = getPlayerStorageValue(player2.uid,7000)
                        queststatus3 = getPlayerStorageValue(player3.uid,7000)
                        queststatus4 = getPlayerStorageValue(player4.uid,7000)
 
                        if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
                                nplayer1pos = {x=1128, y=1181, z=11}
                                nplayer2pos = {x=1129, y=1181, z=11}
                                nplayer3pos = {x=1130, y=1181, z=11}
                                nplayer4pos = {x=1131, y=1181, z=11}
 
                                doSendMagicEffect(player1pos,2)
                                doSendMagicEffect(player2pos,2)
                                doSendMagicEffect(player3pos,2)
                                doSendMagicEffect(player4pos,2)
 
                                doTeleportThing(player1.uid,nplayer1pos)
                                doTeleportThing(player2.uid,nplayer2pos)
                                doTeleportThing(player3.uid,nplayer3pos)
                                doTeleportThing(player4.uid,nplayer4pos)
 
                                doSendMagicEffect(nplayer1pos,10)
                                doSendMagicEffect(nplayer2pos,10)
                                doSendMagicEffect(nplayer3pos,10)
                                doSendMagicEffect(nplayer4pos,10)
 
                                doTransformItem(item.uid,item.itemid+1)
                        else
                                doPlayerSendCancel(cid,"Alguém em seu time já fez esta quest.")
                        end
                else
                        doPlayerSendCancel(cid,"Você precisa de um grupo de 4 pessoas para esta quest.")
                end
 
        elseif item.uid == 7000 and item.itemid == 1946 then
                if getPlayerAccess(cid) > 0 then
                        doTransformItem(item.uid,item.itemid-1)
                else
                        doPlayerSendCancel(cid,"Desculpe, não é possível.")
                end
        else
                return FALSE
        end
 
        return TRUE
end
Edited by Beyond Sky (see edit history)


Medalhas:
1, 2

Qo5DnNn.png

stonedshowoff2_zpsf5409854.png

Link to post
Share on other sites

  • Solution

bom, a galera tá usando mais loops [for, while] (digamos que tá na moda) e tão preferindo fazer funções. O script novo é basicamente isso, e sem contar tb que ele é pro TFS novo (1.0) nessa nova versão você pode inserir uma função dentro de outra usando ":" como nesse exemplo aqui

 for i = 1,4 do
            Player(cid[5-i]):teleportTo(new_player_pos[i])

para i = 1,4 fazer:
Player(cid[5-i]): teleportar para (NovaPosiçãoDePlayer)
Ele vai começar com i = 1, daí teremos
Player de numero 4 vai ser teleportado para a posição de numero 1 da table de new_player_pos
dps o player de numero 3 vai ser teleportado pra pos de numero 2... e assim até i = 4.

O resto é meio q entendível percebendo essa lógica das tables.. #Table retorna o numero de elementos que essa Table possui;
No caso local players_area é uma table de 2 elementos.
 

local players_area = {
    {x = 33225, y = 31671, z = 13}, --- PRIMEIRO ELEMENTO
    {x = 33222, y = 31671, z = 13} ---- SEGUNDO
}

já a new _player_pos possui 4 elementos, um pra cada player
 

local new_player_pos = {
    {x = 33222, y = 31659, z = 13},
    {x = 33221, y = 31659, z = 13},
    {x = 33220, y = 31659, z = 13},
    {x = 33219, y = 31659, z = 13}
}

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Mojiin
      Fala galera, eu vim pedir a ajuda de vocês !!
       
      Alguém pode me ajudar a criar mega evoluções para o meu poketibia ?
       
      Eu preciso dos megas:
      Mega Charizard X
      Mega Charizard Y
      Mega Alakazam
      Mega Tiranytar
      Mega Gyarados
      Mega Aerodactyl
      Mega Gengar
      Mega Blaziken
      Mega Swanpert
      Mega Sceptile
      Mega Absol
       
      Então galera, quem poder me ajudar fala ae, posso pagar
       
      Se ajudar já sabe rep+ 
    • By Maniaco
      Boa Tarde TibiaKing!!
       
      Estou a um tempo procurando e não achei nada parecido ou igual... T.T
      E estou precisando muito dele para o meu servidor!! 
      Caso alguém poder me ajudar agradeço muito +Rep
       
      Bom o script Funcionaria assim!
      eu tenho um item XXXX < Ex Pergaminho 
      Item quebra após o uso.
       
      eu usaria esse pergaminho em uma criatura que esta dentro desta lista
      Creature List {(Ciclope, 2160) (Wolf, 2160)} Ex > Nome da criatura, id do item que ganha apos selar 
       
      a Creature só pode ser selada com a vida baixa > Ex Vida Red
      Msg de erro  > essa criatura está com a vida muito alta ela não pode ser selada tire mais vida dela
      Creature teria % chance de falhar no selamento e sumir logo em seguida.
       
      Cada criatura daria um item diferente Ex > Jogador Selou um Ciclope e recebeu um Ciclope Pergaminho!
       
      Bom é isso...
       
      Obrigado 
       
       
       
    • By Fakeownerz
      Olá!
      Primeiramente peço desculpas pelo que vão ler, pois não entendo muito do assunto (por isso vim fazer o tópico '-')
       
      Vamos lá.
       
      Ao tentar abrir o servidor , me deparo com o seguinte erro:
       
       
      Meu config.lua está assim:
       
       
      Gostaria de saber como arrumar (só para abrir em meu pc , pra dar uma olhada pra arrumar algums bugs...) ou até mesmo só passar pra sqlite (que eu acho bem mais simples e tenho o mínimo de noção... Agradeço a atenção e peço desculpas novamente pela ignorância sobre o assunto caso seja algo extremamente simples.
    • By caiobale
      Bom, Gostaria de saber como colocar os comandos /attr health, entre outros.
       
      Se poderem ajudar agradeço muito. *-*
    • By Digoshow
      Olá gente estou com o problema que eu precisei instalar varias vezes o sit, e coloquei as 3x na Senha do admin, senhas diferente da qual eu me lembro "a não ser que digitei errado" e eu tento loga com alguma dessas 3 e não entra, tem algo ou o que eu posso fazer para recuperar?
       
      E o meu Config.ini eu coloco start e deixo, mais toda hora volta para o no, como arrumo isso?
       
       
       
      Obrigado "
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo