Ir para conteúdo

firebolt

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    firebolt deu reputação a TsplayerT em (Resolvido)Item shop   
    Coloque o Erro No Topico
  2. Gostei
    firebolt deu reputação a xWhiteWolf em Donate Coin   
    eu tentei mas não consegui, não sei como faz pra pegar o valor de uma tabela nova da database e editar ela como sendo o valor atual + 1
  3. Gostei
    firebolt recebeu reputação de vanderxz em Error WEBSITE VictorWEBMaster 0.0.8 (2)   
    voce precisa configurar o install.php
     
    C: \ xampp \ htdocs \ install.php
     
    abraço.
  4. Gostei
    firebolt deu reputação a luanluciano93 em (Resolvido)[PEDIDO] shop.lua para TFS 1.0   
    -- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 18 -- time (in seconds) between connections to SQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) local result_plr = db.storeQuery("SELECT * FROM z_ots_comunication") if(result_plr ~= false) then repeat local id = tonumber(result.getDataInt(result_plr, "id")) local action = tostring(result.getDataString(result_plr, "action")) local delete = tonumber(result.getDataInt(result_plr, "delete_it")) local cid = getPlayerByName(tostring(result.getDataString(result_plr, "name"))) if(cid) then local itemtogive_id = tonumber(result.getDataInt(result_plr, "param1")) local itemtogive_count = tonumber(result.getDataInt(result_plr, "param2")) local container_id = tonumber(result.getDataInt(result_plr, "param3")) local container_count = tonumber(result.getDataInt(result_plr, "param4")) local add_item_type = tostring(result.getDataString(result_plr, "param5")) local add_item_name = tostring(result.getDataString(result_plr, "param6")) local received_item = 0 local full_weight = 0 if(add_item_type == 'container') then container_weight = getItemWeight(container_id, 1) if(isItemRune(itemtogive_id)) then items_weight = container_count * getItemWeight(itemtogive_id, 1) else items_weight = container_count * getItemWeight(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeight(itemtogive_id, itemtogive_count) if(isItemRune(itemtogive_id)) then full_weight = getItemWeight(itemtogive_id, 1) else full_weight = getItemWeight(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if(full_weight <= free_cap) then if(add_item_type == 'container') then local new_container = doCreateItemEx(container_id, 1) local iter = 0 while(iter ~= container_count) do doAddContainerItem(new_container, itemtogive_id, itemtogive_count) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) received_item = doPlayerAddItemEx(cid, new_item) end if(type(received_item) == "number" and received_item == RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end until not result.next(result_plr) result.free(result_plr) end return true end <globalevent name="Shop" interval="60000" script="shop.lua" />
  5. Gostei
    firebolt deu reputação a luanluciano93 em Shop Admin Gesior 2012 (TFS 0.3.6 ~ 0.4, 1.0)   
    @firebolt, dÊ uma lida nos tópicos ..
     
    • http://www.tibiaking.com/forum/topic/14356-shoplua-adicionando-nome-nos-items-comprados/
    • http://www.tibiaking.com/forum/topic/24656-shoplua-para-tfs-04/
     
    Espero ter ajudado!
  6. Gostei
    firebolt deu reputação a dezon em Shop Admin Gesior 2012 (TFS 0.3.6 ~ 0.4, 1.0)   
    [+] Shop Admin Gesior 2012 (TFS 0.3.6 ~ 0.4, 1.0) [+]
    [+] Nova versão 2015 [+]
     
    Olá pessoal!

    Quero apresentar a mais nova versão do meu script para administrar Web Shop do Gesior 2012.

    [+] O que tem de novo?:
    O script foi revisado; Comentado as principais partes; Escrito algumas funções e ações novas; Revisado anti-inject; Agora você pode adicionar pontos para quem fizer doação; De uma forma geral, foi revisado de cabo à rabo ! [+] Imagens:

    [+] Galeria de imagens online
    http://postimg.org/gallery/1ssnwbf1i/

    [+] Instalação:
    Basta você ter o Gesior 2012 instalado junto aos scripts LUA de shop do mesmo; Ter o banco de dados instalado e um servidor TFS 0.3.6+, TFS 1.0, 1 rodando também.

    + Vá na pata {seu_web_server}\www ou htdocs\pages\ e renomeie o arquivo 'shopadmin.php' para 'shopadmin.php.old';
    + Faça download do script novo e cole na pasta que citei à cima;
    + Faça download desse arquivo http://item-images.ots.me/items_images_1076.zip;
    + Copie e cole a pasta que vem dentro desse arquivo e cole na pasta {seu_web_server}\www ou htdocs\images\ ficando assim {seu_web_server}\www ou htdocs\images\items\ e dentro dessa pasta as imagens dos itens do tibia;
    + Pronto!

    [+] Download:
    http://www.mediafire.com/view/z62d9zxylpg36dz/shopadmin.php

    [+] Scan:
    https://www.virustotal.com/pt/file/c06a2f7e1c1909b34f4dee2a7c27930a6c7cad1882edfcdf101689b0b61899d9/analysis/1399682407/
     
    [+] ATENÇÃO: Bug encontrado:
    Na realidade o shopadmin.php desenvolvido por mim, não contém bug's, ele faz o registro das ofertas corretamente, o que eu não consegui consertar foi o data/globalevents/scripts/others/shop.lua.
    Ele não consegue criar o container e adicionar os itens dentro desse container da oferta cadastrada, exemplo: se você criar uma BP de SD, dá o seguinte erro:
    Lua Script Error: [GlobalEvent Interface] data/globalevents/scripts/others/shop.lua:onThink LuaScriptInterface::luaPlayerAddItemEx(). Item not found stack traceback: [C]: in function 'addItemEx' data/lib/compat/compat.lua:363: in function 'doPlayerAddItemEx' data/globalevents/scripts/others/shop.lua:50: in function <data/globalev ents/scripts/others/shop.lua:7> Claro que estou correndo atrás de resolver esse problema, mas se por um acaso alguém tiver a solução, peço que por gentileza, poste aqui que darei os devidos créditos!
     
     
    [+] Como adicionar items?
    Para adicionar items ao shopping é muito fácil, basta você seguir igual eu postei nas fotos a configuração, respeitando o ID do item, Quantidade, o Tipo da oferta e etc, assim você enviará uma nova oferta para o seu site.

    Para adicionar uma oferta do tipo Container (Bp, Bag, etc) é fácil também, basta você preencher como na imagem à seguir:


    [+] Explicando:
    Coloque o 'Nome' da oferta. Insira uma 'Descrição' para essa oferta. Diga a quantidade de 'Premium points' necessários. Selecione o tipo da oferta: 'Item' ou 'Container'. Coloque o 'ID Item 1' à ser vendido, caso seja um item normal: armadura, espada, etc. Preencha a 'Qtde. Item 1' que o player irá receber quando comprar essa oferta. Deixe em branco 'ID Item 2' e 'Qtde. Item 2'. Caso seja BP, selecione o tipo para 'Container', no 'ID Item 1' coloque o Id da BP. Em 'Qtde. Item 1' você deve colocar a quantidade para cada item dentro do container, exemplo: se for BP de Runa, para preencher a BP você terá um total de 20 slots preenchidos pela quantidade de runas do 'Qtde. Item 2', então coloque 20, pois representa a quantidade de slots dentro do container. Agora em 'ID Item 2' você coloca o ID da Runa ou do item que você está vendendo dentro do container. Preencha a 'Qtde. Item 2' com a quantidade para cada slot do container que você está vendendo. Clique em salvar. Pronto, adicionado! [+] Isso é necessário:
    Lembrando que você precisa estar já com os scripts em lua funcionando corretamente do sistema de shop do Gesior 2012, você pode encontrá-los aqui: http://otland.net/threads/gesior2012-items-shop-installation-administration.170654/

    Obrigado à todos!!!
  7. Gostei
    firebolt deu reputação a dezon em Windows   
    Faz um teste!

    Instale o VirtualBox, crie uma máquina virtual com algum sistema operacional windows que tem no vps que você está pensando em contratar, coloque o seu servidor dentro dele, configure ele de acordo como você achar melhor e tente rodar.
    Se rodar é porque com certeza irá rodar no seu vps!
     
    Abraço.
  8. Gostei
    firebolt deu reputação a ViitinG em shovel não abre buracos   
    @firebolt cuidado com double post brother !
    Leia as regras do fórum : http://www.tibiaking.com/forum/forum/23-regras-do-forum/
     
    @topic tem 2 script de shovel no seu xml,tenta remover um.
  9. Gostei
    firebolt deu reputação a Rusherzin em shovel não abre buracos   
    Só uma dica, quando quiser postar de novo antes de te responderem, edita seu antigo post porquê como o ViitinG disse, double post é contra as regras
  10. Gostei
    firebolt deu reputação a Rusherzin em shovel não abre buracos   
    Tenta usar assim:
    <action itemid="2554;5710" script="tools/shovel.lua"/>
     
  11. Gostei
    firebolt deu reputação a Rusherzin em shovel não abre buracos   
    Tenta com esse:
    function onUse(cid, item, fromPosition, itemEx, toPosition) if(isInArray(HOLES, itemEx.itemid)) then if(itemEx.itemid ~= 8579) then itemEx.itemid = itemEx.itemid + 1 else itemEx.itemid = 8585 end doTransformItem(itemEx.uid, itemEx.itemid) doDecayItem(itemEx.uid) return true elseif(SAND_HOLES[itemEx.itemid] ~= nil) then doSendMagicEffect(toPosition, CONST_ME_POFF) doTransformItem(itemEx.uid, SAND_HOLES[itemEx.itemid]) doDecayItem(itemEx.uid) return true elseif(itemEx.itemid == SAND and not isRookie(cid)) then local rand = math.random(1, 100) if(rand >= 1 and rand <= 5) then doCreateItem(ITEM_SCARAB_COIN, 1, toPosition) elseif(rand > 85) then doCreateMonster("Scarab", toPosition, false) end doSendMagicEffect(toPosition, CONST_ME_POFF) return true end return false end
  12. Gostei
    firebolt deu reputação a Adriano SwaTT em Anél de Experiência' [Exp Ring]   
    Eu tentei achar aqui no TibiaKing o Anél de Experiência (Ring of Experience ou Exp Ring), e só achei um tutorial, mas está meio imcompleto e confuso...
    No entanto decidi postar este que criei há alguns meses.

    Como o nome diz, é um anél que aumenta a experiência de sua caçada' (configurável)
    \o/
    Vamos lá...

    1º Passo


    Se quer um Anel de Experiencia Recarregável (como soft boots), clique no Spoiler abaixo.
    Configurações do NPC:
    Recolhe: "broken experience ring"
    Custo: "50k"
    Devolte: "Brand-New Experience Ring"

    5º Passo






    É, acho que é isso...
    Qualquer coisa postem aqui para resolvermos juntos.

    Eu editei o Script, criei o NPC e criei o Tutorial.
    Créditos pelo tutorial: AdrianoSwaTT
    Créditos pelo Exp Ring Stages: Vodkart
    Créditos pelo Script: OTLand

    Abraços, espero que seja útil'
  13. Gostei
    firebolt deu reputação a MaXwEllDeN em [Aula 9] Tabelas   
    << Aula 8 - while & repeat
    Essa aula foi escrita por um suricato Notorious, todos os créditos pertencem à ele.
    Tabelas
    Aula 9
    #Introdução
    Olá, nessa aula vamos conhecer um elemento que facilita muito a vida de programadores, principalmente quando se trata de um código com muitas variáveis e operações, as tabelas!
    Imagine uma tabela como se fosse uma estante com várias gavetas, quantas você desejar, dentro de cada gaveta tem um objeto, temos a gaveta um, a gaveta dois, e assim em diante ... podemos guardar objetos dentro de cada gaveta, tirar objetos delas e também saber o que tem dentro de cada uma, nessa analogia uma tabela é basicamente como se fosse essa estante.
    Uma tabela é uma variável estruturada que pode conter vários valores dispostos "dentro" de si (vide analogia), seu inicio é indicado por uma abertura de chave, ela pode conter inúmeros valores, de todos os tipos exceto nulo(nil), desde variáveis até strings, e dentro dela esses valores são separados por vírgulas (,), seu fim é indicado por um fechamento de chave.
    Essa definição pode ficar meio confusa aqui, mas garanto que ao longo da aula tudo vai se explicar.
    Exemplo:
      tb = {1, 2, 3, 4, 5} --> inteiros em uma tabela tb = {"hello", "world"} --> strings em uma tabela tb = {a = 2, b = 3} --> variáveis em uma tabela tb = {1, 2, 3, 4, 5} --> inteiros em uma tabela tb = {"hello", "world"} --> strings em uma tabela tb = {a = 2, b = 3} --> variáveis em uma tabela Como você pode perceber nos exemplos acima a declaração (criação) de uma tabela é semelhante a de uma variável comum, mas perceba que a estrutura é diferente, eu abri uma chave `{´ e dentro dessa chave comecei a colocar os valores que eu quero para cada posição na tabela, como se eu estivesse distribuindo-os nas "gavetinhas" 1, 2, etc, separados por vírgulas, é como se cada virgula indicasse que acaba uma gavetinha e começa outra, mas lembre-se só é permitido um valor em cada "gavetinha" e uma gavetinha não pode não ter valor ou ser nula, e no final ocorre um fechamento da chave `}´ que indica o fechamento/final da tabela. Através desses exemplos e definições percebemos uma coisa, uma tabela é uma variável comum, mas é como se pudessemos guardar vários valores dentro de uma variável só, dentro da tabela, ao invés de criarmos duas variáveis, porque não criamos uma tabela contendo os valores dessas duas variáveis.
     
    #Mas e então, qual é a vantagem de se usar tabelas?
     
    Além da organização e estruturação veremos mais pra frente jeitos de se manipular tabelas que farão com que seu código fique muito menor e mais prático com o uso delas, acompanhe ... #Agora vamos pra uma parte um pouco mais chatinha, preste atenção Tabelas contém indexes, o que é um index? Os indexes são chaves "primárias" às quais os valores da tabela são associados, todo valor em uma tabela exceto variáveis tem um index, o index se não definido por você é definido pela posição do valor na tabela, e eles tem a simples função de organização e identificação dos valores na tabela:
      tb = {2, 5, 4, 6} Sobre a tabela acima podemos afirmar que o valor 2 tem o index 1, mas porque? Pois como eu já falei o index é definido pela posição do valor na tabela, começando sempre do 1, então ele é o primeiro valor da tabela, tem a posição 1 E assim em diante, o valor 5 tem index 2, o 4 tem index 3, o 6 tem index 6 e sempre em diante ... Há também a opção de definir o index de um valor manualmente ao invés de simplesmente identifica-los pela posição na tabela, o que pode facilitar a associação de valores:
      --> [index] = valor tb = {2, 5, [15] = 30} Neste caso foi criada uma tabela, e para um de seus valores foi definido o index 15 manualmente, ou seja, o index do valor 2 é 1, e o do valor 5 é 2 (atribuidos pela posição), já para o valor 30 foi definido o index 15 manualmente, então o index do valor 30 é 15, e não 3 como seria normalmente ... #E como se pega os valores de uma tabela? Há dois meios de se pegar valores de dentro de uma tabela: Através do index do valor ou se a tabela contiver variáveis, através dos nomes das variáveis:
      t = {21, 23, 43, 54} t[2] --> esta sintaxe retornará o valor na tabela 't' no index 2, ou seja, 23 t[3] --> 43 t[4] --> 54 e assim por diante ... Para se obter valores de uma tabela através de variáveis inseridas nela é muito mais fácil:
      t = {level = 20, nome = "dragon"} t.level --> 20, 't' é a tabela e 'level' o nome da variável inserida nela t.nome --> "dragon" #A biblioteca 'table' Existem muitas funções dentro da biblioteca 'table', que são usadas para manipulação de tabelas, aqui vão elas e suas respectivas utilidades:
      table.concat (table [, sep [, i [, j]]]) --> Dada uma tabela onde todos os elementos são strings ou números retorna os elementos de i ou o inicio e j ou o fim concatenados em sequencia intercalados por 'sep', separador table.insert (table, [pos,] value) --> Insere o valor 'value' na 'pos' (index) na tabela 'table' table.remove (table [, pos]) --> Remove o valor associado ao index 'pos' da tabela 'table' table.sort (table [, comp]) --> Ordena os elementos da tabela 'table' em dada ordem, se comp é fornecido então ele deve ser uma função que recebe dois elementos da tabela e retorna true quando o primeiro é menor do que o segundo #E como uma tabela pode ser util no meu script? Pode ser útil na associação de valores, observe este script de troca de sexo, ao invés de dois ifs checando o sexo, como o sexo só pode ser 0 ou 1, você usa uma tabela:
      function onUse(cid) local sex = { [0] = 1, [1] = 0, } doPlayerSetSex(cid, sex[getPlayerSex(cid)]) return true end Se o sexo do jogador for 0, atraves do valor no index 0 na tabela, o sexo é trocado para 1, e vice-versa .. Como também pode ser útil para armazenar configurações ou variáveis:
      local config = { effect = 1, removeRune = true, combat = 2 } config.effect --> 1 config.removerune --> true config.combat --> 2 #Utilidades
    #Curiosidades
    Tabelas são o único mecanismo de estruturação de dados em Lua; Tabelas podem ser heterogêneas; isto é, elas podem conter valores de todos os tipos (exceto nil). Existem várias maneiras convenientes de se criar tabelas em Lua Campos de tabela podem conter funções *nil = tipo de valor nulo, vazio
     
     
    Gostou? Agradeça ...
    Exercício Crie uma tabela, contendo 2 valores inteiros, 2 strings e 2 variaveis. Printe os elementos semelhantes da tabela separadamente.
    OBS: Os valores podem ser aleatórios
     
     
    Aula escrita por um suricato Notorious, todos os créditos são dele.
    Aula 10 - O comando for >>
  14. Gostei
    firebolt deu reputação a MaXwEllDeN em [Aula 6] Escopo   
    << Aula 5 - Variáveis e Comentários
    Escopo
    Aula 6
    Vimos na aula anterior sobre variáveis, e vimos também, bem superficialmente, como declarar variáveis como locais.
    Você pode se perguntar: "Qual a utilidade de uma variável local?", "O que ela tem de diferente de uma variável global?" ou "Se elas são tão importantes, por que quase ninguém usa?".
    Vamos por passos. Imagine a seguinte situação: "Você tem uma variável chamada var, e ela vale 1, mas em certo ponto do script você quer que ela receba o valor 2, execute alguma coisa (Como um print) e, depois que executar, ela retorne ao valor anterior (1).". Um dos modos de fazer isto é usando uma outra variável temporária para armazenar o valor antigo, ficando assim:
      var = 1 temp_var = var var = 2 print(var) var = temp_var temp_var = nil print(var) Veja que o código possui 7 linhas para fazer algo tão simples, por isso usar a variável temporária foi uma idéia de girico chamada carinhosamente de Gambiarra. Vamos fazer a mesma coisa que antes, mas agora do modo "correto":
      var = 1 do local var = 2 print(var) end print(var) Observe que agora, mesmo tendo ficado com quase o mesmo número de linhas, está mais "charmoso". Vamos agora entender o do e o end. O do é uma estrutura de controle (Abre/Fecha um Escopo) que abre um novo escopo. O end é uma estrutura de controle (Abre/Fecha um Escopo) que fecha o escopo mais alto. Você não deve ter entendido. Imagine que os escopos são como uma pirâmide, que começa inicialmente no andar 0 (Estes números são "imaginários", somente para facilitar o entendimento). As estruturas de controle tem o poder de construir ou destruir um degrau desta pirâmide, no caso o do constrói um andar e o end destrói o andar mais alto da pirâmide. Vamos tentar entender:
      -- Estamos no andar 0. do -- Construímos um andar. Agora estamos no andar 1. end -- Destruímos o andar 1 e voltamos para o 0. -- Estamos no andar 0. Importante: Você deve terminar no andar que começou, ou seja, no andar 0. Vamos ver o mesmo código um pouco maior:
      -- Estamos no andar 0. do -- Construímos um andar. Agora estamos no andar 1. do -- Construímos mais um andar. Agora estamos no andar 2. do -- Construímos mais um andar. Agora estamos no andar 3. end -- Destruímos o andar 3 e voltamos para o 2. end -- Destruímos o andar 2 e voltamos para o 1. end -- Destruímos o andar 1 e voltamos para o 0. -- Estamos no andar 0. A definição ideal para escopo (Em Lua) seria: Até onde as variáveis locais são alcançáveis. Isso porque se você estiver no andar 1 e tiver declarado uma variável no andar 2, quando o andar 2 tiver sido destuido pelo end, a variável será apagada e você não poderá mais chamá-la no andar 1, embora você possa chamar variáveis do andar 1 se estiver no andar 2. Se esta variável existir no andar 1 e no 2, vai sempre pegar a que estiver mais perto (No caso, a do andar 2). Se existir uma local alcançável e uma global, sempre pegará a local ao invés da global. A global só será pega se não houver nenhuma local alcançável. Você pode declarar uma variável local em um andar e modificar seu valor em outro escopo. Esta é uma tática muito útil:
      var = 1 do local var do var = 2 end do print(var) end end print(var) Preste bastante atenção quanto à isto:
      var = 1 do do local var = 2 end do print(var) end end Se você está pensando que o valor escrito será 2, está muito enganado. A variável local "var" do primeiro andar 2 será apagada assim que o end destruir o andar, então o valor escrito será 1. Essa "pegadinha" pode frustrar vocês, então prestem atenção. Vale lembrar que, como as funções são armazenadas em variáveis, elas também podem ser locais:
      teste = function() end -- Variável Global function teste() end -- Variável Global local teste = function() end -- Variável Local local function teste() end -- Variável Local OBS: Toda Estrutura de Controle deve terminar com o end. São estruturas de controle:
    do function while repeat if OBS: O repeat é um caso especial e não usa end para finalizar o escopo. Ele usa o until. Veremos as 4 últimas em aulas futuras. Exercício Descubra o que acontece em cada um dos casos e por quê:
      var = 1 local var = 2 print(var)   var = 1 do local var = 2 end print(var)   var = 1 local var do var = 2 end print(var)   var = 1 local var = 2 do print(var) end   var = 1 do local var = 2 do var = 3 end print(var) end Aula escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
    Aula 7 - Estruturas de Controle >>
  15. Gostei
    firebolt deu reputação a MaXwEllDeN em [Aula 2] Lógica da Programaçao   
    << Aula 1 - Introdução
     
     
     
     
    Lógica da Programação
    Aula 2
     
     
     
     
    O que é a Lógica da Programação?
    Bem, tudo o que é escrito em alguma linguagem de programação deve seguir uma lógica para poder funcionar. Vamos pegar um exemplo simples e curto: Um script de SD. (Sudden Death Rune)
     
    Quando o script de SD for chamado (Alguém usou a SD), ela segue passos básicos, que é basicamente a execução dela. Primeiro o script vai verificar se quem usou a SD possui nível, magic level, etc... suficiente para poder usar a SD. Se não possuir opa! Ela vai enviar uma mensagem de erro ao jogador, um efeito de fumaça e vai encerrar a execução. Caso contrário: se for um jogador com todos os requerimentos básicos para usar uma SD, então o script vai verificar se o alvo é um Player ou Monstro. Se não for vai enviar uma mensagem de erro, efeito, e vai parar de executar. Se for um monstro ou player, então o script fará um efeito da SD atingindo o alvo, toda aquela piromancia louca, e então vai tirar o devido dano do jogador.
     
    Um pouco cansativo de ler tudo isso, mas observe o exemplo abaixo:
     
     
      Quando uma SD for usada, então faça: Verifique se o jogador que usou a SD possui nível igual ou maior que 45, e se possui nível mágico maior ou igual a 15. Se possuir, faça: Se o alvo da SD for um Monstro ou Jogador, então faça: Calcule o dano que causará ao alvo. Remova uma carga da SD. Execute o efeito de SD. Calcule o dano que causará ao alvo e execute-o no alvo, tirando a vida dele ou mana, no caso de o alvo estiver usando o Magic Shield (Utamo Vita). Mas se o alvo da SD não for um Monstro ou Jogador, então faça: Envie uma mensagem de erro ao jogador. Envie um efeito de fumaça na posição do jogador. Aqui termina a verificação se o alvo da SD é um Monstro ou Jogador, ou nenhum dos dois. Mas se o jogador não possuir estes requerimentos, então faça: Envie uma mensagem de erro ao jogador. Envie um efeito de fumaça na posição do jogador. Aqui termina a verificação se o jogador possui ou não os requerimentos. Aqui termina a execução da SD. Agora, depois deste algoritmo, talvez tenha ficado mais claro como os programas de computador funcionam. Tudo não passa de um processo lógico, onde a linguagem de programação só serve como uma "máscara" para que o programador escreva o código seguindo esta lógica, por isso é ultra importante saber a lógica da programação antes de começar a programar. O que é um Algoritmo? O "código" que eu escrevi acima (Dentro da caixa de texto) representando o uso da SD foi um algoritmo. Os algoritmos são formas de representar a lógica seguida pelo programa. São passos que o programa segue para atingir determinado objetivo ou em outras palavras, completar uma tarefa (No caso da SD, matar ou não o alvo, ou enviar uma mensagem de erro). Um exemplo de algoritmo são as operações matemáticas, como somar, dividir, multiplicar, subtrair... Quando você soma 2 mais 2, você está executando um algoritmo para ele atingir o objetivo (O resultado!!), que é 4. Um programa ou script é basicamente a escrita dos algoritmos em uma linguagem de programação que é executada pelo computador de forma lógica.
     
    Esta aula foi curta pois eu prefiro lhes ensinar as estruturas lógicas conforme ensino as mesmas em Lua, assim trabalhando a lógica e Lua ao mesmo tempo. Primeiro ensino como funciona a estrutura na Lógica e depois ensino como aplicar em Lua.
     
    Exercícios-Tarefa:
     
    1. Monte o algoritmo de um script de "Shovel (Pá)".
    2. Monte o algoritmo de um script de "Pedra que troca sexo".
    3. Monte o algoritmo de "Ir ao cinema".
    4. Monte o algoritmo de "Fazer bolo".
     
     
     
    Respostas: Só abra depois de ter tentado resolver os exercícios!
     
    Exercício 1:
     
     
     
    Exercício 2:
     
     
    Exercício 3:
     
     
    Exercício 4:
     
     
     
    OBS: Nota-se que já fiquei cansado nas respostas do exercício 3 e 4... 
     
    Aqui só serão aceitas dúvidas ou reporte de erros. Qualquer coisa que não se encaixe nesta descrição será apagado sem aviso.
     
    Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
     
     
    Aula 3 - Primeiros Passos >>
  16. Gostei
    firebolt deu reputação a MaXwEllDeN em [Aula 1] Introdução   
    Introdução
    Aula 1
    O que é scripting?
    Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
    O que é um script?
    De um modo geral, um script é um bloco de código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
    O que é uma linguagem de programação interpretada?
    Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
    No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
    Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
    As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
    Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
    Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
    Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
    Características da linguagem de programação Lua:
    Linguagem de Programação Interpretada Linguagem de Programação Imperativa ou Programação Procedural Linguagem de Scripts ou Linguagem de Extensão Pequena, Fácil, Leve e Eficiente " Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
    Wikipédia - Lua (Linguagem de Programação)
    O que eu preciso para aprender Lua e começar a produzir meus scripts?
    Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
      Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
      Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
      Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
      Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
      Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
      Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
      Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer ) Onde posso encontrar um Interpretador e/ou Editor Lua?
    Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
    Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Download].
    Exercício-Tarefa:
    Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
    Somente dúvidas serão aceitas aqui! Comentários que não forem dúvidas serão apagados e os autores serão reportados!
    Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
    Aula 2 - Lógica da programação >> Script Live By colex.rar
  17. Gostei
    firebolt deu reputação a maresoft em Ajuda   
    Para o dinheiro cair na sua conta você tem que possuir uma conta pagseguro ou paypal, depois é só ir no config.php e colocar o email.
     
     
     
    se ajudei  rep +
  18. Gostei
    firebolt deu reputação a JhonatanCWest em Aprenda a criar e postar um NPC no seu Map   
    Olá KingTibianos
    A pedido de um membro, vou postar um tutorial de como criar um NPC. Explicando detalhadamente.
    Primeiramente, cada npc se encontra em data/npcs no seu ot.
    Vou postar aqui como exemplo um NPC que venda algumas coisas:
      <?xml version="1.0" encoding="UTF-8"?> <npc name="Paul" script="default.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="57" body="86" legs="0" feet="114" addons="2"/> <parameters> <parameter key="module_shop" value="1"/> <parameter key="shop_sellable" value="crossbow,2455,150;bow,2456,130"/> <parameter key="shop_buyable" value="crossbow,2455,360;bow,2456,200;spear,2389,10;royal spear,7378,25;assassin star,7368,200;power bolt,2547,30;bolt,2543,3;arrow,2544,2;"/> </parameters> </npc> Explicando:
    <?xml version="1.0" encoding="UTF-8"?>
    Especifica o tipo de linguagem usada no script. Não altere.
    npc name = Nome do NPC
    script = Endereço do Script. Default é o padrão.
    walkinterval = O intervalo de tempo em que o NPC anda.
    floorchange = Se ele "troca de chão", ou seja se ele se movimenta.
    healthnow = Tanto de vida que o Npc está no momento. Geralmente modificado em caso de "quests" específicas.
    max = O tanto de vida máximo dele. Este deve ser maior que o healthnow.
    looktype = Roupa usada, você pode ver as roupas no arquivo: data/XML/outfits.xml
    head, body, legs, feet = A cor da roupa, eu não tenho agora, mas vou provicenciar o pack das cores.
    addon = Se usa algum addon. 1 para o 1°, 2 para o 2°, 3 para os dois.
    <parameters> = Define que abaixo começará uma série de códigos parâmetros.
    module_shop = Módulo, usado. No caso aqui, é shop.. compras/vendas.
    shop_sellable = Define o que o NPC lhe oferece para vender.
    value = Determina as Id's, Nomes e Preços.
    crossbow,2455,150; = Primeiro "crossbow" nome que aparecerá na janela de "venda" do NPC, ID do item, Preço do Item;
    shop_buyable = Define o que o NPC irá lhe oferece para comprar
    Como colocar no RME Map Editor (Atual usado):
    1° Abra o RME, juntamente ao seu mapa.
    2° Clique em File>Import>Importar Monsters/NPC
    3° Clique no arquivo XML acima criado
    4° De um F5 para garantir o aparecimento do NPC
    5° Vá em Window e selecione Terrain Palette caso ainda não tenha feito isso.
    6° Vá em Creature, no canto esquero onde tem um option Terrain Palette.
    7° Selecione abaixo em creatures, NPCS.
    8° Clique lá embaixo, em spawns e crie uma área de circulamento do NPC no seu Mapa.
    9° Clique no nome do seu NPC, e coloque-o no mapa.
    10° Salve o Mapa! Pronto!!
    Pronto, seu NPC criado, e desenvolvido.
    Em breve o tutorial de Mapping, criando uma área para seu NPC! Bem detalhado!
    Caso tenha gostado, +REP
    Ou ao menos comente sobre o Post!
    Abraços!
  19. Gostei
    firebolt deu reputação a poko360 em (Resolvido)Save   
    va em data/globalevents/Scripts/Save.lua
    local config = { broadcast = "yes" }   config.broadcast = getBooleanFromString(config.broadcast) local function executeSave(seconds) if(seconds == 0) then doSaveServer() return true end   if(seconds == 30 or seconds == 10) then doBroadcastMessage("Server save em " .. seconds .. " segundos, se prepare para 1 breve lag!", 22) end seconds = seconds - 10 if(seconds >= 0) then addEvent(executeSave, 10 * 1000, seconds) end end   function onThink(interval, lastExecution, thinkInterval) if(not config.broadcast) then doSaveServer() return true end   executeSave(120) return true end em globalevents.xml
        <globalevent name="save" interval="1800" event="script" value="save.lua"/> /save no god
    va em talkactions/script/save
    local savingEvent = 0 function onSay(cid, words, param, channel)     if(isNumber(param)) then         stopEvent(savingEvent)         save(tonumber(param) * 60 * 1000)     else         doSaveServer()     end     return true end function save(delay)     doSaveServer()     if(delay > 0) then         savingEvent = addEvent(save, delay, delay)     end end depois va em talkactions.xml e coloque isso
        <talkaction log="yes" words="/save" access="3" event="script" value="save.lua"/>
  20. Gostei
    firebolt deu reputação a Lekstar em Pedido de Geisior   
    o gesior tem que ser compativel com seu tfs, no caso um 1.0
    tente este : http://www.tibiaking.com/forum/topic/28525-gesior-2012-tfs-101-at%C3%A9-02x-036-04-adicionado-contenidopago/
     
    ou gesior 2012, provavelmente o gesior 2012 funcionará :
    http://otland.net/threads/gesior-2012-version-1-0-1-for-0-2-x-0-3-6-and-all-0-4.176677/
     
    não sei se posso postar link de outro forum, entao se nao puder me avise e irei retirar.
     
    Te ajudei ? REP+
  21. Gostei
    firebolt deu reputação a Absolute em debug   
    Colocar o script da small enchated aq
  22. Gostei
    firebolt deu reputação a Absolute em debug   
    Não jovem, o script dele procura o script do id 7759
  23. Gostei
    firebolt deu reputação a Absolute em debug   
    Vá na pasta scripts/others e poste o enchanting.lua
  24. Gostei
    firebolt deu reputação a Absolute em debug   
    AUEHUAHEA sem problemas jovem, actions.xml
  25. Gostei
    firebolt deu reputação a Alidev em (Resolvido)BUG Elf Bot OTServ 8.60   
    Provavelmente você esta usando tfs 0.3.6 do real server, essa distro ta bugada, atualize para TFS 0.4 3884 OU 3777.

Informação Importante

Confirmação de Termo