Líderes
-
luanluciano93
HéroiPontos5981Total de itens -
-
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/15/15 em todas áreas
-
Remover GOD do rank level (source)
Remover GOD do rank level (source)
willian vieira e 2 outros reagiu a luanluciano93 por uma resposta no tópico
3 pontosSELECT `level`, `name` FROM `players` WHERE group_id < 3 ORDER BY `level` DESC, `experience` DESC LIMIT3 pontos -
[MOD] Pokedex Window para base PDA [v1.0]
[MOD] Pokedex Window para base PDA [v1.0]
Igor Suzuki e um outro reagiu a deivaoo por uma resposta no tópico
2 pontosEai galera, blz? Bom, vim trazer pra vcs a versão 1.0 do mod de pokedex que eu desenvolvi mês passado visando aprendizado no mundo de OTC, com o objetivo também de mostrar que o otclient é flexível suficiente para se fazer muitas coisas sem a necessidade das sources tanto do servidor quanto do client... Para aqueles que não conhecem, vejam o Show Off desse trabalho. Eu fiz essa versão com o objetivo de não fazer alterações no servidor... Ou seja, tem apenas edições no OTC. Atualizações: 1. Adicionado um pack com 276 imagens de pokemons (16,1MB); 2. Pokemons shiny tem a exibição da imagem de pokemons normais (para alterar, basta remover a linha 75 do arquivo game_pokedex.lua, na pasta modules/game_pokedex de seu client); 3. Pokedex fecha ao se deslogar do char com ela aberta [créditos a @Soulviling pela ideia]; Bom, sem mais delongas; Instalação fácil: Passo 1. Faça o download do arquivo RAR (download no final do tópico); Passo 2. Copie a pasta modules pro seu client; Passo 3. "Deseja substituir?" [X]Sim [ ]Não Passo 4. Só vai até o passo 3; Bom, segue uma imagem ATUALIZADA Download e Scan2 pontos -
[TFS 1.x] TK Vip System
[TFS 1.x] TK Vip System
Murilo35 reagiu a luanluciano93 por uma resposta no tópico
1 pontoOlá pessoal, estou desenvolvendo esse sistema vip para TFS 1.x, se precisarem de alguma função nova é só comentar, criei para usar em um servidor meu e resolvi postar, bom proveito a todos. É só ir no arquivo data/lib/core/player.lua e adicionar esse código no começo do script: -- ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0; -- player:getVipTime() function Player.getVipTime(self) local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';") local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0 result.free(resultId) return time end -- player:isVip() function Player.isVip(self) return self:getVipTime() > os.time() and true or false end -- player:addVipDays(days) function Player.addVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVipDays(days) function Player.removeVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:setVipDays(days) function Player.setVipDays(self, days) return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVip() function Player.removeVip(self) db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:sendVipDaysMessage() function Player.sendVipDaysMessage(self) if self:isVip() then local vipTime = self:getVipTime() - os.time() local vipDays = 1 + (math.floor(vipTime / 86400)) return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.') end end -- player:checkVipLogin() function Player.checkVipLogin(self) if self:getVipTime() > 0 and not self:isVip() then return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition()) end end As funções são: • player:getVipTime() - Retorna o valor da tabela vip_time (igual esta na database). • player:isVip() - Retorna se o player é vip ou não. • player:addVipDays(days) - Usa-se em algum script para para adicionar dias de vip ao player (parâmetro de entrada "days"). • player:removeVipDays(days) - Usa-se em algum script para para remover dias de vip do player (parâmetro de entrada "days"). • player:setVipDays(days) - Usa-se em algum script para para mudar os dias de vip do player (parâmetro de entrada "days"). • player:removeVip() - Usa-se em algum script para para remover todo tempo de vip do player. • player:sendVipDaysMessage() - Retorna uma mensagem no player mostrando os dias de vip que ainda restam ao player. • player:checkVipLogin() - Checa se a vip do player acabou, se sim teleporta ele para o templo. Qualquer dúvida ou erro/bug poste aqui.1 ponto -
Compilando com Microsoft Visual Studio 2013
Compilando com Microsoft Visual Studio 2013
OinomedRellik reagiu a Jepart por uma resposta no tópico
1 pontoProcurei um tutorial aqui no fórum que utiliza-se o Microsoft Visual Studio 2013 para complilar o OTC porem não achei então fui pra outro fórum e vim trazer para o TK 1.Download MSVC 2013 Libs - Aqui Source - Aqui 2.Agora que temos as source e libs está na hora de colocá-los nos lugares corretos. Coloque as "otclient-master" e "otclient-msvc13-libs" na "C:\" .Isto vai poupar muito tempo, porque você não tem que ligar manualmente todas as inclui e libs. 3.Abrindo o MSVC 2013 (Imagem de outro forum - dominique120) 4. Agora vamos configurar as propriedades 5. Agora selecione a configuração correta: 6. Agora, aqui ele pode ficar um pouco confuso, então preste atenção. 6.1 Se você extraiu as libs para o ? / drive você só precisa adicionar isso ao seu includes: E isso para as suas libs 6.2 Mas, se você extraiu os libs em outros lugares que você deve adicionar esses diretórios também. Isto é para o includes: Isto é para as libs: 6. Agora clique em Aplicar e deixar os arquivos analisar, isso é automático. 7. Uma vez que é você pode reconstruir os arquivos. 8. Construindo seu .exe . 9. Agora é só esperar termina e você vai ter seu .exe. 10. Caso precise das DLL basta baixar aqui. Créditos: @dominique120 - pelo tutorial @edubart - pelo desenvolvimento do OTC @Dalkon - por adicionar arquivos de compilação MSVC @conde2- por fixar-se a fonte de modo que seja compatível com o compilador do MSVC1 ponto -
Ditto Memory System por talkaction
Ditto Memory System por talkaction
Merascylla reagiu a zipter98 por uma resposta no tópico
1 pontoOK, isto não é exatamente um sistema, visto que é composto por um único arquivo com um único callback, mas enfim. Antes de começar a desenvolver o tópico, digo-lhes: o código é para poketibia, não outros derivados ou Tibia comum. Introdução: A pedidos de um amigo, resolvi escrever este script. Por não programar em OTClient, optei por escrevê-lo em uma talkaction. Para aqueles que não conhecem o sistema, consiste em praticidade para as transformações do Ditto: ao invés de repetir o cansativo processo de procurar o pokémon que deseja-se copiar, você pode simplesmente salvá-lo na memória do Ditto para, sempre que quiser, transformá-lo em um único comando. Você pode configurar quantos slots de "memória" quiser. Para usar os comandos, você deve colocar uma pokebola com um Ditto no slot 8/feet (a.k.a "pokeball slot"). Alguns, no entanto, necessitam também que o pokémon esteja "solto". Comandos: /memory check Use este comando para verificar os atuais slots de seu Ditto. /memory forget [slot] Use este comando para deletar uma memória salva, respectiva ao slot indicado. Ex.: /memory forget 1 /memory save [slot] Use este comando para salvar uma memória, respectiva ao slot indicado. A memória salva será do pokémon que seu Ditto estará transformado no momento. Ex.: /memory save 3 /memory [slot] Use este comando para transformar seu Ditto no pokémon que estiver armazenado no slot indicado. Ex.: /memory 2 PS: Você também pode usar !memory. Instalação: Em data/talkactions/scripts, crie um arquivo com extensão .lua, nomeie-o dittomemory e coloque o seguinte conteúdo: Em data/talkactions, abra o arquivo talkactions.xml e coloque a seguinte tag: <talkaction words="/memory;!memory" event="script" value="dittomemory.lua"/> Versão testada: 8.54 Servidor testado: PDA by Slicer, versão 1.9 É um código bem simples, escrito em poucos minutos. Resolvi postá-lo pois gostei do resultado apresentado. Para alguns, pode não ser tão útil; para outros, espero que sim. É isso aí, até mais.1 ponto -
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
anderson de souza reagiu a Qwizer por uma resposta no tópico
1 pontoGlobal 11/12x [v32] - New Falcons - New Asuras - Warzone 4,5,6 - Exercise Training - Raids 100% - Monstros 100% - Trainer Offline 100% - Trainer Online 100% - Taming system funcionando 100%; - Database completa - War System 100% - Global MAP Full - Store 100% - Imbuement - Prey System - Entre outros sistemas. Projeto no: GITHUB Scan Vírus Total IMAGES Créditos:1 ponto -
Erondino v17.1 By {ABEROS} BPO Open Source
Erondino v17.1 By {ABEROS} BPO Open Source
Danielcrf reagiu a Valakinhas por uma resposta no tópico
1 pontoV17.1 *Informações +Edições Spoiler Foi adicionado o mapa novamente +Print's Spoiler http://prntscr.com/757ioo http://prntscr.com/757kja +Erros/Bug's +Creditos +Download + Scan Server: Link OTC: Link Scan Server: Link Dat e spr desbloqueado: Link QUALQUER ERRO E BUG, COMENTAR NESSE TÓPICO Desculpa pelos erros ortográficos. ah antes que me esqueça ID da vara de pesca 25801 ponto -
Sprite do cp do Pxg, e itens do Pxg
Sprite do cp do Pxg, e itens do Pxg
Allone reagiu a Developer Berg por uma resposta no tópico
1 pontoOlá Galerinha como eu estou " Bonzinho Hoje " heuheu venho aqui ter a honra de passar para vcs vários itens do PXG, é isso mesmo que vc leu e quais são esses itens ? ( Sabem aquele novo cp que o Pxg tem ? aquele bonito que teve agr no update ? Ss é ele mesmo, fora outros itens muito massas que vou deixar os prints ) Obs: coloquei esse tópico nessa área por causa que no tópico " Download De Sprites " n ta podendo + criar tópico lá, então Agradeço se moverem pra o lugar Certo Link do download --->>> http://www.mediafire.com/download/9v349c4kjdv94s1/Sprites+fodas.rar Scan --->>>https://www.virustotal.com/pt/file/c16b849d74e50f467c2a048957e7b604016d2cfdd5b218b34ba86115a92b06b8/analysis/1430576442/ Obs: quando for abrir no Object Builder vc precisa marcar as opções Estendido e Transparência1 ponto -
[SHOW OFF] Pokemon Legendary
[SHOW OFF] Pokemon Legendary
luanluciano93 reagiu a Thiago Rulexz por uma resposta no tópico
1 pontoBom galera estou fazendo um Layout para o Site do Servidor Pokemon Legendary (EM BREVE) Que ainda está sendo feito. Gostaria da Opinião de vocês xD Oque Poder melhorar... oque pode tirar... (Vocês Mandam) Bom Vamos Lá... Este é o Layout Espero Criticas Construtivas1 ponto -
Remover GOD do rank level (source)
Remover GOD do rank level (source)
Flavio S reagiu a luanluciano93 por uma resposta no tópico
1 pontoSó usar isso: WHERE group_id < x1 ponto -
(Resolvido)Wand não funciona o shoottype
<wand id="7424" level="220" mana="60" min="560" max="790" type="energy" event="function" value="default"> <!-- Energy Staff --> <vocation id="3"/> <vocation id="7"/> <vocation id="1"/> <vocation id="5"/> </wand> weapons .xml, vc consegue configurar neh?1 ponto
-
(Resolvido)Wand não funciona o shoottype
confere no weapons.xml..1 ponto
-
World Type
1 pontolocal config = { ["Saturday"] = true, ["Sunday"] = true, } function onThink(interval) local dia = config[os.date("%A")] if dia then if dia == true then if getWorldType() == 1 then setWorldType(3) pvpatual = "PVPENFORCED" end end end doBroadcastMessage("O mundo atual esta: " .. pvpatual .. ".") return true end1 ponto
-
(Resolvido)Como retirar canal NPCs do computador
Poste o script do seu rank que fica em data/talkactions/scripts. para fazer essa edição que você pediu: "e pode mim ajudar a tirar os membros da staff do TOP level? do GroupID 4 até 6?"1 ponto
-
World Type
1 ponto@luanluciano93, acho melhor mudar o interval, pois se ele der reload ou abrir o servidor às 0:00 só vai atualizar a essa hora, e vai dar confusão na hora de atualizar, acho melhor colocar um intervalo de +/- 30 minutos. @Vector, O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "OTServ → Aprovação de Tópicos de Conteúdos" Para: "OTServ → Suporte OTServ → Suporte de Scripts"1 ponto
-
adicionando uma storagemzinha
1 pontoEu adicionei um end a mais pois mesmo tendo certeza que estava certo eu resolvi colocar pela function e acabei confundindo com um script que estava criando aqui, e essa regra de um end para cada if eu aprendi no notepad . Enfim obrigado por ajudar minha net estava horrível ontem.1 ponto
-
World Type
World Type
Vector reagiu a luanluciano93 por uma resposta no tópico
1 ponto-- <globalevent name="pvpchange" interval="86400000" event="script" value="pvpchange.lua"/> local config = { ["Monday"] = true, ["Wednesday"] = true, ["Thursday"] = true, ["Thursday"] = true, } function onThink(interval) local dia = config[os.date("%A")] if dia then if dia == true then if getWorldType() == 1 then setWorldType(WORLDTYPE_OPEN) pvpatual = "PVP" else setWorldType(WORLDTYPE_OPTIONAL) pvpatual = "NO-PVP" end end end doBroadcastMessage("O mundo atual esta: " .. pvpatual .. ".") return true end1 ponto -
adicionando uma storagemzinha
1 pontofaltou um then na linha : if getPlayerStorageValue(cid, 19999) >= 1 . if getPlayerStorageValue(cid, 19999) >= 1 then1 ponto
-
[Pedido]Sistema de Loteria
1 pontoEm data/lib/050-function.lua, coloque as seguintes funções: function compareTables(c, d) for i = 1, #c do if not isInArray(d, c[i]) then return false end end return true end function addGlobalStorageValue(key, addValue) local result = db.getResult("SELECT value FROM global_storage WHERE key = "..key) setGlobalStorageValue(key, getGlobalStorageValue(key) + addValue) if result:getID() ~= -1 then db.executeQuery("UPDATE global_storage SET value = value + "..addValue.." WHERE key = "..key) result:free() else db.executeQuery("INSERT INTO global_storage VALUES ("..key..", 0, "..addValue..")") end end function resetStorage(key, count) local result = db.getResult("SELECT id FROM players WHERE online < 1") if result:getID() ~= -1 then repeat for i = 0, count - 1 do db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..key + i.." AND player_id = "..result:getDataInt("id").." AND value != -1") end until not result:next() result:free() end for _, pid in pairs(getPlayersOnline()) do for i = 0, count - 1 do if getPlayerStorageValue(pid, key + i) ~= -1 then setPlayerStorageValue(pid, key + i, -1) end end end end function getLotteryWinners(n, count) local baseStorage, winners, cidNumbers = 9573, {}, {} for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, baseStorage) ~= -1 then cidNumbers[cid] = {} for i = 0, count - 1 do table.insert(cidNumbers[cid], getPlayerStorageValue(cid, baseStorage + i)) end if compareTables(cidNumbers[cid], n) then table.insert(winners, cid) end end end return winners end Depois, em data/globalevents/scripts: local config = { limit = {1, 200}, --Número mínimo e máximo da loteria. numbers = 3, --Quantos números o player deve escolher. startTime = 5, --Tempo para as apostas serem fechadas/anunciar vencedor, em minutos. messages = { --Mensagens. "A loteria está aberta, façam suas apostas! Tempo até fechar: %d minuto(s).", "A loteria está fechada!\nPrêmio (individual): %d gold. Vencedor%s: %s.", "Sem vencedores na loteria!\nDinheiro acumulado [total]: %d gold.", }, storages = {9571, 9572, 9573}, } function onThink() broadcastMessage(config.messages[1]:format(config.startTime), MESSAGE_INFO_DESCR) setGlobalStorageValue(config.storages[1], 1) if getGlobalStorageValue(config.storages[2]) < 0 then setGlobalStorageValue(config.storages[2], 0) end for i = 1, config.startTime do addEvent(function() if i ~= config.startTime then broadcastMessage(config.messages[1]:format(config.startTime - i), MESSAGE_INFO_DESCR) else local sortedNumbers = {} for i = 1, config.numbers do local value = math.random(config.limit[1], config.limit[2]) if isInArray(sortedNumbers, value) then while isInArray(sortedNumbers, value) do value = math.random(config.limit[1], config.limit[2]) end end table.insert(sortedNumbers, value) end setGlobalStorageValue(config.storages[1], -1) local winners, str = getLotteryWinners(sortedNumbers, config.numbers), "" local prize = math.floor(getGlobalStorageValue(config.storages[2]) / #winners) if #winners > 0 then for i = 1, #winners do if str == "" then str = getCreatureName(winners[i]) else str = str..(i == #winners and " e " or ", ")..getCreatureName(winners[i]) end end end if str == "" then broadcastMessage(config.messages[3]:format(getGlobalStorageValue(config.storages[2])), MESSAGE_INFO_DESCR) else broadcastMessage(config.messages[2]:format(prize, #winners > 1 and "es" or "", str), MESSAGE_INFO_DESCR) setGlobalStorageValue(config.storages[2], -1) for i = 1, #winners do if isPlayer(winners[i]) then doPlayerAddMoney(winners[i], prize) doPlayerSendTextMessage(winners[i], MESSAGE_STATUS_CONSOLE_ORANGE, "Por vencer a loteria, você recebeu: "..prize.." gold.") end end end resetStorage(config.storages[3], config.numbers) end end, i * 60 * 1000) end return true end Tag: <globalevent name="Loteria" interval="10800" event="script" value="nome_do_arquivo.lua"/> Já em data/talkactions/scripts: local config = { limit = {1, 200}, --Número mínimo e máximo da loteria. numbers = 3, --Quantos números o player deve escolher. minCash = 5000, --Quantia mínima para apostar. storages = {9571, 9572, 9573}, } function onSay(cid, words, param) if getGlobalStorageValue(config.storages[1]) < 1 then doPlayerSendCancel(cid, "A loteria está fechada.") elseif getPlayerStorageValue(cid, config.storages[3]) ~= -1 then doPlayerSendCancel(cid, "Você já fez sua aposta.") elseif param == "" then doPlayerSendCancel(cid, "!apostar cash,number1 number2 number3") elseif getPlayerMoney(cid) < config.minCash then doPlayerSendCancel(cid, "Você precisa de, no mínimo, "..config.minCash.." gold para apostar.") else param = param:explode(",") if #param ~= 2 then doPlayerSendCancel(cid, "!apostar cash,number1 number2 number3") else local cash, numbers = tonumber(param[1]), param[2]:explode(" ") if not cash then doPlayerSendCancel(cid, "Aposte uma quantia númerica.") elseif cash < config.minCash then doPlayerSendCancel(cid, "Esta quantia é muito pequena. Min. gold: "..config.minCash..".") elseif getPlayerMoney(cid) < cash then doPlayerSendCancel(cid, "Aposte uma quantia que você tenha.") else if not numbers or #numbers ~= config.numbers then doPlayerSendCancel(cid, "Escolha "..config.numbers.." números, entre "..config.limit[1].." - "..config.limit[2]..".") else local str = "" for i = 1, #numbers do numbers[i] = tonumber(numbers[i]) if not numbers[i] or numbers[i] < config.limit[1] or numbers[i] > config.limit[2] then return doPlayerSendCancel(cid, "Escolha números válidos ["..config.limit[1].." - "..config.limit[2].."].") end if str == "" then str = numbers[i] else str = str..(i == #numbers and " e " or ", ")..numbers[i] end end doPlayerRemoveMoney(cid, cash) doPlayerSendTextMessage(cid, 27, "Você apostou "..cash.." gold e escolheu os números: "..str..".") for i = 0, config.numbers - 1 do setPlayerStorageValue(cid, config.storages[3] + i, numbers[i + 1]) end addGlobalStorageValue(config.storages[2], cash) end end end end return true end Tag: <talkaction words="!apostar" event="script" value="nome_do_arquivo.lua"/> Comando: !apostar cash,number1 number2 number3 Ex.: !apostar 450000,78 43 1851 ponto
-
(Resolvido)Anunciar quando nascer o monstro !
local shinys = { "Venusaur", "Charizard", "Blastoise", "Butterfree", "Beedrill", "Pidgeot", "Rattata", "Raticate", "Raichu", "Zubat", "Golbat", "Paras", "Parasect", "Venonat", "Venomoth", "Growlithe", "Arcanine", "Abra", "Alakazam", "Tentacool", "Tentacruel", "Farfetch'd", "Grimer", "Muk", "Gengar", "Onix", "Krabby", "Kingler", "Voltorb", "Electrode", "Cubone", "Marowak", "Hitmonlee", "Hitmonchan", "Tangela", "Horsea", "Seadra", "Scyther", "Jynx", "Electabuzz", "Pinsir", "Magikarp", "Gyarados", "Snorlax", "Dragonair", "Dratini"} local raros = {"Dragonite"} local mName = "name" --Nome do monstro que será anunciado ao nascer. local function ShinyName(cid) if isCreature(cid) then if string.find(tostring(getCreatureName(cid)), "Shiny") then local newName = tostring(getCreatureName(cid)):match("Shiny (.*)") doCreatureSetNick(cid, newName) if isMonster(cid) then doSetCreatureDropLoot(cid, false) end end end end local function doSetRandomGender(cid) if not isCreature(cid) then return true end if isSummon(cid) then return true end local gender = 0 local name = getCreatureName(cid) if not newpokedex[name] then return true end local rate = newpokedex[name].gender if rate == 0 then gender = 3 elseif rate == 1000 then gender = 4 elseif rate == -1 then gender = 0 elseif math.random(1, 1000) <= rate then gender = 4 else gender = 3 end doCreatureSetSkullType(cid, gender) end local function doShiny(cid) if isCreature(cid) then if isSummon(cid) then return true end if getPlayerStorageValue(cid, 74469) >= 1 then return true end if getPlayerStorageValue(cid, 22546) >= 1 then return true end if isNpcSummon(cid) then return true end if getPlayerStorageValue(cid, 637500) >= 1 then return true end --alterado v1.9 if isInArray(shinys, getCreatureName(cid)) then --alterado v1.9 \/ chance = 6 --1% chance elseif isInArray(raros, getCreatureName(cid)) then --n coloquem valores menores que 0.1 !! chance = 6 --1% chance else return true end if math.random(1, 1000) <= chance*10 then doSendMagicEffect(getThingPos(cid), 18) local name, pos = "Shiny ".. getCreatureName(cid), getThingPos(cid) doRemoveCreature(cid) local shi = doCreateMonster(name, pos, false) setPlayerStorageValue(shi, 74469, 1) else setPlayerStorageValue(cid, 74469, 1) end --/\ else return true end end function onSpawn(cid) registerCreatureEvent(cid, "Experience") registerCreatureEvent(cid, "GeneralConfiguration") registerCreatureEvent(cid, "DirectionSystem") registerCreatureEvent(cid, "CastSystem") if isSummon(cid) then registerCreatureEvent(cid, "SummonDeath") return true end if getCreatureName(cid) == mName then broadcastMessage(mName.." spawned!") end addEvent(doSetRandomGender, 5, cid) addEvent(doShiny, 10, cid) addEvent(ShinyName, 15, cid) addEvent(adjustWildPoke, 5, cid) return true end1 ponto
-
Ditto Memory System por talkaction
Ditto Memory System por talkaction
Shadow.Styller reagiu a tioj por uma resposta no tópico
1 pontoTpw o sistema de ditto que hj em dia alguns servers usam é assim que identifica o ditto, Pq se vc tentar usar o comando com ele transformado não pega por causa desse sistema diferente do ditto1 ponto -
Scripts iBot
1 pontoGrim Raper RP (yalahar e darashia) ED lv 150 + Profit1 ponto
-
Sword Art Online 2D MMORPG - Official Discussion Thread
Please invite me to the test! SKYPE: live:daarky_11 ponto
-
Rajada de Flechas
1 pontoCriação de Spell "Rajada de Flechas" Ola turma venho trazer hoje o meu primeiro tutorial, hoje editei uma magia que ficou muito legar e gostaria de por para vocês A magia como o próprio nome já diz, consiste quanto o paladin escreve as palavras magicas "lançar uma rajada de flechas" atingindo todos os inimigos a frente, a ideia veio jogando League Of Legends do personagem "Asher" Bem.... mãos a Obra 1º) Vá a pasta de seu OTServer e logo em seguida (Data>Spell>Attack) copie qualquer magia existente lá, (arquivo.lua) e cole e renomeie com o nome "rajada de flechas". 2º) Abra o arquivo em bloco de notas, apague tudo que tem la dentro e cole isso, salve e feche: 3º) Agora vamos adicionar a Tag.xml, para isso va em: data/spell/spell.xml, abra o arquivo "spell.xml" e procure a parte Attack Spell e adicione essa tag Pronto com a magia feita agora é só se divertir Foto Spell A foto não ficou muito boa, mais ta ai: Obrigado Gostou ? comenta e da +REP não custa nada Creditos: 90% = Gerson Souto (eu) 10% = League Of Legends (mi deu espiração)1 ponto
-
[Pokemon] Torneio System
[Pokemon] Torneio System
Todimaster reagiu a Custelinha por uma resposta no tópico
1 pontoAmigo tipo no meu lib naum tem nada chamado "torneio" eu tenho que adicionar?! Depois vai em Globaleevents/Torneio.lua <globalevent name="TournamentStart" time="11:35" event="script" value="Torneio.lua"/> Depois vai em Actions/Torneio.lua: Atençao: Voce faz uma area do Torneio no Map editor e Coloca PVP-Zone no Mapa editor e coloca uma Alavanca com a uid "18279" XML: <action uniqueid="18279" event="script" value="Torneio.lua"/> Agora o NPC TORNEIO NPCS/NPCS.XML: NPC/SCRIPTS/Torneio.lua: [*] Bom é so Isso Flw bj ;* Tipo Se tem skype pra me encinar melhor naum entendi1 ponto -
Cores Para Outfits De Npcs , Monster
Cores Para Outfits De Npcs , Monster
Druid Del Destruc reagiu a Wakon por uma resposta no tópico
1 ponto1 ponto- (Resolvido)[Script] Ser teleportado apos matar um numero "x" de monstros ?
Eu fiz um aqui rapidão, testa aê e qualquer error, me avisa.. vá na pasta data/creaturescripts e abra o creaturescripts.xml, em seguida adicione esta tag : <event type="kill" name="monster" event="script" value="monster.lua"/> agora vá em data/creaturescripts/scripts e abra o arquivo login.lua, em seguida digite CRTL+F e procure por RegisterCreatureEvent, abaixo adicione : registerCreatureEvent(cid, "monster") no mesmo arquivo, desça até o final e antes do return true, adicione isto : if getPlayerStorageValue(cid, 50000) == -1 then setPlayerStorageValue(cid, 50000, 0) end agora vá em data/creaturescripts/scripts e crie um arquivo monster.lua e adicione este código : local config = { monster = 'Dragon', -- nome do monstro. count = 9, -- quantidade que deverá matar, configure sempre 1 a menos. position = {x = 1086, y = 1062, z = 7} -- posição que o player irá após matar todos os monstros. } function onKill(cid, target) if isPlayer(target) then return true end if getPlayerStorageValue(cid, 50000) < config.count and getCreatureName(target) == config.monster then setPlayerStorageValue(cid, 50000, getPlayerStorageValue(cid, 50000)+1) doPlayerSendTextMessage(cid, 19, ""..config.monster.."'s : ["..getPlayerStorageValue(cid, 50000).."/"..((config.count)+1).."]") elseif getPlayerStorageValue(cid, 50000) >= config.count and getCreatureName(target) == config.monster then doTeleportThing(cid, config.position, true) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, 'Todos os monstros foram derrotados.') doPlayerSendTextMessage(cid, 19, ""..config.monster.."'s : [Finish]") setPlayerStorageValue(cid, 50000, 0) return true end return true end pronto, simples de configurar e se você gostou, se eu te ajudei realmente, rep+ haha!1 ponto- Compilando e rodando um OTServ em Linux (debian). Tutorial Definitivo
Este é um tutorial escrito escrito originalmente para aqueles, que apesar de não terem experiencia com este SO, querem utiliza-lo para rodar seus OTServers, seja por segurança, estabilidade ou simplesmente por quererem aprender. O Linux apesar de assustar de inicio pra quem nunca teve contato, principalmente por não dispor de uma interface grafica (a não ser em casos onde você use o vnc, mas não é o foco deste tutorial), é um grande SO, principalmente quando se trata de gerenciamento de memória, segurança e estabilidade. Neste tutorial vamos fazer uso do Debian 6 64bits e um OT 8.6, apesar de servir para qualquer versão, desde que tenha as sources. Programas necessários: Putty - Necessário para administrar o vps, via SSH. FileZilla - Ftp, utilizado para enviar seus arquivos para o vps. Ao contratar um vps Linux até 1 hora você receberá um email contendo o IP e senha root do seu novo servidor. Aqui nós abrimos o FileZilla para mandarmos o OT para o vps. A tela dele é muito simples: Em Host você coloca o IP do VPS, usuário é "root", e senha é a que você passou no momento da compra, que também foi enviada para seu email juntamente com o IP. Basta compactar a pasta do seu ot e as Sources em um arquivo .zip, e copiar para o VPS. Aqui no exemplo usaremos a pasta /home, por questões de organização. Para isso, basta digitar "/home" no espaço Endereço Remoto. Caso seu OT tenha SITE, aproveite e mande o mesmo para o vps também. Agora iremos logar no VPS via PUTTY para instalar os arquivos necessários e compilar o tfs. A tela é igualmente simples, bastando adicionar o IP e clicar em Open. A Tela é a seguinte: Após isso, será aberta uma tela preta, pedindo login. Digite "root", Enter. Será pedido a senha de root, apenas digite, e depois enter novamente. Será exibido o terminal, algo parecido com a tela abaixo: Perfeito. Você está logado. Vamos começar instalando as libs necessárias para o funcionamento do OT, mysql, apache e mais algumas libs que iremos utilizar, com o seguinte comando: apt-get update apt-get install libboost1.42-dev libboost-system1.42-dev libboost-filesystem1.42-dev libboost-date-time1.42-dev libboost-regex1.42-dev libboost-thread1.42-dev libgmp3-dev liblua5.1-0 liblua5.1-0-dev liblua50 liblua50-dev liblualib50 liblualib50-dev lua50 lua5.1 libsqlite0-dev libsqlite3-dev sqlite3 libmysql++-dev libmysqlclient-dev mysql-client-5.1 mysql-server-5.1 mysql-common libxml2-dev libxml++2.6-dev cpp gcc g++ make automake autoconf pkg-config subversion liblua5.1-sql-mysql-dev liblua5.1-sql-sqlite3-dev zlib1g-dev zlib1g libcrypto++-dev libcrypto++8 libcurl4-openssl-dev unzip apache2 php5 libapache2-mod-php5 mysql-server libapache2-mod-auth-mysql php5-mysql phpmyadmin Pronto. Instalado tudo, estamos prontos para seguir com a compilação. Vá para a pasta /home e descompacte as sources e o ot usando o comando unzip. Por exemplo, caso suas sources estejam em um arquivo chamado sourcez.zip dentro de /home, o comando fica assim: cd /home [tecle enter] unzip sources.zip [tecle enter] Em seguida daremos permissão total na pasta, para que não haja problemas. para isso (supondo que a pasta descompactada se chame "sources") execute o comando: chmod -R 777 sources/ [tecle enter] Entramos na pasta sources com o comando: cd sources [tecle enter] E compilamos com os seguintes comandos: ./autogen.sh [tecle enter] ./configure --enable-mysql --enable-root-permission [tecle enter] ./build.sh [tecle enter] Compilado. Caso liste o diretório corrente (com o comando "ls") você perceberá um arquivo novo, chamado "theforgottenserver" dentro dessa pasta. Basta copia-lo para a pasta do seu ot. No exemplo, vamos supor que a pasta do ot se chame otserv, e está dentro de /home (ficando /home/otserv) então vc copia o tfs para dentro da pasta do OT com o comando: cp theforgottenserver /home/otserv [tecle enter] cd /home/otserv [tecle enter] chmod 777 theforgottenserver [tecle enter] Agora vamos criar uma DB e importar a database para o mysql. Esta etapa é somente para OTs com site (mysql), podendo ser descartada se você usa account manager e SQLite. Primeiramente, temos que logar no Mysql e criar uma DB nova para receber a database.sql. Usamos os seguintes comandos: mysql -u root -p [enter] aqui será pedido a senha do mysql. Coloque a senha e de enter. Vai abrir o console do Mysql. Nesse exemplo, vamos criar a database com o nome "otserv". Para isso digite o comando: create database otserv; [enter] e para sair do console do mysql digite: exit; [enter] Pronto. Database criada, vamos agora importar a database para essa nova DB que acabamos de criar. Supondo que o arquivo .sql esteja na pasta do ot (/home /otserv) vams ter certeza que estamos nessa pasta, e digitar o comando para importal (supondo que o arquivo contendo a db se chame database.sql) cd /home/otserv [enter] mysql -u root -p otserv < database.sql [enter] Perfeito. Vai pedir a senha do mysql, é só digitar e teclar enter. Se não ver nenhuma mensagem de erro, sua DB foi importada com sucesso. Agora só falta o site. Como ja instalamos o apache juntamente com as libs, é somente jogar o site dentro da pasta /var/www e pronto. Site funcionando. Você pode usar o FileZilla para isso. Perfeito. Só rodar o theforgottenserver e ser feliz digite (dentro da pasta /home/otserv): ./theforgottenserver [tecle enter] CRÉDITOS : JVSERVERS.COM.BR1 ponto- (Resolvido) Erro Gesior ACC
(Resolvido) Erro Gesior ACC
joaopedrodepaiva reagiu a gpedro por uma resposta no tópico
1 pontoVá em C:\xampp\php, abra o arquivo php.ini procure por error_reporting o que tiver lá, mude para após isso, reinicie o apache.1 ponto- Sublime Text TFS 1.X Auto-Completion
Sublime Text TFS 1.X Auto-Completion
Wakon reagiu a Todimaster por uma resposta no tópico
-1 pontosEsse lixo nem pega fica dando error de java-1 pontosLíderes está configurado para São Paulo/GMT-03:00 - (Resolvido)[Script] Ser teleportado apos matar um numero "x" de monstros ?
Informação Importante
Confirmação de Termo