Líderes
-
-
-
xWhiteWolf
HéroiPontos3605Total de itens -
luanluciano93
HéroiPontos5981Total de itens
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 11/05/15 em todas áreas
-
Magnus Challenger
Magnus Challenger
bagulhoescroto e um outro reagiu a xWhiteWolf por uma resposta no tópico
2 pontosFala galera, hoje vim trazer o projeto pronto do Magnus Challenger pra vocês instalarem no servidor de vocês! Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda! Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores. Quem quiser pode ver um vídeo comentado de como o sistema funciona: Dito isso vou ensinar vocês como instalar isso no server: Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão) <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele: Terminada a parte da contagem de kill vamos ao NPC em si. Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele: Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo: ~~~~~~~~~~~~~~~~ FEITO ISSO ESTÁ TERMINADO ~~~~~~~~~~~~~~~~~~ Agora aprendendo a configurar: No tasksystem vc pode editar isso daqui: Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server. Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill. No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples: Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores. levelcollect é o level mínimo pra fazer tasks do tipo collect. time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas) bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2) multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador. Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula! Ex: adicionando Morgaroth na tabela de hard local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate", [10] = "Morgaroth" } atente-se também pra não repetir o número no index.. se o anterior era [9] use [10]. O restante das tabelas são separadas para o banco de dados das tasks de collect: segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count; Ex: [1] = {id = 5880, count = 20}, -- iron ore isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos. No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50. Espero que vocês tenham curtido, é um sistema grande mas bem simples de se mexer... se tiverem quaisquer problemas podem comentar aqui. Deu trabalho fazer isso então se você gostou deixe o seu comentário aí e o seu "Gostei" que vai me incentivar a trazer mais coisas desse tipo pra cá. Abraços do lobo. PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor.2 pontos -
DEV C++ Compilando TFS no Windows
DEV C++ Compilando TFS no Windows
Gabriel485 reagiu a Natanael Beckman por uma resposta no tópico
1 pontoDEV C++, aprenda a compila uma source TFS! Downloads(Baixe de acordo as configurações do seu windows): DEV C++ CONFIGURADO PARA 32BITS DEV C++ CONFIGURADO PARA 64BITS REV 3884 TFS 0.4 Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos. ====================================== Abra o DEV C++: ====================================== ====================================== Abra a Source: ====================================== ====================================== Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev: ====================================== ============================================================= ====================================== Aguarde carregar todos os arquivos: ====================================== ====================================== Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK: ====================================== ====================================== Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo: ====================================== ====================================== Se der tudo certo em Log vai estar como mostra a imagem abaixo: ====================================== ====================================== Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou! ====================================== =========================================== Só isso galera tutorial rápido resumido e útil! Créditos Natanael Beckman! =========================================== Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar: Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone. Abra o DEV-C++, clique em File> New> Project: Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos: Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp. No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros: -D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs: -lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK. Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project: Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9: OpenSSL 0.9.8 1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa! Clica aqui \/1 ponto -
Dodge System 8.54+
Dodge System 8.54+
Leo Zanin reagiu a xWhiteWolf por uma resposta no tópico
1 pontoAe galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim: Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano Sem mais delongas, vamos ao script: Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele: agora adicione essa linha no creaturescripts.xml: <event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true: registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then setPlayerStorageValue(cid, 48902, 0) end agora vá em actions.xml e adicione essa linha aqui: <action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser. em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim: <item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele: local config = { minlevel = 150, --- level que precisa pra comprar o livro price = 10000, --- preço do livro itemid = 1950 --- ID DO LIVRO } --- end config function getDodgeSkill(cid) dodgeskill = getPlayerStorageValue(cid, 48902) return dodgeskill end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} -- OTServ event handling functions start function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -- OTServ event handling functions end function creatureSayCallback(cid, type, msg) -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'skill book') then if getDodgeSkill(cid) == dodgeskill then selfSay('You want to buy Skill Book [DODGE]? It will cost '..config.price..' gp\'s!', cid) talkState[talkUser] = 1 else selfSay('I couldnt acess your data bank!', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < config.price then selfSay('Its necessary to have at least '..config.price..' gp\'s in order to buy the Skill Book!', cid) elseif getPlayerLevel(cid) < config.minlevel then selfSay('The minimum level for buying this skill book is '..config.minlevel..'!', cid) else doPlayerRemoveMoney(cid,config.price) doPlayerAddItem(cid, config.itemid, 1, TRUE) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then talkState[talkUser] = 0 selfSay('Ok.', cid) elseif msgcontains(msg, 'level') then selfSay('You have Leveled your Dodge Skill to ['..getDodgeSkill(cid)..'/100].', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) lembrando que no começo vc pode editar o preço, o level que precisa pra comprar a skill e o ID do livro que será usado (USE O MESMO ID NO ITEMS.XML E NO ACTIONS.) agora crie o npc dodgeseller.xml e coloque isso nele: <npc name="Dodge Skill Seller" script="data/npc/scripts/bookseller.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I've been waiting for you to come.. Say 'skill book' or 'level'" /> <parameter key="message_farewell" value="Cya folk." /> <parameter key="message_walkaway" value="How Rude!" /> </parameters> </npc> Explanações gerais: O sistema é bem simples (muito simples mesmo), ele pega o valor do storage do cara e multiplica por 3.. se isso for maior que um numero aleatório criado entre 0 e 1000 ele dá dodge e solta os efeitinhos lá do creaturescripts. Note que no nivel máximo o cara vai ter 100 de storagevalue e isso será multiplicado por 3 resultando em 300. Se 300 for maior que um valor aleatorio entre 0 e 1000 (30% de chance) você vai tomar apenas metade do dano. Vc pode editar a vontade e melhorar ele da forma que quiser, se vc quiser que todos os danos do player sejam passíveis de serem esquivados mude aqui: if type == STATSCHANGE_HEALTHLOSS and isCreature(attacker) then apenas retirando esse and isCreature(attacker), daí até dano de firefield vai dar pra dar dodge. Se você quiser adicionar classes que poderão usar (só knights e paladins por exemplo) só colocar isInArray({3,4,7,8}, getPlayerVocation(cid)) como condição na action. E se vc quiser que mago possa dar dodge mesmo com utamo vita (OQUE NÃO FAZ MUITO SENTIDO JÁ QUE O ESCUDO DE MANA FICA EM VOLTA DO PLAYER TEORICAMENTE, MAS TUDO BEM) é só colocar if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS and isCreature(attacker) then Se você quiser que só ataques de Players sejam desviados ou só ataques de monstros é só trocar isCreature(attacker) por isMonster(attacker) ou isPlayer(attacker). Bom, isso é tudo, espero que vcs tenham curtido e qualquer coisa é só comentar ou me dar um Rep que ajuda pra caralho. Um abraço pra vocês. EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato.1 ponto -
[Show-OFF] Ultimo projeto para download?
[Show-OFF] Ultimo projeto para download?
Ajuka2 reagiu a Gabrieltxu por uma resposta no tópico
1 pontoEai galera beleza? então já vem um tempo que venho falando que vou fazer um ultimo projeto para download para a galera e tals , esses dias pensei bem se iria fazer mesmo e começei a fazer essa minha ultima contribuição , criei esse tópico para um Show Off do meu ultimo trabalho , nome dele vai ser Pokémon Opal . --//Pokémon Opal / Inicio do projeto 15/12/2014/ \\-- Caracteristicas do Servidor até Agora : Modificações que não vai ter nesse server que contem no PDA (Por enquanto , essa lista vai mudar ao decorrer do projeto ): - Gender System - Shinys Aleatorios Prints do avanço: Créditos (Pode mudar de acordo com o avanço do projeto): -Eu -Aberos (por me ajudar) -ZerefSoares (por me ajudar) -Slicer e brun123 (pelos sistemas do pda) -Erondino (pelo distro + sources) - OrochiElf (Por ajudar nas sources) é isso Galera vou indo fazendo com o tempo , não me cobre , tenho vida social tambem , não é todo o dia que vou mecher no servidor , mas é isso nada de novo , mas apenas outro distro totalmente diferente + sources , creio que vai ajudar muitas pessoas que curte o pda, Lembrando que ele não vai ser livre de bugs , pesso ajuda tambem para a galera que queira ajudar no projeto me enviar uma PM com contato do facebook para eu adicionar para conversarmos melhor. Se gostou do projeto da um rep+ ai e vlw flw ! Bjao do Tiu GabrielTxu! :*1 ponto -
Add e Remover Premium points por comando
Add e Remover Premium points por comando
ArielZeRah reagiu a luanluciano93 por uma resposta no tópico
1 pontoOlá pessoal, trago para vocês um script talkaction que add e remove premium points por comandos in-game. Primeira, vá em data/talkactions/talkactions.xml e add a tag: <talkaction words="/addpoints;/removepoints" access="3" script="premium_points.lua"/> Depois crie um arquivo chamado premium_points.lua em data/talkactions/scripts/ e coloque esse código dentro: function onSay(cid, words, param) local t = string.explode(param, ",") if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Missing params.") return true end local player, balance, pid = getPlayerByName(t[1]), t[2], getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "That players doesnt exist or is offline.") return true end if t[2] == null then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Missing ammount of points.") return true end local accountName = getPlayerAccount(player) local accountPoints = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `name` = '" .. accountName .. "' LIMIT 1;") local points = tonumber(accountPoints:getDataInt("premium_points")) local name = getPlayerName(cid) if(words == "/addpoints") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You added "..balance.." premium points to "..t[1].." account.") doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, "You got "..balance.." premium points from "..name..".") points = (points+balance) db.query("UPDATE `accounts` SET `premium_points` = " .. points .. " WHERE `name`='" .. accountName .. "' LIMIT 1;") elseif (words == "/removepoints") then points = (points-balance) if points < 0 then doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, ""..name.." removed all your premium points.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You removed all "..t[1].." account premium points.") db.query("UPDATE `accounts` SET `premium_points` = '0' WHERE `name`='" .. accountName .. "' LIMIT 1;") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You removed "..balance.." premium points to "..t[1].." account.") db.query("UPDATE `accounts` SET `premium_points` = " .. points .. " WHERE `name`='" .. accountName .. "' LIMIT 1;") doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, ""..name.." removed "..balance.." premium points from your account.") end end return true end Para usar é simples: /COMANDO PLAYER, QUANTIDADE exemplo: /addpoints Luan, 10 Créditos: Shispa Bem simples né pessoal? Espero que ajude, abraços e até mais!1 ponto -
Anti Divulgação em LUA
Anti Divulgação em LUA
Lincoln123123 reagiu a Lyu por uma resposta no tópico
1 pontoTestado apenas em TFS 0.4 Em "Data/talkactions", no arquivo talkactions.xml, adicione a tag: <talkaction default="yes" filter="quotation" logged="no" hidden="yes" event="script" value="antidiv.lua"/> Em "Data/talkactions/scripts", crie um arquivo.LUA e renomeie para antidiv.lua, apague tudo e cole: local words_, prev = {"org","no-ip","net","com","pl","biz","servegame","br","sytes","info"}, {".",",",";"} function onSay(cid, words) for _, w in ipairs(words_) do for _, p in ipairs(prev) do if(words:lower():find(p..''..w, 1, true)) then return doPlayerSendCancel(cid, 'You can\'t send this message.') end end end end Na tabela prev.. Você pode adicionar na tabela, o que vem antes de "net", "org" e etc.. ex : se eu adicionar um til "~", não vai dá pra divulgar assim : "www.etcetc~org" {".",",",";"} Já existem 'ponto', 'vírgula' e 'ponto e vírgula' dentro da tabela. Então é impossível divulgar dos seguintes modos : entrem aqui otfodao.com entrem nesse ot baiakzikaofodapakas,com novo ot lançado hoje, entrem www.otnoob;net Créditos : EU1 ponto -
(8.60) Styller-[Completo]
1 pontoEae Galera , Vim compartilhar Um Mapa Styller Editado Por Mim, Comentem oque Acham Para Mim Melhorar Sempre !! Com muitas Novidades , eu estarei postando algumas ... -- Colocado Teleport Para Blue City. -- Arena PvP Mais Grande , e Com mais espaço para batalharem. -- Teleports Com PZ . -- Adicionado Briasol que Apenas Vende Perolas. --Adicionado NPC Vip Mad Para os players Vip . --Adicionado 3 Novas Caves VIP. --Templo Mais Bonito. --Adicionado Alavancas De Potions (400 Potions Por 40k) --Bless Custando 100k -- 3° Andar Do Templo Editado Para Players --Cada Trainers Pode Ir 2 players Sem Risco De Serem Empurrados , NON-PVP --Adicionados Mais Teleports --Alavanca De Blood Herb No Templo 20k cada -- Adiciona NPC Addoner , Vende Addon Doll 7kk -- Traps Novas Na City FOTOS : Senha Do GOD : GOD/GOD Download Aqui : http://www.mediafire.com/download.php?cr9eri85v0yn4qf Scan Link : https://www.virustotal.com/url/8ff8414202b5be615bcbec185c7e216ded48d1f0c8ec0b94e86499ea6a3a10aa/analysis/1358883251/ Galera , Comentem oque Acharam !!1 ponto
-
[Cloner Item] - Mesmo item id diferente
[Cloner Item] - Mesmo item id diferente
Magonnite reagiu a Faelzdanil por uma resposta no tópico
1 pontoOla TK, Alguns ja podem ter visto eu estou tirando varias duvidas aqui, estou abrindo um server Sério e adicionando scripts, vip exclusiva e tudo mais, esta ficando super top... Bom mas maior parte esta no papel estou agora passando tudo ao OT server, por que graças ao um amigo aqui do TK resolvi um bug muito importante. E agora estou aqui pra saber outra coisa, nao é nada de bug e sim uma ajuda. Eu vi em outros topicos de um cara explicando de como usar o mesmo Item só que com ID diferente, e é isso que eu quero fazer... Por exemplo, quero pegar o Yalahari Set e Firewalker boots e fazer um set VIP, só que continuando com os items normais, e fizer esses como um "cloner", pra evitar de que peguem items vip em quest e drops... Eu olhei um topico de um amigo aqui no TK mesmo, só que nao consegui fazer, deu erro no OTB, se alguem puder me ajudar com isso REP++ (3x) Se alguem quiser saber sobre o server e estiver afim de ajudar entrar em contato pelo : Msn ( só isso pra isso kk ): [email protected] skype: faelz.danil Estou aceitando ajuda de todos... Obrigado pela atençao de todos que estao me ajudando !1 ponto -
Nuker
Coloca para que quando isso acontecer ele seja transportado para o Templo. Como se fosse um TP igual no global.1 ponto
-
FLC - Attempt to mapping - ShowOff
1 ponto
-
Spell Creator
Spell Creator
guilherme.ianhez reagiu a Caronte por uma resposta no tópico
1 pontoOpa, faz assim, monta sua spell, e coloca isso nela: local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setConditionFormula(condition, -0.9, 0, -0.9, 0) setCombatCondition(combat, condition) Para editar a lentidão é só mudar onde tem os 9, e o tempo, onde tem o 20000, é em milisegundos. tenta aí. Obrigado pelo feedback, eu realmente não posso fazer nada para derivados, tenho pouca experiência com derivados, mas acho que buga na parte dos efeitos, que o programa deve rejeitar o número extra.1 ponto -
Magnus Challenger
Magnus Challenger
xWhiteWolf reagiu a di12345d por uma resposta no tópico
1 pontocara esse sistema ficou show , irei só arrumar os monstros parabéns continue assim1 ponto -
Spell Creator
Spell Creator
Caronte reagiu a guilherme.ianhez por uma resposta no tópico
1 pontocomplicado usar em derivados? Narutibia até que ta indo galera1 ponto -
FLC - Attempt to mapping - ShowOff
Uma leve edição na imagem:1 ponto
-
Criar Ot Server
Criar Ot Server
samuelrezendesilva reagiu a bitazikao por uma resposta no tópico
1 ponto1 ponto -
Criar Ot Server
Criar Ot Server
samuelrezendesilva reagiu a bitazikao por uma resposta no tópico
1 pontocaso ajudei da +rep1 ponto -
Criar Ot Server
Criar Ot Server
samuelrezendesilva reagiu a bitazikao por uma resposta no tópico
1 pontoCara acho que posso ajudar você esta fazendo com site né ? caso for isso você tem que muda isto..1 ponto -
Nuker
Com esse simples erro nem Mark Samman arruma [Error - MoveEvent::executeStep] Call stack overflow. tem que achar o ação que o player está executando pra cair, ele não retorna erro de script nada, só diz que é overflow1 ponto
-
Criar Ot Server
Criar Ot Server
samuelrezendesilva reagiu a Absolute por uma resposta no tópico
1 pontoVocê está usando mysql (phpmyadmin) ou sqlite s3db? Poste seu config.lua tb1 ponto -
[Pedido] poketibia com source
[Pedido] poketibia com source
maiamayke08 reagiu a Drazyn1291 por uma resposta no tópico
1 pontoCara esta é uma base com uns bugs muito chatos! ela não é ruim, mas tem uns bugs chatos d++ e poucos conseguiram resolver! eu recomendo o Pokemon Dash v6 que o Valakinhas Fez Re-upload!1 ponto -
[Pedido] poketibia com source
[Pedido] poketibia com source
XxMercurio reagiu a Gaant por uma resposta no tópico
1 pontohttp://www.tibiaking.com/forum/topic/44386-pokemon-dash-advanced-pda-sources-2015/1 ponto -
Spell Creator
Spell Creator
Caronte reagiu a HeltonFontesBR por uma resposta no tópico
1 pontoCaronte, desculpe em está duplicando o post, é que ainda não tive nenhuma resposta. Como eu faço para que a magia der lentidão ?1 ponto -
[action] Canoa em Movimento
1 pontoBom para quem não sabe,este é um script que faz o character andar em conjunto com a canoa.(você pode configurar a rota) (Testado em TFS 0.3.6 e TFS 0.2.14) Como criar : Adicione a actionid 6901 no meio da canoa. Onde a canoa deve ir você coloca o itemid 4820. Você tem que usar as bordas com o mesmo ID que está nas configurações endborders. "data/actions/actions.xml" : (TFS 0.3/0.4) <action actionid="6901" event="script" value="other/movingboat.lua"/> (TFS 0.2/1.0) <action actionid="6901" script="other/movingboat.lua"/> "data/actions/scripts/movingboat.lua" : local config = { endborders = {4644, 4646}, speed = 300, ignorefirstborders = 3 } local fight = createConditionObject(CONDITION_INFIGHT) setConditionParam(fight, CONDITION_PARAM_TICKS, -1) local function comparePos(poss, pos) return pos.x == poss.x and pos.y == poss.y end local n, s = 0, 0 local function getRightPos(poss, last) ps = { {x = poss.x, y = poss.y - 1, z = poss.z}, {x = poss.x + 1, y = poss.y, z = poss.z}, {x = poss.x, y = poss.y + 1, z = poss.z}, {x = poss.x - 1, y = poss.y, z = poss.z} } for _, pos in pairs(ps) do if(getTileItemById(pos, 4820).uid > 0) then if(not comparePos(last, pos)) then p = pos return p end else for b = 1, #config.endborders do if(getTileItemById(pos, config.endborders[b]).uid > 0 and s > config.ignorefirstborders) then n = n + 1 p = pos return p and n end end end end end local function doTravel(cid, poss, last) getRightPos(poss, last) travel = p.x > poss.x and "east" or (p.y < poss.y and "north" or (p.y > poss.y and "south" or (p.x < poss.x and "west" or "false"))) if n > 1 then p = poss end if(travel == "false") then if(getCreatureCondition(cid, CONDITION_INFIGHT)) then doRemoveCondition(cid, CONDITION_INFIGHT) end n = 0 s = 0 return false end local des = { ["north"] = {cPos = {{x = p.x, y = p.y - 1, z = p.z}, p, {x = p.x, y = p.y + 1, z = p.z}}, dir = 0, boat = {3587, 3589, 3591}}, ["east"] = {cPos = {{x = p.x + 1, y = p.y, z = p.z}, p, {x = p.x - 1, y = p.y, z = p.z}}, dir = 1, boat = {3596, 3594, 3592}}, ["south"] = {cPos = {{x = p.x, y = p.y + 1, z = p.z}, p, {x = p.x, y = p.y - 1, z = p.z}}, dir = 2, boat = {3591, 3589, 3587}}, ["west"] = {cPos = {{x = p.x - 1, y = p.y, z = p.z}, p, {x = p.x + 1, y = p.y, z = p.z}}, dir = 3, boat = {3592, 3594, 3596}} } local x = des[travel] if(x) then for x = p.x - 2, p.x + 2 do for y = p.y - 2, p.y + 2 do pos = {x = x, y = y, z = p.z} for id = 3587, 3596 do if(getTileItemById(pos, id).uid > 0) then doRemoveItem(getTileItemById(pos, id).uid, 1) end end end end for c = 1, #x.boat do its = doCreateItem(x.boat[c], 1, x.cPos[c]) if(n > 0 and c == 2) then doSetItemActionId(its, 6901) end end doTeleportThing(cid, x.cPos[2], false) doCreatureSetLookDir(cid, x.dir) if(n > 1) then if(getCreatureCondition(cid, CONDITION_INFIGHT)) then doRemoveCondition(cid, CONDITION_INFIGHT) end n = 0 s = 0 return false end s = s + 1 end return addEvent(doTravel, config.speed, cid, p, poss) end function onUse(cid, item, fromPosition, itemEx, toPosition) if(getCreatureCondition(cid, CONDITION_INFIGHT)) then return doPlayerSendCancel(cid, "You can't travel when you're in a fight.") end doTeleportThing(cid, toPosition) doAddCondition(cid, fight) doTravel(cid, getPlayerPosition(cid), getPlayerPosition(cid)) return true end "data/movements/movements.xml" : (TFS 0.3/0.4) <movevent type="StepIn" itemid="4820" event="script" value="water.lua"/> (TFS 0.2/1.0) <movevent event="StepIn" itemid="4820" script="water.lua"/> "data/movements/scripts/water.lua" : local boatids = {3589, 3594} function onStepIn(cid, item, position, fromPosition) for _, id in pairs(boatids) do if(getTileItemById(fromPosition, id).uid > 0) then return doTeleportThing(cid, fromPosition) end end return true end Se você usa TFS 0.3/0.4, adicione isto em "data/lib/050-function.lua" (se você ja não tiver). function doSetItemActionId(uid, actionid) return doItemSetAttribute(uid, "aid", actionid) end Creditos : 99% - Limos o/. 1% - ViitinG.1 ponto
-
[Banir IP] !banip
1 pontoOlá galera do TK trago hoje uma talkaction fácil que fiz para facilitar a banir os players que divulgam ot no seu servidor. Nada mais fácil que digitar !banip playername não é? Pronto acabou com o xarope rs. Vamos lá, é bem simples! Em data/talkactions/scripts crie um arquivo com o nome banip.lua e dentro adicione: function onSay(cid, words, param) if(param == "") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parametro necessario.") return TRUE end local pid = getPlayerByNameWildcard(param) local tmp = getPlayerIp(pid) if(doAddIpBanishment(tmp) or pid == 0 or (isPlayerGhost(pid) == TRUE)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Jogador " .. param .. " nao existe ou n esta online.") end if isPlayerGhost(pid) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Seu ip foi banido amigao.") doAddIpBanishment(tmp, 30 * 24 * 60 * 60) doRemoveCreature(pid) end return TRUE end Logo depois em talkactions.xml adicione a seguinte linha: <talkaction log="yes" group="4-6" access="3-6" words="!banip" event="script" value="banip.lua"/> Agora você pode banir o divulgador por: !banip NOMEDOPLAYER Espero ter ajudado, demais dúvidas poste aqui no tópico Até o próximo. Absolute.1 ponto
-
(Resolvido)NPC de quest para Ot 8.60
Olá amigos estou aqui mais uma vez para pedir uma coisa, um NPC que peça items para o player e se o player trazer os itens ele ganha um prêmio, só que depois que ele pegasse o prêmio ele não pudesse fazer a quest novamente colocassem tipo uma storage que checa se ele ja fez a quest entendem? Por favor se puderem ajudar agradeço muito meu Ot é 8.60 obrigado comunidade .1 ponto
-
(Resolvido)NPC de quest para Ot 8.60
(Resolvido)NPC de quest para Ot 8.60
tukkaa tattoo reagiu a luanluciano93 por uma resposta no tópico
1 pontolocal keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function FUNCAO_NOME(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end local storage = 50001 if getPlayerStorageValue(cid, storage) ~= 1 then if getPlayerItemCount(cid,2516) >= 1 then -- SE TIVER 1 OU MAIS ITEM COM ID 2516 if doPlayerRemoveItem(cid,2516,1) then -- remove 1 ITEM DO ITEM COM ID 2516 npcHandler:say('Here is your item!', cid) -- MENSAGEM AO REMOVER O ITEM doPlayerAddItem(cid,5908,1) -- ADD 1 ITEM COM ID 5908 setPlayerStorageValue(cid, storage, 1) end else npcHandler:say('Você não tem o item!', cid) end else npcHandler:say('Você já fez a quest!', cid) end end local node2 = keywordHandler:addKeyword({'teste'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'vocÊ quer testar a função desse script?'}) node2:addChildKeyword({'yes'}, FUNCAO_NOME, {npcHandler = npcHandler, onlyFocus = true, reset = true}) node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Até mais.', reset = true}) npcHandler:addModule(FocusModule:new())1 ponto -
[Cloner Item] - Mesmo item id diferente
Tem um jeito que é por script vê se funciona, não tenho certeza. Primeiro vá na pasta lib e crie um arquivo ItemsEditedLib.lua e adicione isso dentro: function doPlayerAddEditedItem(cid, itemid) local newxml = io.open("data/items/newitems.xml", "r") local configs = {} for i in newxml:read("*a"):gmatch("<item (.-)</item>") do local itemid = tonumber(i:match('id="(.-)"')) local itemconfig = { ["spriteid"] = tonumber(i:match('spriteid.-=.-"(.-)"')), ["article"] = i:match('article.-=.-"(.-)"'), ["name"] = i:match('name.-=.-"(.-)"'), ["description"] = i:match('key.-=.-"description".-value.-=.-"(.-)"'), ["defense"] = tonumber(i:match('key.-=.-"defense".-value.-=.-"(.-)"')), ["attack"] = tonumber(i:match('key.-=.-"attack".-value.-=.-"(.-)"')), ["extradefense"] = tonumber(i:match('key.-=.-"extradef".-value.-=.-"(.-)"')), ["armor"] = tonumber(i:match('key.-=.-"armor".-value.-=.-"(.-)"')), ["extraattack"] = tonumber(i:match('key.-=.-"extraatk".-value.-=.-"(.-)"')), } configs[itemid] = itemconfig end if configs[itemid] then local item = doPlayerAddItem(cid, configs[itemid].spriteid) for i,x in pairs(configs[itemid]) do doItemSetAttribute(item, i, x) end end end Depois entre na pasta Items, copie o Items.xml e renome-e para newitems Você terá o Items.xml normal e mais um arquivo o newitems.xml Abra-o e apague tudo que estiver dentro. Depois cole o seguinte script: <?xml version="1.0" encoding="UTF-8"?> <items> <item id="100" spriteid="2472" article="a" name="master plate armor"> <attribute key="description" value="Armor editada." /> <attribute key="armor" value="19" /> </item> </items> Para adicionar os novos itemids aos players use doPlayerAddEditedItem(cid, ITEMID) em vez de doPlayerAddItem... Parar ver as SpriteID vocÊ precisa do OtItemEditor.1 ponto
-
[Pedido] Script dar use no item ganhar x vocaçao
[Pedido] Script dar use no item ganhar x vocaçao
Yagoshira1 reagiu a madaras por uma resposta no tópico
1 pontoEm data/actions/scripts crie um arquivo.lua, nomeio para changevoc e adicione: Configurando : -Vermelho: Mensagem quando o item for ativado -Verde: Level necessário para usar o item -Marrom: Vocações antigas -Laranja: Vocações novas -Roxo: Efeito (/z) -Rosa: Mensagem quando cancela (abaixo do level 20 do caso) Em actions.xml adicione: <action itemid="1965" script="changevoc.lua"/> -Vermelho: Id do item Todos os creditos a : Newtonnotwen1 ponto -
[Pedido] {Mapa Global 9.60 Com Account Manager Sem Site}
[Pedido] {Mapa Global 9.60 Com Account Manager Sem Site}
burniers reagiu a AdmAlexandre por uma resposta no tópico
1 pontoREP + Obrigado Editado~ Essa Config.Lua 9.6 é confusa porque nao é igual do 8.6 é tudo junto !! \/ Olha Essa Imagem \/1 ponto -
[Pedido] {Mapa Global 9.60 Com Account Manager Sem Site}
Cara qual quer Servidor Mysql, pode ser Sql também é so você configurar na Config.lua. Porem poderá aparecer alguns erros no Exe. OTServer 9.60 http://tibiaking.com...ull-96-ot-soft/ Como Deixa Com Account Manager Vá ate a pasta do Ot Abra o Config.lua. Vai estar mais ou menos assim : sqlType = "mysql" ---- > Troque para sqlite sqlType = "sqlite" sqlHost = "localhost" --- > Não Mecha sqlPort = 3306 --- > Não Mecha sqlUser = "root" --- > Deixe assim -> sqlUser = "root" sqlPass = "test123" --- > Provavelmente vai esta sem nada se estiver algo Apague e deixe assim -> sqlPass = "" sqlDatabase = "sv2.baiak-lero" ---- > Troque para sqlDatabase = "forgottenserver" OU theforgottenserver OU forgottenserver.s3db OU theforgottenserver.s3db sqlFile = "sv2.baiak-lero" ---- > Troque para sqlDatabase = "forgottenserver.s3db" OU theforgottenserver.s3db sqlKeepAlive = 0 --- > Não Mecha mysqlReadTimeout = 10 --- > Não Mecha mysqlWriteTimeout = 10 --- > Não Mecha encryptionType = "plain" --- > Não Mecha Ficara mais ou menos assim : -- Database -- NOTE: sqlFile is used only by sqlite database, and sqlKeepAlive by mysql database. -- To disable sqlKeepAlive such as mysqlReadTimeout use 0 value. sqlType = "sqlite" sqlHost = "localhost" sqlPort = 3306 sqlUser = "root" sqlPass = "" sqlDatabase = "theforgottenserver" sqlFile = "forgottenserver.s3db" sqlKeepAlive = 0 mysqlReadTimeout = 10 mysqlWriteTimeout = 10 encryptionType = "plain" Ajudei? Rep + *-*1 ponto
-
Configurando Loots
Configurando Loots
jlucas.hp reagiu a Alexandre Cristian por uma resposta no tópico
1 pontoAbra seu tibia auto configure todo para caçada ... vamos configura os itens ... a alexandre nao quero pega todos os itens quero customisa ou quero pega um item que o respan que baixei na net nao ta pegando como fasso e simples vamos para o tutorial Galera + rep Pra me Anima Meu Trabalho nao ta sendo Conhecido to disanimando :/1 ponto