Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Muito boa a aula Max, reputado!

# Regras Gerais - TibiaKing.com #
Contato: [email protected]
Não respondo dúvidas via MP.


1C2tu.png4Tlqo.png1C2tu.png


 

Link para o post
Compartilhar em outros sites
  • 1 year later...

Parabéns mais uma vez Max agora sim consegui fixar mais ou menos bem os segredos do comando consigo usar mais de forma bem simples ainda, agora eu tenho uma dúvida sobre o assunto estou desenvolvendo um script e peguei uma parte de um script aqui da annihi e parteé esta:

 

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) < 250) then
							return "You and your enemy must be level 250."
						end
					elseif(isMonster(creature)) then
						return "Players are allowed only."
					end
				end
			end
		end
	end
Estou com dúvida sobre esses dois cara aqui

 

table.insert(cid, creature)
count = count + 1
Qual a função deles no script ? Editado por Beyond Sky (veja o histórico de edições)


Medalhas:
1, 2

Qo5DnNn.png

stonedshowoff2_zpsf5409854.png

Link para o post
Compartilhar em outros sites

Parabéns mais uma vez Max agora sim consegui fixar mais ou menos bem os segredos do comando consigo usar mais de forma bem simples ainda, agora eu tenho uma dúvida sobre o assunto estou desenvolvendo um script e peguei uma parte de um script aqui da annihi e parteé esta:

 

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) < 250) then
							return "You and your enemy must be level 250."
						end
					elseif(isMonster(creature)) then
						return "Players are allowed only."
					end
				end
			end
		end
	end
Estou com dúvida sobre esses dois cara aqui

 

table.insert(cid, creature)
count = count + 1
Qual a função deles no script ?

 

 

table.insert, vai inserir creature, na tabela cid.

e a parte de baixo, é um incremento, pesquisa depois sobre isso. Vai somar 1 ao valor de count

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Boa noite Max, olha eu aqui enchendo o saco denovo ...

Enfim a minha dúvida é referente a esta linha hoje parceiro

 for _, v in pairs(skinning) do
Bom eu não entendi a função do "_" (underline) e do v nesta condição se tiver como me dar uma ajudada aí em relação a isso agradeço,

o script é este parceiro? ... inclusive aquele break ali é realmente necessário ?


local skinning = {
  {monster = "Vampire",  corpse = 2956,  after = 2957,  skin = 5905, chance = 20 },
  {monster = "Vampire Viscount",  corpse = 21275, after = 21276,  skin = 5905, chance = 20 },
  {monster = "Vampire Bride",  corpse = 9654,  after = 9658,  skin = 5905, chance = 20 },
  {monster = "Vampire Lords",  corpse = 8938,  after = 8939,  skin = 5905, chance = 20 },
  {monster = "Demons",  corpse = 2916,  after = 2917,  skin = 5906, chance = 20 }
           }

function onUse(cid, item, fromPosition, itemEx, toPosition)
  for _, v in pairs(skinning) do
  if v.corpse == itemEx.itemid then
      local iEx = Item(itemEx.uid)
  if (math.random(1, 100) <= v.chance) then
  iEx:transform(v.after)
  toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
  Player(cid):addItem(v.skin, 1, true)
  else
  toPosition:sendMagicEffect(CONST_ME_BLOCKHIT)
  iEx:transform(v.after)
  end
  break
  end
  end

  return true
end


Medalhas:
1, 2

Qo5DnNn.png

stonedshowoff2_zpsf5409854.png

Link para o post
Compartilhar em outros sites

Boa noite Max, olha eu aqui enchendo o saco denovo ...

Enfim a minha dúvida é referente a esta linha hoje parceiro

 for _, v in pairs(skinning) do
Bom eu não entendi a função do "_" (underline) e do v nesta condição se tiver como me dar uma ajudada aí em relação a isso agradeço,

o script é este parceiro? ... inclusive aquele break ali é realmente necessário ?


local skinning = {
  {monster = "Vampire",  corpse = 2956,  after = 2957,  skin = 5905, chance = 20 },
  {monster = "Vampire Viscount",  corpse = 21275, after = 21276,  skin = 5905, chance = 20 },
  {monster = "Vampire Bride",  corpse = 9654,  after = 9658,  skin = 5905, chance = 20 },
  {monster = "Vampire Lords",  corpse = 8938,  after = 8939,  skin = 5905, chance = 20 },
  {monster = "Demons",  corpse = 2916,  after = 2917,  skin = 5906, chance = 20 }
           }

function onUse(cid, item, fromPosition, itemEx, toPosition)
  for _, v in pairs(skinning) do
  if v.corpse == itemEx.itemid then
      local iEx = Item(itemEx.uid)
  if (math.random(1, 100) <= v.chance) then
  iEx:transform(v.after)
  toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
  Player(cid):addItem(v.skin, 1, true)
  else
  toPosition:sendMagicEffect(CONST_ME_BLOCKHIT)
  iEx:transform(v.after)
  end
  break
  end
  end

  return true
end

 

Sim, o break é necessário pro script seguir a lógica que o programador quis usar. Dá uma lida de novo no tutorial,

 

for index, valor in pairs(tabela) do

 

Essa é a sintaxe do for. O que muitas pessoas não sabem, é que o underline(_) pode ser usado como nome de variável também. Exemplo:

 

local _ = "Maxwell"
print(_)

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites
  • 1 month later...
  • 1 month later...
  • 2 weeks later...

Haha, é assim mesmo. Espero que continue praticando :D

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites
  • 1 year later...
Em 08/12/2012 12:34:01, MaXwEllDeN disse:

<< Aula 9 - Tabelas

 

 

 

Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos pertencem a ele.

 

 

 

 

 

O Comando for

Aula 10

 

 

 

Você nunca viu o comando for? Ou já abriu um Script e não entendeu nada por causa dele? Eis aqui uma explicação de como funciona o comando e alguns exemplos de utilização, assim como alguns exercícios. biggrin.gif

 

 

Antes de mais nada, o que faz o for?

R: O for causa um "loop", mas não é como o while e o repeat. Por que? Porque ele atribui à uma variavel todos os valores entre o valor inicial e o valor final.

Editado: O For não é um comando Condicional!

 

 

Estrutura do For:

 

 

for variavel = valor inicial, valor final[, incremento] do

bloco

end

Não entendeu? Então vamos à breves explicações, começando com um exemplo abstrato:

 

 local i = 1

local j = 10

local inc = 1


for var = i, j, inc do

print(var)

end

"Oh! Que bicho é este?" R: Isto é um exemplo ridículo do uso do for. Se você nunca viu isso antes, obviamente não entendeu, mas não é nenhum monstro de três cabeças. Quando eu explicar o que foi feito, você vai ver que é muito simples. Nas três primeiras linhas eu defini três variaveis locais, para "limpar" o script e facilitar o entendimento de quem ainda não conhece o for: local i = 1: Aqui eu usei "i" como inicial e ela é usada na linha 5. Seu valor é 1. local j = 10: Aqui eu usei "j" como final e ela é usada na linha 5. Seu valor é 10. local inc = 1: Esté é o incremento do for e seu valor é 1. Vai ser explicada mais pra frente, então não se preocupe com ela agora. var: É a variável à qual será atribuida os valores. "Perai, agora estou com dúvida. Você não declarou a variavel var!" R: Isto é porque ela não precisa ser declarada! Ela só vai servir como variavel dentro do laço(for). Se eu tentasse usar ela em um bloco fora do for bloco do sem ter declarado ela antes, vai resultar num simples nil(Nulo)! print(): Só vai escrever no console. Explicada as variáveis, vamos entender o funcionamento do código: O for vai atribuir à var todos os valores entre o "i"(valor inicial) e o "j"(valor final), incluindo os dois! Não vamos nos preocupar com o incremento agora, pois você pode escrever o código sem ele. No caso, o valor padrão do incremento é 1. Vamos à mais um exemplo:

 

print("-- Início --")

for var = 1, 5 do

print("Valor de var: "..var)

end


print("-- Fim --")

As saídas geradas por esse Script serão:

 

-- Início --

Valor de var: 1

Valor de var: 2

Valor de var: 3

Valor de var: 4

Valor de var: 5

-- Fim --

Entendeu agora? Na primeira vez o for atribuiu à var o valor 1, executou o bloco, depois ele fez um loop, voltando para o começo e re-atribuiu à var o valor inicial + 1 que é 2, executando o bloco de novo usando o novo valor de var. Depois valor inicial + 1 + 1 e assim vai até chegar no valor final que é 5, e é aonde ele para. "Tá, mas não vejo a utilidade do for." Então você, com todo o respeito, é cego! O que eu fiz em três linhas poderia ser feito assim:

 

i = 1

j = 5

switch = TRUE

while switch == TRUE do

if i == j then

print("Valor de i: "..i)

switch = FALSE

else

print("Valor de i: "..i)

i = i + 1

end

end

Ou, dando um desconto, para encurtar, no máximo poderia ser feito assim:

 

i = 1

j = 5

while i <= j do

print("Valor de i: "..i)

i = i + 1

end

Além de que você não pode usar variaveis locais dentro de whiles. Você entendeu tudo o que foi feito até aqui? R: Não! Então volte até a parte onde você "se perdeu" e não leia, estude, até entender. R: Sim! Então vamos complicar um pouco mais e aplicar o for em tabelas! (Atenção, você não precisa conhecer tabelas para continuar!) Aplicando o For em Tabelas! "Qual a utilidade de aplicar o For em tabelas?" R: Não sei se você percebeu, mas não podemos aplicar, do jeito que eu exemplifiquei acima, strings no for, mas há como fazer isso, sim! Usando tabelas(tables, arrays) "Como fazemos então?" Você precisa, antes de mais nada, declarar a tabela! Para quem não conhece, as tabelas são declaradas igual a variáveis, e podem ser locais ou globais. Você pode dar-lhes o nome que quiser, desde que não contenha caracteres especiais: !@#$%¨&*()-+=-*/,.ESPAÇO<>:;?|\"'`´[]{}°ºª¹²³£¢¬§. Underlines (_) são permitidos. Você pode utilizá-los como espaços. O valor das Tabelas ficam sempre entre chaves({}) e são separados por vírgulas! As strings seguem o padrão de estarem sempre entre aspas("")!

 

local Tabela = {}

"Pronto! E agora?" R: Está esperando o que? Adicione os valores! Vou inserir na minha tabela o meu nick e o nick de mais 3 amigos: <Falta de Imaginação smile511.gif>

 

local Tabela = {"Skyen Hasus", "Hwoarang", "MotoBoy", "Luketez"}

Agora entra o for, mas omo fazemos para pegar os valores da tabela? Simples! Qual é a posição do primeiro valor da tabela? É 1, então como valor inicial do for nós colocamos 1! E como valor final? Este valor varia, já que uma tabela pode conter vários e vários valores. Resposta: Nós usamos o #nome_da_tabela! O # retorna o número de valores que a tabela tem! Um outro jeito de fazer isso seria usando o table.getn(tabela), mas é mais fácil e curto com o #! "Ah! Então é só construir a estrutura do for e no bloco colocar print(var)!" Errado, meu amigo, embora a culpa seja minha. O for atribui à variável somente o valor NUMÉRICO, ou seja, ele vai atribuir a posição do valor na tabela. biggrin.gif"Então como eu tenho que fazer?" Se você já conhece tabelas, pense um pouco, não é tão difícil! Pensou? Não conseguiu? Fácil! Como eu disse, a variável vai ter o valor da posição na tabela, então só temos que "achar" este valor, seguindo sua posição! Este não conhece tabelas-> "Mas como fazemos isso?" Usando o nome_da_tabela[posição] sendo a [posição] o valor da variável, já que ela tem o valor da posição! biggrin.gifVeja como vai ficar:

 

local Tabela = {"Skyen Hasus", "Hwoarang", "MotoBoy", "Luketez"}

for var = 1, #Tabela do

print("Valor "..var..": "..Tabela[var])

end

E este script vai retornar:

 

Valor 1: Skyen Hasus

Valor 2: Hwoarang

Valor 3: MotoBoy

Valor 4: Luketez

Acho que aqui vocês já entenderam guande parte e já podem sair fazendo suas "experiências". Caso queiram continuar, tem só mais um conteúdo: incrementos, e para outros, no final tem uns exercícios. Uso de Incrementos no For! Agora que você já aprendeu a usar o for, vai ser moleza aprender os Incrementos. "Mas o que eles fazem?" Eles continuam atribuindo os valores às variáveis, mas o incremento faz eles pularem alguns valores! Exemplo:

 

for var = 1, 16, 3 do

print(var)

end

Saídas geradas por este Script:

 

1

4

7

10

13

16

Ou seja: Os números 2, 3, 5, 6, 8, 9, 11, 12, 14 e 15 são pulados pelo for! "Mas como eu uso?" Simples! Verifique no começo do tutorial a estrutura do for. Aonde está escrito incremento você "substitói" pelo número de valores que vai pular! À pedido do Mock! fist.gif - Os comandos: in pairs() e in ipairs()! Antes de mais nada, saiba que ambos funcionam somente em tabelas! A diferença entre pairs() e ipairs() é que o pairs() vai incluir os índices no for, e o ipairs() não. Mas os dois fazer quase a mesma coisa: Além de definir um valor para uma variável "x", ele vai definir para a variável "y" a posição ou, no caso do pairs(), o índice. Exemplo do ipairs:

 

local tabela = {2, 3, 4, 5, seis=6}

for i, v in ipairs(tabela) do

print(i, v)

end

Que retornará Posição(i), Valor(v):

 

1, 2

2, 3

3, 4

4, 5

Observe que o ipairs() não retornou o "seis=6" Exemplo do pairs:

 

local tabela = {2, 3, 4, 5, seis=6}

for i, v in pairs(tabela) do

print(i, v)

end

Que retornará Posição(i), Valor(v):

 

1, 2

2, 3

3, 4

4, 5

seis, 6

E agora sim, o pairs() retornou o índice "seis=6" Acho que isso é tudo o que precisam saber sobre o ipairs() e pairs(). O resto depende da criatividade e necessidade de cada um. Exemplos de Uso do For!

 

function onSay(cid, words, param)

local Online = getPlayersOnline() -- Retorna uma Tabela

for pid = 1, #Online do

doPlayerSendTextMessage(Online[pid], MESSAGE_INFO_DESCR, "Server will be Restarted in "..param.." Minute(s)!") -- Arrumado por MotoBoy!

end

end
 

local creatures = {"deer", "rabbit", "minotaur", "ghoul", "orc"}

for crat = 1, #creatures do

table.remove(creatures, crat)

end
 

function pularDois(i, j)

local naoPulados = {}

for index = i, j, 2 do

table.insert(naoPulados, index)

end

return table.concat(naoPulados, ", ")

end
 

for a = 664, 668 do

if a == 666 then

print("O número da vez é "..a.."! O número amaldiçoado!")

else

print("O número da vez é "..a.."!")

end

end

Exercícios! Atenção! Faça os exercícios com sinceridade! Não os copie no Debugger do LUA nem olhe as respostas antes de ter certeza de que sua resposta está correta, mesmo que esteja errada, pois a resposta é só para conferir. Exercício 1 - O que há de errado na seguinte função?

 

function exemplo(i, j, inc)

for valor = i, j, inc then

print(valor)

end

end

Exercício 2 - O que há de errado na seguinte função?

 

function exemplo(i, j, inc)

for a = i, j, inc do

print(b)

end

end

Exercício 3 - O Script:

 

local tabela = {"Teste 1", "Teste 2", "Teste 3", "Teste 4", "Teste 5", "Teste 6"}

for valor = 1, 3 do

print(tabela[valor*2])

end

Vai retornar? A) 1, 2, 3 B) "Teste 1", "Teste 2", "Teste 3" C) nil, nil, nil D) 2, 4, 6 E) "Teste 2", "Teste 4", "Teste 6" Exercício 4 - Quantos valores o script abaixo retornará?

 

for valor = 1, 20 do

if valor <= (20/4)*3 then

print(valor)

end

end

Exercício 5 - Qual deve ser o valor do incremento do script abaixo para que sejam retornados 7 valores?

 

local incremento = ???

for valor = 1, 50, incremento do

print(valor)

end

 

 

Respostas:

 

 

Conteúdo Oculto

 

 

 

 

 

 

 

Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos pertencem a ele.

 

Cara man namoral gostei eu cheguei a desenvolver scripts enormes por nao saber que o comando for atribui uma variável a diversos valores com certeza com esse seu tutorial vou poder fazer scripts menores com melhor funcionamento kkk vlw msm já cheguei a procurar em tds os lugares VC me ajudo MT msm vlw <3 rep+

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.

  • Conteúdo Similar

    • Por cloudrun2023
      CloudRun - Sua Melhor Escolha para Hospedagem de OTServer!
      Você está procurando a solução definitiva para hospedar seu OTServer com desempenho imbatível e segurança inigualável? Não procure mais! Apresentamos a CloudRun, sua parceira confiável em serviços de hospedagem na nuvem.
       
      Recursos Exclusivos - Proteção DDoS Avançada:
      Mantenha seu OTServer online e seguro com nossa robusta proteção DDoS, garantindo uma experiência de jogo ininterrupta para seus jogadores.
       
      Servidores Ryzen 7 Poderosos: Desfrute do poder de processamento superior dos servidores Ryzen 7 para garantir um desempenho excepcional do seu OTServer. Velocidade e estabilidade garantidas!
       
      Armazenamento NVMe de Alta Velocidade:
      Reduza o tempo de carregamento do jogo com nosso armazenamento NVMe ultrarrápido. Seus jogadores vão adorar a rapidez com que podem explorar o mundo do seu OTServer.
       
      Uplink de até 1GB:
      Oferecemos uma conexão de alta velocidade com até 1GB de largura de banda, garantindo uma experiência de jogo suave e livre de lag para todos os seus jogadores, mesmo nos momentos de pico.
       
      Suporte 24 Horas:
      Estamos sempre aqui para você! Nossa equipe de suporte está disponível 24 horas por dia, 7 dias por semana, para resolver qualquer problema ou responder a qualquer pergunta que você possa ter. Sua satisfação é a nossa prioridade.
       
      Fácil e Rápido de Começar:
      Configurar seu OTServer na CloudRun é simples e rápido. Concentre-se no desenvolvimento do seu jogo enquanto cuidamos da hospedagem.
       
      Entre em Contato Agora!
      Website: https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
      Email: [email protected]
      Telefone: (47) 99902-5147

      Não comprometa a qualidade da hospedagem do seu OTServer. Escolha a CloudRun e ofereça aos seus jogadores a melhor experiência de jogo possível. Visite nosso site hoje mesmo para conhecer nossos planos e começar!
       
      https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
       
      CloudRun - Onde a Velocidade Encontra a Confiabilidade!
       

    • Por FeeTads
      SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.

      **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts

      vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

      SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.

      vá em creatureevent.cpp

      procure por:
      else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
      Adiciona abaixo:
      else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";  
      Adicione abaixo: 
      case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
      Adicione abaixo:
      case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";

      agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
      uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }

      agora vá em creatureevent.h

      procure por:
      CREATURE_EVENT_PREPAREDEATH
      adicione abaixo:
      CREATURE_EVENT_NOCOUNTFRAG

      procure por:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
      Adicione abaixo:
      uint32_t executeNoCountFragArea(Creature* creature, Creature* target);

      agora vá em player.cpp

      procure por:
      bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
      abaixo de:
      War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
      Adicione o seguinte código:
      if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }

      //

      Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor

      vá até creaturescripts/scripts
      crie um arquivo chamado, "noCountFragInArea.lua"
      e dentro dele cole o código:
       
      --[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
      agora em creaturescripts.xml
      <event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
      agora em creaturescripts/scripts/login.lua
       procure por OU semelhante a esse:
      registerCreatureEvent(cid, "AdvanceSave")
      e abaixo adicione:
      registerCreatureEvent(cid, "fragarea")

      //


      Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script

      Exemplo:
      local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
      assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
      Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
      Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.

      Façam bom proveito dos scripts, e deixem os créditos no script rsrs

      **Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
    • Por Muvuka
      Abri canal a força creaturescript acho que funcione no creaturescript cria script creaturescript
       
      <channel id="9" name="HELP" logged="yes"/>
      <channel id="12" name="Report Bugs" logged="yes"/>
      <channel id="13" name="Loot" logged="yes"/>
      <channel id="14" name="Report Character Rules Tibia Rules" logged="yes"/>
      <channel id="15" name="Death Channel"/>
      <channel id="6548" name="DexSoft" level="1"/>
      <channel id="7" name="Reports" logged="yes"/>
       
      antes de 
              if(lastLogin > 0) then adicione isso:
                      doPlayerOpenChannel(cid, CHANNEL_HELP) doPlayerOpenChannel(cid, 1,  2, 3) = 1,2 ,3 Channels, entendeu? NÃO FUNCIONA EU QUERO UM MEIO DE ABRI SEM USA A SOURCE
       
      EU NÃO CONSEGUI ABRI EU NÃO TENHO SOURCE
       
       
    • Por bolachapancao
      Rapaziada seguinte preciso de um script que ao utilizar uma alavanca para até 4 jogadores.
      Os jogadores serão teleportados para hunt durante uma hora e depois de uma hora os jogadores serão teleportados de volta para o templo.
       
      Observação: caso o jogador morra ou saia da hunt o evento hunt é cancelado.

      Estou a base canary
      GitHub - opentibiabr/canary: Canary Server 13.x for OpenTibia community.
       
    • Por RAJADAO
      .Qual servidor ou website você utiliza como base? 
      Sabrehaven 8.0
      Qual o motivo deste tópico? 
      Ajuda com novos efeitos
       
      Olá amigos, gostaria de ajuda para introduzir os seguintes efeitos no meu servidor (usando o Sabrehaven 8.0 como base), adicionei algumas runas novas (avalanche, icicle, míssil sagrado, stoneshower & Thunderstorm) e alguns novos feitiços (exevo mas san, exori san, exori tera, exori frigo, exevo gran mas frigo, exevo gran mas tera, exevo tera hur, exevo frigo hur) mas nenhum dos efeitos dessas magias parece existir no servidor, alguém tem um link para um tutorial ou algo assim para que eu possa fazer isso funcionar?
      Desculpe pelo mau inglês, sou brasileiro.

      Obrigado!


      AVALANCHE RUNE id:3161 \/
      (COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)

      STONESHOWER RUNE id:3175 \/
      (COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_STONES)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)

      THUNDERSTORM RUNE id:3202 \/
      (COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_E NERGYHIT)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)

      ICICLE RUNE id:3158 \/
      COMBAT_ICEDAMAGE
      CONST_ME_ICEAREA
      CONST_ANI_ICE

      SANTO MÍSSIL RUNA id:3182 \/
      (COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)

      CONST_ME_PLANTATTACK (exevo gran mas tera)
      CONST_ME_ICETORNADO (exevo gran mas frigo)
      CONST_ME_SMALLPLANTS (exevo tera hur)
      CONST_ME_ICEAREA (exevo frigo hur)
      CONST_ME_ICEATTACK (exori frigo)
      CONST_ME_CARNIPHILA (exori tera)

      EXORI SAN \/
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
      CONST_ME_HOLYDAM IDADE

      EXEVO MAS SAN \/
      CONST_ME_HOLYAREA
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo