Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''funçao''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Encontrado 6 registros

  1. DoPlayerSetMasterTown [Lua]

    Functions.lua Poderá ser usado em scripts simples para alterar o townid
  2. Scripting Quest

    Então, Olá. Estou com um projeto em desenvolvimento. Queria pedir uma ajuda se alguem disponibilizava. Eu tava atras, de um script que ja vi que funciona da seguinte forma. Existe um mob em tal local e apos matar ele, ele sumona um Teleport, assim levando para tal local. Queria fazer isso de exemplo para esta sala. Aonde esta o circulo estranho que tentei fazer, seria o mob, e aonde ta o cinal de V seria um local de exemplo do Teleport, e aonde ta o X seria o local de teleport.!
  3. #5 - Funções

    Funções Aula 5 Ao iniciar um arquivo no C++, acrescentamos sempre o seguinte bloco: [b]int[/b] main(int argc, char *argv[]){ } Mas você sabe o que isso significa? :hmm: A função main é a responsável por fazer com que nosso programe rode, sem ela não teriamos um corpo para nosso programa. Entretanto, durante a programação outras funçõe podem ser criadas e utilizadas dentro de main(). Primeiro, vamos entender como estruturar uma função: tipo nome (parametros necessários para que a função execute) { } Sendo: tipo - o tipo de dado que a função retorna nome - um nome qualquer a sua escolha parametros - pode ser quantos quiser, são esses os dados que deverão ser passados para que a função execute. Vamos dar um exemplo durante nosso programa: Entenda o bloco abaixo: Declaramos uma função soma do tipo int e ela possui a e b como parametros. [b]int[/b] soma ([b]int[/b] a, [b]int[/b] { } Só que nossa função ainda está incompleta, está faltando o corpo dela. Essa função então terá como função (:palm:) executar a soma de dois números, serão eles a e b. [b]int[/b] soma ([b]int[/b] a, [b]int[/b] { a+b; } Bom, há um erro nessa função.. ela não funcionaria, pois assim que executarmos a função, como saberemos o resultado dela? :fuu: Simples, usando o return. O return faz com que a função que foi executada, retorne um valor IGUAL AO TIPO DA FUNÇÃO, por exemplo, se você criar uma função do tipo INT, ela tera que retornar INT. Usando o return, nosso code ficaria: [b]int[/b] soma ([b]int[/b] a, [b]int[/b] { [b]return[/b] a+b; } Fazendo um programa com funções Vamos criar um programinha para testarmos nossa função: [left][color=seagreen]#include <iostream.h>[/color][/left] [left][b]int[/b] soma ([b]int[/b] a, [b]int[/b] {[/left] [left][b]return[/b] a+b;[/left] [left]}[/left] [left][b]int[/b] main(int argc, char *argv[]){[/left] [left][b]int[/b] num1, num2, resultado;[/left] [left]cout << [color=red]"Digite dois números: "[/color] << endl; cin >> num1 >> num2; resultado = soma(num1, num2); cout << [color=red]"A soma dos dois números é: "[/color] << resultado << endl; system([color=red]"pause"[/color]); [b]return 0;[/b][/left] [left]}[/left] Declaramos nossa função antes do main para que ela seja reconhecida dentro da função main e então pedimos para o usuário digitar dois valores. Com os dois valores, executamos as funções com os seguintes parâmetros, num1 e num2 e ele retornou o valor da soma. Esse valor foi alocado na variavel resultado. Viram como é fácil trabalhar com funções? :coolface: Mais exemplo de funções: [left][color=seagreen]#include <iostream.h>[/color][/left] [b]bool[/b] checaMedia([b]int[/b] nota1, [b]int[/b] nota2){ [indent][b]if[/b] (((nota1+nota2)/2) >= 5){ [indent][b]return true[/b]; [/indent] [/indent] [indent]} [left][b]else return false[/b];[/left] [/indent]} [left][b]int[/b] main([b]int[/b] argc, [b]char[/b] *argv[]){[/left] [left][b]int[/b] num1, num2;[/left] [left]cout << [color=red]"Digite dois números: "[/color] << endl; cin >> num1 >> num2; [b]if[/b] (checaMedia(num1, num2) == [b]true[/b]){ cout << [color=red]"Aluno aprovado"[/color] << endl; } [b]else[/b] { cout << [color=red]"Aluno reprovado"[/color] << endl; } system([color=red]"pause"[/color]); [b]return 0[/b];[/left] } Por enquanto é só pessoal! Pratiquem com mais funções e qualquer dúvida e só postar!
  4. Introdução: Esses dias eu estava fazendo um sistema e senti a necessidade de armazenar várias informações (por player) em um só lugar. Porém, todos nós sabemos que não é possível colocar uma tabela como valor de um storage. Por conta disso, decidi tornar possível esse armazenamento. Tenho certeza de que essa biblioteca será uma ferramenta extremamente útil para todos os scripters. Ela abre muitas portas e vai permitir a criação de muitos sistemas interessantes. Instalação: Simplesmente crie o arquivo tableStorage.lua em data/lib e coloque esse código: Utilização: Para armazenar uma tabela em um storage de um player, use: setPlayerTableStorage(cid, key, tabela) Exemplo: setPlayerTableStorage(cid, 199991, {["primeiro"] = 4, [8] = "Killua", [3] = 22}) Para armazenar uma tabela em um storage global, use: setGlobalTableStorage(key, tabela) Exemplo: setGlobalStorageValue(123412, {1, 55, "c", 3}) Para retornar as tabelas, use: getGlobalTableStorage(key) ou getPlayerTableStorage(cid, key) Esclarecimento: As tabelas retornadas pelas funções getGlobalTableStorage e getPlayerTableStorage são tabelas normais e podem ser manipuladas como qualquer outra, por exemplo: for t, k in pairs(getPlayerTableStorage(cid, 123444)) do print("["..t.."] "..v) end Observações: As tabelas não armazenam valores booleanos, outras tabelas e nem funções, apenas strings e números. No entanto é claro que ela pode armazenar valores recebidos de funções, por exemplo: setPlayerTableStorage(cid, 17271, {["level"] = getPlayerLevel(cid), ["sex"] = getPlayerSex(cid) == 1 and "female" or "male"}) Funcionará perfeitamente. Mas: setPlayerTableStorage(cid, 17271, {returnDouble = function(value) return value*2 end, try = 11, [2] = 10}) Não irá funcionar. As tabelas podem ser preenchidas com ou sem index definido, de forma que os não definidos serão definidos automaticamente numa sequencia (Como qualquer tabela). Sendo assim: setPlayerTableStorage(cid, 12344, {1,3,23,1999,"test"}) setPlayerTableStorage(cid, 12344, {[5] = "hi", ["mia"] = 32, c = 18}) setPlayerTableStorage(cid, 12344, {1, "c", 6, ["test"] = 18, b = "c", "hello world"}) São todas válidas. Cuidado com com tabelas muito grandes! Elas podem acabar pesando bastante e consumindo bastante de sua database. Eu aconselho não ultrapassar 4 elementos. É claro que apenas um storage com uma tabela bem grande não vai causar problema mas, em um servidor com muitos jogadores, pode ser perigoso adicionar muitas tabelas grandes (1 por jogador). Considerações: Eu realmente acho que essa biblioteca vai abrir várias possibilidades para todos vocês, scripters. E espero que criem muitos sistemas legais a partir dela. Se tiverem dúvidas ou sugestões, podem dizer. Abraços.
  5. Olá a todos, primeiramente quero agradecer á oportunidade de me tornar um scripter e membro da equipe OTBR, antiga otnet, que me ensinou tudo que eu sei de script até hoje, para comemorar isso, vou postar uma função muito útil e simplês que eu imagino que possa ajudar muita gente. [spoiler=Padrão] Autor: MiltonHit, Mirto Testada: sim, tfs 0.3.6 (8.54) Versão: 1.0 A função faz o seguinte, você vai fazer um "quadrado imaginário" setando 2 posições e checando se o player ou creature cid está lá dentro, primeiro vá até á pasta lib/050-function.lua e adicione isso na ultima linha: function getPlayerInPos(cid, posinicial, posfinal, andar) --by mirto local player_pos = getPlayerPosition(cid) local pos = {inicial = posinicial, final = posfinal} for s = 1, #pos do if pos.inicial[s] == nil or pos.final[s] == nil then return print('error in getPlayerInPos, parametros invalidos') end end if (player_pos.x <= pos.inicial.x and player_pos.y <= pos.inicial.y) and (player_pos.x >= pos.final.x and player_pos.y >= pos.final.y) then if not(andar == nil) then if player_pos.z == andar then return true else return false end else return true end else return false end end Pronto, seu script está instalado no servidor, agora para usar você deverar fazer o seguinte, ex: getPlayerInPos(cid, {x=2040,y=375}, {x=1914,y=208}, 7), esse numero no final só deve ser usado se você deseja fazer a checagem de um determinado andar, se não for colocado nada, ele vai checar a área x e y..., em todos os andares possíveis, o script retornará true se o cid estiver na pos e false se não estiver, como configurar o "quadrado": pronto, agora que você já sabe como instalar e usar a função divirta-se! De bônus vai um exemplo de como utilizar essa função: function onThink(cid, interval) [i] if getPlayerInPos(cid, {x=2040,y=375}, {x=1914,y=208}) == true then doTeleportThing(cid, pos) end[/i] end Obrigado a todos, espero que todos tenham gostado da minha primeira contribuição como "sub-moderador", qualquer duvida estou aqui, abraços.
  6. isWalkable(pos)

    Sintaxe: isWalkable(pos) Descrição: A função retorna se você pode andar na posição "pos". Requerimentos: Lua 5.1+ e um OTServer. Função: function isWalkable(pos) local wall0 = getTileThingByPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0}) local wall1 = getTileThingByPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1}) local wall2 = getTileThingByPos({x=pos.x, y=pos.y, z=pos.z, stackpos=2}) local creature = getTileThingByPos({x=pos.x, y=pos.y, z=pos.z, stackpos=253}) if wall0.uid ~= 0 and hasProperty(wall0.uid, 3) == FALSE and hasProperty(wall0.uid, 7) == FALSE then if wall1.uid == 0 or (hasProperty(wall1.uid, 3) == FALSE and hasProperty(wall1.uid, 7) == FALSE) then if wall2.uid == 0 or (hasProperty(wall2.uid, 3) == FALSE and hasProperty(wall2.uid, 7) == FALSE) then if creature.uid == 0 then return TRUE end end end end return FALSE end Comentários adicionais: Quando há uma criatura na posição em que você faz a checagem é retornado um erro mas não acontece nada de errado. É retornado TRUE se você puder andar em "pos", caso contrário é retornado FALSE. Pra quem não sabe adicionar funções num OTServer copie a função e cole depois do último end que está no global.lua
×